Praktische Softwaretechnologie Vorlesung 7 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 5. Dezember 2006 p.1/32
Vorträge Apache Ant, ein Werkzeug um komplexe Programme zu bauen Antonia JUnit, ein Framework um einzelne Aspekte von Programmen automatisch zu testen Diana Swing, ein Framework in den Java standard libraries um graphische Benutzeroberflächen zu programmieren Christian ANTLR, ein tool um aus der Beschreibung einer Sprache (Grammatik) einen Parser in Java zu erzeugen. Robert PSWT 2006 5. Dezember 2006 p.2/32
Modellierungssprachen Kristen Nygaards OO Definition: A program execution is regarded as a physical model, simulating the behavior of either a real or imaginary part of the world. Struktur des Programms entspricht Struktur der realen Welt. Graphische Modellierungssprachen Diagramme statt Text Relativ abstrakt Unabhängig von Implementierungsdetails Durch normierte Darstellung deutlicher als willkürliche Diagramme PSWT 2006 5. Dezember 2006 p.3/32
Analyse, Entwurf, Implementierung Phasen in der Softwareproduktion: Analyse (analysis) Modellieren der involvierten Konzepte (conceptual model). Anforderungen. Was soll erreicht werden? Evtl. Spezifikation der Benutzeroberfläche. Entwuf (design) Konzentration auf das System. Abstraktionen. Systemstruktur. Unabhängig von Programmiertechnologie. Implementierung Umsetzung des Entwurfs in konkrete Programmiersprache. Algorithmen. PSWT 2006 5. Dezember 2006 p.4/32
Unified Modeling Language Meistbenutzte graphische Modellierungssprache Initiiert 1996 von Booch, Rumbaugh, Jacobson bei Rational Standardisierung durch Konsortium Object Management Group (OMG) Vereinigung von vielen anderen Notationen Unabhängig von Programmiersprache UML 2.0 Standard beschreibt 13 verschiedene Diagrammtypen PSWT 2006 5. Dezember 2006 p.5/32
Diagrammarten Verhaltensdiagramme (behavior diagram): Anwendungsfalldiagramme (use case diagrams) Sequenzendiagramme (sequence diagrams) Zustandsdiagramm (state diagram). Strukturdiagramme (structure diagram): Klassendiagramm (class diagram) Objektdiagramm (object diagram) Komponentendiagram (component diagram). PSWT 2006 5. Dezember 2006 p.6/32
Modell = Diagramm Modelle bestehen aus Klassen, Objekten, Assoziationen, Zuständen, Anwendungsfällen, etc. Diagramme sind graphische Darstellungen von Teilen von Modellen In UML-tools häufig mehrere Diagramme für ein Modell möglich Weitere Information über Modell textuell beschrieben PSWT 2006 5. Dezember 2006 p.7/32
Modell = Programm Modell abstrakter, Implementierungsdetails fehlen Strukturelle Information die in Implem. fehlt Modelle teilweise nur Beispiele Executable UML, Model-Driven-Engineering sollen UML zur Programmiersprache machen: Übersetzung von Diagrammen in ausführbaren Code. Es gibt gute Gründe für bisherige Programmiersprachen!! PSWT 2006 5. Dezember 2006 p.8/32
Klassendiagramme Klassendiagramme stellen statische Struktur dar. Klassendiagramme (class diagrams) enthalten Klassen Operationen (=Methoden) und Attribute (=Felder) von Klassen Vererbungshierarchie zwischen Klassen Assoziationen zwischen Klassen PSWT 2006 5. Dezember 2006 p.9/32
UML Klasse ArrayStack oder ArrayStack -elements: String[] -top: int +push(s:string): void +pop(): String +isempty(): Boolean PSWT 2006 5. Dezember 2006 p.10/32
Interfaces, abstrakte Klassen Interface abstrakte Klasse mit abstrakten und konkreten Operationen <<interface>> Stack +push(s:string): void +pop(): String +isempty(): Boolean AbstractStack +isempty(): Boolean +pop(): String +push(s:string): void +clear() PSWT 2006 5. Dezember 2006 p.11/32
Attribute und Operationen - privat + public # protected unterstrichen static ArrayStack -elements: String[] -top: int #instancecounter +push(s:string): void +pop(): String +isempty(): Boolean +main(args:string[]): void Format: <Sichtbarkeit> <Name> ( <Argumente> ) : <Rückgabetyp> Argumente: <Name> : <Typ> oder <Name> : <Typ> = <Defaultwert> PSWT 2006 5. Dezember 2006 p.12/32
Vererbung PSWT 2006 5. Dezember 2006 p.13/32
Assoziation Assoziationsname DebugStack delegator 1 delegation delegate 1 <<interface>> Stack Rollen Multiplizitäten Implementierung meist durch Felder (Feldname = Rollenname) Assoziation = hat ein, Vererbung = ist ein PSWT 2006 5. Dezember 2006 p.14/32
Multiplizitäten, Pfeile A 1 B Jedem B ist genau ein A assoziiert A 0..1 B Jedem B ist ein oder kein A assoziiert A 2..* B Jedem B sind mindestens 2 A assoziiert A * B Jedem B können beliebig viele A assoziiert sein A B A "kennt" B, aber nicht umgekehrt PSWT 2006 5. Dezember 2006 p.15/32
Aggregation, Komposition Assoziationen die Ganzes/Teil Relationen darstellen: Aggregation: Jahrgang 1 * Schüler Schüler Teil eines Jahrgangs, können aber ohne Jahrgang existieren Composition: Buch 1 * Seite Seiten Teil eines Buches, existieren nicht ohne Buch keine eindeutige Unterscheidung PSWT 2006 5. Dezember 2006 p.16/32
Beispiel: Klassendiagramm AbstractStack +isempty(): Boolean +pop(): String +push(s:string): void +clear(): void <<interface>> Stack delegate 1 +push(s:string): void +pop(): String +isempty(): Boolean +clear(): void DebugStack +push(s:string): void +pop(): String +isempty(): Boolean +clear(): void 1 ArrayStack -elements: String[] -top: int +push(s:string): void +pop(): String +isempty(): Boolean LinkedListStack +isempty(): Boolean +pop(): String +push(s:string): void 1 +impl 1 LinkedList PSWT 2006 5. Dezember 2006 p.17/32
Objektdiagramme Objektdiagramme stellen einen Zustand in der Ausführung dar normalerweise Beispielzustand Objektdiagramme enthalten: Objekte (Instanzen von Klassen) Werte von deren Slots (Instanzen von Feldern) Links (Instanzen von Assoziationen) PSWT 2006 5. Dezember 2006 p.18/32
Beispiel: Objektdiagramm stack1:debugstack +delegate :ArrayStack store = {"a","b","c"} top = 3 Objektname und Typ unterstrichen Objekte ohne Name möglich Verzierungen für Aggregation/Komposition möglich PSWT 2006 5. Dezember 2006 p.19/32
Sequenzendiagramme Sequenzendiagramme stellen eine Folge von Nachrichten/Aufufen dar ebenfalls meist Beispielablauf Sequenzendiagramme enthalten: Objekte Deren Lebenslinien ( Zeitachsen) Zwischen den Objekten verschickte Nachrichten Reihenfolge-Abhängigkeiten (Alternative Abläufe, Wiederholungen, etc.) PSWT 2006 5. Dezember 2006 p.20/32
Beispiel: Sequenzendiagramm :Kunde amazon:versandhandel :Empfänger Bestellung Bestätigung Ware Versandmeldung Rechnung Zahlung PSWT 2006 5. Dezember 2006 p.21/32
Nachrichtentypen a:object b:object asynchrone Nachricht synchrone Nachricht synchrone Nachricht mit Operationsablauf rekursiver Aufruf Rücksprung von Methodenaufruf PSWT 2006 5. Dezember 2006 p.22/32
Zeitablauf Ereignisse auf jeder Lebenslinie chronologisch Senden immer vor Empfangen einer Nachricht Synchrone Nachrichten: Rest von Lebenslinie erst nach Empfang Weitere Einschränkungen: a:object b:object a a wird empfangen bevor b gesendet wird b PSWT 2006 5. Dezember 2006 p.23/32
Zustandsdiagramme Zustandsdiagramme beschreiben das Verhalten eines Systems/eines Objekts normalerweise vollständige Spezifikation Zustandsdiagramme enthalten Zustände Zustandsübergänge Bedingungen an Übergang Ereignis von außen, das Übergang auslöst Aktion die beim Übergang durchgeführt wird PSWT 2006 5. Dezember 2006 p.24/32
Beispiel: Zustandsdiagramm Beispiel: Telefon (vereinfacht ohne Besetztzeichen) einkommender Anruf klingelt abheben Anrufer legt auf inaktiv auflegen verbunden auflegen auflegen wählen abheben abgehoben wählen warten auf Antwort Partner hebt ab PSWT 2006 5. Dezember 2006 p.25/32
Bedingungen, Aktionen auf PIN warten entry/ PIN Prompt anzeigen do/ auf Eingabe warten exit/ PIN Überprüfung melden PIN Eingabe [PIN korrekt] authentisiert entry/ Erfolg melden PIN Eingabe/Fehler Melden [PIN fehlerhaft] Bedingungen in eckigen Klammern [ ] Mit Schrägstrich: Ereignis/Aktion mit entry/, exit/, do/ Aktionen beim Betreten/Verlassen oder Befinden in einem Zustand. PSWT 2006 5. Dezember 2006 p.26/32
Unterzustände Normalbetrieb einkommender Anruf klingelt abheben Anrufer legt auf inaktiv auflegen verbunden auflegen auflegen abheben abgehoben wählen warten auf Antwort Partner hebt ab Defekt behoben Leitungsunterbrechung Leitung tot PSWT 2006 5. Dezember 2006 p.27/32
Werkzeuge Reine Modellierungs/Zeichen-Tools ArgoUML: http://argouml.tigris.org/ UMLet: http://www.umlet.com/ dia: http://www.gnome.org/projects/dia/ Teil von integrierten Entwicklungsumgebungen (Teilweise mit reverse engineering, round trip engineering ) NetBeans: Erweiterung für UML Eclipse: diverse Plug-ins kommerziell: Borland Together PSWT 2006 5. Dezember 2006 p.28/32
Aufgabe 19 Beschaffe und installiere ein UML-Modellierungstool, z.b. ArgoUML. Erstelle ein Klassendiagramm mit allen bisher geschriebenen Klassen und Interfaces (inkl. exceptions) der stack package. Benutze Assoziationen statt Feldern wo dies sinnvoll ist. Überlege ob die Assoziationen Aggregationen oder Kompositionen sein sollten. PSWT 2006 5. Dezember 2006 p.29/32
Aufgabe 20 Stelle folgenden Sachverhalt in einem Klassendiagramm dar: Männer sind Personen. Frauen sind Personen. Jede Person hat genau einen Vater, welcher ein Mann ist. Jede Person hat genau eine Mutter, welche eine Frau ist. Eine Person ist ein Kind ihres Vaters und ihrer Mutter. Eine Person kann beliebig viele Kinder haben. PSWT 2006 5. Dezember 2006 p.30/32
Aufgabe 21 Verdeutliche folgenden Ablauf in einem Sequenzendiagramm: Es gibt Objekte o:teststack, ds:debugstack, und as:boundedarraystack, wobei s der von ds debuggte Stack ist. o ruft die push Methode von ds auf, die an as delegiert wird. o ruft die clear Methode von ds auf, die an as delegiert wird. In as wird clear (entsprechend der AbstractStack Implementierung) durch Aufruf von pop ausgeführt. (Unterstützung von Sequenzendiagrammen in ArgoUML mangelhaft) PSWT 2006 5. Dezember 2006 p.31/32
Aufgabe 22 Modelliere ein Telefon als Zustandsdiagramm Modelliere auch die Möglichkeit, daß dieser Anschluß oder der angerufene besetzt ist. Stelle sicher, daß jedes mögliche Ereignis in jedem Zustand berücksichtigt wird: Benutzer hebt ab/wählt/legt auf Eingehender Anruf/anderer Teilnehmer legt auf PSWT 2006 5. Dezember 2006 p.32/32