Institut für Informatik Arbeitsgruppe Softwaretechnik Warburger Str. 100 33098 Paderborn Entwurf verlässlicher Echtzeitsysteme mit Rational Rose RealTime Ausarbeitung im Rahmen des Seminars Analyse, Entwurf und Implementierung zuverlässiger Software von Margarete Kudak Mittelberg 7 33100 Paderborn betreut durch Dr. Holger Giese Paderborn, Januar 2004 Inhaltsverzeichnis 1. Übersicht .................................................................................. - 4 1.1 Hintergrund und Entwicklung ............................................................................ - 4 1.2 Anwendungsbereiche und Ausrichtung.......................................................... - 4 1.3 Allgemeine Angaben............................................................................................. - 4 1.3.1 Systemanforderungen .................................................................................. - 4 1.3.2 Kosten ............................................................................................................... - 5 1.4 Unterstützte Notationen....................................................................................... - 5 1.5 Architektur............................................................................................................... - 5 1.5.1 Unterstützung für Teams.............................................................................. - 6 1.5.2 Entwicklungsprozess .................................................................................... - 6 - 2. Modellierung eines Beispiels.............................................. - 7 2.1 Klassen- und Capsulediagramme ..................................................................... - 7 2.2 Statecharts .............................................................................................................. - 8 2.3 Sequenzdiagramme .............................................................................................. - 9 2.4 Kollaborationsdiagramme................................................................................. - 10 2.5 Komponentendiagramme .................................................................................. - 10 2.6 Deploymentdiagramme ...................................................................................... - 11 - 3. Validierung & Verifikation .................................................. - 13 3.1 Simulation.............................................................................................................. - 13 3.2 Analysen ................................................................................................................ - 13 - 4. Echtzeitmodellierung .......................................................... - 15 4.1 Echtzeitmodell ...................................................................................................... - 15 4.2 Modellierung von Echtzeitverhalten............................................................... - 15 - Weitere Möglichkeiten zur Modellierung von echtzeitfähiger Software existieren nicht........................................................ - 15 5. Code Generierung................................................................ - 16 5.1 Umfang ................................................................................................................... - 16 5.2 Zielplattformen ..................................................................................................... - 16 5.3 Konzept .................................................................................................................. - 16 5.4 Qualität ................................................................................................................... - 16 - 6. Qualität.................................................................................... - 18 6.1 Case Tool spezifische Qualitätskriterien ...................................................... - 18 6.1.1 Konsistenzmanagement............................................................................. - 18 6.2 Allgemeine Qualitätskriterien........................................................................... - 18 6.2.1 GUI / Benutzerführung ................................................................................ - 18 6.2.2 Stabilität .......................................................................................................... - 18 6.2.3 Dokumentation.............................................................................................. - 18 6.2.4 Interoperabilität............................................................................................. - 19 - 7. Vergleich................................................................................. - 20 7.1 Übersicht................................................................................................................ - 20 7.1.1 Hintergrund / Entwicklung ......................................................................... - 20 7.1.2 Vergleich der Anwendungsbereiche/Ausrichtung .............................. - 20 7.1.3 Vergleich der Allgemeinen Angaben ...................................................... - 20 7.1.4 Vergleich der Notationen- /Sprachenunterstützung ........................... - 20 7.1.5 Architektur...................................................................................................... - 20 -2- 7.2 Validierung & Verifikation.................................................................................. - 20 7.3 Echtzeitmodellierung.......................................................................................... - 20 7.3.1 Welche Ausdrucksmöglichkeiten für Zeit werden unterstützt? ...... - 20 7.4 Code Generierung ............................................................................................... - 21 7.5 Qualität ................................................................................................................... - 21 7.6 Zusammenfassung.............................................................................................. - 21 - 8. Zusammenfassung .............................................................. - 22 - -3- 1. Übersicht Im Folgenden wird das UML Case Tool Rational Rose RealTime vorgestellt. Es wurde im Rahmen des Seminars Analyse, Entwurf und Implementierung zuverlässiger Software getestet. Die hier gemachten Angaben beruhen auf eigener Erfahrung, der Dokumentation des Case Tools und wissenschaftlichen Arbeiten, die unter Literaturhinweise aufgeführt sind. 1.1 Hintergrund und Entwicklung Rational Rose RealTime wurde von der Rational Software Corporation entwickelt, die mittlerweile zu IBM gehört. Der Hautpsitz der Rational Software Corporation ist in Cupertino, Kalifornien. Weltweit beschäftigt die Firma ca. 3500 Mitarbeiter. 1.2 Anwendungsbereiche und Ausrichtung Laut Werbeprospekt ist Rational Rose RealTime eine Entwicklungsumgebung, die für Real-Time Software maßgeschneidert ist. Entwicklern wird mit Rational Rose RealTime ermöglicht Modelle eines Softwaresystems auf Basis von UML zu erstellen. Rational Rose RealTime beinhaltet folgende Grundfunktionen: 1) 2) 3) 4) Darstellung von UML- Modellen Generieren von Code (C, C++ und Java) für diese Modelle Ausführen, Testen und Debuggen der Modelle Nutzung von CM (Change Management) Systemen um die Entwicklung im Team zu unterstützten 1.3 Allgemeine Angaben 1.3.1 Systemanforderungen Rational Rose RealTime läuft unter Windows NT 4.0 build 1381, Windows 2000 Professional build 2128, Windows XP Professional build 2600, Solaris 2.6, 2.7, 2.8 (Solaris 2.8 empfohlen) und HPUX 10.20. Für Windows NT, 2000 und XP wird ein Pentium mit 150 MHz (500 MHz empfohlen) mit 128 MB Speicher (256 MB empfohlen), 552 MB Festplattenplatz für die Installation und eine Auflösung von 1024x768 (1280x1024 empfohlen) benötigt. Zusätzlich sollte ein Postscript Drucker vorhanden sein. Des Weiteren wird der Internet Explorer 5.01 oder 5.5 oder der Netscape Navigator 4.7 oder 6.0 (Internet Explorer 5.01 oder 5.5 empfohlen) benötigt. Windows NT 4.0 benötigt das Service Pack 6a, Windows 2000 den Release Candidate 2. Unter Unix wird für Solaris ein UltraSparc 10 mit 500 MB Speicher (UltraSparc 60 mit 600 MB empfohlen) vorausgesetzt. Für HPUX wird die Installation der HP 700 Serie empfohlen. Es werden weiterhin 500 MB Speicher (600 MB empfohlen) und 370 MB Festplattenplatz benötigt. -4- Falls mit Rational Rose RealTime C oder C++ Code generiert werden soll, muss ein C oder ein C++ Compiler installiert sein. Für die Code Generierung für Java muss das Sun JDK 1.3 vorhanden sein. 1.3.2 Kosten Der Preis für eine Basisversion liegt laut [7] bei ca. 9045 € pro Arbeitsplatz Lizenz und für Support pro Jahr bei ca. 1810 €. 1.4 Unterstützte Notationen Rational Rose RealTime unterstützt Diagramme in der UML Version 1.4. Aktuell liegt UML in der Version 1.5 vor. Laut Hersteller wird Rational Rose RealTime UML 2.0 unterstützten, kurz nachdem dieser Standard verabschiedet wird. Die Software unterstützt folgende Struktur- und Verhaltensdiagramme: • Struktur: Klassen-, Komponenten- und Deploymentdiagramme • Verhalten: Use Case-, Zustand-, Sequenz- und Kollaborationsdiagramme Aktivitätendiagramme werden nicht unterstützt. Neben den UML Diagrammen werden Capsules, Ports, Protokolle und Capsule Strukturdiagramme unterstützt. Mit diesen soll laut Hersteller eine echtzeitfähige Software modelliert werden können. Capsules sind erweiterte Klassen. Sie besitzen zusätzlich Ports, die die Kommunikation zwischen Capsules regeln. Diese Kommunikation wird durch ein Protokoll definiert. Ein Capsule Strukturdiagramm beschreibt die innere Struktur einer Capsule. Für die Entwicklung eines ausführbaren Models müssen Klassendiagramme, Zustandsdiagramme und Capsule Strukturdiagramme erstellt werden. 1.5 Architektur Rational Rose RealTime bietet dem Nutzer die Möglichkeit ein komplettes Model zu erstellen. Dies existiert aus vier verschiedenen Views. Abbildung 1 zeigt ein Model mit dem Use Case View, dem Logical View, dem Component View und dem Deployment View. Im Use Case View können Use Cases, Kollaborations- und Sequenzdiagramme angelegt werden. Mit Hilfe dieser Diagramme kann der Nutzer die Anforderungen, die seine Software erfüllen soll, modellieren. Der Logical View ist zuständig für Analyse, Design und Implementierung des Systems. Hier wird die komplette Software durch alle Diagramme, bis auf Komponenten- und Deploymentdiagramme modelliert. In dem Beispiel aus Abbildung 1 befinden sich die Capsules CommunicationCentre, CommunicationChannel und Shuttle und das Protokoll ConvoyProtocol. Im Component View kann der Nutzer Komponenten anlegen, die beschreiben, welche Capsules, Protkolle und Klassen wie kompiliert werden. In Abbildung 1 existiert die Komponente ConvoyCreation. Im Deployment View wird dann die Ausführung der Komponenten bestimmt. In Abbildung 1 ist ein Knoten mit dem Namen Localhost definiert, der eine Instanz der Komponente ConvoyCreation besitzt. -5- Abbildung 1 - Model 1.5.1 Unterstützung für Teams Laut [4] werden die erstellten Models in einem Textformat gespeichert, so dass diese in ein CM Tool exportiert werden können. Geeignete CM Tools sind: • Für Windows NT /2000: Rational ClearCase und Microsoft Visual SourceSafe • Für UNIX: RCS (Revision ControlSystem) und SCCS (Source Code Control System) 1.5.2 Entwicklungsprozess Rational Rose RealTime bietet dem Nutzer an, die einzelnen Views der Reihe nach abzuarbeiten. Als erstes soll der Benutzer Use Case Diagramme erstellen um sich so über die Anforderungen seiner Software klar zu werden. Nachdem der Use Case View bearbeitet wurde, wird der Logical View zur Analyse, Design und Implementierung des Systems genutzt. Dazu werden alle Diagramme, bis auf Komponenten- und Deploymentdiagramme erstellt. Sequenzdiagramme, Statecharts und Capsule Strukturdiagramme können erst erstellt werden, nachdem die jeweiligen Capsules und Klassen erstellt worden sind. Danach wird der Component View bearbeitet. Der Nutzer kann mehrere Komponenten erstellen, die angeben welche Capsules, Klassen und Protokolle wie kompiliert werden. Im Anschluss daran wird der Deployment View fertig gestellt. -6- 2. Modellierung eines Beispiels Im Folgenden wird ein das in dem Seminar „Trends in der Softwaretechnik für Echtzeitsysteme – Evaluation von Softwarewerkzeugen“ [6] vorgestellte Beispiel mit Rational Rose RealTime zur Evaluierung der Software modelliert. 2.1 Klassen- und Capsulediagramme Rational Rose RealTime bietet die Möglichkeit neben Klassendiagrammen auch Capsules, Ports und Protokolle anzulegen, die aus der Real-Time Object-Oriented Modelling Language [5] entstanden sind. Eine Capsule besitzt alle Eigenschaften wie eine Klasse und kann um Ports erweitert werden. Ein Port ist zuständig für die Kommunikation zwischen Capsules. Rational Rose Real Time bietet die Möglichkeit neben eigenen Ports auch Timing, Frame und Protocol Ports anzulegen. Das Case Tool besitzt eine Service Library mit der es verschiedene Funktionen zur Verfügung stellt, die von den vordefinierten Ports genutzt werden können. Mittels diesen Funktionen und den Timing Ports kann im Ansatz echtzeitfähige Software modelliert werden. Die Signale, die ein Port senden und empfangen kann, sind in einem Protokoll definiert. Es existieren Ein- und Ausgangssignale. Abbildung 2 zeigt ein Capsule Diagramm, das aus den Capsules Shuttle, CommunicationCentre und CommunicationChannel und dem Protokoll ConcoyProtocol besteht. Abbildung 2 - Capsule Diagramm Die Capsule CommunicationCentre besitzt eine Komposition zu den Capsules Shuttle und CommunicationChannel. Shuttle definiert, wie auch eine Klasse, Attribute und Methoden. Zusätzlich beinhaltet diese Capsule den Port -7- shuttle_comm, der die Signale des Protkolls ConvoyProtocol nutzt. Die Capsule CommunicationChannel besitzt ebenfalls einen Port: channel_comm, der ebenfalls das Protokoll ConvoyProtocol nutzt. Das Protokoll ConvoyProtocol definiert die Signale ConvoyProposal, ConvoyAccepted, ConvoyRejected und ConvoyEnded, die sowohl Ein- als auch Ausgangssignale sind. Somit können die Capsules Shuttle und CommunicationChannel über diese Signale miteinander kommunizieren. Zusätzlich bietet Rational Rose Real Time die Möglichkeit Capsule Strukturdiagramme zu erstellen, die die innere Struktur einer Capsule beschreiben. Abbildung 3 - Capsule Struktur Diagramm Abbildung 3 zeigt ein Capsule Strukturdiagramm, das die Struktur der Capsule CommunicationCentre zeigt, die durch eine Komposition mit den Capsules CommunicationChannel und Shuttle verbunden ist. Das Diagramm zeigt zwei Capsule Roles, die je einen Port besitzen und über einen Connector miteinander verbunden sind. Capsule Strukturdiagramme bieten keine neuen Informationen. Sie stellen lediglich einen Teil des Capsule Diagramms anders dar, so dass in komplexeren Diagrammen die Darstellung übersichtlicher wird. Neben den Capsule Diagrammen können auch Klassendiagramme erstellt werden. Die Darstellung der Klassendiagramme ist UML konform. 2.2 Statecharts Statecharts beschreiben das Verhalten einer Capsule. Die von Rational verwendete Notation ist nicht UML konform, da das After-Konstrukt nicht unterstützt wird [3]. Zudem können keine parallelen Zustände definiert werden. Diese beiden Umstände machen die Modellierung von Statecharts in einigen Fällen um einiges schwieriger. -8- Abbildung 4 – Statechart Abbildung 4 zeigt das Statechart, das das Verhalten der Capsule Shuttle beschreibt. Nach Verlassen des Startzustandes befindet sich das Shuttle in dem Zustand NotInConvoy. Erhält das Shuttle das Signal Proposal, so wechselt es in den Zustand ConvoyPossible. Das Shuttle kann nun die Convoyfahrt ablehnen oder annehmen. Sendet es das Signal Rejected, wird die Convoyfahrt abgelehnt und der aktuelle Zustand ist NotInConvoy. Bei Senden des Signals Accepted wechselt das Shuttle in den Zustand InConvoy und fährt nun mit dem anderen Shuttle in Convoy. Die Convoyfahrt kann beendet werden, indem das Shuttle das Signal End sendet oder von einem anderen Shuttle dieses empfängt. Die Signale, die ein Shuttle senden oder empfangen kann, sind die Signale, die im Protokoll ConvoyProtocol definiert sind. Des Weiteren hat der Nutzer die Möglichkeit Entry und Exit Actions für Zustände durch Code zu definieren. An Transitionen kann zusätzlich Code für die Action Methode und ein Trigger, der aus Signalen und Code für den Guard besteht, definiert werden. Der Nutzer hat keine Möglichkeit echtzeitfähige Statecharts zu erstellen. Es kann weder ein After-Konstrukt angegeben werden, noch ist es möglich zu definieren, wie lange ein Schaltvorgang dauern muss. 2.3 Sequenzdiagramme Abbildung 5 zeigt ein mit Rational Rose RealTime erstelltes Sequenzdiagramm. In diesem Sequenzdiagramm kommunizieren zwei Instanzen, ShuttleOne und ShuttleTwo, der Capsule Shuttle über eine Instanz der Capsule CommunicationChannel miteinander. ShuttleOne sendet das Signal ConvoyProposal an den CommunicationChannel. Dieser leitet das Signal an ShuttleTwo weiter. ShuttleTwo antwortet dem CommunicationChannel mit dem Signal ConvoyAccepted, das an ShuttleOne weiter gegeben wird. Nun fahren beide Shuttle miteinander im Convoy. Die Convoyfahrt kann von beiden -9- Shuttles unterbrochen werden, indem sie an den CommunicationChannel das Signal convoyEnded senden. Der Nutzer hat die Möglichkeit bei der Definition von Nachrichten anzugeben, welcher Port das Signal sendet, welcher Port das Signal empfängt und um welches Signal es sich handelt. Zusätzlich können die Dauer der Nachricht und die Priorität angegeben werden. Bezogen auf die Modellierung von echtzeitfähiger Software bedeutet dies, dass der Nutzer zwar die Dauer einer Nachricht spezifizieren kann, aber es nicht viel nutzt, da kein Code für Sequenzdiagramme generiert werden kann. Rational Rose RealTime bietet zudem die Möglichkeit Sequenzdiagramme für Klassen zu erstellen. Abbildung 5 - Sequenzdiagramm 2.4 Kollaborationsdiagramme Kollaborationsdiagramme in Rational Rose RealTime entsprechen zum größten Teil den Capsule Strukturdiagrammen. In einem Kollaborationsdiagramm können zusätzlich zu den Capsule Roles Classifiert Roles angegeben werden. Allerdings können keine Ports definiert werden. 2.5 Komponentendiagramme Rational Rose RealTime bietet die Möglichkeit mittels Komponentendiagrammen anzugeben, welche Klassen, Capsules und Protokolle wie kompiliert werden. Dazu werden ein oder mehrere Komponenten angelegt, die Referenzen auf die zu kompilierenden Klassen, Capsules und Protokolle besitzen. - 10 - Abbildung 6 - Komponente Abbildung 6 zeigt die Komponente ConvoyCreation, deren Referenzen zu einem RT Java Project gehören. Die referenzierten Klassen, Capsules und Protokolle werden somit mit einem RT Java Compiler kompiliert, der in dem Spezifikationsdialog der Komponente näher beschrieben ist. Abbildung 7 zeigt die Spezifikation der Komponente ConvoyCreation aus Abbildung 6. Die Komponente besitzt Referenzen auf die Capsules CommunicationCentre, Shuttle, CommunicationChannel und das Protokoll ConvoyProtocol. Somit wird für jede dieser Referenz eine Java-Klasse generiert und kompiliert. Abbildung 7- Spezifikation der Komponente 2.6 Deploymentdiagramme Deploymentdiagramme sind für die Ausführung der einzelnen Komponenten zuständig. Rational Rose RealTime bietet die Möglichkeit neben Prozessoren, auch Devices und Packages anzulegen. - 11 - Abbildung 8 - Prozessor Abbildung 8 zeigt den Prozessor mit dem Namen Localhost, der eine Instanz der Komponente ConvoyCreation besitzt. Er ist somit zuständig für die Ausführung dieser Komponente. Abbildung 9 zeigt den Spezifikationsdialog von Localhost. Die Instanz der Komponente ConvoyCreation, ConvoyCreationInstance, wird auf einem Solarissystem mit der CPU sparc ausgeführt. Unter General wird der Name des Prozessors angegeben. Abbildung 9 - Deployment Spezifikation - 12 - 3. Validierung & Verifikation 3.1 Simulation Rational Rose RealTime bietet die Möglichkeit Sequenzdiagramme zu visualisieren. Abbildung 10 - Visualisierung eines Sequenzdiagramms Abbildung 10 zeigt ein Sequenzdiagramm aus einem Beispiel von Rational Rose RealTime. Der Nutzer hat die Möglichkeit nachdem er sein Model kompiliert hat, dieses auszuführen. Während der Ausführung wird der aktuelle Zustand bzw. die aktuelle Transition des Statecharts hervorgehoben. Zusätzlich wird ein Trace File erstellt. Das Trace File protokolliert die Zustandswechsel. Dabei werden u. a. der Zeitpunkt und das Signal, das gesendet bzw. empfangen wurde gespeichert. 3.2 Analysen Neben der Simulation bietet Rational Rose RealTime die Möglichlkeit Sequenzdiagramme, Kollaborationsdiagramme und Capsule Strukturdiagramm zu validieren. Abbildung 11 zeigt einen Dialog zur Validierung eines Sequenzdiagramms. Bei der Validierung werden formale Abhängigkeiten überprüft. Der Nutzer hat die Möglichkeit anzugeben, was genau geprüft werden soll. Bei der Validierung aus Abbildung 11 hat Rational Rose RealTime herausgefunden, dass an der Nachricht ConvoyEnded kein Signal spezifiziert wurde. - 13 - Abbildung 11 - Validierung von Sequenzdiagrammen Zudem werden bei der Code Generierung Klassen- und Capsulediagramme validiert. Hierbei wird überprüft, ob z.B. bei allen Methoden ein Rückgabetyp angegeben wurde. Ist dies nicht der Fall, so erhält der Nutzer eine Fehlermeldung. Der Code wird jedoch fehlerhaft erzeugt, so dass eine Inkonsistenz zwischen dem Model und dem Code entsteht. - 14 - 4. Echtzeitmodellierung Im Folgenden wird erläutert, in wie fern mit Rational Rose RealTime echtzeitfähige Software modelliert werden kann. 4.1 Echtzeitmodell Laut Rational Rose bieten Capsules, Ports, Protokolle und Capsule Struktur Diagramme die Möglichkeit echtzeitfähige Software zu modellieren. Zudem bietet das Case Tool eine eigene Service Library an, die es dem Anwender ermöglicht Methoden zu nutzen, die u. a. Echtzeitverhalten umsetzen können. Vor allen Dingen Timing Ports nutzen Funktionen, die Echtzeitverhalten umsetzen. 4.2 Modellierung von Echtzeitverhalten Echtzeitverhalten kann in Rational Rose RealTime nur durch Timing Ports modelliert werden. In Sequenzdiagrammen kann zwar die Dauer einer Nachricht spezifiziert werden, aber die Code Generierung für Sequenzdiagramme ist nicht vorhanden. Statecharts bieten kein Konstrukt um Echtzeitverhalten zu modellieren. Der Nutzer hat die Möglichkeit Timing Ports durch Code, in dem er Methoden der Service Library nutzt, zu ergänzen. Es kann z.B. ein Timer gestartet werden, der all n Sekunden ein Signal an einen anderen Port sendet. Weitere Möglichkeiten zur Modellierung von echtzeitfähiger Software existieren nicht. - 15 - 5. Code Generierung Rational Rose RealTime ermöglicht die Code Generierung von C, C++ und Java. Im Folgenden wird die Code Generierung für Java beschrieben: 5.1 Umfang Rational Rose RealTime generiert Code für Klassen, Statecharts, Capsules, Protokolle und Capsule Strukturdiagramme. Für Klassen, Capsules und Protokolle wird je eine Klasse angelegt. Die Attribute und Methoden werden aus dem Model übernommen. 5.2 Zielplattformen Rational Rose RealTime unterstützt keine plattformspezifische Code Generierung. Es ermöglicht die Ausführung des generierten Codes auf folgenden Plattformen: AIX, HPUX10, OSE, pSOS, Solaris, VRTX, VxWorks, Windows CE und Windows NT. 5.3 Konzept Für die Java Code Generierung in Rational Rose RealTime werden zusätzlich ein Make Programm, ein Java Compiler, ein Java Archiver und die Java Virtual Machine benötigt. Rational Rose RealTime erstellt für jede Klasse, jede Capsule und jedes Protokoll eine eigene Klasse. Die vom Nutzer definierten Attribute und Methoden werden korrekt in den generierten Code übernommen. Die definierten Ports befinden sich in einer PortListe. Die generierte Klasse stellt zusätzlich Methoden zur Verfügung, die es ermöglichen auf die einzelnen Ports zuzugreifen. Das durch Statecharts beschriebene Verhalten und die durch Capsule Strukturdiagramme beschriebene Struktur werden durch Implementierung von Methoden in der dazugehörigen Capsule Java Klasse realisiert. Bei der Generierung von Java Code, werden nicht nur die entsprechenden Java Klassen erstellt, sondern noch zusätzliche andere Dokumente, wie zum Beispiel ein Makefile und ein Pearl-Dokument, das den Klassenpfad enthält. 5.4 Qualität Der von Rational Rose RealTime generierte Code weist keine Fehler auf. Lediglich, wenn der Benutzer etwas falsch spezifiziert wird fehlerhafter Code erstellt. Gibt der Benutzer z.B. keinen Rückgabetyp bei der Definition einer Methode an, so erhält der Nutzer zwar eine Fehlermeldung, der Code wird jedoch trotzdem erstellt und als Rückgabetyp wird void angenommen. Ein Nachteil bei der Code Generierung ist, dass sehr viele Konstrukte genutzt werden, die die Service Library zur Verfügung stellt. protected void rtEnumeratePorts( com.rational.rosert.Capsule.PortList list ) { - 16 - super.rtEnumeratePorts( list ); list.add( this.shuttle_comm ); } Beispiel 1 - Nutzung der Service Library Beispiel 1 zeigt einen Codeausschnitt aus der Capsule Shuttle. Die Methode rtEnumeratePorts bekommt eine PortListe übergeben, in der der Port shuttle_comm der Capsule Shuttle eingetragen wird. Die PortListe stammt aus der Service Library von Rational Rose RealTime. Bei der Generierung von Attributen und Methoden, die vom Nutzer definiert worden sind, fällt auf, dass diese sehr stark kommentiert werden. // {{{RME classAttribute 'position' private float position = 0.0; // }}}RME Beispiel 2 - Attribut Deklaration Beispiel 2 zeigt die Deklaration des Attributes position, die von einem Kommentar umgeben ist. Dies weist daraufhin, dass das Case Tool die Kommentare benötigt um den Code der Capsule korrekt in das Tool zu importieren. - 17 - 6. Qualität Im Folgenden werden die Case Tool spezifischen Qualitätskriterien von Rational Rose RealTime vorgestellt. und die allgemeinen 6.1 Case Tool spezifische Qualitätskriterien 6.1.1 Konsistenzmanagement Im Allgemeinen wird der Nutzer bei der fehlerhaften Erstellung eines Diagramms durch eine Fehlermeldung darauf hingewiesen. Der Nutzer hat allerdings die Möglichkeit diese zu ignorieren. Bei Sequenz-, Kollaborations- und Capsule Strukturdiagrammen werden die Diagramme nicht automatisch auf Fehler überprüft, sondern werden nach der Modellierung mittels einer Validierungsfunktion überprüft. Rational Rose RealTime unterscheidet bei der Modellierung die logische Sicht und die grafische Sicht. In der logischen Sicht sind die vier Views, Use Case, Logical, Component und Deployment View, mit ihren dazugehörigen Diagrammen aufgeführt. Wird ein Diagrammteil aus der grafischen Sicht entfernt, so wird er nicht automatisch aus der logischen Sicht entfernt. Löscht der Nutzer einen Diagrammteil aus der logischen Sicht, so wird dieser ebenfalls aus der grafischen Sicht entfernt. Dies führt zu Inkonsistenzen. Zudem führt das Anlegen von Diagrammen in der logischen Sicht ebenfalls zu Inkonsistenzen, da diese dann nicht in der grafischen Sicht angezeigt werden. Werden Diagramme allerdings in der grafischen Sicht angelegt, so sind diese auch in der logischen Sicht vorhanden. 6.2 Allgemeine Qualitätskriterien 6.2.1 GUI / Benutzerführung Die Benutzerführung ist für erfahrene Modellierer sehr intuitiv. Die wichtigsten Möglichkeiten finden sich sowohl im Menu, als auch in Form von Icons in einer Toolbar wieder. Der Nutzer hat außerdem die Möglichkeiten sich in einem gewissen Umfang seine Benutzeroberfläche selbst zu konfigurieren. Er kann selbst entscheiden, welche Teile der GUI er angezeigt haben möchte. 6.2.2 Stabilität Rational Rose RealTime läuft in der getesteten Version unter Solaris sehr stabil, wenn auch zu weilen etwas langsam. 6.2.3 Dokumentation Rational Rose RealTime bietet eine sehr umfangreiche Dokumentation an. Für Einsteiger sind vor allen Dingen die Beispiel Tutorials sehr hilfreich. Neben einer Beschreibung liefert Rational die Beispiele auch als Datei mit, so dass diese mit Rational Rose RealTime geöffnet werden können und mit wenigen Änderungen auch ausgeführt werden können. - 18 - Allerdings werden einige Themen, wie zum Beispiel die Echtzeitmodellierung nicht sehr ausführlich in der Dokumentation behandelt. 6.2.4 Interoperabilität Neben Programmen, die für die Unterstützung für Teams notwendig sind (siehe Kapitel 1.5.1), bietet Rational Rose RealTime die Möglichkeit zur Kooperation mit allen anderen Programmen von Rational. - 19 - 7. Vergleich 7.1 Übersicht 7.1.1 Hintergrund / Entwicklung • • Von der Rational Software Corporation, die mittlerweile zu IBM gehört, entwickelt Entwicklung von Echtzeitsystemen auf Basis von UML und ROOM 7.1.2 Vergleich der Anwendungsbereiche/Ausrichtung • Entwicklungsumgebung für Real-Time Software 7.1.3 Vergleich der Allgemeinen Angaben • • Entwicklungsplattform: Windows, Solaris, HPUX Preis: Basisversion ca. 9045€ pro Lizenz; Support ca. 1810€ pro Jahr 7.1.4 Vergleich der Notationen- /Sprachenunterstützung • Siehe Tabelle Vergleich.pdf im Anhang 7.1.5 Architektur • Unterstützung für Teams mit Rational Clear Case, Microsoft Visual Source Safe, RCS und SCCS möglich 7.2 Validierung & Verifikation • • Simulation o Zeitunterstützung: ja o Visualisierung: Statecharts o Debugging: k.A. Modelchecking o Zeitunterstützung o Visualisierung o Debugging 7.3 Echtzeitmodellierung • Zeitmodell: o Hart/Weich: nicht definiert (hart?) o Zeiteinheit (ms/ticks): nicht definiert 7.3.1 Welche Ausdrucksmöglichkeiten für Zeit werden unterstützt? • - 20 - Ausdrucksmöglichkeiten für Zeit: • o Statecharts: nein o Sequenzdiagramme: Dauer der Nachricht o Weitere Diagrammarten: Capsules, Timing Ports Eingebettete/Hybride Systeme: o Extra Diagramme: nein o Speicherrestriktionen: nein o Integration kont. Modelle: nein 7.4 Code Generierung • Codegenerierung für Klassen, Capsules, Protokolle, Statecharts und Capsule Strukturdiagramme 7.5 Qualität • • • • • • • Konsistenzmanagement: gut Unterstützung Reengineering: ausreichend GUI: gut Benutzerführung: gut Stabilität: sehr gut Dokumentation: befriedigend Interoperabilität: gut 7.6 Zusammenfassung Rational Rose RealTime eignet sich sehr gut für die Modellierung von nicht echtzeitfähiger Software. Lediglich die eingeschränkte Version der Statecharts und die Inkonsistenzen zwischen der grafischen und der logischen Sicht trüben diesen Eindruck ein wenig. Allerdings bietet Rational Rose RealTime außer den Timing Ports keine weitere Möglichkeit Zeit zu spezifizieren. - 21 - 8. Zusammenfassung Rational Rose RealTime hilft dem Nutzer durch die Aufteilung in die vier verschiedenen Views gut bei der Modellierung. Allerdings stören dabei die Inkonsistenzen zwischen der logischen und der grafischen Sicht. Laut Werbeprospekt bietet Rational Rose RealTime dank der zusätzlichen Diagramme, die aus ROOM entstanden sind, die Möglichkeit echtzeitfähige Software zu modellieren. Letztendlich bietet das Case Tool lediglich Timing Ports und eine Service Library, die echtzeitfähige Software nur in Ansätzen unterstützen, da z.B. keine Möglichkeit besteht Zeiten bei der Modellierung von Statecharts zu definieren. Diagramme, wie Capsule Strukturdiagramme bieten keine neuen Informationen und unterstützten die Echtzeitmodellierung nicht, sonder sollen lediglich die Darstellung übersichtlicher gestalten. Positiv fällt auf, dass es mit Rational Rose RealTime möglich ist ein Model zu erstellen, Code daraus zu generieren, diesen zu kompilieren und auch auszuführen. Es ist dabei zu empfehlen das Model schon während der Entwicklung auszuführen, da sich bei einem umfangreichen Model Fehler einschleichen können, die nachher schwer zu finden sind. Der von Rational Rose RealTime generierte Code ist fehlerfrei. Nur die vielen Kommentare stören die Lesbarkeit ein wenig. Zusammenfassend lässt sich sagen, dass Rational Rose RealTime ein sehr komplexes Tool ist, das für die Modellierung von echtzeitfähiger Software nur in Ansätzen geeignet ist. - 22 - Literaturhinweise: [1] Rational Home Page, www.rational.com, Januar 2004 [2] Dr. Ravi Shankar: UML RT for embedded systems, COT 6930: Computer as components, 02.10.2003 [3] Lutz Bichler, Ansgar Radermacher, Andreas Schürr: Evaluating UML Extensions for Modeling Real-time Systems, University of the German Federal Armed Forces Munich, Neubiberg, Germany [4] Peter Maurer: Heart and Soul – CASE Tools for Real Time Systems on the Testbed, Karlsruhe, Germany, November 2001 [5] Bran Selic, Garth Gulkerson, Paul T. Ward: Real-Time Object-Oriented Modelling, 1994, John Wiley & Sons Inc [6] Sven Burmester, Holger Giese, Matthias Tichy, Tobias Schumacher, Björn Schwerdtfeger, Holger Sinnerbrink, Markus Zarbock: Trends in der Softwaretechnik für Echtzeitsysteme – Evaluation von Softwarewerkzeugen; Seminararbeit; University of Paderborn, Paderborn, Germany; january 2004 [7] Olaf Koth, Sven Wolter: Rational XDE Evaluation, Modellierung verteilter OOSysteme mit MDA, UML und MOF; Vortrag - 23 -