This course will introduce you to the different kinds of complexity we have to deal with when designing large software-intensive systems. This complexity will be tackled using different modelling formalisms, each appropriate for specific problems/aspects: various UML diagrams, Causal Block Diagrams (aka Synchronous Data Flow), Petri Nets, Statecharts, Event Scheduling/Activity Scanning/Process Interaction Discrete-Event, DEVS, Forrester System Dynamics. Control Theory will also be briefly introduced with focus on the development of an optimal (embedded, software) controller.
The goal of the course is to gain understanding of the similarities and differences between different formalisms. Modelling formalisms vary in the level of detail in which they consider time (e.g., partial order, discrete-time, continuous-time), whether they allow modelling of sequential or concurrent behaviour, whether they are deterministic (mostly suited for system/software synthesis) or non-deterministic (mostly suited for modelling system environment effects, with subsequent safety analysis), whether they support a notion of spatial distribution, ...
At the end of the course, you should be able to choose between (and explain why) and use appropriate formalisms for modelling, analysis, simulation and synthesis of diverse (software-intensive) applications.
The above forms a starting point for more advanced topics. In particular, the combination of different formalisms and the development of Domain-Specific Modelling Languages. The latter is one of the topics of the course Model Driven Engineering.
- Causes of Complexity
- Unified Modelling Language (UML) notations
- Requirements vs. Design
- Causal Block Diagrams (CBDs): discrete-time en continuous-time
- Petri Nets
- Event-Scheduling Discrete-Event
- Discrete-EVent System Specification (DEVS)
- (Forrester) System Dynamics
- Cellular Automata
- Agent Based Simulation