Modern systems cross different domains and are composed of networked and interrelated (hardware and software) subsystems, some even cyber-physical, thus going beyond the software scope, such as automotive, home automation and avionics. These systems are becoming increasingly complex, and are demanding a modular decompositional approach to address the specificities of each domain.

Model-Driven Engineering (MDE) is becoming a standard approach to address the complexity of these systems’ development through the use of models in multiple notations and their translations as first-class citizens. To be able to express models in adequate rigorous notations that reflect the different perspectives of the systems, with an adequate level of abstraction usable by the different modellers (potentially non- software experts), typically are used Domain-Specific Languages (DSLs). These languages can be textual or more commonly visual. 

This course will use well established MDE techniques to model the domain, design and develop DSLs and to use them for several purposes. Thanks to the project developed during the course, the students will have the opportunity to conceive the modelling roadmap with different layers of abstraction, starting with the definition of the DSL, and via model transformations will construct the automatic generation process to end in code or some formalisms briefly introduced in the lectures for the purpose of simulation or analysis.