Ü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