Your "One-Stop-Shop" for your next Embedded Project

Stacks Image 301500

Course: Design Patterns for Embedded Systems

Who Should Attend?

This course is predominantly designed for software engineers doveloping for real-time and embedded systems. It is also applicable to software architects and technical leads. It is especially suitable to software engineers faced with the challenges of performance and resource constraints.


A good working knowledge of C++ and a solid understanding of object oriented principles. Knowledge of basic UML is useful but not essential.


5 days

Course Description:

This course shows under which conditions classical design patterns can profitably be used even in resource limited embedded systems. A selection of the most suitable patterns is presented based on examples which are appropriate for embedded systems.

Before the patterns are documented showing their classes and relations using UML diagrams their characteristics are deduced by a stepwise refinement of code examples which are tpyical for embedded systems.This approach facilitates a well-grounded assessment of the memory and/or runtime cost in proportion to the benefit of the usage of the design pattern.

Additionally this course highlights new debugging possibilities introduced by the application of design patterns. This leads to a considerable reduction of the development time and contributes to the improvement of the code quality which is crucial especially for embedded systems.

Unlike standard patterns courses, all exercise code runs on an ARM simulator using the IAR Embeddded Workbench C++ cross development environment. This allows for a detailed examination of the impact on the execution times and memory footprint of the specific patterns.

Course Outline

  • History
  • What is a design pattern?
  • GoF Design Patterns
  • Typical problems in embedded systems
  • Design patterns in embedded systems
Creational Patterns
  • Motor example
  • Interfaces
  • Tracking system example
  • Trolley tracking system
  • Reusing the tracking system
    for aircraft
  • Factory Method
    (Virtual Constructor)
  • Prototype
  • Abstract Factory (Kit)
  • Singleton
Structural Patterns
  • Review of the motor example
  • Design Pattern Flyweight
  • Design Pattern Facade
  • Design Pattern Composite
  • Design Pattern Adapter (Wrapper)
    • Class Adapter
    • Object Adapter
  • Counter classes example
  • Design Pattern Decorator
  • Multithreading example
  • Design Pattern Proxy (Surrogate)
    • Protection Proxy
    • Virtual Proxy
    • Smart Reference
    • Remote Proxy
Behavioural Patterns
  • Timer example
  • Design Pattern Observer (Publisher/Subscriber)
  • Command
  • Finite State Machine (FSM) example
  • Traditional implementation in C
  • Porting the FSM to C++
  • Design Pattern State
  • Custom memory management example
  • Class Partition
  • Class PartitionManager
  • Flexible memory management using different manager classes
  • Dynamically alterable memory allocation strategies
  • Design Pattern Strategy (Policy)
  • Algorithms with a fixed base structure
  • Design Pattern Template Method
  • Design Pattern Memento
  • Design Pattern Iterator
  • Design Pattern Chain of Responsibility
  • Design Pattern Mediator

On request this training course can be arranged also as customer internal training.
Contact us with your requirments for course type, number of participants and location.