Model Driven Architecture (MDA)
Introduction
Model Driven Engineering refers to the systematic use of models as primary engineering artifacts throughout the engineering lifecycle, the set of tools needed to apply such an approach is made of graphical modelers (UML), interoperability layers (XML/XMI imports and exports) and tools to take advantage of this models using "Model to Text" transformations. MDA is standardized by OMG.
History of Software Development
Increase level of abstraction for the software practitioner
Essential to this change, of course, was the UML. It provided a single set of common concepts that became widely used across the software industry, which soon ended the lengthy debate over which set of concepts to use when designing software systems. organizations are well-served by creating models of the problem domain and solution domain, and by coordinating these models throughout the life of a software project.
MDA Theory
Following a long history of the use of models to represent key ideas in both problem and solution domains, MDA provides a conceptual framework for using models and applying transformations between them as part of a controlled, efficient software development process. Here are the basic assumptions and parameters governing MDA usage today:
- Models help people understand and communicate complex ideas.
- Many different kinds of elements can be modeled, depending on the context. These offer different views of the world that must ultimately be reconciled.
- There is a commonality at all levels of these models – in both the problems being analyzed and the proposed solutions.
- Applying the ideas of different kinds of models and transforming them between representations provides a well-defined style of development, enabling the identification and reuse of common approaches.
- In what it calls "model driven architecture," the UML has provided a conceptual design representation framework and a set of standards to express models, model relationships, and model-to-model transformations.
- Tools and technologies can help to realize this approach, and make it practical and efficient to apply.
Four principles of MDA:
· Models expressed in a well-defined notation are a cornerstone to understanding systems for enterprise-scale solutions.
· The building of systems can be organized around a set of models by imposing a series of transformations between models, organized into an architectural framework of layers and transformations.
· A formal underpinning for describing models in a set of metamodels facilitates meaningful integration and transformation among models, and is the basis for automation through tools.
· Acceptance and broad adoption of this model-based approach requires industry standards to provide openness to consumers, and foster competition among vendors
Based on above principles models can be classified into four types:-
1. Computation Independent Model (CIM)
2. Platform Independent Model (PIM)
3. Platform Specific Model (PSM) described by a Platform Model (PM)
4. An Implementation Specific Model (ISM)
Models, modeling and MDA
Models and model driven software development are at the heart of the MDA approach. In the software engineering world, modeling has a rich tradition, dating back to the earliest days of programming. The most recent innovations have focused on notations and tools that allow users to express system perspectives of value to software architects and developers in ways that are readily mapped into the programming language code that can be compiled for a particular operating system platform. The current state of this practice employs the Unified Modeling Language (UML) as the primary modeling notation. The UML allows development teams to capture a variety of important characteristics of a system in corresponding models. Transformations among these models are primarily manual. UML modeling tools typically support requirements traceability and dependency relationships among modeling elements, with supporting documents and complementary consulting offerings providing best practice guidance on how to maintain synchronized models as part of a large-scale development effort.
MDA tools provide ability to synchronized models with code as shown diagrammatically below:-
MDA tools provide ability to automate the initial transformation and also help to keep the design and implementation models in step as they evolve. Typically, the tools generate code stubs from the design models that the user has to further refine. Changes to the code must at some point be reconciled with the original model (hence the term "roundtrip engineering," or RTE). To achieve this, you need a way to recognize generated versus user-defined code; placing markers in the code is one approach.
Open Source MDA tools
1. AndroMDA
AndroMDA (pronounced "Andromeda") is an extensible generator framework that adheres to the Model Driven Architecture (MDA) paradigm. Models from UML tools will be transformed into deployable components for your favorite platform (J2EE, Spring, .NET). Unlike other MDA toolkits, AndroMDA comes with a host of ready-made cartridges that target today's development toolkits like Axis, jBPM, Struts, JSF, Spring and Hibernate. AndroMDA also contains a toolkit for building your own cartridges or customize existing ones - the meta cartridge. Using it, enterprise can build a custom code generator using your favorite UML tool.
Note: - Cartridge is important concept here. There can be concept of Becon cartridge or
2. Acceleo
This is new kid on the block
1 comment:
There is one more MDA tool called "openware". which uses scripts to generate the code.
Post a Comment