Automatic software production system
First Claim
Patent Images
1. A process comprising:
- validating a Formal Language Specification written in a formal language which has predetermined rules of syntax and semantics, said Formal Language Specification defining a computer program to be automatically written;
automatically translating each element of a Formal Language Specification defining an object model, a functional model, a dynamic model and a presentation model, which taken together define the requirements of the program to be automatically written, into a full and complete computer program which needs no additional third party source code or source code from existing components or code libraries to be compiled with it to make said computer program complete and which implements the requirements of said Formal Language Specification, said Formal Language Specification defining at least an identification function for every class, and at least a valuation for every variable attribute, said translating step comprising the following steps;
using a computer, automatically write computer code that will request user name and password, receive any responses and authenticate the user;
using a computer, automatically write computer code that has the capability to control a computer to provide a mechanism to determine a user'"'"'s privilege level from log in information supplied by said user which identifies said user and query said Formal Language Specification and determine all object attributes said user has privilege to see and all services said user has privileges to invoke;
using a computer, automatically write computer code which has the capability to query said Formal Language Specification for all services of all classes that any authorized user has privileges to invoke and identify an object server which will implement each said service;
using a computer, automatically write code that has the capability to retrieve service arguments for all services;
using a computer, automatically write code that is capable of controlling a computer to provide a means by which an entity has a mechanism to invoke a service, and which has a mechanism to receive input to invoke a particular service and respond by sending a message to the appropriate object server to invoke the service, said message including the arguments required for the service to execute;
using a computer, automatically write code that has the capability to control a computer to implement an object server for every service, each of which first checks to verify that state transitions are valid for the current state of objects of which the object server will be altering the state;
using a computer, automatically write code that has the capability to control a computer to implement every object server that verifies preconditions are satisfied before making state transitions of any objects the states of which are acted upon by the object server;
using a computer, automatically write code that has the capability to control a computer to make all valuation calculations required by said Formal Language Specification of each object server;
using a computer, automatically write code that has the capability to control a computer to verify that integrity constraints specified in said Formal Language Specification on the values of attributes of objects have been satisfied after execution of a service and respond by reversing any changes in state which caused said integrity constraint to be violated if said integrity constraints are not satisfied; and
using a computer, automatically write code that has the capability to control a computer to implement every object server such that said object server tests trigger relationships specified in said Formal Language Specification after execution of a service and invoke a predetermined service associated with a trigger event if said trigger event has occurred.
1 Assignment
0 Petitions
Accused Products
Abstract
An automated software production system is provided, in which system requirements are captured, converted into a formal specification, and validated for correctness and completeness. In addition, a translator is provided to automatically generate a complete, robust software application based on the validated formal specification, including user-interface code and error handling code.
-
Citations
56 Claims
-
1. A process comprising:
-
validating a Formal Language Specification written in a formal language which has predetermined rules of syntax and semantics, said Formal Language Specification defining a computer program to be automatically written; automatically translating each element of a Formal Language Specification defining an object model, a functional model, a dynamic model and a presentation model, which taken together define the requirements of the program to be automatically written, into a full and complete computer program which needs no additional third party source code or source code from existing components or code libraries to be compiled with it to make said computer program complete and which implements the requirements of said Formal Language Specification, said Formal Language Specification defining at least an identification function for every class, and at least a valuation for every variable attribute, said translating step comprising the following steps; using a computer, automatically write computer code that will request user name and password, receive any responses and authenticate the user; using a computer, automatically write computer code that has the capability to control a computer to provide a mechanism to determine a user'"'"'s privilege level from log in information supplied by said user which identifies said user and query said Formal Language Specification and determine all object attributes said user has privilege to see and all services said user has privileges to invoke; using a computer, automatically write computer code which has the capability to query said Formal Language Specification for all services of all classes that any authorized user has privileges to invoke and identify an object server which will implement each said service; using a computer, automatically write code that has the capability to retrieve service arguments for all services; using a computer, automatically write code that is capable of controlling a computer to provide a means by which an entity has a mechanism to invoke a service, and which has a mechanism to receive input to invoke a particular service and respond by sending a message to the appropriate object server to invoke the service, said message including the arguments required for the service to execute; using a computer, automatically write code that has the capability to control a computer to implement an object server for every service, each of which first checks to verify that state transitions are valid for the current state of objects of which the object server will be altering the state; using a computer, automatically write code that has the capability to control a computer to implement every object server that verifies preconditions are satisfied before making state transitions of any objects the states of which are acted upon by the object server; using a computer, automatically write code that has the capability to control a computer to make all valuation calculations required by said Formal Language Specification of each object server; using a computer, automatically write code that has the capability to control a computer to verify that integrity constraints specified in said Formal Language Specification on the values of attributes of objects have been satisfied after execution of a service and respond by reversing any changes in state which caused said integrity constraint to be violated if said integrity constraints are not satisfied; and using a computer, automatically write code that has the capability to control a computer to implement every object server such that said object server tests trigger relationships specified in said Formal Language Specification after execution of a service and invoke a predetermined service associated with a trigger event if said trigger event has occurred.
-
-
2. A computer apparatus for automatically translating a Formal Language Specification defining an object model, a functional model, a dynamic model and a presentation model, which taken together define the requirements of a computer program to be automatically written, said Formal Language Specification being written in a formal language which has predefined rules of grammar, said translating acting to convert said Formal Language Specification into a computer program that implements the requirements of said Formal Language Specification, said Formal Language Specification defining at least an identification function for every class and at least a valuation for every variable attribute, said apparatus comprising:
a computer programmed with an operating system and one or more other programs to cooperate with said operating system to control said computer to perform the following functions; A) using said predetermined rules of grammar to validate said Formal Language Specification to ensure that said Formal Language Specification is complete and correct; B) automatically write computer code that will request user name and password, receive any responses and authenticate the user; C) automatically write computer code that will determine a user'"'"'s privilege level for a user identified by user name and password entered in response to the query caused by the code written in step B, and query said formal specification and determine all object attributes said user has privilege to see and query and all services said user has privileges to invoke; D) automatically write computer code which queries said formal specification for all services of all classes that any authorized user has privileges to invoke and identifies an object server which will implement said service; E) automatically write code that will retrieve service arguments for all services; F) automatically write code that displays one or more user interface tools which provide a mechanism to invoke a service, and which provides a mechanism to receive input to invoke a particular service and which responds by sending a message to the appropriate object server to invoke said service, said message including the arguments required for said service to execute; G) automatically write code that implements an object server for every service, each of which first checks to verify that state transitions are valid for the current state of objects the object service will be altering the state of; H) automatically write code for every object server that verifies preconditions are satisfied before making state transitions of any objects the states of which are acted upon by said object server; I) automatically write code to make all valuation calculations required by said specification of each object server; J) automatically write code to verify that integrity constraints specified in said Formal Language Specification on the values of attributes of objects have been satisfied after execution of a service and reversing any changes in state which caused said integrity constraints to be not satisfied if said integrity constraints are not satisfied; and K) automatically write code for every object server to test trigger relationships specified in said Formal Language Specification after execution of a service and invoke a predetermined service associated with a trigger event if a trigger event has occurred.
-
3. A physical computer-readable storage media containing instructions for controlling a computer to automatically translate a Formal Language Specification defining an object model, a functional model, a dynamic model and a presentation model, which taken together define the requirements of a computer program to be automatically written, said Formal Language Specification defining at least an identification function for every class and at least a valuation for every variable attribute said Formal Language Specification written in a formal language having predefined rules of grammar, by:
-
validating a Formal Language Specification written in a formal language which has predetermined rules of syntax and semantics, said validating accomplished using said predetermined rules of syntax and semantics to ensure said Formal Language Specification is complete and correct; automatically writing computer code that will request user name and password, receive any responses and authenticate the user; automatically writing computer code that will determine a user'"'"'s privilege level and query said Formal Language Specification and determine all object attributes said user has privilege to see and all services said user has privileges to invoke; automatically writing computer code which queries said Formal Language Specification for all services of all classes that any authorized user has privileges to invoke and identifies an object server which will implement said service; automatically writing computer code that will retrieve service arguments for all services; automatically write code that displays menus options, icons or creates any other means or mechanism through which a user or another process has the capability to invoke a service, and which provides a mechanism through which input to invoke a particular service is provided and mechanisms to provide values for arguments is provided and a mechanism is provided to construct and send a message to the appropriate object server to invoke the service, said message including the arguments required for the service to execute; automatically writing code that implements an object server for every service, each of which first checks to verify that state transitions are valid for the current state of objects the object service will be altering the state of; automatically write code for every object server that verifies preconditions are satisfied before making state transitions of any objects the states of which are acted upon by the object server; automatically write code to make all valuation calculations required by said Formal Language Specification of each object server; automatically write code to verify that integrity constraints specified in said Formal Language Specification on the values of attributes of objects have been satisfied after execution of a service and reverse any state changes which have been made which cause said integrity constraints to be not satisfied if said integrity constraints are not satisfied; and automatically write code for every object server to test trigger relationships specified in said Formal Language Specification after execution of a service and invoke a predetermined service associated with a trigger event if a trigger event has occurred.
-
-
4. A computer apparatus for automatically translating a Formal Language Specification written in any formal language defining a full and complete Conceptual Model of a desired computer program to be automatically generated into a full and complete source code which implements said desired computer program, comprising:
a computer programmed with an operating system and one or more other programs to cooperate with said operating system to control said computer to perform the following functions; reading all said primitives in said Formal Language Specification in any order; in any order, using a computer and said Formal Language Specification to automatically generate computer code which has the capability to control a computer to carry out one or more methods in an order determined by an execution model; determining if said Formal Language Specification requires user authentication, and, if so, automatically writing computer code that will request user name and password, receive any responses and authenticate the user; determining if said Formal Language Specification requires determining a user privilege level, and, if so, automatically writing computer code that will determine a user'"'"'s privilege level and query said Formal Language Specification and determine all object attributes said user has privilege to see and determine all services this user has privileges to invoke; determining if said Formal Language Specification defines services, and, if so, automatically writing computer code which queries said Formal Language Specification to determine all services that the authenticated user has privileges to invoke and which are defined in said Formal Language Specification for all classes of objects said authenticated user will be able to view and automatically writing an object server for each said service which will implement said service upon receipt of a service invocation message, each of said object servers containing code which will perform the following functions in the following order upon receipt of a service invocation message; verify that one or more proposed state transitions are valid for the current state of any object(s) of which said object server will be altering the state before actually altering the state of said object(s); verify that any preconditions of a service implemented by an object server are satisfied before said object server will act upon said one or more objects to make state transitions thereof in carrying out said service, ignoring said service invocation message if either said one or more state transitions cannot be validly made for the current state of any objects upon which said object server will be acting or any said precondition is not satisfied; if all said proposed transitions are valid on said one or more objects upon which said object server will act and if all said preconditions are satisfied, make all valuation calculations of said object server required by said Formal Language Specification; verify that service execution by said object server did not result in violation of one or more integrity constraints specified in said Formal Language Specification on the values of attributes of objects affected by execution of said service implemented by said object server, and take corrective action if one or more of said integrity constraints are not satisfied; and after a valid change of state of an object acted upon by said object server occurs, test trigger relationships or condition-action rules specified in said Formal Language Specification and, if any trigger event is satisfied, triggering a service specified in said condition-action rule or trigger relationship.
-
5. A process for automatically translating a Formal Language Specification written in any formal language defining a full and complete Conceptual Model of a desired computer program to be automatically generated into a full and complete source code which implements said desired computer program, comprising:
-
reading all said primitives in said Formal Language Specification in any order; in any order, using a computer and said Formal Language Specification to automatically generate computer code that has the capability to control a computer to implement one or more methods which perform the following functions in an order determined by an execution model; determining if said Formal Language Specification requires user authentication, and, if so, automatically writing computer code that will request user name and password, receive any responses and authenticate the user; determining if said Formal Language Specification requires determining a user privilege level, and, if so, automatically writing computer code that will determine a user'"'"'s privilege level and query said Formal Language Specification and determine all object attributes said user has privilege to see and determine all services this user has privileges to invoke; determining if said Format Language Specification defines services, and, if so, automatically writing computer code which queries said Formal Language Specification to determine all services that the authenticated user has privileges to invoke and which are defined in said Formal Language Specification for all classes of objects said authenticated user will be able to view and automatically writing an object server for each said service which will implement said service upon receipt of a service invocation message, each of said object server containing code which will perform the following functions in the following order upon receipt of a service invocation message; verify that one or more proposed state transitions are valid for the current state of any object(s) of which said object server will be altering the state before actually altering the state of said object(s); verify that any preconditions of a service implemented by an object server are satisfied before said object server will act upon said one or more objects to make state transitions thereof in carrying out said service, ignoring said service invocation message if either said one or more state transitions cannot be validly made for the current state of any objects upon which said object server will be acting or any said precondition is not satisfied; if all said proposed transitions are valid on said one or more objects upon which said object server will act and if all said preconditions are satisfied, make all valuation calculations of said object server required by said Formal Language Specification; verify that service execution by said object server did not result in violation of one or more integrity constraints specified in said Formal Language Specification on the values of attributes of objects affected by execution of said service implemented by said object server, and take corrective action if one or more of said integrity constraints are not satisfied; and after a valid change of state of an object acted upon by said object server occurs, test trigger relationships or condition-action rules specified in said Formal Language Specification and, if any trigger event is satisfied, triggering a service specified in said condition-action rule or trigger relationship.
-
-
6. A process for converting a Formal Language Specification encoding a Conceptual Model which defines desired system logic and a desired user interface of a desired computer program into source code which encodes said desired computer program, comprising:
-
validating said Formal Language Specification to ensure it is complete and correct; retrieving predetermined information from said Formal Language Specification encoding a Conceptual Model which defines one or more classes of objects in an object model, a dynamic model which specifies the behavior of each object in response to services, triggers and global transactions as represented by a state transition diagram for every class and an object interaction diagram for every trigger and for every global transaction, and a functional model which defines the semantics of any change of each object'"'"'s state as a consequence of an event occurrence by specifying for each class one or more mathematical or logical formulas which define how one or more variable attributes of said class will have their values changed when one or more specified events of said class occurs meaning one or more services of said class is executed; using predetermined information retrieved from said Formal Language Specification to automatically generate source code which implements a presentation tier of said desired computer program; using predetermined information retrieved from said Formal Language Specification to automatically generate source code which implements a persistence tier, database of data structure of said desired computer program; using said predetermined information retrieved from said Formal Language Specification to automatically generate source code which implements a middle tier of said desired program which communicates with said presentation tier in the manner defined below, said middle tier written by automatically generating at least the following component instances for each class defined in said Formal Language Specification; a server component instance including a method to implement each service present in a signature of said class and one or more methods to receive requests from said presentation tier that relate to execution of services of said class; a query component instance including a method for implementing queries to extract information from said persistence tier relating to objects within said class and a method to receive and process requests from said presentation tier to query said persistence tier; an executive component instance including one or more methods to receive and process a request from said server component or another executive component to execute a service in said class and carry out the following functions; verify the existence and validity for a requested server component; create a copy of a requested server component instance in memory and access said persistence tier using said query component to retrieve values of constant and variable attributes of said server component; validate state transitions for said requested service and a present state for a server component instance; verify the satisfaction of preconditions specified in said Formal Language Specification of said requested service; changing the state of said server component instance to a new state by modifying a value of a variable attribute of said server component instance by performing all valuations specified in said functional model affected by said requested service; validating said new state by verifying said new state does not violate static or dynamic restrictions specified in said Formal Language Specification; check trigger conditions established in said Formal Language Specification to determine if said new state causes any trigger to occur, and, if so, which actions should be carried out; communicate with said persistence tier to access or store all attributes of said server component instance.
-
-
7. A process for validating a Formal Language Specification, comprising the steps:
-
A) checking said Formal Language Specification to ensure that it is complete in that all required properties of a Conceptual Model embodied in said Formal Language Specification are defined and have a valid value; B) using rules of grammar of whatever formal language said Formal Language Specification is written in, checking said Formal Language Specification to ensure it is correct in that it is syntactically and semantically correct and not ambiguous. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer apparatus comprising a computer programmed with an operating system and a validation program that cooperates with said operating system to control said computer to perform the following functions of a validation process:
-
A) check a Formal Language Specification for completeness by checking to ensure said formal language Formal Language Specification has no missing information which is needed to detail the requirements of a desired computer program modelled by said Formal Language Specification; B) cooperate with said operating system to ensure said Formal Language Specification is correct by checking each statement in said Formal Language Specification according to rules of grammar of whatever formal language in which said Formal Language Specification is written to ensure that each statement is syntactically and semantically correct and not ambiguous so as to ensure that all properties of elements in a Conceptual Model encoded in said Formal Language Specification have a value which is valid and to ensure that all formulas in said Conceptual Model have correct syntax and meaning. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26)
-
-
27. A physical computer readable storage media having stored thereon computer-readable instructions which when executed by a computer implement a validation program to control said computer to perform the following functions of a validation process:
-
A) check a Formal Language Specification for completeness by checking to ensure said Formal Language Specification has no missing information which is needed to detail the requirements of a desired computer program modelled by said Formal Language Specification; B) cooperate with said operating system to ensure said Formal Language Specification is correct by checking each statement in said Formal Language Specification according to rules of grammar of whatever formal language in which said Formal Language Specification is written to ensure that each statement is syntactically and semantically correct and not ambiguous so as to ensure that all properties of elements in a Conceptual Model encoded in said Formal Language Specification have a value which is valid and to ensure that all formulas in said Conceptual Model have correct syntax and meaning. - View Dependent Claims (28, 29, 30, 31, 32)
-
-
33. A process to automatically translate a Formal Language Specification defining the functionality of a computer application modelled in a Conceptual Model, into a computer program called an application, said process comprising the steps of:
-
A) validating said Formal Language Specification to ensure said Formal Language Specification is complete in that there is no missing information in said Formal Language Specification and to ensure said Formal Language Specification is correct in that primitives of said conceptual model are syntactically and semantically consistent and not ambiguous; B) translating said validated Formal Language Specification into computer readable code which has the capability to control a computer to provide a user interface access mechanism to allow users to log in by entering at least identification data and to use said identification data to authenticate and validate a user as an instance of a class of the validated Formal Language Specification that act as agent in at least one agent relationship; C) translating said validated Formal Language Specification into computer readable code which has the capability to control a computer to provide a view of the system defining the set of objects and attributes the user can query and the set of services said user can execute, the content of said system view depending on the identity of said user accessing said application; and D) translating said validated Formal Language Specification into computer readable code which has the capability to control a computer to provide user interface interaction mechanisms to interact with and execute the functionality of the application in terms of performing queries on information managed by said application and executing services to modify the state of said information managed by said application, said services comprising events, local transactions and global transactions. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56)
-
Specification