Transcript MDD

An Overview of the
Model-Driven
Architecture
Jacques Robin
Ontologies
Reasoning
Components
Agents
Simulations
Outline





What is MDA?
MDA Principles
MDA Process and Software Reuse
OMG MDA standards
Third party providers roles, standards and tools
What is Model-Driven Architecture
(MDA)?
 An initiative from the Object Management Group (OMG) started in
1997, www.omg.org/mda/
 New paradigm of software development
 Goals:
 Maxime software reuse across platforms
 Solve the second order interoperability problem among different
middleware (which goal was to solve the first order interoperability
problem among programming languages)
Raise the level of abstraction where most development effort is spent
from code to model
Provide standards to automate the entire software development process
through a model transformation approach
 Reuses and extends previous standards
 Unified Modeling Language (UML), by OMG
 Meta-Object Facility (MOF), by OMG
 eXtensible Markup Language (XML), by W3C (World-Wide Web
Consortium, www.w3c.org/xml/)
MDA Principles
 The most valuable, durable, reusable assets produced during the
development process is not code but models
 Far more significant and cost-effective quality gains are achievable
by improving design and models than by improving code
 Benefits from careful, detailed, explicit modeling is not limited to
the application under development but extend to all the processes,
artifacts, languages, tools and platforms used for this development
MDA Principles
 A high degree of software process automation can be achieved by:
 Building a variety of models, each one with a different role in the
process,
 Making each of these models machine processable by expressing it in a
semi-formal notation devoid of natural language
 Defining this notation itself as an object-oriented model (called a metamodel)
 Storing all models and meta-models with traceability links in a
repository accessible to model manipulation software
 Abstracting generic transformations between pairs of meta-models that
computationally codify the know how for one software process stage
 Using model transformation engines to apply these transformations to
the source model of a process stage and generate the target model of
that stage
 Define meta-models for the meta-modeling and model transformation
notations
MDA Software Process
CIM
Meta-model
MetaMeta-Model
Domain
Computation
Independent
Model
Requirement
Meta-model
PSM
Meta-model
Application
Requirement
Model
PIM
Meta-model
Application
Platform
Independent
Model
Platform
Meta-model
Platform
Model
Testing
Meta-model
Testing
Model
Application
Platform
Specific
Model
Application
Source
Code
Testing
Code
Source Code
Meta-Model
Testing Code
Meta-Model
Textual MetaMeta-Model
Artifact Reuse with MDA Process
Application A
Requirement
Model
Platform P
Model
Application A
Platform P
Specific
Model
Application A
Platform
Independent
Model
Domain
Computation
Independent
Model
Testing
Model AP
Testing
Model AQ
Application A
Platform Q
Specific
Model
Application B
Platform
Independent
Model
Application B
Requirement
Model
Platform Q
Model
Application B
Platform P
Specific
Model
Testing
Model BP
Application B
Platform Q
Specific
Model
Testing
Model BQ
Automated MDA Process: Design
Model
Transformation
Meta-model
Design
Transformations
CIM
Meta-model
PIM
Meta-model
Requirement
Meta-model
Application
Requirement
Model
Domain
Computation
Independent
Model
Model
Transformation
Engine
Application
Platform
Independent
Model
Automated MDA Process:
Implementation
Model
Transformation
Meta-model
PIM
Meta-model
PIM  PSM
Transformations
PSM
Meta-model
Platform
Meta-model
Platform
Model
Application
Platform
Independent
Model
Model
Transformation
Engine
Application
Platform
Specific
Model
Automated MDA Process:
Code Generation
Model
Transformation
Meta-model
PSM
Meta-model
Application
Platform
Specific
Model
Code Generation
Transformations
Model
Transformation
Engine
Source
Code
Meta-Model
Application
Source
Code
Automated MDA Process:
Test Generation
Model
Transformation
Meta-model
Test Generation
Transformations
PSM
Meta-model
Testing
Meta-model
Requirement
Meta-model
Application
Requirement
Model
Application
Platform
Specific
Model
Model
Transformation
Engine
Testing
Model
Automated MDA Process:
Reverse Engineering
Model
Transformation
Meta-model
PIM
Meta-model
PSM  PIM
Reverse Engineering
Transformations
PSM
Meta-model
Platform
Meta-model
Application
Platform
Independent
Model
Model
Transformation
Engine
Platform
Model
Application
Platform
Specific
Model
Automated MDA Process:
PIM Refactoring
Model
Transformation
Meta-model
PIM
Meta-model
PIM Refactoring
Transformations
Model
Transformation
Engine
Legacy
PIM
PIM
Meta-model
Refactored
PIM
Automated MDA Process:
PSM Refactoring
Model
Transformation
Meta-model
PSM
Meta-model
PSM Refactoring
Transformations
Model
Transformation
Engine
Legacy
PSM
PSM
Meta-model
Refactored
PSM
Automated MDA Process:
Code Refactoring
Model
Transformation
Meta-model
Source
Code
Meta-Model
Legacy
Source
Code
Code Refactoring
Transformations
Model
Transformation
Engine
Source
Code
Meta-Model
Refactored
Source
Code
OMG Tasks in MDA Initiative
 Define meta-modeling standard: Meta-Object Facility (MOF)
 Define general-purpose visual modeling standard:
Unified Modeling Language (UML)
 Define complementary general-purpose, semi-formal textual
modeling standard to make both MOF metamodels and UML models
more precise and devoid of natural language:
Object Constraint Language (OCL)
 Define general-purpose, both machine-processable and userreadable persistent textual format for both MOF meta-models and
UML models: XML Model Interchange (XMI)
 Define model manipulation standard: Query View Transform (QVT)
 Each of these standards to be defined in terms of:
 Abstract syntax as a MOF meta-model
 Concrete syntax (visual or textual)
 Formal semantics (very partial up to now)
Relationships between
OMG’s MDA standards
UML2 Infrastructure
Basic
UML2 Superstructure
Constructs
Classes
Attributes
Types
Packages
...
Associations
...
...
merge
Behavioral
merge
Activities
Actions
States
Transitions
...
Structural
Components
Ports
...
...
merge
XMI
MOF2
merge
EMOF
CMOF
OCL
merge
merge
QVT
Example Meta-Model
1 .. *
MOF Meta-Model
of Use-Cases
extends
0 ..1
actor
+name
extends
useCase
1 ..*
+title
system
+name
1 ..*
includes
e-Store
UML Model:
Use-Case Diagram
OrderItem
ValidateCart
Example Meta-Meta-Model
MOF
Meta-Model
of MOF
Meta-Model
parameter
+direction
attribute
+name
+multi
operation
+name
class
+name
associationEnd
+name
+multi
package
+name
association
+name
1 .. *
MOF
Meta-Model
of UML
Use-Cases
extends
0 ..1
extends
actor
+name
1 ..*
useCase
1 ..*
+title
system
+name
includes
Example of XMI Encoding
extends
0 ..1
actor
+name
useCase
0 ..*
*
+title
includes
e-Store
orderItem
Client
validateCart
system
+name
<umlModel>
<useCase id = “oiuc”>
<title,visib = pub> “orderItem” </title> </useCase>
<useCase id = “vcuc”>
<title,visib = pub> “validateCart” </title> </useCase>
<actor id = “ca”>
<name, visib = pub> “Client” </name> </actor>
<system id = “ess”>
<name, visib = pub> “e-Store” </name> </actor>
<actor2useCase id = “ca2oiuc”>
<in idref = “ca”/> <out idref = “oiuc”/>
</actor2useCase>
<actor2useCase id = “ca2vcuc”>
<in idref = “ca”/> <out idref = “vcuc”/>
</actor2useCase>
</umlModel>
Other Stakeholders’ Tasks
in MDA Initiative
 Platform providers:
 Define platform model as UML Profile or PSM meta-model in MOF
 Multiple domains or wide domain application providers:
 Use only standards defined by OMG and platform providers
 Narrow domain application providers:
 Define special-purpose modeling languages in MOF
 MDA CASE tool providers:
 Implement model base development and management services such as
edition, syntactic validation, import, export, persistence, query, access
control, versioning and traceability for:
 Models in UML, OCL and MOF-specified user-defined languages
 MOF meta-models
 QVT and MOF-specified model transformation languages
 Define APIs to program new model processing services on top of theses
basic services
 Implement model transformation engines based on MOF and QVT
 Implement code and test generation services from PSM
MDA Third-Party Standards and Tools
 Java Modeling Interface (JMI):
 Standard from Java Community Process (JCP)
 Defines a set of Java interfaces to process models represented as Java
objects:
 Reflective interfaces define general model manipulation operations that are
independent of the model’s meta-model
 Taylored interfaces define model manipulation operations that are specific to
models that follow a given meta-model
 Taylored interfaces can be automatically generated from a MOF meta-model
 Eclipse Modeling Framework (EMF):
 Standard from the Open Source Java-Based IDE project Eclipse
(www.eclipse.org)
 Plug-in for Eclipse IDE framework
 Implements similar reflective and taylored interfaces than JMI
 Implements generation of taylored interface from MOF meta-model
 Implements generation of Eclipse-integrated model editor from MOF
meta-model
Model representation as XML document
and Java Objects
Main Memory
programmatically
represents
File System
MOF
Meta-model
(meta-meta-model)
textually represents
XMI
Schema
Java Reflective Interfaces
generates
programmatically represents
textually represents
Meta-model
Java Taylored Interfaces
XML
Schema
process
create /
process
textually represents
programmatically represents
Model
Java Objects
import / export
XML
Document
Java Model Representation
vs. Implementation
 Java objects generated using the taylored and reflective interfaces
of JMI or EMF merely represent model elements
 They only provide a handle to process these elements using Java
 They are completely different from Java objects that implement
these model elements
 Though among many other uses, theses model representation Java
objects can be used as input to program in Java the generation of
model implementing Java objects
 But they could also be used to generate a C++ or Prolog
implementation of the application or any other MDA service
 Java model representation objects are useful for MDA CASE tools
during the development process of an application, whereas Java
model implementation objects are useful for this application
 In one case, Java is used to implement CASE tools functionalities, in
the second case, Java is used to implement application
functionalities