Lectures: Tuesday, 12:20, SW1 (Tomáš Bureš, Milad Ashqi Abdullah)
Page in SIS: NSWI164
Grading: Credit
About this course
Model Driven Development (MDD) is a software development methodology that focuses on creating models as the primary artifacts of the development process. These models serve as blueprints that can be transformed into executable code, documentation, and other artifacts. MDD enables developers to work at higher levels of abstraction, improving productivity, code quality, and maintainability. This course explores the fundamental concepts, tools, and techniques used in model-driven development.
You will learn:
- Core concepts of Model Driven Development and Model Driven Architecture (MDA)
- How to create and work with domain-specific languages (DSLs)
- Model transformations and code generation techniques
- UML modeling and its applications in software development
- Eclipse Modeling Framework (EMF) and related tools
- Meta-modeling concepts and practices
- How to design and implement model-to-model and model-to-text transformations
- Best practices for model-driven software development
- … and much more!
How to Download Course Content
All course materials, including lecture slides, assignments, and additional resources, will be made available through the course Teams. You can access the materials by:
- Visiting the course Teams page
- Downloading individual files on this page
- All PDFs and supplementary materials will be updated weekly
Weekly Schedule
Week 1: (30/9) Introduction
- Topics: Introduction to Model Driven Development.
Week 2: (7/10) Unified Modeling Language (UML)
- Topics: UML fundamentals and modeling techniques.
Week 3: (14/10) No Lecture
Week 4: (21/10) MetaModel Examples
- Topics: Meta-modeling concepts and practical examples.
Week 5: (28/10) No Lecture (Public holiday)
Week 6: (4/11) EMF (Graphical Representation)
- Topics: Eclipse Modeling Framework and graphical representations.
Week 7: (11/11) XText (Textual Representation)
- Topics: XText framework for textual domain-specific languages.
Week 8: (18/11) Xtend
- Topics: Xtend programming language, Scoping and Validation for XText projects.
Week 9: (25/11) M2M and tooling
- Topics:
- Model-to-model and model-to-text transformations. -Language Server Protocol tools.
Eclipse Modeling Tools Installation
To participate in the practical exercises, you will need to install Eclipse with modeling tools:
Prerequisites
- Download OpenJDK
- Visit: https://openjdk.org/projects/jdk/21/
- Download and install OpenJDK 21
Eclipse Installation
-
Download the Eclipse installer
- Visit: https://www.eclipse.org/downloads/
- Download the Eclipse Installer
-
Run the installer and pick Eclipse Modeling Tools
- Launch the Eclipse Installer
- Select “Eclipse Modeling Tools” from the available packages
- Follow the installation wizard

XText Installation
- Install XText (if not included in Eclipse Modeling Tools)
- Go to Help → Install New Software
- Add update site:
https://download.eclipse.org/modeling/tmf/xtext/updates/releases/ - Select Xtext SDK and install
Course Completion
-
The course must be completed by firm deadline 15.09.2026
-
4 completed homeworks (mandatory)
- Each homework focuses on different aspects of model-driven development
- Homework assignments will be released throughout the semester
-
Term project (mandatory)
- Design and implement a complete model-driven solution
- Project proposal must be approved by the instructor
- Final presentation and demonstration required
Assignments
Assignment 1
Choose a system or domain you are interested in (e.g., a library, online store, hospital system, booking app, game, etc.).
Model the main structure of that system using a UML Class Diagram.
- Include classes that make sense for your design.
- Show meaningful attributes, operations (methods), and relationships between classes.
- Use associations, multiplicities, and inheritance if they are relevant.
During your presentation/documentation:
- Explain the system’s purpose and what it is supposed to do.
- Walk through your class diagram and describe the role of each class.
- Discuss any important design choices you made.
How to submit?
Create a PDF file containing the system description, the class diagram, and the reasoning behind its design. Submit the PDF via Teams.
Assignment 2
Create a meta-model that represents a simplified Java class model
- Classes
- Name and visibility
- Packages
- name
- Interfaces
- Inheritance
- interface implementations
- Attributes
- Primitive and reference types
- No arrays, generics or similar
- Operations
- With return type, arguments (with types) and exceptions
Use EMF (Eclipse Modeling Framework) to:
- Generate model classes from the meta-model
- instantiates a sample model from the metamodel
- prints out the hierarchy of packages, interfaces and classes
How to submit?
Create a ZIP file containing the EMF-based project + extra source codes.
Assignment 3
Write a DSL for minimal Java:
Package:
- Contains classes
Classes:
- name
- inheritance of other classes
- contain fields and methods
Fields:
- name and type (classes or primitive types int and str)
Methods:
- name
- return type (classes or primitive types int and str)
- parameters
- no method body needed
How to submit?
Only submit the grammar (DSLName.xtext) via email or on Teams.
Assignment 4
Using the Mini Java DSL, you (have created/will create) in Assignment 3, add the following validation rules:
Unique Member Names
- Within each class, field names and method names must be unique. (No two fields with the same name, no two methods with the same name.)
CamelCase Class Names (Warning)
- Issue a warning if a class name is not written in CamelCase format.
No Self-Inheritance
- A class must not directly or indirectly extend itself.
- Interface/Superclass Method Consistency
- If a class extends another class, it must not redefine a method with the same name that already exists in the inherited type.
Parameter Count Warning
- Issue a warning for any method that declares more than five parameters.
How to submit?
Create a ZIP file containing the XText project, no maven is needed.