Previous | Table of Contents | Next |
Initially, one of the most likely applications of the MOF will be to support the development of distributed object-oriented
software from high-level models. Such a software development system would typically consist of a repository service for storing
the computer representations of models and a collection of associated tools. The latter would allow the programmers and designers
to input the models, and would assist in the process of translating these models into software implementations.
In the simple case, the repository service could be an implementation of the MOF model interfaces. This service would be accompanied
by tools (for example, compilers or graphical editors) that allow the designer to input information models using a human readable
notation for the MOF model. Assuming that the target for software development is CORBA based, the system would include an
IDL generator that implements the standard MOF model-to-CORBA IDL mapping.
The usage scenario for this repository service would be along the following lines:
1. The programmer uses the input tools provided by the system to define an object-oriented information model using the notation provided.
2. When the design is complete, the programmer runs the IDL generator to translate the model into CORBA IDL.
3. The programmer examines the IDL, repeating steps 1 and 2 to refine the model as required.
4. The programmer then implements the generated IDL to produce a target object server, and implement the applications that use the object server.
The functionality of the development suite described above can be expanded in a variety of ways. We can:
• Add generator tools to automatically produce the skeleton of an object server corresponding to the generated IDL. Depending on the sophistication of the tool, this skeleton might include code for the query and update operations prescribed by the IDL mapping, and code to check the constraints on the information model.
• Add generator tools to produce automatically stereotypical applications such as scripting tools and GUI-based browsers.
• Extend the repository service to store the specifications and/or implementation code for target server and application functionality that cannot be expressed in the MOF model.
While the MOF model is a powerful modeling language for expressing a range of information models, it is not intended to be
the ultimate modeling language. Instead, one intended use of the MOF is as a tool for designing and implementing more sophisticated
modeling systems. The following example illustrates how the MOF might be used to construct a software development system centered
around a hypothetical “Universal Design Language? (UDL).
Many parallels can be drawn between the hypothetical UDL discussed below and the draft OA&DF UML proposal in that UML is designed
to be a general purpose modeling language for visualizing, designing, and developing component software. The UDL can be thought
of as an extension, as well as a refinement, of many of the concepts in the UML. The extensions are mainly in the area of
providing sufficient detail to complete the implementation framework technologies and defining additional meta models that
address various technology domains such as database management, transaction processing, etc.
The developer of a software development system based on UDL might start by using a MOF Model notation to define a meta-model
for UDL. Conceivably, the UDL metamodel could reuse part or all of the MOF Model, though this is not necessarily a good idea2.
The developer could then use a simple MOF-based development system (along the lines described above) to translate the UDL
metamodel into CORBA IDL for a UDL repository, and to provide hand-written or generated software that implements the UDL repository
and suitable UDL model input tools.
The hypothetical UDL development system cannot be considered complete without some level of support for the process of creating
working code that implements systems described by the UDL models. Depending on the nature of the UDL, this process might involve
a number of steps in which the conceptual design is transformed into more concrete designs and, finally, into program source
code. A UDL development system might provide a range of tools to assist the target system designer or programmer. These tools
would need to be supported by repository functions to store extra design and implementation information, along with information
such as version histories, project schedules, and so on, that form the basis of a mature software development process.
In practice, a software development system implemented along these lines would have difficulty meeting the needs of the marketplace.
A typical software engineering “shop? will have requirements on both the technical and the process aspects of software engineering
that cannot be met by a “one-size-fits-all? development system. The current trend in software development systems is for Universal
Repository systems; that is, for highly flexible systems that can be tailored and extended on the fly.
A MOF-based universal repository system would be based around the core of the MOF Model, and a suite of tools for developing
target metamodels (for example, the UDL) and their supporting tools. Many of the tools in the universal repository could be
reflective; that is, the tools could make use of information from higher meta-levels to allow them to operate across a range
of model types. Functionality, such as persistence, replication, version control, and access control would need to be supported
uniformly across the entire repository framework.