An Overview of Model-Driven Engineering and 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.
Download ReportTranscript An Overview of Model-Driven Engineering and 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.
An Overview of Model-Driven Engineering and 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 Abstraction Domain Modeling w/ UML or DSML CASE Tool Domain/ Business Model: UML or DSML + Feature Tables + NL Current Mainstream OOSE Requirement Analysis w/ UML or DSML CASE Tool Specification Model: (UML or DSML) + NL High-Level Design High-Level Design Model: (UML or DSML) + NL Detail Design (Refinement) simultaneously with Programming (Translation) with Execution Platform IDE Source Code Source Code to Executable Code Translation Executable Code Executability Abstraction Platform Independent Model (PIM) Metamodeling and/or Profiling PIM MetaModel and/or UML Profile Platform Specific Model (PSM) Metamodeling and/or Profiling Fully Refined Requirement Analysis w/ UML/OCL or DSPIML CASE Tool Manual MDE: Extreme Modeling PSM MetaModel and/or UML Profile Fully Refined Specification Platform Independent Model (PIM): UML/OCL or DSPIML High-Level Design w/ UML/OCL or DSPIML CASE Tool High-Level Realization PIM: UML/OCL or DSPIML Design Full Refinement w/ UML/OCL or DSPIML CASE Tool Fully Refined Realization PIM: UML/OCL or DSPIML PIM to PSM Translation PSM: Profiled UML/OCL or DSPSML PSM to Source Code Translation Source Code Source Code to Executable Code Translation Executable Code Executability Transformation Based MDE: UML Programming Abstraction Fully Refined Requirement Analysis w/ UML/OCL or DSPIML CASE Tool Fully Refined Specification Platform Independent Model (PIM): UML/OCL or DSPIML High-Level Design w/ UML/OCL or DSPIML CASE Tool High-Level Realization PIM: UML/OCL or DSPIML Design Full Refinement w/ UML/OCL or DSPIML CASE Tool Fully Refined Realization PIM: UML/OCL or DSPIML High-Level Realization PIM Transformation Base High-Level Realization PIM Transformation Development Realization PIM Refinement Transformation Development PIM to PSM Translation Transformation Development Realization PIM Refinement Transformation Base PIM to PSM Translation Transformation Base PIM to PSM Translation PSM: Profiled UML/OCL or DSPSML PSM to Source Code Translation Transformation Development PSM to Source Code Translation Transformation Base PSM to Source Code Translation Source Code Source Code to Executable Code Translation Executable Code Executability 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 UML2 Infrastructure Basic UML2 Superstructure Constructs Classes Attributes Types Packages ... Associations ... ... Behavioral Activities Actions States Transitions ... merge merge Structural Components Ports ... ... merge merge merge OCL DI XMI merge MOF2 merge RAPI EMOF CMOF QVT Example Meta-Model * 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