COMPUTER SYSTEM AND COMPUTER IMPLEMENTED PROCESS FOR REPRESENTING SOFTWARE SYSTEM DESCRIPTIONS AND FOR GENERATING EXECUTABLE COMPUTER PROGRAMS AND COMPUTER SYSTEM CONFIGURATIONS FROM SOFTWARE SYSTEM DESCRIPTIONS
First Claim
1. A computer system for automatically generating computer code for a software system from a representation of the software system, comprising:
- means for specializing each activity and dependency in the representation to identify one or more associated computer programs for implementing the activity or managing the dependency, wherein the representation is defined by activities, dependencies and ports through which activities are connected to dependencies; and
means for combining the associated computer programs in the specialized representation to provide the computer code for the software system.
1 Assignment
0 Petitions
Accused Products
Abstract
A computer software system includes interdependent collections of software components. That is, at the architectural level, software components and their interdependencies are two distinct equally important entities. The software components represent the core functional pieces of an application and deal with concepts specific to an application domain. Interdependencies relate to concepts orthogonal to the problem domain in most applications, such as transportation, sharing of resources and synchronization constraints among components. An architectural description language which represents activities and dependencies between activities as separate entities. Dependencies are managed by coordination processes associated with the dependency. Activities and dependencies are connected through ports which encode interfaces between activities and coordination processes. The language may also represent resources which may be understood as the output of some activity beyond the scope of the system. Each entity, i.e., activity, dependency, port or resource, may also have attributes which are name value pairs, specifying additional information about the entity. Attributes may be inherited. That is, activities and dependencies may be specialized into particular versions of an activity or dependency. The attributes for a particular activity are inherited by its specializations. An editor repository and design assistant may be based on this language to provide a system that automatically generates executable code.
220 Citations
22 Claims
-
1. A computer system for automatically generating computer code for a software system from a representation of the software system, comprising:
-
means for specializing each activity and dependency in the representation to identify one or more associated computer programs for implementing the activity or managing the dependency, wherein the representation is defined by activities, dependencies and ports through which activities are connected to dependencies; and
means for combining the associated computer programs in the specialized representation to provide the computer code for the software system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
means for generating a representation of an activity including an indication of ports defining needs for interaction with other activities through dependencies;
means for generating a representation of a dependency including an indication of ports defining points of connection with activities; and
means for controlling connections of activities to dependencies and for performing a compatibility check of the ports of the connected activities and dependencies.
-
-
4. The computer system of claim 1, further comprising means for editing the representations of software systems, including:
-
means for generating a representation of an activity including an indication of ports defining needs for interaction with other activities through dependencies;
means for generating a representation of a dependency including an indication of ports defining points of connection with activities; and
means for controlling connections of activities to dependencies and for performing a compatibility check of the ports of the connected activities and dependencies.
-
-
5. The computer system of claim 4, further comprising a browser for viewing the representation of a software system.
-
6. The computer system of claim 4, further comprising:
means for generating a representation of a resource which provides outputs of activities that are beyond the scope of the software system represented.
-
7. The computer system of claim 4, wherein the means for generating a representation of an activity includes means for defining the activity as a specialization of another activity.
-
8. The computer system of claim 4, wherein the means for generating a representation of an activity includes means for defining a decomposition of the activity as a set of activities interconnected by dependencies.
-
9. The computer system of claim 4, wherein the means for defining a dependency includes means for defining the dependency as a composite dependency.
-
10. The computer system of claim 4, wherein the means for defining a dependency includes means for defining the dependency as a specialization of another dependency.
-
11. A computer-implemented process for generating executable code from a system description including activities connected to dependencies, wherein each activity has ports connected ports of dependency, wherein the process comprises the steps of:
-
augmenting each activity with appropriate wrappers and callers so that each dependency connected to a port of an augmented activity can be managed independently of any other dependency of the same activity;
associating each activity with executable software programs by searching a database for compatible specializations of the activity;
selecting one of the compatible specializations;
replacing the target activity with the selected compatible specialization;
associating each dependency with a coordination process to manage the dependency by searching the database for compatible coordination processes for the dependency;
selecting one of the compatible coordination processes;
replacing the target dependency with the selected compatible coordination process;
with the selected compatible coordination process;
recursively applying the steps of associating and replacing for decomposition of each selected specialization of an activity for which there is no compatible executable software program; and
when all activities and dependencies of the application model have been replaced with executable specializations, generating executable code by traversing the application model and combining the pieces of software associated with each element of the model into sets of procedures, and by compiled the sets of procedures into executable programs. - View Dependent Claims (12, 13, 14, 15)
presenting possible selections to a user; and
receiving an input from a user indicative of the selected compatible specialization.
-
-
13. The process of claim 11, wherein the step of selecting a compatible specialization includes a selection based on function of attributes of the compatible specializations.
-
14. The process of claim 11, wherein the step of selecting one of the compatible coordination process includes the steps of:
-
presenting possible selections to a user; and
receiving an input from a user indicative of the selected compatible coordination process.
-
-
15. The process of claim 11, wherein the step of selecting a compatible includes a selection based on function of attributes of the compatible coordination processes.
-
16. A computer system for automatically generating computer code for a software system from a representation of the software system, wherein the representation is defined by activities, dependencies and ports through which activities are connected to dependencies, comprising:
-
means for specializing each activity and dependency in the representation to identify one or more associated computer programs for implementing the activity or managing the dependency;
means for combining the associated computer programs in the specialized representation to provide the computer code for the software system;
means for editing the representations of software systems, including;
means for generating a representation of an activity including an indication of ports defining needs for interaction with other activities through dependencies;
means for generating a representation of a dependency including an indication of ports defining points of connection with activities; and
means for controlling connections of activities to dependencies and for performing a compatibility check of the ports of the connected activities and dependencies; and
means for defining a coordination process associated with a dependency and having ports connecting to ports of activities, wherein the coordination process includes at least one activity and associated dependencies, wherein the ports of the coordination process are ports of the dependencies.
-
-
17. A computer system for automatically generating computer code for a software system from a representation of the software system, wherein the representation is defined by activities, dependencies and ports through which activities are connected to dependencies, comprising:
-
means for specializing each activity and dependency in the representation to identify one or more associated computer programs for implementing the activity or managing the dependency;
means for combining the associated computer programs in the specialized representation to provide the computer code for the software system;
wherein a coordination process manages a dependency and further comprising means for storing representations of coordination processes for software systems, including;
a computer-readable medium;
a plurality of computer-readable representations of coordination processes, including associated computer program code for each representation for implementing the coordination process wherein a representation of a coordination process includes activities connected through dependencies and having ports corresponding to ports of dependencies and defining points of connection with activities; and
means for associating the representation of coordination processes with one or more of a plurality of dependency types. - View Dependent Claims (18, 19, 20)
-
-
21. A computer system for automatically generating computer code for a software system from a representation of the software system, wherein the representation is defined by activities, dependencies and ports through which activities are connected to dependencies, comprising:
-
means for specializing each activity and dependency in the representation to identify one or more associated computer programs for implementing the activity or managing the dependency;
means for combining the associated computer programs in the specialized representation to provide the computer code for the software system; and
means for determining whether ports of an activity are compatible with ports of a dependency, comprising;
means for determining whether the ports of the activity and the dependency are both composite or both atomic;
means, if both ports are atomic, for determining if each attribute of the port of the activity has a value which is the same as or a specialization of the value of the same attribute at the port of the dependency; and
means, if both ports are composite, for recursively matching subports of the composite ports. - View Dependent Claims (22)
if both ports are atomic and at least one of the ports has an attribute set to a variable, then determining if the variable can be unified successfuly with a value of the same attribute at the other port.
-
Specification