SOFTWARETECHNIK Kapitel 2 – Modellierungskonzepte Vorlesung im Wintersemester 2012/13 FG System- und Software-Engineering Prof. Dr.-Ing. Armin Zimmermann Inhalt Einführung Klassische Modelle Objektorientierung Unified Modeling Language SSE Zimmermann Softwaretechnik Modellierung – 2 Einführung Wie beschreibt man Software und Systeme? Zweck: Dokumentation, Kommunikation, Spezifikation, Vertragsabschluss, Ausschreibung, … Was wird beschrieben? Struktur Schnittstellen Funktionen Anforderungen Abläufe Begriffsbedeutungen Arbeitsschritte … SSE Zimmermann Softwaretechnik Modellierung – 3 Einführung Wie beschreibt man Software und Systeme? Arten der Beschreibung Gespräch, Interview Text, Prosa Strukturierter Text Tabelle Semi-formales Modell Formales Modell SSE Zimmermann Softwaretechnik Modellierung – 4 Einführung Modell … ist eine Abstraktion eines Systems mit der Zielsetzung, das Nachdenken über ein System zu vereinfachen, indem irrelevante Details ausgelassen werden [Brügge] Beschreibung eines Ausschnitts der Realität Abstrahiert von Unwichtigen inneren Details Unwichtigen äußeren Einflüssen Verfolgt einen Zweck für eine Anwendung Diese bestimmen, was und wie im Modell beschrieben wird „Gutes“ Modell daher nur für einen Zweck bestimmbar Fragestellung am Anfang genau bestimmen SSE Zimmermann Softwaretechnik Modellierung – 5 Einführung Modelle SSE Zimmermann Softwaretechnik Modellierung – 6 Einführung Modellieren Abbilden signifikanter Eigenschaften So genau wie nötig – Abstraktionsniveau, Modellart Deskriptiv / Präskriptiv Sichtweisen auf ein System Struktur, Verhalten, Zustand, Interaktion, Test, Rolle, … … heißt Weglassen … setzt Verstehen voraus … ist nicht automatisierbar SSE Zimmermann Softwaretechnik Modellierung – 7 Einführung Einsatz von Modellen in der SW-Entwicklung Analysemodell Entwurfsmodell wesentliche Entwurfsentscheidungen, Softwarestruktur, .. Implementierung (-smodell) Vorgehensmodell Produktmodell Beschreibung der im Projekt entstehenden Artefakte und ihrer Zusammenhänge nach Rumpe SSE Zimmermann Softwaretechnik Modellierung – 8 Einführung Modelle für … Funktionen: Funktionsbaum, Datenflussdiagramm Daten: Entity Relationship Diagram Algorithmen: Pseudocode, Programmablaufplan, Struktogramm, Entscheidungstabelle, Regeln Systemumgebung: Datenflussdiagramm Dynamisches Verhalten: Zustandsautomat, Sequenzdiagramm, Petri-Netz (ggf. mit Zeitmodell) Objektorientierte Modelle (später) SSE Zimmermann Softwaretechnik Modellierung – 9 Einführung Entwicklung Quelle: Rumpe SSE Zimmermann Softwaretechnik Modellierung – 10 Inhalt Einführung Klassische Modelle Objektorientierung Unified Modeling Language SSE Zimmermann Softwaretechnik Modellierung – 11 Klassische Modelle Funktionale Sicht Funktionsbaum: Hierarchische Dekomposition der Fkt. Beispiel: Abonnement-Verwaltung Quelle: Jackisch SSE Zimmermann Softwaretechnik Modellierung – 12 Klassische Modelle Data Dictionary Verzeichnis von Daten mit Strukturinformation Backus-Naur-Form, kontextfreie Grammatik SSE Zimmermann Softwaretechnik Modellierung – 13 Klassische Modelle Datenmodellierung System als statische Datenstruktur, Datenbanken-Sicht Zerlegung in Komponenten Quelle: Uni Trier SSE Zimmermann Softwaretechnik Modellierung – 14 Klassische Modelle Entity-Relationship-Model Daten und ihre Beziehungen Quelle: Rumpe SSE Zimmermann Softwaretechnik Modellierung – 15 Klassische Modelle Datenflussdiagramm data flow diagram DFD [De Marco 1979] Fluss und Transformation von Daten zwischen Funktionen, Speichern und Schnittstellen kein Kontrollfluss Quelle: Riedling SSE Zimmermann Softwaretechnik Modellierung – 16 Klassische Modelle Flussdiagramm flow chart Hier: Geschäftsprozess mit Vorgängen und Dokumenten Quelle: orghandbuch.de, BMI SSE Zimmermann Softwaretechnik Modellierung – 17 Klassische Modelle Blockschaltbild Eingebettetes System, HW/SW SSE Zimmermann Softwaretechnik Modellierung – 18 Klassische Modelle Entscheidungstabellen Regelbasierte Beschreibung Bedingungen Aktionen Reduktionsregeln Quelle: orghandbuch.de, BMI SSE Zimmermann Softwaretechnik Modellierung – 19 Klassische Modelle Pseudocode Von Programmiersprache abstrahierende, detaillierte Beschreibung eines Algorithmus SSE Zimmermann Softwaretechnik Modellierung – 20 Klassische Modelle Programmablaufplan (PAP) Grafische Beschreibung des Kontrollflusses Unstrukturiert, GOTO SSE Zimmermann Softwaretechnik Modellierung – 21 Klassische Modelle Struktogramm NassiShneidermanDiagram Keine Sprünge daten, teiler+1, rechts) Quelle: Wikipedia SSE Zimmermann Softwaretechnik Modellierung – 22 Klassische Modelle Modellierung dynamischen Verhaltens Diskrete Zustände und atomare Zustandsübergänge SSE Zimmermann Softwaretechnik Modellierung – 23 Klassische Modelle Zustandsautomat Verhalten mit Zuständen und -übergängen Automatenmodelle und -theorie Ggf. Zerlegung oder kommunizierende Automaten Quelle: Rumpe SSE Zimmermann Softwaretechnik Modellierung – 24 Klassische Modelle Ereignisgesteuerte Prozesskette (EPK) Geschäftsprozesse BPM Quelle: Krallmann SSE Zimmermann Softwaretechnik Modellierung – 25 Klassische Modelle Petri-Netz Grafische Beschreibung von Nebenläufigkeit und Synchronisation Prozess1 erzeugen FreiePufferplätze ablegen N PufferplätzeMitDaten verarbeiten Prozess2 SSE Zimmermann abholen Softwaretechnik Modellierung – 26 Inhalt Einführung Klassische Modelle Objektorientierung Unified Modeling Language SSE Zimmermann Softwaretechnik Modellierung – 27 Objektorientierung Grundprinzipien der Programmierung Imperative Programmierung von-Neumann-Modell Prozedural, strukturiert (C, Pascal) Modular (Modula2, Ada83) Objektorientiert (C++, Ada95, Java) Deklarative Programmierung Funktional (Lisp) Logisch (Prolog) Datenfluss (Linda) SSE Zimmermann Softwaretechnik Modellierung – 28 Objektorientierung Entwicklungsrichtung Bessere Strukturierung für komplexe Zusammenhänge Abstraktere Sichtweise Grundprinzip: Zerlegung Horizontal: Teilsysteme, Module Vertikal: Schichten Voraussetzung: Schnittstellen, Kapselung Nutze fertige Teillösungen (Wiederverwendung, patterns) Behandle konzeptionell gleiche Dinge gleich Teile und herrsche! SSE Zimmermann Softwaretechnik Modellierung – 29 Objektorientierung Objekte Analyse: als Modell realer Gegenstände Entwurf: als Beschreibungsmittel für die Software-Lösung Identität: IK-U5 Zustand: 5km/h Verhalten: Anhalten SSE Zimmermann Eigenschaft: Geschwindigkeit Softwaretechnik Modellierung – 30 Objektorientierung Objekte Ein System besteht aus vielen Objekten Ein Objekt hat ein definiertes Verhalten Ein Objekt hat einen inneren Zustand Menge genau definierter Operationen Operation wird beim Empfang einer Nachricht ausgeführt Zustand des Objekts ist Privatsache Resultat einer Operation hängt vom aktuellen Zustand ab Ein Objekt hat eine eindeutige Identität Identität ist unabhängig von anderen Eigenschaften Es können mehrere verschiedene Objekte mit identischem Verhalten und identischem inneren Zustand im gleichen System existieren Quelle: Rumpe SSE Zimmermann Softwaretechnik Modellierung – 31 Objektorientierung Klasse Gleichartige Objekte mit ggf. verschiedenen Zuständen Auto Klasse Objekte SSE Zimmermann Softwaretechnik Modellierung – 32 Objektorientierung Klasse Verhaltensschema – Operationen Innere Struktur – Attribute Auto Auto Farbe Geschwindigkeit Anhalten() Losfahren() Klasse Objekt << instanceOf >> IK-U5 IK-U5: Auto Farbe = orange Geschwindigkeit = 5 SSE Zimmermann Softwaretechnik Modellierung – 33 Objektorientierung Klasse und Objekt Auto Farbe Geschwindigkeit Anhalten() Losfahren() class Auto { private String Farbe; private float Geschwindigkeit; public void Anhalten() { Geschwindigkeit = 0; } } << instanceOf >> IK-U5: Auto Farbe = orange Geschwindigkeit = 5 SSE Zimmermann Auto ik_u5; ik_u5 = new Auto(); ik_u5.Anhalten(); Softwaretechnik Modellierung – 34 Objektorientierung Beziehungen zwischen Klassen Vererbung (Generalisierung, Spezialisierung) Polymorphie Fahrzeug Auto Rennwagen SSE Zimmermann Fahrrad PKW Softwaretechnik Modellierung – 35 Objektorientierung Beziehungen zwischen Klassen Assoziationen, Multiplizität, Rollen Navigation (Entwurf) Bilder: Brügge/Dutoit SSE Zimmermann Softwaretechnik Modellierung – 36 Objektorientierung Beziehungen zwischen Klassen Aggregation Quelle: Brügge/Dutoit Komposition: Teile existieren nicht unabhängig SSE Zimmermann Softwaretechnik Modellierung – 37 Objektorientierung Vorteile der Objektorientierung Zuständigkeitsbereiche Daten, Operationen und Zustand: lokal und gekapselt Klare Schnittstellen Definiertes Objektverhalten, Nachrichten Hierarchie Vererbung und Polymorphie (Spezialisierung), Klassenschachtelung Baukastenprinzip Benutzung vorgefertigter Klassenbibliotheken, Anpassung durch Spezialisierung (mittels Vererbung) nach Rumpe SSE Zimmermann Softwaretechnik Modellierung – 38 Inhalt Einführung Klassische Modelle Objektorientierung Unified Modeling Language SSE Zimmermann Softwaretechnik Modellierung – 39 Unified Modeling Language UML Grafisches Beschreibungsmittel für Aspekte des Softwareentwurfs diskreter Systeme Spezifikation, Entwurf, Visualisierung, Konstruktion, Dokumentation von Software Für OO-Softwareentwicklung und -prozess geeignet UML ist weder Methode noch Prozess Sammlung industriell erfolgreicher Modelle Einheitliche Notation: Booch, OMT, use cases, state charts Nicht alle Elemente müssen verwendet werden SSE Zimmermann Softwaretechnik Modellierung – 40 Unified Modeling Language Warum UML? Objektorientierung ist zur Zeit das optimale Modellierungs-Paradigma, Industrie-Standard Kombination von Struktur-, Verhaltens-, Interaktions-, und Verteilungsmodellen Für Analyse, Entwurf, Implementierung und Test einsetzbar Gute Werkzeugunterstützung für Editieren, Versionierung, Codegenerierung Erweiterbarkeit der UML mit Stereotypen und Tags Semi-formale Modelle, z.T. verschiedene Interpretationen Offenheit: Erweiterung mit stereotypes, tags, constraints Nach Rumpe, Nierstrasz SSE Zimmermann Softwaretechnik Modellierung – 41 Unified Modeling Language Nachteile UML UML ist in vielen Facetten nicht präzise festgelegt Werkzeuge für Transformation, Analyse etc. fehlen noch UML ist keine „kleine Sprache“: Lernaufwand notwendig Komponenten sind nicht adäquat darstellbar Sprachen wie die UML werden erlernt durch Übung! Aber: LV SWT ist kein kompletter UML-Kurs Quelle: Rumpe SSE Zimmermann Softwaretechnik Modellierung – 42 Unified Modeling Language Quelle: Störrle SSE Zimmermann Softwaretechnik Modellierung – 43 Unified Modeling Language Entwicklung der Unified Modeling Language Grady Booch, Ivar Jacobson, James Rumbaugh (seit 86) 90er Jahre: Objektmodellierungstechnik OMT Zahlreiche Bücher verfügbar SE und Geschäftsprozessmodellierung ab [Jacobson92] Ab 95 bei Rational: OMT+Booch+ClassDiagrams UML UML Consortium: DEC, I-Logix, Intellicorp, IBM, ICON Computing, MCI Systemhouse, Microsoft, … 97: Standardisierung bei der OMG 99: UML 1.3, 03: UML 1.5 UML 2.0 Superstructure Spec: Okt. 04 SSE Zimmermann Softwaretechnik Modellierung – 44 Unified Modeling Language Neuerungen in UML 2 Einbettung (embodiment) Neue Notationen Architekturdiagramme, Interaktionsdiagramme, Aktivitätsdiagramme, Zeitverlaufsdiagramme Metamodell Verhalten und Funktionalität ist immer Teil eines Objektmodells Konsolidiert Neu erstellt: Interaktionen, Aktivitäten Formale Semantik erleichtert Neue Konzepte CompositePart, Port und Connector, Collaboration, … SSE Zimmermann Softwaretechnik Modellierung – 45 Unified Modeling Language Überblick über Modelle Details ggf. in späteren Kapiteln Structure Diagrams Class, Object, Component, Composite Structure, Package und Deployment Diagrams Behavior Diagrams Use Case, Activity und State Machine Diagrams Interaction Diagrams Sequence, Communication, Timing und Interaction Overview Diagrams SSE Zimmermann Softwaretechnik Modellierung – 46 Unified Modeling Language SSE Zimmermann Softwaretechnik Modellierung – 47 Unified Modeling Language Use Case Diagram Beschreiben Systemfunktion aus Benutzersicht Scenario: Beispiel für Interaktion Was, nicht Wie A patient calls the clinic to make an appointment for a yearly checkup. The receptionist finds the nearest empty time slot in the appointment book and schedules the appointment. Elemente Actor: löst Ereignisse aus (role) Communication association: Kommunikationsverbindung Quelle der folgenden Bilder: Practical UML SSE Zimmermann Softwaretechnik Modellierung – 48 Unified Modeling Language Use Case Diagram Use Case ist eine Sammlung von Scenarios Verwendung Erste Anforderungsspezifikation (requirements) Kommunikation mit Kunden Erstellen von Testfällen (test case generation) SSE Zimmermann Softwaretechnik Modellierung – 49 Unified Modeling Language Class Diagram Statischer Überblick über Systemaufbau aus Objekten Klassen und ihre Beziehungen Beispiel: Kundenbestellung aus Versandkatalog SSE Zimmermann Softwaretechnik Modellierung – 51 Unified Modeling Language Class Diagram Klassen: Name, Attribute, Methoden Relationen Association: Objekte beider Klassen stehen in Zusammenhang und „wissen voneinander“. Pfeil schränkt Zugriffsrichtung ein Aggregation: Klasse gehört zu einer Sammlung Generalization: Vererbungsbeziehung (subclass / superclass) Relationen können am Ende benannt werden (role name) Multiplicity am Ende der Relation: Anzahl möglicher Objekte (Instanzen), die mit einem Objekt am anderen Ende verbunden sein können SSE Zimmermann Softwaretechnik Modellierung – 52 Unified Modeling Language Class Diagram Details Composition Spezialfall einer aggregation, in der die abhängigen Objekte nicht alleine existieren können SSE Zimmermann Softwaretechnik Modellierung – 53 Unified Modeling Language Packages Gruppierung komplexer Klassendiagramme SSE Zimmermann Softwaretechnik Modellierung – 57 Unified Modeling Language Object Diagram Zeigen Objekte anstelle von Klassen (class diagram) Für kompliziertere Abhängigkeiten benutzt (z.B. Rekursion) SSE Zimmermann Softwaretechnik Modellierung – 58 Unified Modeling Language Sequence Diagram Beschreibung dynamischer Zusammenarbeit zwischen Objekten über Zeitachse Objekte Nachrichten, Aufrufe als Pfeile Existierend: gestrichelt (lifeline) Aktiv: Rechteck (activation bar) Synchron: Asynchron: Unspezifiziert: Bedingungen in eckigen Klammern SSE Zimmermann Softwaretechnik Modellierung – 59 Unified Modeling Language Sequence Diagram Beispiel: Hotelreservierung SSE Zimmermann Softwaretechnik Modellierung – 60 Unified Modeling Language Collaboration Diagram Beschreiben wie sequence diagrams Zusammenarbeit von Objekten, aber aus Sicht der Rollen (nicht Zeiten) SSE Zimmermann Softwaretechnik Modellierung – 62 Unified Modeling Language Statechart Diagram Verhalten von Objekten: Zustände und Zustandsübergänge (state, state transition) Beispiel: Online-Banking SSE Zimmermann Softwaretechnik Modellierung – 63 Unified Modeling Language Statechart Diagram Zustände können andere enthalten: Nebenläufigkeit Zustandsraum Kreuzprodukt der Unterzustandsmengen SSE Zimmermann Softwaretechnik Modellierung – 64 Unified Modeling Language Activity Diagram Entspricht Flussdiagramm Fokus: Statechart – Objekt und Zeit, Activity Diagram – Prozess und Reihenfolge Aktivitäten: benannte Kästchen, danach jeweils eine Transition (Pfeil) Transitionen können abhängig von Bedingungen unterschiedliche Ziele haben Transitionen können aufspalten (fork) und vereinigen (join) SSE Zimmermann Softwaretechnik Modellierung – 65 Unified Modeling Language Activity Diagram Beispiel Geldautomat SSE Zimmermann Softwaretechnik Modellierung – 66 Unified Modeling Language Vergleich von Ablaufmodellen SSE Zimmermann Softwaretechnik Modellierung – 67