Design Patterns für Embedded Systeme
Zielgruppe:
Softwareentwickler/innen, Softwarearchitekt/innen oder Projektleiter/innen, die objektorientierte Embedded-Anwendungen entwerfen oder deren Qualität verbessern wollen.
Voraussetzungen:
Grundlagen der objektorientierten Programmierung, sowie gute Kenntnisse der Programmiersprache C++, wie sie z.B. der Kurs "Objektorientierte Embedded-Programmierung mit C++" vermittelt. Kenntnisse der neueren Sprachstandards (ab C++11) sind NICHT erforderlich!
Erfahrung mit UML-Klassendiagrammen ist vorteilhaft, wird aber NICHT vorausgesetzt, da dieser Kurs auch die dafür notwendigen UML-Kenntnisse vermittelt!
Dauer:
5 Tage mit praktischen Übungen bzw. 2 x 3 Tage mit mehr Zeit für die Durchführung der Designübungen. Auf Wunsch kann dieser Kurs auch als 3-tägiger Kompaktkurs mit praktischen Übungen, aber weniger Patterns durchgeführt werden. Der Abschnitt "Kursinhalt" beschreibt die 5- bzw. 6-tägige Vollversion. (Inhalt der Kompaktversion auf Anfrage).
Kursziel:
Dieser Kurs zeigt, unter welchen Bedingungen die klassischen Design Patterns der "Gang of Four" (GoF) auch in ressourcelimitierten Embedded-Systemen gewinnbringend eingesetzt werden können. Es wird eine Auswahl von Entwurfsmustern behandelt, die für diesen Zweck besonders geeignet sind. Diese Patterns werden anhand von hardwarenahen oder anderen, für Embedded-Systeme typische Anwendungen vorgestellt. Dabei werden die für die Realisierung dieser Entwurfsmuster notwendigen Klassen und ihre Beziehungen nicht nur prinzipiell auf der Ebene von UML-Diagrammen, sondern anhand von vollständig ausprogrammierten Codebeispielen schrittweise entwickelt. Auf dieser Grundlage wird eine fundierte Beurteilung der Kosten in Bezug auf Speicherplatz und Laufzeit im Verhältnis zum Nutzen durch die Verwendung eines Entwurfsmusters ermöglicht. Unabhängig davon zeigen die Beispiele aber auch, wie die SOLID-Prinzipien der modernen Clean-Code-Programmierung mit den Design Patterns zusammenarbeiten und wie diese zur Qualitätssteigerung des Softwareentwurfs beitragen. Schließlich geht der Kurs auch auf den Speicherplatz- und Laufzeit-Overhead ein, der durch die Verwendung von klassischen Debugmethoden entsteht, und zeigt, wie diese Probleme patternbasiert gelöst werden können. Dadurch wird deutlich, dass die Verwendung von Entwurfsmustern nicht nur zu einer besseren Softwarestruktur, sondern auch zu einem effizienteren Umgang mit den Systemressourcen führen kann, was gerade in Embedded-Systemen besonders wichtig ist.
Inhalt:
Einführung
- Geschichtliche Entwicklung
- Was ist ein Design Pattern?
- GoF Design Patterns
- Typische Probleme in Embedded Systemen
- Design Patterns in Embedded Systemen
Erzeugungsmuster
- Beispiel: Motor
- Interfaces
- Beispiel: Positionsanzeige für ein Warentransportsystem
- Wiederverwendung für Flugzeugpositionsanzeige
- Design Pattern Fabrikmethode
- Design Pattern Prototyp
- Design Pattern Abstrakte Fabrik
- Design Pattern Singleton
Strukturmuster
- Neue Lösung für Motorbeispiel
- Design Pattern Adapter
- Beispiel: Counter-Klassen
- Design Pattern Dekorierer
- Multithreading-Beispiel
- Design Pattern Proxy
- Design Pattern Fliegengewicht
- Design Pattern Fassade
- Design Pattern Kompositum
Verhaltensmuster
- Beispiel: Timer
- Design Pattern Beobachter
- Design Pattern Befehl
- Beispiel: Zustandsautomat
- Traditionelle Implementierung in C
- Portierung nach C++
- Design Pattern Zustand
- Beispiel: Benutzerdefinierte Speicherverwaltung
- Partition und PatitionManager
- Flexible Speicherverwaltung mithilfe unterschiedlicher Manager
- Dynamisch änderbare Speicherzuteilungsstrategie
- Design Pattern Strategie
- Algorithmus mit festgelegter Struktur
- Design Pattern Schablonenmethode
- Design Pattern Memento
- Design Pattern Zuständigkeitskette
- Design Pattern Iterator
- Design Pattern Vermittler
praktische Übungen