The design of Real-time systems must be powerful, efficient, and highly reliable. Sophisticated developers rely on design patterns for building fail-safe RTE systems.

C++ and the Object Oriented methodology provide us the power to design and implement complex systems

This course presents the power and the limitation of C++ and OOP and dive inside the compiler and linker implementation to get the best understanding how to use C++ in RTE systems.

All the course examples, patterns and exercises use C++ and Boost libraries

Key topics:

  • Design Principles in RTE systems
  • Object Oriented Design
  • Coordinating and organizing system components and subsystems
  • Managing memory and resources
  • Building safe and reliable architectures

Mapping subsystem and component architectures to underlying hardware

Delegates should have a working knowledge of C/C++, and some knowledge of Embedded/Real-time programming


24 Hours

Software Engineering


Certificate: No

Price: contact us for more details

Запишитесь на курс

Оставьте свои контактные данные и мы свяжемся с Вами

Course Outline



  • Real time systems design
  • Design patterns overview
  • Patterns examples
  • Design Principle
  • Open-close principle
  • Liskov substitution principle
  • The dependency inversion principle
  • The interface segregation principle
  • The acyclic dependency principle
  • Agile methodologies


  • C /C++ pitfalls
  • C++ in real time systems

Memory Management – Advance techniques

  • new and delete operators
  • Common pitfalls
  • Static allocation
  • Pool allocation
  • Smart pointer and proxy pattern
  • Garbage collection pattern
  • Shared memory pattern

Object Patterns

  • Manager pattern
  • Resource Management Patterns
  • Message Handler
  • Observers and Publish – Subscribe Patterns

State Machines Patterns

  • State Pattern
  • Serial and parallel wait state Patterns
  • Hierarchical Pattern

Concurrency Patterns

  • Concurrency pattern
  • Message Queue pattern
  • Interrupt pattern
  • Cyclic executive
  • Static and dynamic priorities
  • Priority inversion
  • Simultaneous locking
  • Concurrency problems
  • Parallel programming