5.3.16 Multiple Environments

As mentioned earlier, a foundational principle of AOA is to define an application at the logical level and then generate those logical components into whatever physical environment is desired. This is demonstrated in OpenCUAS first by its ability to be generated and run under multiple SQL databases without modification, such as MS Access, MS SQL Server and MySQL It is also demonstrated by components having been generated and interfaced to data in Informix.

However, probably the most significant demonstration of this logical to physical generation, particularly as it applies to the concept of universal design objects and the cloud, is the generation of the whole OpenCUAS web system into both C and Java.

The OpenCUAS web subsystem, comprising over 600 pages, was originally generated into a combination of JSP and C. That generation had JSP statements calling a special JSP/C interface, so that standard AOA operation DLL’s could be called at execution time from the JSP. As technologies changed, it became more desirable to generate an all-Java web solution. Consequently, a complete Java version of AOA was constructed and the entire OpenCUAS web was regenerated into that Java environment, without change to the OpenCUAS source. The only reprogramming required was to convert one file of low-level C routines to their Java equivalents.

This meant that the OpenCUAS web interfaces simply were generated into new JSP files, which then interfaced with native Java, and all the Dialog, LOD and Global VML Operations were generated into native Java, which would make calls directly against a new all-Java object engine. Reports in the new environment were regenerated into a combination of design-time XSLT and execution-time VML. This conversion proved the viability of a key AOA tenant: that it is possible and effective to define an application in a logical source form independent from the physical environment and then generate systems into different environments from that logical source, even environments not anticipated at the time of application definition.