As mentioned above, a key concept driving Application Open Architecture is to provide a structure that completely defines an application at the business or design level and then generates executing systems from that definition into a variety of environments. It seems unlikely that anyone would question the desirability of such a solution. However, it seems quite likely that just about anyone would question its viability. Is it really possible to find a structure that would completely generate an executing system from its design?
There are systems that generate programs from some design-level specifications that provide a starting point for a programmer. But that isn’t good enough, because such solutions do nothing to address the key issues of reusability, modifiability and portability. No, the only way to deliver on these critical objectives is to keep the definition of the application completely at high-level, business-driven, logical design structures. But, is such a thing even possible? It is the purpose of the rest of this presentation to not only show that it is possible, but that it has been done for one of the largest and most complex application systems in the industry.
AOA Logical Design Components
AOA is composed of a group of integrated design components (i.e., high-level, reusable building blocks) for the purpose of providing a complete high-level specification of an application system and addressing the full process of application development from analysis and design through programming and testing. There is one key component, however, which lies at the heart of the system, the Logical Object Definition (LOD), referred to mainly throughout this presentation as the AOA Object. This is an expansion and modification of the concept of an object from object oriented programming, using it to provide the definition of information as “data in context.”
Though this concept will be expanded greatly further on, it is be helpful here to provide some of the background that drives the LOD. It should be noted that what converts data into information is context. For instance, seeing a piece of data such as “10/03/1978” has a little bit of meaning from its format (i.e., context), which, to Americans, is easily recognized as a date. However, adding a title like “Date of Birth: 10/03/1978,” begins to expand that data into a bit of information. Providing additional context by putting that data on a page titled “Employee Personal Data”, along with the name of a company and the name of a person, expands that data into more information. Thus, it is typical in information processing that the format of interfaces is used to turn data into information. Another way to look at it is to say the “format creates a context that gives the data meaning.”
However, using user interfaces to provide the context for turning data into information is extremely limiting. Instead, what we are looking for is a way to define the context of information, particularly for very complex information, that is independent of interfaces. It should be noted that XML is a current architecture that has found some success in specifying data in context. Not surprisingly then, the objects used in AOA have several similarities to the data formatted in XML.
It should be noted that it is critical that all the components in the set work together. Though the application development process includes many individual problems that must be solved, no problem is more important than making the complete process work together as a seamless whole. A key objective throughout is “managing complexity,” managing complexity in individual processes, but more importantly, managing the complexity of the whole system. Toward that end, it will be noted that the graphical representation of an object used from the early stages of design is exactly the same as the graphical representation of that object during final execution when it is presented for debugging purposes. The difference is that the first, the LOD, defines the design of an object and the last, an Object Browser object instance, displays the current data content and structure of the object in real time.
The major design components of AOA follow in the next sections in this presentation.
Developing AOA within AOA
There is one additional point that should be made relative to the tools that support the AOA Components: They are all built using the AOA tool set. In other words, the AOA tool set has been built in itself, a surprising and interesting example of recursive development.