U.S. patent application number 17/348695 was filed with the patent office on 2022-01-06 for advanced software development application methods, systems, and computer readable medium.
The applicant listed for this patent is Engineer.ai Naya Limited. Invention is credited to Ralph Bourdoukan, Sachin Dev Duggal, Siddhartha Ghosh, Rohan Patel, Sarvaswa Tandon.
Application Number | 20220004366 17/348695 |
Document ID | / |
Family ID | |
Filed Date | 2022-01-06 |
United States Patent
Application |
20220004366 |
Kind Code |
A1 |
Ghosh; Siddhartha ; et
al. |
January 6, 2022 |
ADVANCED SOFTWARE DEVELOPMENT APPLICATION METHODS, SYSTEMS, AND
COMPUTER READABLE MEDIUM
Abstract
An online software development platform providing an integrated
resource for design, development, and purchase of customer-desired
software applications for software projects created by customers.
The platform comprising one or more computers configured using
computer readable instructions stored in non-transitory computer
memory to provide the software development platform, wherein the
software development platform is configured to implement a
plurality of electronic operational domains providing
user-interactive capabilities or internal functionalities of the
software development platform. The domains comprising a project
scope process, a pricing process, and a project development
process. The platform is configured to use a configuration
involving knowledge graph to recommend features.
Inventors: |
Ghosh; Siddhartha; (London,
GB) ; Tandon; Sarvaswa; (London, GB) ;
Bourdoukan; Ralph; (London, GB) ; Duggal; Sachin
Dev; (London, GB) ; Patel; Rohan; (London,
GB) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Engineer.ai Naya Limited |
Los Angeles |
CA |
US |
|
|
Appl. No.: |
17/348695 |
Filed: |
June 15, 2021 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
16854805 |
Apr 21, 2020 |
11086599 |
|
|
17348695 |
|
|
|
|
15786431 |
Oct 17, 2017 |
10649741 |
|
|
16854805 |
|
|
|
|
63039968 |
Jun 16, 2020 |
|
|
|
62408935 |
Oct 17, 2016 |
|
|
|
International
Class: |
G06F 8/30 20060101
G06F008/30; G06F 8/20 20060101 G06F008/20; G06F 8/71 20060101
G06F008/71; G06F 8/36 20060101 G06F008/36; G06Q 10/06 20060101
G06Q010/06; G06Q 30/02 20060101 G06Q030/02 |
Claims
1. An online software development platform providing an integrated
resource for design, development, and purchase of customer-desired
software applications for software projects created by customers,
comprising: One or more computers configured using computer
readable instructions stored in non-transitory computer memory to
provide the software development platform, wherein the software
development platform is configured to implement a plurality of
electronic operational domains providing user-interactive
capabilities or internal functionalities of the software
development platform, the domains comprising: a project scope
process that is configured to provide a user with the ability
through interactive display screens to specify and accept a scope
for the software project, wherein as part of the project scope
process through interactive screens the user creates a project and
selects a plurality of features to be in the project; a pricing
process that is configured to evaluate the software project and
determine price for the delivery of a software application for the
software project; a project development process that is configured
to selectively assign one or more elements of the software project,
including one or of the selected features for the project, to
developers and manage and track the development process; the
software development platform configured to collect data from
activity in the project scope process, pricing process, and project
development process in accordance with platform-defined graph data
structures, wherein the graph data structures comprising (a) a
plurality of different types of nodes representing entities, the
node types comprising template, project, and feature, each node
type having a set of defined attributes, and different types of
edges that represent interrelationship between entities; the
software development platform is configured to generate and store a
graph database comprising the nodes and edges created from the
collected data in the operation of software development platform
and configured to reuse existing nodes and edges, add new nodes and
edges, and adjust individual attributes of existing nodes and
edges, wherein the graph database represents via nodes and edges an
aggregation of the software projects conducted on the software
development platform and related information and is updated to
include new software projects using collected data; the software
development platform configured to, in response to a query of the
nodes and edges, control one or more parts of the operation of the
platform.
2. The software development platform of claim 1 wherein the
platform is configured to traverse nodes and edges and stop travel
to identify one or paths comprising connected node and edge paths
in the graph database in accordance with a graph traversal
algorithm, wherein the platform stops traversal when a criterion of
the algorithm is not found.
3. The software development platform of claim 1 wherein the
platform is configured, in response to the query, to control a user
interaction in the project scoping process comprising displaying an
option that suggests a feature to include based on the structure of
the graph database.
4. The software development platform of claim 1 wherein the
platform comprises a knowledge graph process wherein the platform
is configured to continuously collect data and add nodes and edges
to the graph database using the collected data, store the graph
database in a first location, periodically perform a script that
copies the graph database, loads the copied graph database to a
second location, and interacts with the copied knowledge graph as
part of the operation of the project scope process to provide
software tools based on the knowledge graph.
5. The software development platform of claim 1 wherein the
platform is configured to include embedding generation that
generates an embedding comprising a plurality of n-dimensional
vectors that in accordance with an embedding algorithm represent
the graph database, each n-dimensional vector corresponding to a
node in the graph database and comprising vector values based on
relationship to other nodes in the graph database.
6. The software development platform of claim 6 wherein the
platform is configured to store a plurality of different hyper
parameters corresponding to different software tools on the
platform.
7. The software development platform of claim 1 wherein the
platform is configured to control the embedding generation with the
hyper parameters and generate different and store different
embeddings corresponding to different software tools.
8. The software development platform of claim 1 wherein the query
is applied to the embedding to generate an output for the control
of an operation, display, or recommendation.
9. The software development platform of claim 8 wherein the
software tool suggests a feature to add to the software project
based on the embedding.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Patent
Application Ser. No. 63/039,968, filed Jun. 16, 2020. This
application is also a continuation-in-part of U.S. application Ser.
No. 16/854,805, filed Apr. 21, 2020, which is a continuation of
U.S. application Ser. No. 15/786,431, filed Oct. 17, 2017, now U.S.
Pat. No. 10,649,741, which claims the benefit of U.S. Provisional
Patent Application No. 62/408,935, filed on Oct. 17, 2016, the
entirety of each which are herein incorporated by reference.
FIELD OF THE INVENTION
[0002] Embodiments of the present invention related to the field of
software development. Specifically, embodiments of the present
invention are related to advance development platform including
machine learning to incorporate features into applications.
BACKGROUND
[0003] The present invention relates to software application
development systems and improving the effectiveness, speed, and
operation of software application development. Software development
is its own field of endeavor and a significant industry exists
directed to software development tools and software development.
Typically, a company seeking a new application can engage a
software developer to develop the new software application for
based on specifications or other methodology.
[0004] As generally understood, the conventional approach for
developing a custom software application is to engage designers to
develop the interface designs, the visual components, and software
developers to implement the customer requirements for the software
application including the design aspect into working source and
object code (e.g., adapted for selected operating systems). The
interactions with the software developer may involve initial
conversations, artwork, or input from designers, source code
developers, and customers. The interaction can result in
deficiencies in efficiency, pricing, implementation, and
consistency.
[0005] This process can often times result in projects dying
because of the complexity and the extended time for development.
Techniques for improving this process, which can improve the design
and development process and provide greater efficiencies for
vendors and customers along with the platform, are desired.
[0006] Conventional systems lack robustness in the provided tools
that can reliably improve the design creation a new customer
application and improve the efficiency of the build.
[0007] Overall, there can be one or more technical problems related
to software development.
SUMMARY OF THE INVENTION
[0008] According to embodiments of the present invention, an online
software development platform providing an integrated resource for
design, development, and purchase of customer-desired software
applications for software projects created by customers can be
provided. A platform with fewer or additional features are
contemplated in some embodiments. The platform can form example
comprise one or more computers configured using computer readable
instructions stored in non-transitory computer memory to provide
the software development platform, wherein the software development
platform is configured to implement a plurality of electronic
operational domains providing user-interactive capabilities or
internal functionalities of the software development platform.
[0009] The domains can comprise a project scope process that is
configured to provide a user with the ability through interactive
display screens to specify and accept a scope for the software
project, wherein as part of the project scope process through
interactive screens the user creates a project and selects a
plurality of features to be in the project; a pricing process that
is configured to evaluate the software project and determine price
for the delivery of a software application for the software
project; and a project development process that is configured to
selectively assign one or more elements of the software project,
including one or of the selected features for the project, to
developers and manage and track the development process.
[0010] The software development platform is configured to collect
data from activity in the project scope process, pricing process,
and project development process in accordance with platform-defined
graph data structures, wherein the graph data structures comprising
(a) a plurality of different types of nodes representing entities,
the node types comprising template, project, and feature, each node
type having a set of defined attributes, and different types of
edges that represent interrelationship between entities.
[0011] The software development platform is configured to generate
and store a graph database comprising the nodes and edges created
from the collected data in the operation of software development
platform and configured to reuse existing nodes and edges, add new
nodes and edges, and adjust individual attributes of existing nodes
and edges, wherein the graph database represents via nodes and
edges an aggregation of the software projects conducted on the
software development platform and related information and is
updated to include new software projects using collected data.
[0012] The software development platform is configured to, in
response to a query of the nodes and edges, control one or more
parts of the operation of the platform.
[0013] The software development platform can be configured to
traverse nodes and edges and stop travel to identify one or paths
comprising connected node and edge paths in the graph database in
accordance with a graph traversal algorithm, wherein the platform
stops traversal when a criterion of the algorithm is not found.
[0014] The software development platform wherein the platform is
configured, in response to the query, to control a user interaction
in the project scoping process comprising displaying an option that
suggests a feature to include based on the structure of the graph
database.
[0015] The software development platform wherein the platform
comprises a knowledge graph process wherein the platform is
configured to continuously collect data and add nodes and edges to
the graph database using the collected data, store the graph
database in a first location, periodically perform a script that
copies the graph database, loads the copied graph database to a
second location, and interacts with the copied knowledge graph as
part of the operation of the project scope process to provide
software tools based on the knowledge graph.
[0016] The software development platform wherein the platform is
configured to include embedding generation that generates an
embedding comprising a plurality of n-dimensional vectors that in
accordance with an embedding algorithm represent the graph
database, each n-dimensional vector corresponding to a node in the
graph database and comprising vector values based on relationship
to other nodes in the graph database.
[0017] The software development platform wherein the platform is
configured to store a plurality of different hyper parameters
corresponding to different software tools on the platform.
[0018] The software development platform wherein the platform is
configured to control the embedding generation with the hyper
parameters and generate different and store different embeddings
corresponding to different software tools.
[0019] The software development platform wherein the query is
applied to the embedding to generate an output for the control of
an operation, display, or recommendation.
[0020] The software development platform wherein the software tool
suggests a feature to add to the software project based on the
embedding.
[0021] Other controls and tools are contemplated.
BRIEF DESCRIPTION OF THE DRAWINGS
[0022] Various features of examples and embodiments in accordance
with the principles described herein may be more readily understood
with reference to the following detailed description taken in
conjunction with the accompanying drawings, where like reference
numerals designate like structural elements, and in which:
[0023] FIG. 1 is a simplified block diagram of a distributed
computer network according to an embodiment of the present
invention.
[0024] FIG. 2 shows an exemplary computer system such as a client
system according to an embodiment of the present invention.
[0025] FIG. 3 illustrates a functional block diagram of an online
software development platform according to an embodiment of the
present invention.
[0026] FIG. 4 illustrates a visual representation of a graph
database according to an embodiment of the present invention.
[0027] FIG. 5 illustrates a visual representation of different
nodes types in the graph database according to an embodiment of the
present invention.
[0028] FIG. 6 is an illustrative functional block diagram of
knowledge graph based recommendation tool according to an
embodiment of the present invention.
[0029] FIG. 7 illustrates a visual representation of a new build
card and relation to graph database for illustrative recommendation
tool according to an embodiment of the present invention.
[0030] FIG. 8 is a functional block diagram for producing,
updating, and making the graph database live in the system
according to an embodiment of the present invention.
[0031] FIG. 9 is a functional block diagram for a knowledge graph
incorporating node embedding into the tool according to an
embodiment of the present invention.
[0032] FIG. 10 is an illustrative method for providing node
embedding according to an embodiment of the present invention.
[0033] FIG. 11 is an illustrative method for generating a score and
recommending a feature according to an embodiment of the present
invention.
[0034] FIG. 12 illustrates an interface of the software application
according to an embodiment of the present invention.
[0035] FIG. 13 illustrates an interface for using templates in the
design process according an embodiment of the present
invention.
[0036] FIG. 14 illustrates an interface for using a problem/problem
group in the design process according to an embodiment of the
present invention.
[0037] FIG. 15 illustrates ones type of interface or interaction
with the user in which the platform provides one or more feature
recommendations to the user according to an embodiment of the
present invention.
[0038] Certain examples and embodiments have other features that
are one of in addition to and in lieu of the features illustrated
in the above-referenced figures. These and other features are
detailed below with reference to the above-referenced figures.
DETAILED DESCRIPTION OF THE INVENTION
[0039] Embodiments of the present invention disclose a system and
method that automate aspects of developing software applications.
Embodiments of the present invention involve creating a graph or
graph database that involves a computer system that is configured
to collect discrete information as defined nodes and edges as part
of this process. For example, a software development platform can
be configured to include an interactive online interface for
receiving a customer software application project and engage in
that process to completion. The platform can provide an engagement
process in which the customer through interactive software
interactions (or possibly sometimes human interaction in some
instances) can specify the functionality and operating
characteristics of the desired software application. The platform
can include selected features, manually or automatically, that work
through the software development process with the customer and is
configured to operate to develop the software for the customer
through the use of a team of software developers and other included
software and hardware infrastructure. In some embodiments, the
platform is configured to automatically generate the software
application or to combine the use of developer with the automatic
generation of the software application.
[0040] The platform can handle different types or categories of
applications and be configured to accept, for example, many
projects. An advancement that can make a material and significant
improvement is that the platform can be configured with defined
nodes and edges that correspond to entities and relationship. The
nodes and edges are used to create a graph database representing
the information that is being collected by the software application
development platform. The resulting graph database provides more
advanced, faster, granular, predictive, and more accurate system
for tools or features within the software development field and the
platform. The structure of the graph schema and graph database
provides improvements in speed such as to provide real time
responses that are not otherwise possible using conventional
solutions in this field of technology (software development
platforms). This incorporation materially improves the
functionality of the platform and the development process through
capitalizing in identifying valuable pathways and
interrelationships that are discovered from the graph.
[0041] As illustrated herein as examples which can by themselves be
particularly suitable for use. Nodes can be defined by the platform
for example as the following types: template, build card,
developer, feature, problem statement, and CPE/CTE (client product
expert/client technical expert). Nodes can have predefined
attributes such as complexity, price, or time, the value for which
can be added to the node by the platform based on customer
interaction, by an automated process, or by tracking actual
performance such as tracking a project and automatically entering
the time when a feature was completed. Edges can be defined to
describe a limited set of relationships between nodes. A limited
set of edges can be defined to categorize different types of
node-node interrelationships. Illustrative or examples of
information is provided in the figures of edges, which can also be
particularly valuable in implementation. This structure of nodes
and edges can allow the platform to automatically and in a
uniformly consistent way ingest the (end to end) software
development process (including a range of attributes such as
prices, timeline, skills, etc.) as carried out through the platform
and are quickly defined for progress in to the next phase of
development.
[0042] The platform through aggregation creates, stores, and
updates the graph database including the nodes and edges as per the
defined characteristics of the nodes and edges. The resultant graph
through aggregation can result in a highly valuable resource in
improving the platform and software development such as by
providing software applications that have fewer bugs.
[0043] The system can be configured to permit different types of
software queries and propagation to provide different features such
as to automate platform features and support software development
and platform operation. For example, as shown herein, a feature can
define a node and a range of software features can be saved as
nodes in the graph database. The system can store edges, among
which it can store edges that specify that each project has an edge
to another feature node when those two feature were included in the
same software development project. This can for example be
accumulated for many projects (e.g., thousands, hundreds of
thousands, etc.). Because each project may include many different
features, the resulting node interrelationship can be complex in a
large order of magnitude. The features can have edges to other
types of nodes such as developer nodes for the specific developer
that developed that feature for that project.
[0044] As a base case, the node/edge relationship captured for
features in projects can be queried. For example, a potential new
project has been selected (e.g., by a client) to include three
different features from a menu to be included in the client's
project. The platform can query the graph database and the selected
features can be applied as a query to the graph database that in
response will for example traverse only through paths that includes
the select three nodes, and will further traverse those subgraphs
in the found paths that contains the three nodes to identify other
nodes that are connected to all three of those nodes (when all
three of those nodes were included in another project). A query to
the graph database can also involve a query to an embedding
generated from the graph database and representing the graph
structure in computer operationally simpler construction. The query
may further establish an algorithm that may filter nodes that are
found through the traversal to a set that meets a threshold (e.g.,
this fourth node was included every time these three nodes were
include, or this fourth node was include a large percentage of the
time) indicating a likelihood of valuable software development and
functional affiliation. To amplify, this can involve 10 selected
features and can also include variations where the query is varied
to find any 9 of the selected features and then identify the
related nodes in that path for use in the platform as a suggestion
or automatic incorporation. Other analysis at the same level or
more complex can be obtained quickly with reliable predictions
based on the aggregated graph and the values of nodes and edges.
One intuitive value is that providing reliable information to
clients can provide higher level of credulity and trust. It can
also provide better software performance since available features
(catalogue of features on the platform) are automatically scored
and included in proper association (such as for a particular new
project).
[0045] If desired, the system may have a visual interface that
permits user to interact with the nodes and edges (e.g., to apply a
query) but such a feature is not required.
[0046] The platform can be a cloud service that permits the user to
interact with the platform through graphical user interfaces to
complete the different stages of the application development
process. That would generally be understood to involve a
combination of one or more computers, software implemented on the
one or more computers that configures the computers to provide a
specialized application, and online, Internet website access, to
the functionality through a (conventional) browser or in some
cases, a software application (e.g., a mobile app). The platform or
system can be structured to define features as individual elements
having certain characteristics such as meta data. A feature is
further defined herein.
[0047] In preferred embodiments, the platform is an online software
development platform that is used by the public to engage a company
to develop a particular software application for the customer. An
example of such a system is illustratively described in U.S. Patent
Publication No. 20180107459, by Dugal et al., filed Oct. 17, 2017,
which is incorporated herein by reference in its entirety. The
platform is preferably configured to provide the user, a potential
customer, with the ability to interact with different interactive
user interfaces (display screens, which can refer to a portion of a
displayed screen or graphical user interface) to intuitively
specify the requirements for the desired custom software
application. The platform can be configured to operate as an
application in object code that interacts with the user. The
platform preferably includes a repository of existing source code
for individual features that have been previously collected, used
and/or tested to implement a corresponding feature. This source
code can be reused, modified or compiled during the software
development to produce the actual software application sought by
the user. Thus, the system is configured to maintain different
modes of a feature and one that is the source code for the actual
feature for use in developed application, and one that names the
feature and defines associated meta data (and/or links (e.g.,
connect using pointers to other features).
[0048] The platform can also include a subsystem that communicates
with a set of third party software developers to communicate the
requirements (via messaging) and to engage the developers to
develop additional source code or desired modification that after a
query to the existing database of feature source code is determined
to be needed or unavailable in the repository, thus requiring the
developers to create new code for requirements or selections that
are not in the repository (which is communicated via the
platform).
[0049] The platform can also communicate the requirements
internally via electrical communications and in response
automatically generate or assemble source code that contains the
source code for the selected features from the repository. The
repository can store different version of the source code such as
for different operating system or different end use platforms
(e.g., mobile phones versus laptops). As part of the software
development process, the platform can display interfaces that
require the user to select the operating system and end user
platform. If desired, the platform takes that selection into
account in generating or assembling source code for a customer's
actual application.
[0050] The platform can be configured to allow the user to select
the desired features as a preliminary step in order to specify the
requirements for the desired custom software application (the scope
of the software project).
[0051] The platform can therefore be configured for the user to
perform the design process or a portion thereof, e.g., on its own
without the need to involve designers or third party user interface
design applications, and to have a general initial (mutual)
understanding of expectation and scope through this process. The
platform can preferably provide the user with an integrated
resource for design with a streamlined process for software
development where there is preexisting common structure between
design and development such as by way of correspondence between
features and corresponding source code, for the actual software,
that is part of the platform.
[0052] FIG. 1 is a simplified block diagram of a distributed
computer network 100 incorporating an embodiment of the present
invention. Computer network 100 includes a number of client systems
105, 110, and 115, and a server system 120 coupled to a
communication network 125 via a plurality of communication links
130. Communication network 125 provides a mechanism for allowing
the various components of distributed network 100 to communicate
and exchange information with each other.
[0053] Communication network 125 may itself be comprised of many
interconnected computer systems and communication links.
Communication links 130 may be hardwire links, optical links,
satellite or other wireless communications links, wave propagation
links, or any other mechanisms for communication of information.
Various communication protocols may be used to facilitate
communication between the various systems shown in FIG. 1. These
communication protocols may include TCP/IP, HTTP protocols,
wireless application protocol (WAP), vendor-specific protocols,
customized protocols, and others. While in one embodiment,
communication network 125 is the Internet, in other embodiments,
communication network 125 may be any suitable communication network
including a local area network (LAN), a wide area network (WAN), a
wireless network, an intranet, a private network, a public network,
a switched network, Internet telephony, IP telephony, digital
voice, voice over broadband (VoBB), broadband telephony, Voice over
IP (VoIP), public switched telephone network (PSTN), and
combinations of these, and the like.
[0054] System 100 in FIG. 1 is merely illustrative of an embodiment
and does not limit the scope of the systems and methods as recited
in the claims. One of ordinary skill in the art would recognize
other variations, modifications, and alternatives. For example,
more than one server system 120 may be connected to communication
network 125. As another example, a number of client systems 105,
110, and 115 may be coupled to communication network 125 via an
access provider (not shown) or via some other server system. An
instance of a server system 120 and a computing device 105 may be
part of the same or a different hardware system. An instance of a
server system 120 may be operated by a provider different from an
organization operating an embodiment of a system for specifying an
object in a design, or may be operated by the same organization
operating an embodiment of a system for specifying an object in a
design.
[0055] Client systems 105, 110, and 115 typically request
information from a server system which provides the information.
Server systems by definition typically have more computing and
storage capacity than client systems. However, a particular
computer system may act as both a client and a server depending on
whether the computer system is requesting or providing information.
Aspects of the system may be embodied using a client-server
environment or a cloud-cloud computing environment.
[0056] Server 120 is responsible for receiving information requests
from client systems 105, 110, and 115, performing processing
required to satisfy the requests, and for forwarding the results
corresponding to the requests back to the requesting client system.
The processing required to satisfy the request may be performed by
server system 120 or may alternatively be delegated to other
servers connected to communication network 125.
[0057] Client systems 105, 110, and 115 enable users to access and
query information or applications stored by server system 120. Some
example client systems include portable electronic devices (e.g.,
mobile communication devices) such as the Apple iPhone.RTM., the
Apple, or any device running the Apple iOS.TM., Android.TM. OS,
Google Chrome OS, Symbian OS.RTM., or Windows Mobile.RTM. OS. In a
specific embodiment, a "web browser" application executing on a
client system enables users to select, access, retrieve, or query
information and/or applications stored by server system 120.
Examples of web browsers include the Android browser provided by
Google, the Safari.RTM. browser provided by Apple, the Opera Web
browser provided by Opera Software, and Internet Explorer Mobile
browsers provided by Microsoft Corporation, the Firefox.RTM. and
Firefox for Mobile browsers provided by Mozilla.RTM., and
others.
[0058] FIG. 2 shows an exemplary computer system such as a client
system of embodiments of the present invention. In an embodiment, a
user interfaces with the system through a client system, such as
shown in FIG. 2. Mobile client communication or portable electronic
device 200 includes a display, screen, or monitor 205, housing 210,
and input device 215. Housing 210 houses familiar computer
components, some of which are not shown, such as a processor 220,
memory 225, battery 230, speaker, transceiver, antenna 235,
microphone, ports, jacks, connectors, camera, input/output (I/O)
controller, display adapter, network interface, mass storage
devices 240, and the like. Computer system 200 may include a bus or
other communication mechanism for communicating information between
components. Mass storage devices 240 may store a user application
and system software components. Memory 225 may store information
and instructions to be executed by processor 220.
[0059] Input device 215 may also include a touchscreen (e.g.,
resistive, surface acoustic wave, capacitive sensing, infrared,
optical imaging, dispersive signal, or acoustic pulse recognition),
keyboard (e.g., electronic keyboard or physical keyboard), buttons,
switches, stylus, gestural interface (contact or non-contact
gestures), biometric input sensors, or combinations of these.
[0060] Mass storage devices 240 may include flash and other
nonvolatile solid-state storage or solid-state drive (SSD), such as
a flash drive, flash memory, or USB flash drive. Other examples of
mass storage include mass disk drives, floppy disks, magnetic
disks, optical disks, magneto-optical disks, fixed disks, hard
disks, CD-ROMs, recordable CDs, DVDs, recordable DVDs (e.g., DVD-R,
DVD+R, DVD-RW, DVD+RW, HD-DVD, or Blu-ray Disc), battery-backed-up
volatile memory, tape storage, reader, and other similar media, and
combinations of these.
[0061] System 100 may also be used with computer systems having
different configurations, e.g., with additional or fewer
subsystems. For example, a computer system could include more than
one processor (i.e., a multiprocessor system, which may permit
parallel processing of information) or a system may include a cache
memory. The computer system shown in FIG. 2 is but an example of a
computer system suitable for use. Other configurations of
subsystems suitable for use will be readily apparent to one of
ordinary skill in the art. For example, in a specific
implementation, the computing device is mobile communication device
such as a smartphone or tablet computer. Some specific examples of
smartphones include the Droid Incredible and Google Nexus One.RTM.,
provided by HTC Corporation, the iPhone.RTM. or iPad.RTM., both
provided by Apple, and many others. The computing device may be a
laptop or a netbook. In another specific implementation, the
computing device is a non-portable computing device such as a
desktop computer or workstation.
[0062] A computer-implemented or computer-executable version of the
program instructions useful to practice the present invention may
be embodied using, stored on, or associated with computer-readable
medium. A computer-readable medium may include any medium that
participates in providing instructions to one or more processors
for execution. Such a medium may take many forms including, but not
limited to, nonvolatile, volatile, and transmission media.
Nonvolatile media includes, for example, flash memory, or optical
or magnetic disks. Volatile media includes static or dynamic
memory, such as cache memory or RAM. Transmission media includes
coaxial cables, copper wire, fiber optic lines, and wires arranged
in a bus. Transmission media can also take the form of
electromagnetic, radio frequency, acoustic, or light waves, such as
those generated during radio wave and infrared data
communications.
[0063] For example, a binary, machine-executable version, of the
software useful to practice embodiments of the present invention
may be stored or reside in RAM or cache memory, or on mass storage
device 240. The source code of this software may also be stored or
reside on mass storage device 240 (e.g., flash drive, hard disk,
magnetic disk, tape, or CD-ROM). As a further example, code useful
for practicing embodiments of the invention may be transmitted via
wires, radio waves, or through a network such as the Internet. In
another specific embodiment, a computer program product including a
variety of software program code to implement features of
embodiments of the invention is provided.
[0064] Computer software products may be written in any of various
suitable programming languages, such as C, C++, C#, Pascal,
Fortran, Perl, Matlab (from MathWorks, www.mathworks.com), SAS,
SPSS, JavaScript, CoffeeScript, Objective-C, Objective-J, Ruby,
Python, Erlang, Lisp, Scala, Clojure, and Java. The computer
software product may be an independent application with data input
and data display modules. Alternatively, the computer software
products may be classes that may be instantiated as distributed
objects. The computer software products may also be component
software such as Java Beans (from Oracle) or Enterprise Java Beans
(EJB from Oracle).
[0065] An operating system for the system may be the Android
operating system, iPhone OS (i.e., iOS), Symbian, BlackBerry OS,
Palm web OS, bada, MeeGo, Maemo, Limo, or Brew OS. Other examples
of operating systems include one of the Microsoft Windows family of
operating systems (e.g., Windows 95, 98, Me, Windows NT, Windows
2000, Windows XP, Windows XP x64 Edition, Windows Vista, Windows 7,
Windows CE, Windows Mobile, Windows Phone 7), Linux, HP-UX, UNIX,
Sun OS, Solaris, Mac OS X, Alpha OS, AIX, IRIX32, or IRIX64. Other
operating systems may be used.
[0066] Furthermore, the computer may be connected to a network and
may interface to other computers using this network. The network
may be an intranet, internet, or the Internet, among others. The
network may be a wired network (e.g., using copper), telephone
network, packet network, an optical network (e.g., using optical
fiber), or a wireless network, or any combination of these. For
example, data and other information may be passed between the
computer and components (or steps) of a system useful in practicing
the invention using a wireless network employing a protocol such as
Wi-Fi (IEEE standards 802.11, 802.11a, 802.11b, 802.11e, 802.11g,
802.11i, and 802.11n, just to name a few examples). For example,
signals from a computer may be transferred, at least in part,
wirelessly to components or other computers.
[0067] FIG. 3 illustrates a system for developing software
according to an embodiment of the present invention. The system
includes an application development software application 420
installed on an electronic device 410 and a builder software
application 440 implemented on one or more servers 430. The
electronic device 410 is preferably a desktop computer that can
communicate with server via mobile networks or other wireless
networks. Each of the electronic device and servers is a computer
system that includes a microprocessor and volatile and non-volatile
memory to configure the computer system. The computer system also
includes a network connection interface that allows the computer
system to communicate with another computer system over a network.
Each software application may also be used independently or in
conjunction with another software application to strengthen or
supplement functionalities of the other software application.
[0068] The builder application 440 installed on the server 430
maintains a library of features for a software application. The
library of features may be stored in a database 460. The builder
application 440 is configured to transmit to the software
development application on the client computer 410 the library of
features, to receive a selection of a set of features, integrate
the selected features into an integrated build card. The builder
application further maintains a graph database 480.
[0069] The software development application 420 is configured to
provide a graphical user interface that enables a customer to
select and customize a set of features as part of a build card for
building software application for a customer's project. In some
embodiments, the software development application 420 is a web
application provided by the builder application on the server and
configured to run in a conventional browser. In a preferred
embodiment, the software development application is the
conventional browser 420 configured to access an application
development website provided by the server.
[0070] Feature database 640 can also include source code for each
of the plurality of available features. The saved source code
provides a repository of source code for available features that
the platform can use to generate object code for the actual
application (e.g., based on the selected operating system) and/or
to send the source code to select third party software developers
to perform desired integration or modification based on customer
specified requirements.
[0071] The builder application is organized into a plurality
processes that together provide an implement a comprehensive
platform for customers to design or specify project requirements,
financial management of the process including determination or
estimation of pricing, project management, customer relationship
management, and other processes.
[0072] The builder application or platform can provide an
integrated resource for design, development, purchase, and delivery
of customer-desired software applications for software projects
created by customers. The software development platform is
configured to implement a plurality of electronic operational
domains providing user-interactive capabilities or internal
functionality of the software development platform. The domains
each comprising a process.
[0073] A process is being used to refer at a high level to an
aspect of the software platform (one or more separate or integrated
electronic operations) directed to a particular aspect or objective
of the platform. As such, the software development platform is
configured to implement a plurality of electronic operational
domains providing user-interactive capabilities or internal
functionality of the software development platform. The domains
interact and together provide the platform.
[0074] As show in FIG. 3, application 440 include project scoping
process 485, pricing process 495, project development process 465,
and other processes 425. The project scoping process 485 is
configured to provide customers with the ability to specify the
scope of the project. This can be done by way of user interfaces
that permit the user to select templates, features, and/or design
characteristics or requirements for the project. A project scope
process can be configured to provide a user with the ability
through interacting with display screens to specify and accept a
scope for the software project.
[0075] Pricing process 495 is configured to provide customers with
a determination of the price for the components of the software
project and/or delivery of the software application meeting the
specified selections by the user as part of the project scoping
process. The pricing process 495 is configured to provide prices
for the delivery of a software application for the software
project. The project development process 465 is configured to
provide management and tracking of the software project once
initiated. It can involve selecting which software developers that
are on the platform are assigned portions of the project. The
assignment can be made in the platform by a CPE/CTE selecting
developer in the system or can be made automatically. The project
development process 465 can be configured to selectively assign one
or more elements of the software project to developers and manage
and track the development process of each software project in the
platform. The discussion herein that encompasses the process
functionality or is directed to achieving the process objective
would be understood to be a part of that corresponding process.
Other processes can be included in the platform such as instant
prototyping.
[0076] Graph database 480 is included as part of the application.
The graph database stores nodes and edges that represent
corresponding entities and relationships between entities. Graph
database 480 can be implemented on its own server and a copy of the
graph database can be at discrete times provided the platform to
provide services using the graph database.
[0077] The software development platform is configured to collect
data from activity in the project scope process 485, pricing
process 495, and project development process 465 in accordance with
platform-defined graph data structures. The data is collected is
tapped or copied from the existing operation of these domains or
processes to collect historical data about activity in the platform
and interactions to aggregate such data. The graph data structures
comprising a plurality of different types of nodes representing
entities and the node types comprising template, feature, and other
node types such as developer or problem and each node type having a
set of defined attributes, and different types of edges that
represent interrelationship between entities.
[0078] The platform is configured to generate and store a graph
database 480 comprising the nodes and edges created from the
collected data in the operation of software development platform
and is configured to reuse existing nodes and edges, add new nodes
and edges, and adjust individual attributes assigned to each edge
based on new data. For example, a new software project may include
a login feature and the login feature was previously included in
the scope of other previous projects, the platform does not need to
add that node to the graph database since it was previously used.
The edges are defined relationships between different type of
nodes. Attributes can include a count or frequency associated with
each edge stored in the graph database and represent how many times
that the same edge connection (between the same two nodes) were
found in the software projects that have been loaded into the graph
database. The graph database manages large scale data in a
different way than generally used databases.
[0079] The platform is configured to continue to load software
projects (e.g., sets of features and/or templates into the graph
database) and it can if desired include nodes or edges for related
activities. The software development platform and related
information is updated as new software projects are created or
initiated in the platform. The software development platform is
configured to issue a query to the graph database and in response,
receive query results from the graph database or from related
components that it uses to control one or more parts of the
operation of the platform (e.g., an action within a process).
[0080] The software development platform is configured to implement
one or more algorithms configured to traverse nodes and edges in
the graph database in accordance with one or more criteria of an
algorithm. The algorithm can be selected to correspond to the
query, which in this case is directed to providing feature
recommendations. The algorithm can traverse the knowledge graph to
identify different paths starting from a node through its connected
edges to other directly connected nodes and similarly continue
until a criteria of the algorithm is not met (which causes that
traversal to stop). So, for example, a path may involve
node1-edge1-node2-edge2-node3. The algorithm identifies paths
relevant to the query and stops traversing the nodes or edges when
the criteria is not met. The algorithm can start with a different
node in the graph to apply the algorithm and collect information
such as paths can repeat the procedure over the graph database to
discover the graph structure, nodes, edges, and/or paths that meet
the criteria. The application of the algorithm can be implemented
in advance to collect the resultant path or other information and
the results can be stored for handling later received queries. The
software development platform can be configured, in response to the
query, to control a user interaction in the project scoping process
comprising displaying an option that suggests a feature to include
based on the structure of the graph database.
[0081] Embodiments of the present invention implement a framework
that takes advantage of the semantic relationships between diverse
data points in software development platform's database. This is
achieved by storing related data in a graphical structure. This
allows the platform to enhance knowledge around each data-point by
leveraging their connection with other data-points. FIG. 4 is an
illustrative representation of an example of graph database
containing different types of nodes (the circles) and edges (the
lines connecting circles). Six types of nodes are illustrated in
FIG. 4 including skill 4402, feature, project, CPE, template, and
developer. Each node is for a different such entity so for example
the two developer node be for developers John Smith and Jane Blue.
The edges are shown to be directional and they demonstrate for
example developer 4406 has a certain skill 4402. The platform can
be configured to apply different traversal algorithms to quickly
identify information (or set of relevant paths) and potential
associations by traversing the nodes and edges of certain
types.
[0082] The configured graph database incorporates nodes and
entities from different processes or aspects of the platform which
allows for interrogation and discovery of interrelationship and
potential associations from paths containing connected nodes and
edges across the different tasks, processes, or relevance. The
graph database is not solely focused on the software elements that
together form the software application for a software project but
extends into other areas in the software platform and in so doing,
provides a greater depth of performance. For example, FIG. 5 is an
illustration that shows an implementation of nodes involving
different aspects of the platform. FIG. 5 illustrates that the
defined node types can be template, project feature, developer,
CPE/CTE, and problem statement. Boxes shown in the diagram contain
an illustrative set of attributes for each node type. For a
particular project, the collected data that is instantiated in the
graph database can include the range of all of the types of nodes
and the edge connections.
[0083] In preferred implementation of embodiments of the present
invention, four or five different entities (or nodes), the fifth
being creator, are implemented to configure the software
development platform are selected and used in the graph database
process. The entities and corresponding node types are: [0084] 1.
Feature: Features are the atomic unit of a real-world application
that provide functionality to the app. The data around features is
sourced from a content management database (part of the platform,
which can be in features database for example). which can include
features database of FIG. 3, that contains preconfigured
information such as meta data including connections or links to
other features. A feature is also defined further herein. [0085] 2.
Projects: A project is a collection of features. These are used to
understand how some features combine to form a real world
application. We source the data of our historical projects/build
cards from a database that stores this historical information.
[0086] 3. Templates: While projects contain some level of noise in
them, templates are very well structured collection of features
that form a real-world application. Also, the build card generation
process allows a user to base their project/app on a template, it
provides a fair amount of information around the type of a project.
The template data is sourced from a database that contains the
template to feature mappings, which can be in the features database
of FIG. 3. Template is also further defined below. [0087] 4.
Problem groups (or Problem): Problem groups are groups of templates
that solve similar types of problems. This gives us an insight into
how features combine towards solving a particular kind of problems.
The data around problem groups is sourced from the problem-groups
table in a platform database (e.g., features database). [0088] 5.
Creators: Creators or Developers are the key workhorses in a client
project and are assigned to a project based on their skill and
proficiency--(skill level) using the resource allocation tool
(RAT). During the course of the project, creators are then assigned
to several features--stories by the CPEs, information of which is
recorded on a tracker process.
[0089] Graph schema that is defined in the platform and applies to
the data is used to create and refresh the graph database. For
example, the below tables show an example of graph scheme (the
entities/nodes being explained above):
TABLE-US-00001 A B C D E F 1 Entities Feature Project Template
Problem Creators 2 Attributes builder_id builder_id builder_id
builder_id builder_id 3 name name name statement email 4 bundle_id
build_card_id description vendor_name 5 complexity created_date
status country 6 interface_type updated_date created_date 7 price
start_date total_hours 8 time end_date communication 9 is core cost
responsiveness 10 description security_deposit delivery_owners hip
11 question timelines skills: expertise score 12 embedding status
nb_tracker_logins 13 brief nb_cpe_feedbacks 14 speed
rejected_story_ratio 15 squad on_demand_price 16 rat_score_v2
17
[0090] Graph schema can include relationships between nodes such
as:
TABLE-US-00002 A B C D 1 Entity 1 Entity 2 Relation Relation
Attributes 2 Feature Feature feature-feature -- 3 Project Feature
project-feature -- 4 Template Feature template-feature -- 5 Project
Template project-template -- 6 Template Problem template-problem --
7 Creator Project creator-project communication,
delivery_ownership, responsiveness, skill_name, skill_expertise,
skill_score
[0091] Relations can also have their own set of attributes such as
a count for an edge of how many times the same pair of nodes are
connected with that edge.
Below are the details for each relation, [0092] 1. Feature--Feature
Connections: The existence of an FFC relation between any two
features signifies that those features are usually linked to each
other in a real-world application. This data is sourced from
database that stores "hero-sidekick" feature mapping data (stores
information that includes link that are commonly or usually linked
by human design and/or automatic determination). The database may
also record as part of an attribute information about how many
times the same pair of nodes are connected. [0093] 2.
Template--Feature/Project--Feature: Templates and projects are
related to features through this relation. This signifies that the
connected feature is a part of that project or template. In terms
of a project it means that the connected feature is a part of the
build card of that project. In terms of templates, the connected
features simply is a part of the feature pool that the template is
made up of. [0094] 3. Project--Template: This relation connects
projects to templates. Any user that lands on a studio interface
for designing the application and starts to ideate their project,
they are presented with an option to base their app on a
pre-existing application template. If the user decides to base
their app on a template, it gets added to their build card. This
relation signifies that a particular project is based on the
connected template. [0095] 4. Template--Problem: A lot of
application templates are a part of some problem groups. This is
based on the industry they belong to and the problem that they
solve. For instance, the application template of Uber solves a
city's transit problem, so it belongs to that problem group. This
relation connects application templates to the problem groups that
define the problems that the particular template solves. [0096] 5.
Creator--Project: The existence of a creator-project link signifies
that a creator was assigned to a given project. Moreover, each
creator-project edge contains following attributes which provide a
granular view of the allocation:
TABLE-US-00003 [0096] A B 1 creator-project Description 2
communication sum of CPE feedback score for a given project. 3
delivery_ownership sum of CPE feedback score for a given project. 4
responsiveness sum of CPE feedback score for a given project. 5
skill_name Skill for which creator was assigned to a project -
`ROR` etc 6 skill_expertise 7 skill_score
[0097] With respect to recommending features, the platform is
adapted to provide the advanced capability using the graph database
by being implemented in that process with the above four or five
nodes and relations. These are the core or primary pieces that are
operated on in the process. Other nodes or relations may exist in
the platform. In preferred embodiments, the graph database
algorithm and related processes for feature recommendation is
configured to apply operations or algorithm on this 4/5 nodes and
4/5 (fifth being creator project) relations such as in the below
described knowledge graph algorithm and embedding pipeline.
[0098] FIG. 6 is an illustrative representation of an
implementation of a subsystem 6600 of the platform. It can be a
portion of an implementation of the platform in FIG. 3. Subsystem
6600 can include data ingestion 6602 wherein raw data is collected
from the internal activity of the platform (e.g., data taps that
collect data for use in the knowledge graph). Data ingestion uses
predefined graph data structures to create nodes from the raw
collected data. As shown, the node types are projects, templates,
features, and problems. Other nodes such as creator can be included
depending on objectives. Data ingestion also uses predefined data
structures to create edges or relations from the raw collected
data. As shown, the edges (relations) are project to template,
templates to problems, features to projects, and features to
template. Additional edges can be included. In knowledge graph
stage 6604 the platform creates or updates the knowledge graph (or
graph database) using the nodes and edges created from the
collected data during data ingestion 6602. The knowledge graph is
copied to the cloud for use by software clients. Clients 6606 are
configured to query the knowledge graph to provide certain
functionality. Clients 6606 include a feature recommendation client
that for example, sends a set of features selected by a customer
for a project to the knowledge graph and in response the set of
features are applied to the graph database and one or more
recommendation for other features that are found by the knowledge
graph is identified and communicated. To clarify, a new project can
include a template or problem and in turn these include one or more
features (that embody the template or problem). In addition, the
traversal algorithm can include the use of particular node
attributes as basis for whether to traverse or identify paths (or
groups of connected nodes and edges). For example, features may
have an attribute of advance, intermediate, and beginner. The
platform can for example apply an algorithm that traverses only
intermediate features combined with some other attribute to quickly
generate relevant information that can for example be used to
control the design or operation of the platform.
[0099] Now with reference to FIG. 7, an illustrative diagram is
provided that demonstrates one type of query, response, and graph
database algorithm that can be applied to provide an improved and
advanced software development platform. Plane 7002 is a conceptual
representation of the domain for a node type, which is in this case
are features. The nodes in plane 7002 represent different features
that are available or have been deployed in the software
development platform to design or scope a project. Nodes are not
the source or object code for that particular features but
represent that entity in name and values of the attributes that are
associated with it. If desired, each node can be linked to its
corresponding source code (file) or object code (file). Plane 7002
includes nodes f1 7004, f2 7006, and f3 7008. Plane 7010 is a
conceptual representation of a customer's build card (one in the
process of defining project scope, selecting templates or features
for the project). The customer, as shown, has interacted with the
software development platform to selectively add features f1 and f2
to the build card. The platform, preferably in response, queries
the nodes and edges of the graph database, for example by sending
the customer selected nodes to the graph database. The graph
database and platform can be adapted to receive and handle this
particular of query. The graph database applies a corresponding
algorithm, in this case additional feature recommendations to
generate output from the graph database, which can include related
information stored in the database. There can include having
different algorithms adapted for different situation that are
configured to apply a different operation or analysis on the graph
database (e.g., node traversal or identify similar nodes).
[0100] In this situation, of FIG. 7, the platform by applying the
algorithm determines that customers that chose f1 and f2 often also
chose f3. This as mentioned can be based on the number of times (an
attribute) those edges were previously assigned between those nodes
(in 10 past project or 100 past projects). FIG. 7 illustrates that
f1 7004 was selected for a build card along with f2 7006, f3 7008,
and f4, and f2 7006 was often selected for a build card with f1
7004 and f3 7008. The diagram illustrates that the graph database
using the algorithm would be able to determine that f3 7008 is
"linked" (e.g., pointers, software parameters, logical structure)
to the two features in the build card and can generate an output
identifying f3 as an additional feature (suggested feature) for the
user to add (or to automatically) add to the build card 7010. This
may appear simple but in the context of large scale data set and a
software development platform involving many features and
significantly more ingested projects, the determination is complex
and difficult to determine in known software development platform
technology.
[0101] With reference now to the functional block diagram of FIG.
8, in implementation the platform can be configured include a
server on which the graph database resides. The platform can be
configured to include a method that updates, maintains, and
delivers the services to platform processes. As shown, data is
provided in 8002 for incorporation into the knowledge graph where
the data is in different planes (categories or types of nodes) such
as project, feature, template, and problems. The content management
system that stores data related to feature connectivity is provided
8004 within the platform in order to provide such data. At step (or
function) 8006, the provided data from 8002 and 8004 are ingested
periodically and saved. At 8008, the platform is configured with
graph scheme and includes methods for adding new node and edge
types. The platform is configured at 8012 to create or refresh the
knowledge graph instance and save it. The is performed using the
graph schema and ingested data to create or refresh an existing
graph database with the new data. The knowledge graph is saved in
Object 8014. The platform is configured to use this as the resource
for continuing to update the knowledge graph without affecting
related services that interact with the graph database. The
platform would want to continue to update or refresh the graph
database while also providing a live steady resource for use and
interaction in the system. The platform is configured to isolate or
buffer the ingestion, creation, and refresh of the graph database
so that for example is running independently on a server separate
from platform operation in providing processes to customers,
developers or others. The platform is configured to store the
diverse large scale data ingested and in accordance with the graph
schema in the graph database which contains a wide range of nodes
and edges comprising a wide range of software development entities
and relationships on the software development platform. The graph
database and related or supporting functions or functionality is
specifically adapted for software development platforms and feature
recommendation such as by having graph schema providing for the
node types identified herein.
[0102] To provide services 8016, a script is used to copy the graph
database in its then current form after recent ingestion, creation
(or refresh) from the graph server, from object 8014. In services
8016, the copied graph database is loaded into the memory for the
services and at 80022, the platform is configured to interact with
the loaded graph database to provide feature recommendations. Once
copied it is made "live" for use in the platform. Module 8024 is
implemented to allow the services to interact with the graph
database in the production phase of the database.
[0103] The nodes and edges can be configured to be directed such
that edges point in a direction such as from project to features
that were included in that project.
[0104] In some embodiments of the present invention, node embedding
is implemented from the graph database. For the purposes of
discussion and operation, the node embedding and related structure
or method is considered part of the graph database functionality
and related elements. The platform can rely on node embeddings
derived from the knowledge graph. The knowledge graph is likely in
practical implementation in constant evolution, which means that
relevant embeddings are themselves in constant evolution. In
addition, each service or software client of the platform may rely
on a different setup for the embeddings. For example, one
application may require one algorithm to generate embeddings (e.g.,
Metapath2vec) while other applications will require another
algorithm to generate embeddings (e.g., Graph Sage). The operation
of these algorithms can be located from Internet websites.
[0105] From a production point of view, platform implements a
pipeline that regularly updates the required embeddings for each
application. From a development point of view, the platform is
configured to create a package that allows any relevant developer
of a particular application to generate embeddings on the fly given
a particular setup.
[0106] More specifically, from a production perspective the
platform is configured to be implemented to: [0107] whenever the
knowledge graph is refreshed for an application or service
(application or service in this context referring to the software
in the platform that uses the knowledge graph to provide one or
functions or capabilities), the platform can determine if the
knowledge graph changes also affect the embeddings required for the
application or service (e.g. new entities added or new edges
added); [0108] different embedding setups are provided for
different application or services, and when refreshed the right
embeddings are uploaded to the right application or service; and
[0109] include embedding generation separate from the primary
operation of the platform comprising, for example, project scoping
process, pricing, project management, and testing in order not to
slow the performance of the platform and to avoid the platform
breaking down.
[0110] Preferably, the platform is configured to trigger the
training of the embedding locally. The package software components
and method(s) that implement this capability should be very simple
to use and preferably only requires as input the algorithm name and
a hyperparameter. In a current embodiment, each application or
service in production has a configuration file in the form of a
Json file: the Json have two entries, the first entry is the
algorithm name (e.g., Metapath2Vec) the second entry is itself a j
son that specifies the hyperparameters of the algorithms (e.g.,
metapath_dict, window_size, etc.).
[0111] There may also be a readme file in the embedding package
specifying the list of hyper parameter names corresponding to each
algorithm name. Once the pipeline is triggered the first steps
consists in fetching the configuration for each application or
service to form a master configuration, run embedding generation
for each configuration, for each configuration in the master
configuration file, preferably first verify that the required data
for the embedding generation changed and preferably only in this
case run the embedding generation and upload the resulting
embedding to memory thus replaces the old embedding for this
particular configuration.
[0112] Now with reference to FIG. 9, an illustrative generation
pipeline is provided as implemented in some embodiments of the
present invention, the pipeline is configured to use the graph
database to generate different node embeddings that are adapted for
different desired services, clients, or applications. The pipeline
or components thereof can be implemented in combination with graph
database in order to provide computational simplification, higher
relative speed of information retrieval while maintaining accuracy,
and adaptability or dynamic ability to be tuned to different needs
in the platform and provide on-demand support due to the
pre-generation of the embedding prior to the need for handling a
query or other analytic operation. The embedding can also be loaded
into memory or tables that are not graph databases which are easier
to store and perform mathematical operations on (e.g., a conversion
from graph database to n-dimensional vectors that are better
adapted for computer operations). In operation, the platform is
configured to provide feature recommendation in real time in
response to a query for a recommendation comprising selected
features. This can be performed for example using the graph
database and embedding arrangement. Real time refers to
instantaneous or immediate response in relation to the receipt of
the query.
[0113] Pipeline 900 can include control 9004, representation
learning service 9006, embedding central repository 9012, and
application (production branch) 9014. Representation learning
service 9006 can include configuration selection component 9008 and
embedding generation 9010. Control 9004 comprising one or more
control commands that trigger or control the operation of the
pipeline or elements thereof.
[0114] Configuration selection component 9008 is configured store
different algorithms used to generate embedding. The algorithm can
be specifically selected for example a corresponding platform
service or software client such as feature suggestion. The
configuration selection component 9008 includes hyper parameters
that are parameters that store configuration information for the
parameters. Each stored hyper parameter is used to configure a
corresponding algorithm to be adapted to provide the desired
functionality. The hyper parameter and algorithm (or link to
algorithm) can be stored and fetched from application production
branch 9014.
[0115] Embedding generation uses the selected algorithm configured
in accordance with the hyper parameters to perform node embedding
by applying the selected (configured) algorithm to the graph
database and the algorithm generates an n-dimensional vector space
(n represents the number of columns of vector). The n-dimension
vector reflects the structure of the refreshed or created graph
database (wherein there is each node is represented by its
corresponding vector) and contains data value that are adapted
using the corresponding algorithm to identify or communicate
similarities, explicit relationships, likely relevant edges,
similar nodes or similar paths (a path being a series of node and
edges that form a connected chain that can be traversed without
breaks). The pipeline 9002 can store the different node embedding
in central repository 9012.
[0116] With this approach, the provider of the platform can have
its developers be free to use the information in the knowledge
graph in many different ways and free to select and configure an
algorithm for the node generation that best suits each new service
or software client. The developer can select the algorithm and its
hyper parameters, and can load that into the application production
branch 9014 or storage associated with pipeline 9002. The pipeline
can run the different node embedding by fetching its configuration
file (the algorithm and hyper parameters) and update the node
embedding by applying the adapted/tuned algorithm to the current
knowledge graph. The service or software client can then retrieve
the corresponding nod embedding when the service or software client
is executed in the platform. This can provide a robust and highly
efficient and quick mechanism for providing the depth of
intelligence in a vast and diverse knowledge graph to many diverse
set of services or software clients on the platform dynamically or
on demand. When implemented in combination with system of FIG. 8,
the pipeline is operation on the production copy of the graph
database in services 8016 to provide the node generation as opposed
to the graph database stored and maintained separately that is used
for refreshing or creating the graph database. This may cause the
graph database to potentially be not as current but it avoids
conflicts or interference in operation if for example the graph
database is used simultaneously for both. It should be understood
that in some embodiments, simultaneous use is contemplated.
[0117] As such, the software development platform can be configured
to include embedding generation that generates an embedding
comprising a plurality of n-dimensional vectors that in accordance
with an embedding algorithm represent the graph database, each
n-dimensional vector corresponding to a node in the graph database
and comprising vector values based on relationship to other nodes
in the graph database. The software development platform can be
configured to store a plurality of different hyper parameters
corresponding to different software tools (services, software
clients such as feature recommendation) on the platform. As
explained above, the software development platform can be
configured to control the embedding generation with the hyper
parameters and generate different embeddings and store the
different embeddings corresponding to different software tools.
[0118] The software development platform can be configured such
that a query (a query seeking information from graph database) is
applied to the embedding to generate an output for the control of
an operation, display, or recommendation. The software development
platform can be configured to include a software tool that suggests
a feature to add to the software project based on the embedding. By
another example, the software development platform can be
configured to include a software tool that determines another
control or action over the software such as a connection or link
being added between two features in the catalogue (in the feature
database as part of the predefined characteristics of the feature
prior to the design process) (and displays screen to show and/or
carry out the action) based on the corresponding embedding. The
software development platform can also be configured to control or
suggest a portion of software project to be assigned to a
particular developer based on the embedding (values in the
n-dimensional vector).
[0119] As such an integrated online software development platform
integrates among its many functionality and diverse data machine
learning across that is flexible and on-demand for incorporating
machine learning tools that control the operation of the platform
such as to control options that are presented. The architecture can
also be implemented to control the arrangement and/or connections
between features in a software project or other design or
development functions using the graph database and/or embedding
technology.
[0120] With reference now to FIG. 10, the process involving
knowledge graph and embedding is further described. At step 1002,
the platform applies an algorithm to the knowledge graph. The
algorithm performs random walks through the knowledge graph to
generate a corpus. The corpus refers to paths (node-edge-node)
sequences in the graph that meet the traversal requirement of the
algorithm. The collection of those resulting/identifying paths is
the corpus. The algorithm can be configured to limit the number of
traversals to for example 40 nodes. At step 1004, the platform
trains parameters of a skip-gram model over the corpus to generate
the embedding. The method of FIG. 10, preferably provides node
embedding generation through Metapath2vec, which can be found at
Dong, Yuxiao, Nitesh V. Chawla, and Ananthram Swami. "metapath2vec:
Scalable representation learning for heterogeneous networks."
Proceedings of the 23rd ACM SIGKDD international conference on
knowledge discovery and data mining. 2017, which is incorporated
herein by reference in its entirety.
[0121] With reference now to FIG. 11, in operation, to receive a
recommendation, a list of selected features can be transmitted (as
a query) to the knowledge graph capabilities. At step 1102, the
platform retrieves embedding (vector), that has been generated, for
each selected feature. At step 1104, the platform calculates
pairwise dot products between the embedding (vector) of each
selected feature and each feature in the feature database of the
platform (or depending on situation some subset thereof or all
features). At step 1106, the platform determines the score of each
feature (not selected features in the catalogue or available on the
platform). The platform averages the dot product each feature in
the feature database (obviously not included a selected feature)
with each selected feature over all of the selected features. For
example, if the customer (in a very oversimplified example) selects
f1 and f2 and the catalogue includes f3, f4, and f5. The process
(for the score f3) involves the dot product of f3 and f1 and
determining the dot product of f3 and f2, and then adding those to
results and dividing by two (to obtain the average). Other
implementations are contemplated. At step 1108, the platform
determines the feature in the feature database that has the highest
scope and selects it to be the feature recommendation. In some
embodiments, the top so many such as two or three can be selected.
In preferred embodiments, as described, collaborative filtering
based recommender is implemented using the graph and embedding.
Embodiments of the present invention describe particular
implementation details such as graph scheme, algorithm/embedding
(for traversing and determining vectors), and/or node types that
are particularly suited for feature recommendation in the field of
technology. Other application or tools are not excluded by the
discovery or discoveries.
[0122] In some embodiments, the platform may have include a
plurality of different nodes in implementation the recommendation
feature, the platform is configured to operate only certain types
of nodes in the graph database such as project and feature nodes to
provide the recommender tool.
[0123] FIG. 12 illustrates an exemplary graphical user interface
500 according to an embodiment of the present invention. The
graphical user interface may be displayed in a web browser of a
client computing device as part of a web page served by a server.
The graphical user interface of embodiments of the present
invention is configured to enable a user to select from a library
of software features 510 to build a software application.
[0124] A feature of the software application is a function or set
of functions for the application. Conceptually, the feature is the
atomic unit of the software project, according to embodiments of
the present invention. That is, a feature is an independent unit of
predefined functionality that comprises the basic building block of
the software according to embodiments of the present invention.
Accordingly, a feature is the smallest unit of the desired software
application that the customer can employ (or need conceptualize).
Further, if desired, a feature can be employed in disparate
applications with minimal to no change to its core functionality,
as will be described further down in this specification. This
modular nature of the feature enables embodiments of the system of
the present invention to build a prototype merely by logically
connecting a selected set of features.
[0125] A feature may include a functionality that can be
implemented in a modular fashion and that can be interchangeable
between multiple software applications. For example, a feature that
requires a user of software application to login (or a login
feature) can be implemented using the same code and screen or
interface across multiple software applications. Other features may
require the same core code across multiple applications and
platforms but differ in details. For example, an Account Creation
feature may differ in details from one application to another
depending the information that the account creation requires from
the user. To that end, the software development platform of the
present invention enables the user to customize a feature without
modifying its core code and functionality and therefore without
affecting its interchangeability between software applications.
[0126] The library of features 510 may be presented as a set of
icons, a list, a drop down menu, or any other means of presenting
information on graphical user interface. Graphical user interface
500 includes feature sets area 502 that displays a list of
different feature sets such as security or social. In response to a
user selecting one of the feature sets, the list of selectable
feature that are displayed adjacent to them are updated with the
corresponding features in that set. Display area 506 displays an
icon representation of each selected feature that comprises a
miniaturized view of this what the corresponding display is
represented to look like. Area 510 displays a selected one of the
icons from 506 such that the user can view a larger view of feature
by selecting from the different icons. Option 508 can activate a
automated expert that assists the user including providing feature
recommendations. A project can be specified and accepted by the
user to contain a set of selected features (e.g., as a result of
the selection of template, the features that defined the template
are selected and added to the build card for the project). The user
can interact with interface 500, for example, after initially
selecting a template or problem in a previous screen to review and
evaluate the features in the current build card and add new
features from area 510 or remove features by interacting with 510
or 506. Interactive display area 506 identifies the selected
features in the current build card and is configured to scroll
laterally to allow the user to peruse the features if the screen is
too small to show all of the features. Interface 500 may include a
button or option such as expert option 508 that when selected in
response display text that as one options displays one or more
feature recommendations for the current project. In response to the
user, selecting to add that recommended feature, the selected
(recommended) feature an be added to the features to the current
build card be displayed in interactive display area 506 and if
"clicked" by a user, displayed in "zoomed" form in interactive
display area (portion of display screen) 510. Using the interface
500, the user can define all of the features that are to be
contained in the current project.
[0127] A template means a preorganized set of the library of
features, which are available on the system as a way to associate
particular template idea with set of curated features for that
template. FIG. 13 illustrates graphical user interfaces 500
displaying a library of templates 550, according to an embodiment
of the present invention. Each template 550 of the library provides
the basic functional architecture and visual layout of the software
project. In particular, the template 550 provides a predefined and
customizable basic process flow process between a set of predefined
and customizable features or functions of the software application.
The library of templates 550 may be displayed on the graphical user
interface 500 as a set of icons, a list, a drop down menu, or any
other means of presenting a set of information on a graphical user
interface.
[0128] In the embodiment illustrated, the templates 550 are grouped
by types of software, such as mobile applications for mobile
devices, web applications for website, marketplace applications
that help buyers and sellers transact in real time, e-commerce
application, applications for wearable devices such as apple
watches or google wear, or any other types of applications that may
be available on consumer devices. In the embodiment illustrated,
the graphical user interface 500 further provides examples of
templates within each grouping of templates. For example, the
mobile application grouping may include a list of mobile
application templates such as Uber, Snapchat, Quora, Tinder, or
other popular mobile applications that a customer may want to use
as a model to communicate requirements for their own application. A
social media grouping for templates may include Facebook, Snapchat,
Instagram, and templates of other social media applications. It
should be noted that Applicant is not affiliated with the providers
of the above applications and services whose structures may provide
bases for templates in some embodiments.
[0129] After the user has selected a template 550, the user is
provided with the opportunity to customize the software project by
adding features to or removing features from the template (e.g.,
FIG. 2). In some embodiments, the interface may display a set of
pre-selected additional features specifically corresponding to the
template. For example, if the chosen template is that of a social
media app, the user may be provided with additional relevant
features such as Private Messages or Take Photo (in FIG. 12). Thus,
the system enables the user to build software by either selecting
features individually (e.g., "a la carte") or selecting a
predefined set of features or a template, building upon the
template by adding or subtracting features to form the software
project.
[0130] Referring back to FIG. 3, in some embodiments, the builder
software 440 on the server 430 may further comprise process 485
which can comprise feature selector configured to select a set of
features based on input from the user. In such embodiments, the
client device 410 may prompt the user with various questions for
specifying the type of software application and broad set of
features desired, rather than presenting the user with a list of
specific features. The feature selector 455 is configured to
translate the user's input into a set of features to be integrated
to form the target software application.
[0131] After the selection of features, or the selection of a
template and if desired, a set of additional user-selected features
for the template on the graphical user interface, the features are
transmitted to the server 430 from the client computing device 410.
The template would be understood as discussed herein to include a
set of predetermined interconnected features that correspond to a
particular model. As described above, the selection of features may
also be generated by a feature selector that receives as input
answers to prompts from the user interface and generates a
selection of features therefrom. Upon receiving the selection of
features from the client computing device 410, the builder
application 440 transmits the set of selected features for example
to the knowledge graph and supporting capabilities.
[0132] A project, in the context of a node type, means a node
created for a past or current project that is saved by a user or
customer and as part of the process of the platform includes a set
of selected features.
[0133] FIG. 14 illustrates an example of a portion of display
screen that can be displayed to the user as part of the projects
scope process. The platform can display areas that provide
selectable problems (discussed above). The platform can then in
response select the corresponding features that correspond to the
selected problem. In this option, the platform can give the user to
select/unselect templates within a problem before deciding to
submit it as the user's selection.
[0134] FIG. 15 illustrates that platform can be controlled to
display selectable feature recommendations to the current user in
the display screen in area 1502. In response to interactive with
the expert assistance or other element as a button, the platform
receives the results from the query based on the selected features
of the user and displays one or more selectable features to the
user. The display permits the user to select the one or more
features and in response, adds the recommended features to the
user's selected features in the design process. If the features are
the approved or accepted, those set of features proceed in the
platform to the next stage such as to generate source code.
[0135] In the context of graph databases (involving nodes and
edges), it is understood that an edge is used to characterize
direct relation (connection) between two nodes (e.g.,
directionally).
[0136] An algorithm applies to the graph database can for example
apply a criterion such as identify all projects that include some
or all of the selected features in the build card for the current
project. In doing so, the algorithm my ignore or stop traversing
paths for a project that does not have any of the selected
features.
[0137] Each of the system, server, computing device, and computer
described in this application can be implemented on one or more
computer systems and be configured to communicate over a network.
In one embodiment, the computer system includes a bus or other
communication mechanism for communicating information, and a
hardware processor coupled with bus for processing information.
[0138] The computer system also includes a main memory, such as a
random access memory (RAM) or other dynamic storage device, coupled
to bus for storing information and instructions to be executed by a
processor of the computer or computing device. Main memory also may
be used for storing temporary variables or other intermediate
information during execution of instructions to be executed by a
processor. Such instructions, when stored in non-transitory storage
media accessible to processor, configure the computer system into a
special-purpose machine that is customized to perform the
operations specified in the instructions and provide or be capable
of features and functionality described herein. The processes
described herein can be implemented as computer instructions
executable by the processor of a computer of computing device to
performs described process steps the computer instructions can be
saved on nonvolatile or nontransitory memory for providing such
implementations.
[0139] The computer system further includes a read only memory
(ROM) or other static storage device coupled to bus for storing
static information and instructions for processor. A storage
device, such as a magnetic disk or optical disk, is provided and
coupled to bus for storing information and instructions.
[0140] The computer system may be coupled via bus to a display,
such as an LCD, for displaying information to a computer user. An
input device, including alphanumeric and other keys, may be coupled
to bus for communicating information and command selections to
processor. Another type of user input device is cursor control,
such as a mouse, a trackball, touchscreen (e.g., on mobile phones)
or cursor direction keys for communicating direction information
and command selections to processor and for controlling cursor
movement on display. This input device typically has two degrees of
freedom in two axes, a first axis (e.g., x) and a second axis
(e.g., y), that allows the device to specify positions in a
plane.
[0141] The computer system may implement the techniques described
herein using customized hard-wired logic, one or more ASICs or
FPGAs, firmware and/or program logic which in combination with the
computer system causes or programs computer system to provide
specialized features. According to one embodiment, the techniques
herein are performed by the computer system in response to the
processor executing one or more sequences of one or more
instructions contained in main memory. Such instructions may be
read into main memory from another storage medium, such as storage
device. Execution of the sequences of instructions contained in
main memory causes the processor to perform the process steps
described herein. In alternative embodiments, hard-wired circuitry
may be used in place of or in combination with software
instructions.
[0142] The term storage media as used herein refers to any
non-transitory media that stores data and/or instructions that
cause a machine to operation in a specific fashion. Such storage
media may comprise non-volatile media and/or volatile media.
Non-volatile media includes, for example, optical or magnetic
disks, such as storage device. Volatile media includes dynamic
memory, such as main memory. Common forms of storage media include,
for example, a floppy disk, a flexible disk, hard disk, solid state
drive, magnetic tape, or any other magnetic data storage medium, a
CD-ROM, any other optical data storage medium, any physical medium
with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM,
NVRAM, any other memory chip or cartridge.
[0143] Storage media is distinct from but may be used in
conjunction with transmission media. Transmission media
participates in transferring information between storage media. For
example, transmission media includes coaxial cables, copper wire
and fiber optics, including the wires that comprise bus.
Transmission media can also take the form of acoustic or light
waves, such as those generated during radio-wave and infra-red data
communications.
[0144] Various forms of media may be involved in carrying one or
more sequences of one or more instructions to the processor for
execution. For example, the instructions may initially be carried
on a magnetic disk or solid state drive of a remote computer. A bus
carries the data to main memory, from which processor retrieves and
executes the instructions. The instructions received by main memory
may optionally be stored on storage device either before or after
execution by the processor.
[0145] The computer system also includes a communication interface
coupled to bus. The communication interface provides a two-way data
communication coupling to a network link that is connected to a
local network. For example, the communication interface may be an
integrated services digital network (ISDN) card, cable modem,
satellite modem, or a modem to provide a data communication
connection to a corresponding type of telephone line. As another
example, the communication interface may be a local area network
(LAN) card to provide a data communication connection to a
compatible LAN. Wireless links may also be implemented. In any such
implementation, the communication interface sends and receives
electrical, electromagnetic or optical signals that carry digital
data streams representing various types of information.
[0146] Network link typically provides data communication through
one or more networks to other data devices. For instance, network
link may provide a connection through local network to a host
computer or to data equipment operated by an Internet Service
Provider (ISP). ISP in turn provides data communication services
through the worldwide packet data communication network now
commonly referred to as the "Internet." Local network and Internet
both use electrical, electromagnetic or optical signals that carry
digital data streams. The signals through the various networks and
the signals on network link and through the communication
interface, which carry the digital data to and from the computer
system, are example forms of transmission media.
[0147] The computer system can send messages and receive data,
including program code, through the network(s), network link and
the communication interface. In the Internet example, a server
might transmit a requested code for an application program through
Internet, ISP, local network and the communication interface.
[0148] The received code may be executed by the processor as it is
received, and/or stored in storage device, or other non-volatile
storage for later execution.
[0149] It should be understood that variations, clarifications, or
modifications are contemplated. Applications of the technology to
other fields are also contemplated.
[0150] Exemplary systems, devices, components, and methods are
described for illustrative purposes. Further, since numerous
modifications and changes will readily be apparent to those having
ordinary skill in the art, it is not desired to limit the invention
to the exact constructions as demonstrated in this disclosure.
Accordingly, all suitable modifications and equivalents may be
resorted to falling within the scope of the invention.
[0151] Thus, for example, any sequence(s) and/or temporal order of
steps of various processes or methods that are described herein are
illustrative and should not be interpreted as being restrictive.
Accordingly, it should be understood that although steps of various
processes or methods or connections or sequence of operations may
be shown and described as being in a sequence or temporal order,
but they are not necessarily limited to being carried out in any
particular sequence or order. For example, the steps in such
processes or methods generally may be carried out in various
different sequences and orders, while still falling within the
scope of the present invention. Moreover, in some discussions, it
would be evident to those of ordinary skill in the art that a
subsequent action, process, or feature is in response to an earlier
action, process, or feature.
[0152] It is also implicit and understood that the applications or
systems illustratively described herein provide
computer-implemented functionality that automatically performs a
process or process steps unless the description explicitly
describes user intervention or manual operation.
[0153] It is understood from the above description that the
functionality and features of the systems, devices, components, or
methods of embodiments of the present invention include generating
and sending signals to accomplish the actions.
[0154] It should be understood that claims that include fewer
limitations, broader claims, such as claims without requiring a
certain feature or process step in the appended claim or in the
specification, clarifications to the claim elements, different
combinations, and alternative implementations based on the
specification, or different uses, are also contemplated by the
embodiments of the present invention.
[0155] It should be understood that combinations of described
features or steps are contemplated even if they are not described
directly together or not in the same context.
[0156] The terms or words that are used herein are directed to
those of ordinary skill in the art in this field of technology and
the meaning of those terms or words will be understood from
terminology used in that field or can be reasonably interpreted
based on the plain English meaning of the words in conjunction with
knowledge in this field of technology. This includes an
understanding of implicit features that for example may involve
multiple possibilities, but to a person of ordinary skill in the
art a reasonable or primary understanding or meaning is
understood.
[0157] It should be understood that the above-described examples
are merely illustrative of some of the many specific examples that
represent the principles described herein. Clearly, those skilled
in the art can readily devise numerous other arrangements without
departing from the scope of the present invention.
* * * * *
References