Teaching resources for MDE (aka IDM) course at University of Rennes 1 (IL/ILa/CCN)
Short description
This course introduces model-driven engineering (MDE) foundations and techniques within the context of software development. At the end, students can elaborate metamodels, develop specialized tools, create their own languages, transform models, and build variants of artefacts out of textual or graphical specifications. They are also able to understand and recognize classes of software systems, engineering scenarios, or contemporary frameworks for which the MDE concepts apply. In a sense, students are ready to apply state-of-the-art techniques for engineering software -- now and in the upcoming years!
Tools and languages like Xtext, Xtend, EMF, FAMILIAR are used to make it practical. We illustrate the course with a running example, VideoGen, a configurable generator of generators of video variants.
The running project will be multi machine learning (aka MML), a language for performing machine learning tasks in a few lines of code.
Agenda
- introduction to MDE https://people.irisa.fr/Jean-Marc.Jezequel/enseignement/IngenierieModeles.htm
- domain-specific languages (DSL) -- DSL.pdf
- external DSLs and Xtext -- DSLXtext.pdf
- metamodeling and EMF -- ModelManagement1.pdf
- model transformation-- ModelManagement1.pdf
- meta-programming, annotations, advanced compositions -- ModelManagement2.pdf
- Xtend, a modern programming language implemented with MDE principles (Xtext included) -- ModelManagement2.pdf
- variability modeling -- SPLVariability-light.pdf
- software product lines and configuration -- SPLVariability-light.pdf
Evaluation
- 1/3 (project)
- 2/3 (partiel)
Lab sessions
- 2 TDs
- 6 TPs
- TP1+TP2: design of MML and first steps with Xtext
https://docs.google.com/document/d/1MG2rXWpMZ4M3JCMw4gRijdmiylBYFoeTAO2wl4Fq2NY/edit?usp=sharing
- deadline: 16 october (23h59, Paris time)
- TP3: deisgn of MML and multiple targets https://docs.google.com/document/d/1gmqBMGqJo5HD3A-qRIRJcPL8pPH6wNyvFTfwLd9NcbM/edit?usp=sharing
- TP4: model transformation, let's write our first compiler https://docs.google.com/document/d/1ZWBQg46fM8kJqnjQ-gyjDiZa7fyUVYeUzXCx4GBLoqw/edit?usp=sharing
- TP5: model transformation, compilers and execution, automated testing https://docs.google.com/document/d/1TsAGFGSdbxPMTUwtZeTZu8IrmmgMNDgXwbkONat4B2I/edit?usp=sharing
- TP5/TP6/projet: TP* (putting all together) https://docs.google.com/document/d/1U5MhOKd-lLpD-J4ExYgiCu3Iz7nTa8LuwsXgTAGCgMA/edit?usp=sharing
- TP1+TP2: design of MML and first steps with Xtext
https://docs.google.com/document/d/1MG2rXWpMZ4M3JCMw4gRijdmiylBYFoeTAO2wl4Fq2NY/edit?usp=sharing
Exercices/Homework
Project: MML (incl. 4 lab sessions)
Resources
Eclipse/Xtext: https://eclipse.org/downloads/eclipse-packages/ (Eclipse IDE for Java and DSL Developers)
- see "slides" folder of this repo (the updloads of slides will follow the progress of the courses)
- Resources used for the IDM course in 2018-2019: https://github.com/acherm/teaching-MDE-IL1819
- Resources used for the IDM course in 2017-2018: https://github.com/acherm/teaching-MDE1718
- Resources used for the IDM course in 2016-2107: https://github.com/acherm/teaching-MDE1617
- JOOQ and SQL: https://github.com/acherm/teaching-MDE1617/wiki/JOOQ-homework
- http://www.mathieuacher.com/teaching/MDE/ (content of previous years)
- variability and product lines: http://teaching.variability.io