Übungen zur Softwaretechnik - Software and Systems Engineering
Transcrição
Übungen zur Softwaretechnik - Software and Systems Engineering
Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Dr. Bernhard Rumpe, Markus Pister WS 2002/2003 Übungsblatt 5 14. November 2002 www4.in.tum.de/~rumpe/se Übungen zur Softwaretechnik !!! Dieses Übungsblatt enthält ausschließlich eine Hausaufgabe. Dementsprechend findet am 19. November 2002 KEINE Zentralübung statt. Nutzen Sie stattdessen die Zeit für diese Hausaufgabe. !!! Aufgabe 11 : Verwendung eines CASE-Tools (H) In dieser Aufgabe wird ein CASE-Tool (Computer Aided Software Engineering Tool) näher betrachtet. Für universitäre Zwecke bietet sich für diese Übung das Werkzeug Poseidon von der Firma Gentleware an. (Es ist in Java geschrieben und deshalb etwas langsam, aber dafür läuft sie auf jedem System.) Die Software ist unter www.gentleware.com zu erhalten. a) Setzen sie sich an einen Rechner (zum Beispiel in der Uni) und installieren Sie dort die Poseidon – Community Edition (Zip-File ca. 13 MB). (Tipp: Sollte jemand die Solaris-Rechner in der Sunhalle nutzen, so kann es sein, dass man die Variable JAVA_HOME setzen muss. Dies geschieht mit: JAVA_HOME=/usr/local/dist/DIR/j2sdk1.4.0/ export JAVA_HOME ) In der Vorlesung haben Sie ein Seminarsystem vorgestellt bekommen. Dieses enthält die sechs Klassen: „Kunde“, „Dozent“, „Seminartyp“, „Buchung“, „Veranstaltung“ und „Buchungswunsch“. b) Starten Sie ein neues Projekt und zeichnen Sie diese sechs Klassen ein. (Zu den Klassen vorerst nur den Namen angeben.) Die Kunden haben einen Buchungswunsch und sind über die Buchungen an die jeweiligen Veranstaltungen gebunden. Veranstaltungen werden von Dozenten gehalten und lassen sich gewissen Seminartypen zuordnen. Die Dozenten eignen sich jeweils nur für bestimmte Seminartypen. c) Geben sie nun die Assoziationen in das UML Diagramm ein. Bei näherer Bertachtung des Diagramms stellen Sie fest, dass die Klasse “Kunde“ und „Dozent“ beide Personen sind, und somit gleiche Attribute haben. d) Erstellen Sie eine gemeinsame Oberklasse „Person“ für die beiden Klassen „Kunde“ und „Dozent“ und binden sie diese mit der Generalisierung (/Vererbung) an. e) Geben Sie in diese Oberklasse die Attribute „Name“, „Adresse“ und „Telefon“ ein. Bei schlechten äußeren Umstanden kann es sein, dass Buchungen storniert werden müssen oder sogar Veranstaltungen abgesagt werden müssen. Seite 1 v. 2 f) Tragen Sie diese beiden Operationen in das Diagramm ein. Um nun die Struktur deutlicher herauszuheben werden die Klassen Paketen zugeordnet. Man entscheidet sich für ein Paket „Personenverwaltung“ und ein Paket „Seminarverwaltung“. g) Orden Sie die Klassen den beiden Paketen im UML Diagramm zu. Mit dem Klassendiagramm steht ein grobes Gerüst. In einem weiteren Schritt werden mit einem Use Case die Aktivitäten in Zusammenhang gebracht. Teilnehmende Aktoren sind dabei die Dozenten und die Kunden. h) Zeichen Sie mit Poseidon einen Use Case zu dem Klassendiagramm. Dieser soll die beiden eben genannten Aktoren und den Use Case „Seminar veranstalten“ enthalten. Die Aktivitäten bei einer Seminarveranstaltung sind: „buchen“, „stornieren“, „Seminar absagen“, „Seminar halten“ und „Seminar anbieten“. i) Erweitern Sie den Use Case „Seminar verwalten“ um diese Aktionen. Der Ablauf des Use Case „Seminar veranstalten“ ist noch nicht bestimmt. Um dies zu erreichen werden mit einem Aktivitätsdiagramm die einzelnen Handlungen in eine Reihenfolge gebracht. j) Erstellen Sie ein Aktivitätsdiagramm in dem die Handlungen aus Aufgabe i) in eine Reihenfolge gebracht werden. Diese Modellierung mit der UML entspricht bei feiner Ausarbeitung dem Feindesign bei der Codeentwicklung. Um nun die Implementierung zu unterstützen, können einige Informationen aus dem Diagramm automatisch in Java-Code umgesetzt werden. k) Generieren sie mit Poseidon aus ihren Diagrammen nun Java-Klassenrümpfe. Betrachten Sie im generierten Code, welche Elemente und wie sie jeweils umgesetzt wurden. (Nicht enttäuscht sein ;-) ) Seite 2 v. 2