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, K3, FAMILIAR are used to make it practical. We illustrate the course with a running project, VideoGen, a configurable generator of generators of video variants.
- domain-specific languages (DSL) -- DSLs.pdf
- external DSLs and Xtext -- DSLAndXtext.pdf
- metamodeling and EMF -- ModelManagementXtend1.pdf
- model transformation-- ModelManagementXtend1.pdf
- meta-programming, annotations, advanced compositions -- ModelManagementXtend2.pdf
- Xtend, a modern programming language implemented with MDE principles (Xtext included) -- ModelManagementXtend2.pdf
- variability modeling -- SPLVariability-light1617.pdf
- software product lines and configuration -- SPLVariability-light1617.pdf
- 30% (homework + project)
- 70% (partiel)
- 2 TDs
(instructions given during the session)
- TD1 solution: see TP1-solution folder
- TD2 solution: see https://github.com/acherm/teaching/tree/master/MDE/CAO2009-sol
- 6 TPs
- TP1: http://tinyurl.com/TP1-IDM1617 (metamodeling)
- TP2: http://tinyurl.com/TP2-IDM1617 (DSL, Xtext)
- TP3, TP4, TP5, TP6 + project: https://docs.google.com/document/d/18ZS2-xGH4lqYtQZMar2A4Mfsmm3OsR9Bu1qujHG9yf8/edit?usp=sharing
JOOQ and SQL: https://github.com/acherm/teaching-MDE1617/wiki/JOOQ-homework
Project: VideoGen (incl. 4 lab sessions)
Some resources are available here: https://github.com/acherm/teaching/tree/master/MDE
Slides of the course:
- see "slides" folder of this repo
- http://www.mathieuacher.com/teaching/MDE/ (content of previous years)
- variability and product lines: http://teaching.variability.io