Column #col2

Schulungsbeschreibung: OOAD mit der UML für Embedded Systems

1. Einführung in eingebettete Systeme
In diesem Kapitel lernen Sie die Unterschiede von eingebetteten Systemen und Echtzeitsystemen zu normalen Geschäftsanwendungen kennen und wie sich dies auf die Entwicklung auswirkt. Dabei wird auch auf die Besonderheiten von eingebetteten Systemen und Echtzeitsystemen eingegangen, die sich in begrenzten Ressourcen, einzuhaltenden Reaktionszeiten (Rechtzeitigkeit), parallelen Abläufe von Tasks usw. manifestieren.

2. Grundlagen der Objekttechnologie
Sie lernen Objekte und Klassen kennen und wie diese verwendet werden. Sie erfahren den Unterschied zwischen guten und schlechten Klassen, wie viele Klassen in einem Programm benötigt werden und was Polymorphismus bedeutet.

3. Grundlagen der UML
Sie lernen die UML als Sprache kennen, die komplexe Systeme zu modellieren ermöglicht. Dabei lernen Sie die Grundkonzepte der UML, und Sie erfahren, wie sich die UML für neue Anforderungen durch verschiedene Mechanismen wie Stereotypen erweitern lässt. Sie erfahren, welche besonderen Profile für die Modellierung wichtiger Konzepte wie Zeit und Taskmodellierung definiert wurden.

4. Der Entwicklungsprozess
Hier lernen Sie die Motivation für einen iterativen Softwareentwicklungsprozess kennen. Er wird Ihnen aus zwei verschiedenen Perspektiven, aus der Managementsicht und aus der technischen Sicht, erklärt und seine Bedeutung für das Management, das Entwicklerteam, die Dokumentation und die eingesetzten Werkzeuge erläutert.

5. Aktivitäten
Für die Modellierung von Aktivitäten, von parallelen Abläufen sowie von Abläufen innerhalb einer Operation lernen Sie die Aktivitätsdiagramme kennen. Dabei lernen Sie, wie Sie Aktions- und Aktivitätszustände und Zustandsübergänge beschreiben können, wie Sie Verzweigungen, Gabelungen zur Darstellung von Parallelität, Synchronisation sowie das Senden und Empfangen von Signalen bei Zustandsübergängen modellieren können. Außerdem wird gezeigt, wie man Datenflüsse darstellen kann.

6. Anforderungsanalyse
Sie lernen die Unterschiede zwischen den funktionalen und nicht-funktionalen Anforderungen und die Probleme der Anforderungsanalyse kennen. Die funktionalen Anforderungen beschreiben Sie mit Hilfe des Konzepts der Anwendungsfälle (Use-Cases). Der Einsatz von Szenarien erlaubt Ihnen, die Anwendungsfälle weiter zu verfeinern. Neben der Modellierung von Zeitaspekten bei Anwendungsfällen wird auch auf die Grenzen der Anwendungsfallmodellierung eingegangen. Sie erhalten Anhaltspunkte, in welchen Fällen eine Modellierung mit Anwendungsfällen nur bedingt sinnvoll ist und wie Sie Anwendungsfälle mit Aktivitäten beschreiben können.

7. 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? Wie können Sie Klassen dokumentieren?

8. Zusammenwirken von Objekten
Hier erfahren Sie, dass Sie Interaktionen zwischen Objekten mit Hilfe von Sequenz- und Kommunikationsdiagrammen beschreiben können und dabei die in Szenarien beschriebene Funktionalität modellieren sowie die Anwendungsfälle verfeinern können.

9. Beziehungen zwischen Klassen
Sie erfahren, wozu Beziehungen zwischen Klassen notwendig sind, welche Arten es gibt, was Sie bei der Namensgebung beachten sollten und wie Sie Beziehungen verfeinern können (Multiplizität, Navigierbarkeit).

10. Vererbung
Als spezielle Form einer Beziehung lernen Sie die Grundlagen der Vererbung, der Einfach- und Mehrfachvererbung und Polymorphismus im Zusammenhang mit der Vererbung kennen. Sie erhalten außerdem praktische Hinweise zum Einsatz der Vererbung.

11. Verhalten von Klassen und Objekten
Hier lernen Sie Zustandsübergangsdiagramme für die Modellierung dynamischer Abläufe kennen und insbesondere, wie man komplexe Diagramme durch Schachtelung von Zuständen vereinfachen kann. Dabei wird vertiefend auf die erweiterten Möglichkeiten der UML 2 zur Modellierung von komplexen Zustandsübergangsdiagrammen eingegangen.

12. Übergang zum Design
Beim Übergang zum Design lernen Sie, welche Probleme es bei der Erstellung des Analysemodells geben kann und wie man das Analysemodell konsolidiert. Außerdem erfahren Sie, welche Aufgaben im Design wichtig sind, wie man das Modell verfeinert und eine Softwarearchitektur erstellt.

13. Modulares Design
In diesem Kapitel lernen Sie die verschiedenen Möglichkeiten kennen, wie man ein Softwaresystem modular aufbauen kann, welche Konzepte die UML für die verschiedenen Ebenen der Modellierung zur Verfügung stellt und wie die Konzepte eingesetzt werden. Dabei wird speziell auf die gerade für eingebettete Systeme wichtige Möglichkeit der hierarchischen Dekomposition in Module eingegangen. Sie lernen neben Subsystemen und Paketen strukturierten Klassen und Komponenten samt Ports kennen.

14. Softwarearchitektur
Hier erfahren Sie, wie wichtig und für den Erfolg eines Projektes entscheidend die Softwarearchitektur ist. Sie lernen, dass die Architektur durch Pakete strukturiert wird und wie die Abhängigkeiten zwischen diesen Paketen verwaltet werden. Das 4+1-Sichten-Modell lernen Sie detailliert kennen. Dabei wird auf den Unterschied von logischer und physischer Modellierung eingegangen. Sie erfahren, welche Auswirkungen eine Architektur auf den Teamaufbau und die Dokumentationsstruktur hat.

15. Patterns (Entwurfsmuster)
Sie lernen hier Patterns und ihre verschiedenen Arten kennen. Sie lernen, wie Patterns die Architektur und das Design steuern können, wie Sie das richtige Pattern finden, instanziieren und im Design dokumentieren. Sie erfahren, was Sie beim Umgang mit Patterns beachten müssen. Es werden einige interessante Patterns, die in eingebetteten Systemen sinnvoll eingesetzt werden können, vorgestellt.

Ergänzende Kapitel
16. 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.

17. Entwurf komponentenbasierter Systeme
Hier werden Ihnen die Grundlagen von Komponenten und komponentenbasierten Systemen vorgestellt. Sie lernen den Unterschied zwischen Klassen und Komponenten kennen und wie Sie Komponenten entwerfen. Sie erfahren, welche Flexibilität Sie mit Komponenten erzielen und wie Sie mit Web-Services offene Systeme und Service-orientierte Architekturen erzeugen können.

18. Verteilte Objekttechnologien
Sie erfahren, wie sich verteilte Systeme mit Hilfe von objektorientierten Techniken sehr elegant auf hohem Abstraktionsniveau aufbauen lassen und welche Hilfsmittel Ihnen hierzu zur Verfügung stehen. Dabei wird auf mögliche Realisierungen für eingebettete Systeme eingegangen. Sie lernen aber auch die Probleme kennen, die eine Verteilung mit sich bringt.

19. Fehlerbehandlung
Sie erfahren, welche Methoden zur Fehlerbehandlung existieren und wie Sie diese vorteilhaft einsetzen. Sie lernen, wie Sie durch richtige Fehlerbehandlung die Qualität Ihrer Software erhöhen können. Dabei werden auch die Vor- und Nachteile von Ausnahmebehandlungsmechanismen diskutiert.

20. Wiederverwendung
Hier lernen Sie, Wiederverwendung realistisch einzuschätzen und zu beurteilen. Sie lernen die Vorteile, die verschiedenen Ansätze und den Umfang der Wiederverwendung von Software kennen. Sie erhalten Hinweise, wie Wiederverwendung in der Praxis erreicht wird.

21. Design mit C++/Java/C# bzw. Design mit C
Sie erfahren, welche Besonderheiten beim Einsatz von C++, Java bzw. C# zu beachten sind. Sie lernen, wie sich Beziehungen zwischen Klassen in C++, Java bzw. C# realisieren lassen, welche Schwierigkeiten es beim Einsatz von Mehrfachvererbung geben kann und was bei der Verwendung von Exceptions zu beachten ist. Falls Sie ein System mit C aufbauen, erfahren Sie in diesem Kapitel, wie sich objektorientierte Konzepte in einer prozeduralen Sprache wie C umsetzen lassen. Dabei wird nicht nur auf die Grundkonzepte eingegangen, sondern es werden auch Aspekte wie Aufteilung in RAM/ROM, Vererbung und Codegenerierung betrachtet.