[0022]In the preferred species described herein, the process of creating the Conceptual Model is done using a graphical user interface to represent the various objects, etc. that comprise the model visually. In other embodiments, the Conceptual Model may be drafted directly in a formal language using a plain old text-based interface or any word processing application. This is done by a SOSY modeler after determining the nature of the problem to be solved and all the other information needed to model the code to be written in a formal language. As long as the Conceptual Model is written in a formal language, it can be validated, and that validation process is a key factor in generating complete and error free code. This substantially reduces the time to market for the application's final code.
[0023]The applicants feel that the front end processing to generated a high level repository in a formal language that records the details of the Conceptual Model is an invention standing alone. This is because this high level repository can be coded manually and there will be far fewer errors caused by incomplete information, ambiguous terms, etc.
[0029]The second point of novelty subgenus relates to how the Conceptual Model is actually built by the SOSY modeler. In the preferred species within this first subgenus, the Conceptual Model is built by using a graphical user interface to define objects and relationships between objects, state transitions and most if not all the other items that go into the Conceptual Model that is encoded into the formal language. This just makes it easier for the SOSY modeler to use the formal language by alleviating the need for the SOSY modeler to know all the details of the syntax and semantics of the formal language. In other species within the first subgenus however, the SOSY modeler can use a text based interface or any other type of interface to record the statements which together comprise the Conceptual Model.
[0040]By generating the application code from the validated formal specification, error-free source code strategies can be employed, freeing the developer from having to manually produce the source code or extend an incomplete prototype. Therefore, the error-prone, manual programming phase of the traditional software engineering process is eliminated, and the testing and debugging time is greatly reduced. In one example, the software development time of an application was reduced to 2.02% (or 8.5% worst case) of the original time. In other words, performance has been benchmarked by a reputable software tool evaluation company to be 12 to 47 times faster than similar projects using other competing software products. Software maintenance is also reduced, because the traditional coding, testing, and revalidation cycles are eliminated.
[0041]One aspect of the present invention springs from the insight that ambiguity is a major source of programming errors associated with conventional object-oriented and higher-order programming languages such as C++. Accordingly, an automated software production tool, software, and methodology are provided, in which a graphical user interface is presented to allow a user to input unambiguous formal requirements for the software application. Based on the formal requirements input for the software application, a formal specification for the software application is produced and validated, from which the software application is generated. By generating the software application directly from an unambiguous, validated formal specification, the software developer can avoid the programming errors associated with conventional programming languages, and instead work directly in the problem space. In one embodiment, error handling instructions are also produced when the software application is generated so as to create a robust, final software application.