UE Advanced software modeling and engineering

Degrees incorporating this pedagocial element :


Unlike other disciplines like civil engineering, Software engineering is a very young domain from both a scientific and an engineering point of view. Most engineering domains rely on a "conceive first, implement later" approach where rigorous methods are applied to model and analyze all aspects of the system before implementing it. On the contrary, Software engineering adopts an "implement first, debug later" approach as an answer to the increasing time-to-market pressure. The lack of formal notations to conceive rigorous software systems led the scientific community to debate whether "computer science" should be considered an engineering domain.

Model-Driven Engineering (MDE) is an iterative development technique in Software engineering that allows developers to master the software complexity by applying step-by-step refinements (or integrations) of models. MDE promotes the development and the use of small languages (also called Domain-Specific Languages or DSLs in short) dedicated to specific tasks. It relies on three main foundations (also called the "Three-A rules"):

Abstraction: finding the right level of abstraction to describe a specific aspect of a system at a given moment and for a given audience; Automation: deriving an implementation of a Software system from models of that system using refinement and code generation techniques ; Analysis: performing various analyses (performance, deadlock, schedulability, etc.) at model-level before implementing the solution.

Course content

The course presents various well-known MDE techniques and tools dedicated to: Developing and instrumenting textual grammar and graphical notations for modelling/programming DSLs; Building and running language servers from the specification of textual grammar, and using them in modern IDEs (VSCode) ; Gradually transforming Platform-Independent Models (PIMs), which specify a business solution independently of the target technologies, to Platform-Specific Models (PSMs) ; Translating models into a detailed code implementation.

The tools presented in this course are industrial and open-source frameworks used in Research and Industry by companies such as Oracle, Google, BMW, Thales, and many more. They include: Xtext: a mature framework to develop DSLs using textual grammar and to automatically generate full DSL infrastructures, including parsers, type-checkers, as well as editors. Sirius and Acceleo: well-used open-source frameworks to specify the graphical notations of DSLs and to automate code generation.

The concepts of the course will be illustrated over an arbitrary DSL called UML-RT. UML-RT is a domain-specific modelling language targeting reactive (possibly embedded) systems. This part shows how a complete executable software implementation can be produced from high-level graphical representations and is illustrated on robotic examples.

Recommended prerequisite

UML, Java, and be familiar with the first order predicate logic.