Column #col2

Schulungsbeschreibung: Modellierung von eingebetteten und Echtzeitsystemen

1. Einleitung
In diesem Kapitel erhalten Sie einen kurzen Überblick über die Inhalte der Schulung. Darüber hinaus stellen wir Ihnen das durchgängige Beispiel vor, an Hand dessen wir Ihnen während der Schulung die einzelnen Konzepte vorstellen. Am Ende der Schulung stellen wir uns der Frage, wie und wann der Einsatz eines UML-Werkzeuges für die Modellierung eines Systems sinnvoll erscheint.

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

3. 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.

4. Design von Echtzeitsystemen
Das Design von Echtzeitsystemen beschäftigt sich im Wesentlichen mit zwei Aspekten. In diesem Kapitel lernen Sie, wie Sie mit Hilfe von Klassen und Paketen die funktionale Struktur eines Systems entwerfen. Sie lernen dabei verschiedene Techniken zum Finden von Klassen und verschiedene Mechanismen zur Reduzierung von Abhängigkeiten zwischen Paketen kennen. Die temporale Struktur eines Systems hingegen beschreiben Sie mit Hilfe von Tasks. Hierzu lernen Sie, wie Sie Task-Kandidaten finden und nach welchen Kriterien Sie Tasks bündeln.

5. Modellieren mit UML – Überblick
In diesem kurzen Kapitel werden die verschiedenen Sichten der UML, nämlich Systemumfeld bzw. Anforderungen, funktionale Struktur, temporale Struktur und physische Struktur, wiederholt und in Zusammenhang mit den Charakteristika der eingebetteten Systeme bzw. der Echtzeitsysteme gebracht.

6. Modellierung mit der UML – Systemumfeld
Bei eingebetteten Systemen bzw. Echtzeitsystemen ist es wichtig, zwischen System- und Softwareanforderungen zu trennen. In diesem Kapitel lernen Sie, wie Sie mit der UML sowohl die Systemanforderungen erfassen als auch den Systementwurf und die Softwareanforderungen modellieren und dokumentieren können.

7. Modellierung mit der UML – funktionale Struktur
In diesem Kapitel lernen Sie, mit welchen UML-Konzepten Sie die statische Struktur sowie das dynamische Verhalten eines Systems beschreiben können. An Hand des durchgängigen Beispiels zeigen wir Ihnen die verschiedenen Diagramme und geben Tipps für deren sinnvollen Einsatz.

8. Modellierung mit der UML – temporale Struktur
Die temporale Struktur beschreibt, aus welchen Prozessen, Threads oder Tasks das System aufgebaut ist. In diesem Kapitel lernen Sie, wie Sie mit Hilfe von aktiven Klassen, Kompositionsstrukturdiagrammen, Sequenz- und Zeitdiagrammen die temporale Struktur eines Systems beschreiben.

9. Modellierung mit der UML – physische Struktur
In diesem Kapitel erfahren Sie, welche UML-Diagramme Ihnen für die Modellierung der physischen Struktur zur Verfügung stehen. Mit Hilfe von Kompositionsstruktur-, Komponenten- und Einsatzdiagrammen beschreiben Sie, welche Komponenten es zur Laufzeit gibt, welche Prozesse auf welcher Hardware laufen und welche Sensoren vom System benutzt werden.

10. 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.

11. 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.

12. Zustandsautomaten
Die Modellierung der dynamischen Abläufe von (eingebetteten) Echtzeitsystemen geschieht in der Regel über Zustandsautomaten. In diesem Kapitel stellen wir Ihnen verschiedene effiziente Formen für die Realisierung von Zustandsautomaten wie z. B. den Nested-Switch oder das State-Pattern vor.

13. 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.

14. 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“).

15. 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.

16. UML-Werkzeuge – Grundsätzliches und Modellstruktur
In diesem Kapitel stellen wir uns der Frage, wann der Einsatz eines UML- Modellierungswerkzeugs nützlich ist, welchen Verwendungszweck UML-Modelle haben und welche Menge an Modellen in welchem Detaillierungsgrad erzeugt werden sollten. Darüber hinaus gebn wir Ihnen Tipps zum Aufbau eines UML-Modells.

17. SysML
Die Modellierung von Systemen erfordert über die Beschreibung der reinen Software hinaus weitere Modellelemente, um eine ganzheitliche Sicht zu gewährleisten. In diesem Kapitel lernen Sie die Erweiterungen der SysML gegenüber der UML kennen. Sie lernen dabei zum einen, wie Sie sowohl funktionale als auch nicht-funktionale Anforderungen an ein System beschreiben. Zum anderen lernen Sie, die bereits bekannten Mechanismen der UML zur Beschreibung von Klassen in der Software so zu verallgemeinern, dass Bestandteile eines Systems -sogenannte Blöcke- modelliert werden können.