Training Course: ‘Software Architecture and Design Patterns for Embedded Systems’

The training course focuses on the special challenges, embedded systems impose on the software design. In addition to UML basics, the effects of a clean software design on resource consumption is covered. Based on many examples, the course shows that - with the right approach - a modular software design does not impose any overhead compared to a monolithic solution. Thus, even on extremely resource-limited platforms there is no reason to do without a modern object oriented design and its implementation with C++. With the concept of static polymorphism, software components can be flexibly configured without any overhead.

This training course introduces the concept of static polymorphism on software design level and compares it with the concept of dynamic polymorphism. With an appropriately enhanced UML notation, static polymorphism can be consistently expressed during software design with class diagrams. Within this context, the course also teaches an easy to understand technique to transform dynamic to static polymorphism and vice versa.

Based on this background knowledge, the course participants get to know a useful selection of GoF Design Patterns that are introduced with realistic embedded application examples. Each pattern is examined concerning potential overhead compared to a monolithic solution and, where applicable, optimization options are pointed out.

Depending on the selected topics and the participants' previous knowledge, the training course may be arranged as either a three or four day in-house course. Based on the following outline, the detailed course contents can be individually assembled:

  • Introduction / recap of the UML notation for the following diagram types:
    • Class Diagrams including a notation representing C++ Templates with UML
    • Sequence Diagrams
    • Activity Diagrams
    • State Machine Diagrams
  • Software architecture principles for optimum software maintainability and test.
  • Software reuse mechanisms: composition, aggregation, inheritance, their implementation in C++ and their effects on resource usage
  • The concept of polymorphism and comparison of static / dynamic polymorphism
  • Explanation of selected GoF Design Patterns based on realistic examples from embedded applications, e. g.:
    • Abstract Factory
    • Factory Method
    • Adapter
    • Decorator
    • Proxy
    • Chain of Responsibility
    • Strategy
    • Template Method
    • State

The obtained knowledge is deepened with practical exercises. These exercises can be performed with the UML tool of your choice.