Model Driven Architecture (MDA) with Executable UML (xUML) is a rigorous, object-oriented system development method that has been successfully deployed on many strategically critical projects in sectors such as telecommunications, automotive, aerospace and defence, since 1994. It is founded on the principle of building a set of precise, testable models of the system to be developed, testing these models prior to implementation, and defining a systematic strategy by which the models will be used to produce code for the desired target system. The MDA with xUML process embodies these distinctive characteristics:
- Precise, Complete Models that can be subjected to rigorous testing by simulation. Thus, xUML provides a strong analysis completion criterion, which is: "The model is complete when it successfully executes all specified use cases".
- Simple Notations, using the Unified Modelling Language organised into a coherent set of layers. This means that normal human beings, such as customers, hardware engineers and managers can read, understand and provide helpful feedback on the emerging models.
- An Understandable and Repeatable Partitioning Strategy, based upon the idea of separation of subject matters into domains.
- A Conceptually Coherent Process, that provides a small but sufficient set of techniques to address all subject matters in a uniform way.
- Implementation by Translation, in which the entire system can, if desired, be automatically generated from the models, using a set of rigorously specified rules that deliver a system with the required performance characteristics.
- Large-Scale Reuse, in which entire sets of classes, known as domains, are reused as a single component.
In the language of the Model Driven Architecture (MDA) from the Object Management Group (OMG), each xUML model is a Platform Independent Model (PIM). This translation-based approach to MDA makes use of PIM to Platform Specific Model (PSM) and Platform Specific Implementation (PSI) mappings.
The MDA with xUML process (fully described in our book) involves the creation of platform independent, xUML models that include a high level action language (AL). The resulting models can be independently executed, debugged, viewed and tested.
Multiple Executable UML models can be assembled together to form complex systems with the mappings between them being expressed using an AL.
Both the individual executable models and multi-model assemblies can then be translated into target implementations. The execution rules of the xUML formalism mean that the same models can be translated into a wide variety of target architectures without changes to the models.
A cornerstone of this approach is that the mappings to target implementations are well understood and documented. Exactly how this is achieved will depend on the tools in use. For example, one approach is that the mapping rules are themselves expressed using xUML Models. These translation models are themselves then used to generate a code generator for the target system architecture. This makes the code generators extremely configurable. Alternatively, the mappings rules can be expressed declaratively and processed by suitable tools to produce the target code. Such rules are more amenable to formal checking and verification.
Chris Raistrick, Professional Services Director at Abstract Solutions has been interviewed at the Model Driven Software Network about Abstract Solutions and our experiences with Model Driven Development. You can hear the interview here.