After completing this course successfully, the student is able to:
• Explain the principles and main concepts of Model-Driven Engineering (e.g., model, metamodel, transformation, metamodel-based transformation pattern, model-to-text transformation).
• Apply the Model-Driven Engineering concepts in projects of medium complexity.
• Identify and evaluate alternative solutions for model-driven development of small and medium size projects starting from a domain-specific problem description and finishing with working application.
• Critically evaluate and select among new and emerging model-driven tools and technologies.
This course focuses on Model-Driven Engineering (MDE) concepts and techniques. It describes software development processes that are driven by models of the software systems of concern. Model-driven engineering facilitates software adaptability at a higher level of abstraction. Models play a key role in the software development, by driving the development, documentation, and evolution of the software systems. MDE techniques are being applied in many areas of software development, for purposes like automatic code generation, reverse-engineering, reconciliation of different data formats and tool integration. Metamodelling and model transformation are being considered as essential tools for a professional in computer science|
The main topics of the course are the following:
• Overview of MDE and MDA (Model-Driven Architecture)
• Model and metamodel concepts
• Metamodelling stacks (MOF, EMF)
• Object Constraint Language (OCL)
• Metamodel-transformation pattern and scenarios
• Model transformation languages: paradigms and classification
• Traceability in model transformations
• Transformation languages examples: QVT Relations, ATL, Model-to-text languages
• Concrete syntax specification
Practical work with modeling and model transformation techniques and environments such as
• Eclipse Modelling Framework (EMF)
• ATL Development Tools (ADT)
• QVT operational mappings
• Concrete textual syntax (Xtext)
• Model-to-text transformation (Acceleo)
• Model transformations in Java