Real-Time Software Design with UML

Modern embedded software design is constrained by an ever-growing set of constraints:

  • Increasing software complexity.
  • Decreasing time-to-market.
  • The need to produce flexible, maintainable systems.
  • The need to have rigorous engineering in critical systems.

These factors are driving the need for cohesive design methodologies and the use of modelling.

This is a detailed software design course which focuses on designing Real-Time Embedded Systems, using UML 2 notation to document the proposed design. The focus on design principles and methodologies make this course significantly different to most UML courses, which focus on notation.

5 days
pdf download


19 - 23 Sep 2016
12 - 16 Dec 2016

Course Outline


Real-time systems

  • An overview of real-time systems
  • Why do we model?


  • ‘Correct’ vs ‘good’ software
  • Principles of modularisation

Object Oriented design

  • Object-Oriented terminology
  • Object-based design

The software development process

  • Diagrams and models
  • Evolutionary vs Adaptive models

The Ideal Object model

Object modelling fundamentals

  • Finding objects
  • Scenario-based design
  • The CRC methodology

Interaction modelling

  • Communication diagrams
  • Sequence diagram basics

The Specification model

Behavioural modelling

  • State machine basics
  • Activity diagram basics
  • Mapping internal and external behaviour


  • Active and passive objects
  • Selecting active or passive elements


  • Class notation
  • Associations
  • Specialisation

Medium-sized systems

Composite structures

  • Composite structure notation
  • Ports
  • Concurrency and composites


  • Dependency Inversion Principle

The Implementation model

Model transformation rules

  • Implementing UML constructs in an embedded  programming language

The Requirements model

System Scope and context

  • Defining system scope

Use cases

  • Stakeholder analysis
  • Use case fundamentals

Modelling system behaviour

  • Use case interactions
  • System modes

Course Overview

Course Objectives:

  • To provide an understanding of Object Oriented design principles.
  • To show how to develop real-time software in a rigorous and systematic manner.
  • To enable attendees to develop their own practical design skills.
  • To teach effective application of UML notation.

Delegates Will Learn:

  • The fundamental concepts and terminology of real-time software.
  • The diagrammatic and modelling underpinnings provided by UML for Object Oriented development.
  • How to apply the design principles in real-time applications.
  • The basics of an integrated, traceable and consistent approach in the development of software for real-time systems.


  • Some understanding of technical software development methods.
  • Knowledge of typical embedded programming languages (like C) is useful.

Who Should Attend:

  • Designers new to the area of real-time software design.
  • Developers with some non-embedded UML experience.
  • Designers embarking on projects using UML-based techniques for the first time


  • Five days

Course Materials:

  • Delegate handbook
  • All worked examples and solutions

Related courses:

Course Workshop:
Approximately 50% of the course involves practical application of the techniques discussed.  Delegates work in small groups dealing with problems based on real-world systems.

The course specifically does not make use of a CASE tool.  From our experience a CASE tool distracts delegates from learning design issues and UML. However, the workshops clearly demonstrate the benefits and disadvantages of CASE tools, thus aiding CASE tool selection.

Unified Modeling Language logo