openArchitectureWare (oAW) is the name for a generator framework to support Model Driven Software Development( MDSD). Model Driven Architecture( MDA) is a standard of the Object Management Group( OMG) for model-based software development. Thereby oAW realizes both the examination of models and their transformation as well as the generation of program code. The framework itself is implemented in Java and bundles various tools.
OaW supports the processing of different models, such as Eclipse Modelling Framework( EMF), XMI dialects of different UML tools, the Eclipse UML2- XMI format and XML. For each of these formats a so-called adapter is available, which realizes the mapping of the format to internal model instances. This allows the framework to react flexibly to extensions by generating corresponding adapters for new formats. For the instantiation of the models, oAW uses the Ecore metamodel of the Eclipse Modeling Framework (EMF), which is an open source framework that specifically supports the generation of Java program code from models. The generator framework with its components Workflow Engine, Xpand, Xtend, Check and Xtext is part of the Eclipse Modeling Project and available as open source under the link below. The framework enables the reuse of existing Eclipse projects and also integrates without transition into the Eclipse development environment. Its use is particularly advantageous in larger and more complex projects. As an active project of the Eclipse Foundation, oAW is subject to stable, further development.
openArchitectureWare with Java Framework
openArchitectureWare (oAW) is a framework implemented on the basis of Java, which supports arbitrary transformations of models. Thus, in addition to model-to-model transformations, model-to-code transformations are also possible, so that oAW is not limited to the generation of program code. In addition, functions for validating models, testing and debugging are provided.
In the illustration the substantial components of the Frameworks are represented. Because the oAW is modular, all components can be dynamically extended and exchanged. Thus arbitrary model types can be used and there are no language restrictions. Likewise it becomes clear that the Template language Xpand, the functional language Xtend and the language Check are all based on the same type and expression system. The oAW languages are all supported by convenient Eclipse editors, which greatly simplify the work.
A brief description of each component follows:
Workflow Engine Realizes a generator for arbitrary model transformations for example for Java code generation. The Workflow engine is put together from so-called Cartridges. A workflow is a list of components based on XML syntax. The components (Workflow Components) are executed one after the other and communicate with each other via so-called slots.
Type system A uniform type system supports the interaction of components and meta models.
Expression system Establishes a common base of a combination of Java and Object Cons-traint Language( OCL) for oAW's language constructs.
Xpand Defines a template language for describing the rules of a model transformation. Among other things, this can be used to describe the rules for generating Java program code from a model structure.
Xtend Functional language for the extension of the metamodel types.
Check Describes the boundary conditions of the metamodels in an OCL-like language.
Central control of code generation is provided by the workflow engine. A simple example of the workflow file execution flow might look like the following:
- The destination folder for the program code to be generated is stored in a variable.
- To load a model, component X is called. The model is stored in the output slot so that it is available for the other components.
- To check the model for correctness, component Y is called. If an error occurs, the workflow is terminated and this is noted in a log.
- The component Xpand generator is initiated, the Java program code is generated and stored in the target folder. In addition a JavaBeautifier provides for an impeccable optics of the generated code.
Due to the fact that openArchitectureWare (oAW) is constantly developed further by a large developer community and has also been actively used in industry for several years, oAW has developed into a powerful tool. OaW is not limited to a single metametamodel, and code generation is also not restricted to a given language, since this can be specified arbitrarily by Xpand. This is already a substantial progress in relation to the case tools propagated in former times.
The fact that oAW realizes meanwhile a mature modeling framework is to be recognized surely also by its admission into the Eclipse Modeling Project. As far as domain-specific problems are concerned, the use of Xtext also makes sense for reasons of flexibility and portability. However, since the development of a new Domain Specific Language( DSL) is complex, Xtext should only be used to simplify development in the long term or if no corresponding modeling tools exist yet.