Tutorial Series: Software Engineering for Critical Systems


A typical instance of this tutorial series would include the following core topics (and additional material):

UML basics

We start by giving an overview of UML (the UML diagrams) and model management (packages, subsystems). We explain the UML extension mechanisms (stereotypes, tags, constraints, profiles).

Extensions of UML

We proceed to outline extensions of UML for specific application domains (such as UMLsec, UMLsafe, UML-RT etc.).

UML as a formal design technique

We show how to formulate critical requirements on a system and critical assumptions on underlying layer in the UML extensions. We explain how to use this information for risk analysis and how to evaluate the system specification against the requirements, by making use of a formal behavioural model for a (simplified and restricted) core of UML. Being able to formulate security concepts in the context of a general-purpose modeling language allows encapsulation of established principles of critical systems engineering to avoid common vulnerabilities introduced by developers without in-depth training in critical systems issues. The formal foundation of the approach allows the discovery of even non-obvious weaknesses that experts may not detect without use of formal tools. We sketch a design process to be used with the UML extensions and discuss applicability of the approach with examples from various domains.

XMI and tool integration

We discuss tool-support using the XML dialect XMI and present applications and examples and a demo of a prototypical tool based on a UML CASE tool.