Column #col2

Schulungsbeschreibung: OO für Echtzeitsysteme

1. Charakteristika von Echtzeitsystemen
Nach einer kurzen Begriffsdefinition von eingebetteten Systemen, Echtzeitsystemen und Echtzeitbetriebssystemen wird auf die Unterschiede zwischen Echtzeitsystemen und normalen betrieblichen Systemen eingegangen. Hierzu lernen Sie die wesentlichen Merkmale und Eigenschaften von Echtzeitsystemen kennen.

2. Echtzeitsysteme und Objektorientierung
Der Einsatz der Objektorientierung ist bei Echtzeitsystemen immer noch relativ selten, obwohl die OO-Konzepte universell einsetzbar sind und die Vorteile der Objektorientierung auch in allen Phasen der Echtzeitsystementwicklung gelten. In diesem Kapitel rekapitulieren Sie die Grundlagen der Objektorientierung. Darüber hinaus lernen Sie die Bereiche kennen, die beim Einsatz von OO bei der Echtzeitsystementwicklung besondere Aufmerksamkeit benötigen.

3. Objektorientierung mit C
In diesem Kapitel lernen Sie, wie man Software objektorientiert entwickeln und programmieren kann, obwohl man die Programmiersprache C und damit eine prozedurale Sprache einsetzt. Sie erhalten Tipps, wie man beispielsweise Vererbung und Polymorphismus in C realisiert.

4. Speicherverwaltung
Insbesondere das fehlende Freigeben von nicht mehr benutztem Speicherplatz und das unberechtigte Zugreifen auf bereits freigegebenen Speicherplatz sind Quellen schwer zu entdeckender (Laufzeit-)Fehler. Moderne objektorientierte Programmiersprachen bieten daher eine automatische Speicherbereinigung (Garbage-Collection) an, die allerdings nur bedingt für Echtzeitsysteme geeignet ist. In diesem Kapitel lernen Sie, welche Alternativen zu Garbage-Collection Ihnen zur Verfügung stehen.

5. Modellieren mit UML
In diesem Kapitel erhalten Sie einen kurzen Überblick über die UML, und Sie erfahren, wie man damit allgemeine Softwaresysteme modellieren kann. Dieses Wissen setzen Sie in den folgenden Kapiteln ein, um echtzeitspezifische Aspekte mit der UML zu modellieren, wobei wir uns insbesondere den funktionalen und den zeitlichen Aspekten widmen.

6. Anforderungen
In diesem Kapitel lernen Sie, System- von Softwareanforderungen voneinander zu trennen. Sie erfahren, welche wichtige Aufgabe dabei dem Systementwurf zukommt.

7. Softwarearchitektur
In diesem Kapitel lernen Sie die vier Grundregeln kennen, deren konsequente Beachtung zu einer soliden, tragfähigen System- bzw. Software-Architektur führt.

8. Finden von Klassen
Sie lernen verschiedene Techniken zum Finden von Klassen kennen: CRC-Karten, Entwurfsmetaphern, Analyse von Szenarien, Fachwissen. Welche Methode ist die beste? Wie können die Methoden effektiv kombiniert werden?

9. Finden von Tasks
Hier lernen Sie, Prozesse und Threads von Tasks zu unterscheiden. Sie lernen Hilfsmittel kennen, um - ähnlich wie beim Finden von Klassen – zuerst Task-Kandidaten zu finden, aus denen anschließend nach unterschiedlichen Kriterien Tasks abgeleitet werden können.

10. Modellieren von Tasks
Für die Modellierung von Tasks lernen Sie das UML-Konzept der aktiven Klassen kennen. Außerdem lernen Sie die UML-Elemente für die Modellierung des äußeren Verhaltens und des inneren Zustandes von Tasks kennen.

11. Kommunikation von Tasks
In diesem Kapitel lernen Sie die unterschiedlichen Synchronisationsarten kennen und welche Entwurfsmuster für die typischen Aufgabenstellungen bei der Kommunikation von Tasks (z. B. synchrone Kommunikation mit und ohne Antwort) zur Verfügung stehen. Spezielle Beachtung finden dabei die sog. Interrupt-Service-Routinen.

12. Scheduling
In diesem Kapitel lernen Sie verschiedene Scheduling-Strategien wie z. B. Rate-Monotonic-Scheduling kennen, die die Vergabe des Prozessors an eine Task steuern. Außerdem lernen Sie unterschiedliche mathematische Verfahren kennen, um die sog. Schedulability, also die Einhaltung aller zeitlichen Bedingungen, nachzuweisen.

13. Gemeinsame Ressourcen
Hier erfahren Sie, wie Zugriffe auf gemeinsame Ressourcen verwaltet werden. Sie lernen die sog. Verklemmung und die sog. Prioritätsinversion als die häufigsten Probleme bei der Synchronisation von Zugriffen kennen und erfahren, welche Strategien für den Umgang mit diesen Problemen existieren (z. B. „Priority Ceiling“, „Priority Inheritance“, „Highest Locker“).

14. UML-Realtime-Profil
Obwohl sich alle vorgestellten Konzepte, die für Echtzeitsysteme spezifisch sind, mit der Standard-UML modellieren lassen, gibt es die Erweiterung „UML Profile for Schedulability, Performance and Time“, die wir Ihnen hier in Auszügen vorstellen.