Veranstaltung Systementwicklung. Entwurf. Uwe H. Suhl und Chris Bizer SS 2008

Ähnliche Dokumente
UML (Unified Modelling Language) von Christian Bartl

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Softwaretechnik 2015/2016

Vorlesung Programmieren

NACHRICHTENTECHNISCHER SYSTEME

Objektdiagramm Komponentendiagramm Paketdiagramm. 6. Weitere Strukturdiagramme

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Einführung in die objektorientierte Programmierung

Unified Modeling Language 2

Unified Modelling Language

Vgl. Oestereich Kap 2.4 Seiten

Techniken der Projektentwicklungen

Wirtschaftsinformatik 6a: Modellierung. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

Unified Modeling Language (UML )

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017

Oracle JDeveloper 10 g

Analyse und Design mit U ML 2.3

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Objektorientierte Systementwicklung

Objektorientierte Analyse (OOA) Inhaltsübersicht

Objektorientierte Programmierung (OOP)

INSPIRE - Modellierung

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Modellierungstipps für die Anwendungsfallmodellierung

Bessere Service-Modellierung durch Kombination von BPMN und SoaML. Nürnberg, 24. Februar 2011

4. Mentorium. UML-Modellierung (Lösungshinweise)

Requirements Engineering I

Übung Einführung in die Softwaretechnik

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Software- und Systementwicklung

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Sequenz- und Kommunikationsdiagrammen. Systemmodellierung mit SysML von Michel Manthey

Software Engineering in der Praxis

Unified Modeling Language

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

Inhalt. Einleitung Liebe Leserin, lieber Leser, Wer dieses Buch aus welchem Grund lesen sollte Ihre Meinung ist uns sehr wichtig.

Die Unified Modeling Language UML

Software Engineering in der Praxis

2.Strukturdiagramme. 2.5 Das Komponentendiagramm 2.6 Das Verteilungsdiagramm. Prof. Mario Jeckle

OOA-Dynamische Konzepte

Von der UML nach C++

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

OOSE 13 Objektorientierter Entwurf (OOD) (Hörsaalübung)

Analyse und Modellierung von Informationssystemen

Media Engineering. Objektorientierte Modellierung. Verhaltensmodellierung. R. Weller University of Bremen, Germany cgvr.cs.uni-bremen.

Klassendiagramm. (class diagram)

Interaktionsdiagramme in UML

Fachlicher Prototyp. Fachlicher Prototyp Implementierung der Architektur Das Framework-Konzept Konstruktor-Verkettung

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Objektorientiertes Design

CARL HANSER VERLAG. Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML 2 glasklar

UML 2 glasklar Praxiswissen für die UML-Modellierung

Unified Modeling Language (UML)

Das umfassende Handbuch

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

Algorithmen und Datenstrukturen 06

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte Modellierung (1)

UML -Klassendiagramme

UML Crashkurs v0.1. UML für Fachinformatiker. von Hanjo Müller

Kapitel 5: Das Design

Inhaltsverzeichnis.

Objektorientierte Analyse (OOA) Strukturmodellierung

Modellbasierter Test mit der UML. Vortragender: Lars Westmeier Seminar: Spezifikationsbasierter Softwaretest

Tamagotchi-Spezifikation in UML

UML 1.4 Referenz. Matthias Niete Dirk M. Sohn Orientation in Objects GmbH Weinheimer Str Mannheim

(BABOK-v3-Technik 10.42)

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Vorlesung Informatik II

UML. Weiteres Vorgehen im Projekt

Java Einführung Objektorientierte Grundkonzepte

Martin Fowler, Kendall Scott. UML konzentriert. Eine strukturierte Einführung in die Standard-Objektmodellierungssprache. 2., aktualisierte Auflage

Software Engineering in der Praxis

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

UML 2.0 Das umfassende Handbuch

Software Engineering, SoSe 07, WSI, D. Huson, May 7,

ANWENDUNGSFALLDIAGRAMM:

Objektorientierte Softwareentwicklung

Vgl. Oestereich Kap 2.7 Seiten

Software Engineering Analyse und Analysemuster

Software Engineering in der Praxis

Softwareentwicklung OOD Videothek

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Ziele und Tätigkeiten von Architekten

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung

Einführung in die OOP mit Java

SEQUENZDIAGRAMM. Christoph Süsens

UML konzentriert. Eine kompakte Einführung in die Standard-Objektmodellierungssprache. Martin Fowler. ADDISON-WESLEY An imprint of Pearson Education

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Kurzeinführung in UML

Abschnitt 15: Unified Modeling Language (UML)

Comelio GmbH - Goethestr Berlin. Course Catalog

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren

Javakurs für Anfänger

Transkript:

Veranstaltung 10033013 Systementwicklung Entwurf Uwe H. Suhl und Chris Bizer SS 2008 Übersicht Kapitel Entwurf 1. Ziele des Arbeitsschritts Entwurf 2. UML im Entwurf 3. Leitlinien guter Entwurf 4. Gliederung und Inhalt des Entwurfsdokuments 1

1. Ziele des Entwurfs Der Entwurf beschreibt der Umsetzung der Anforderungen aus technischer Sicht. Übergang vom WAS zum WIE WAS: fachliche Anforderungen aus der Analyse WIE: Vorgabe für Implementierung Vorbereitung der Implementierung Entwurfsmodelle sind primäre Arbeitsanleitung für die Implementierung. Entwurfsmodelle können zur automatischen Codegenerierung genutzt werden. Arbeitsschritte in der Phase Entwurf Überführung der Analysemodelle in Entwurfsmodelle. Verfeinerung der Klassenmodelle durch Detaillierung und zusätzliche Steuerungs- und Infrastrukturklassen. Festlegung der Subsysteme/Komponenten und deren Schnittstellen. Detaillierungsgrad und verwendete Methoden hängen vom Projekt ab. Phasen und Arbeitsschritte im Unified Process Phasen Arbeitsschritte Konzeptionsph. Entwurfsph. Konstruktionsph. Ü bergangsph. Anforderungen Analyse Entwurf Implementierung Test Iter. #1 Iter. #2............... Iter. #n-1 Iter. #n Iterationen 2

2. UML im Entwurf Wir verwenden für den Entwurf Klassendiagramm Technische Spezifikation der Struktur des Systems. Sequenzdiagramm Wer tauscht mit wem Informationen aus? Verifikation des Designs. Paketdiagramm Aufteilung des Systems in Subsysteme. Festlegung von Namensräumen. Komponentendiagramm Aus welchen Komponenten besteht das System? Was für Schnittstellen haben die Komponenten? 3

2.1 Entwurfsklassenmodell Verfeinerung des Analyseklassenmodells durch Hinzufügen von Operationen, die die Funktionalität des Systems festlegen. Steuerungs- und Infrastrukturklassen. Das Entwurfsmodell ergibt sich aus der Integration des statischen Analysemodell (Klassendiagramm) und der dynamischen Modelle (Use Cases). Darstellung von Operationen in Klassendiagrammen Operationen legen die Funktionalität des Systems fest. Operationen Spezifikation von Operationen: [Sichtbarkeit] Name (Parameterliste) : Rückgabetyp Operationen werden mindestens durch ihren Namen dargestellt. Parameterliste: Name : Typ [ [ Multiplizität ] ][= Vorgabewert] Typ: Elementarer Datentyp oder Klasse Multiplizität: viele Inhalte umfasst der Parameter [1..*], [2..4]. Nur notiert, wenn nicht [1]. 4

Sichtbarkeit / Zugriffsrechte bestimmen Häufig sollen nur bestimmte Merkmale der Objekte einer Klasse von außen zugreifbar sein ("Kapselungsprinzip ). Zur Zugriffskontrolle verwendet man Sichtbarkeitsmarkierungen für Attribute und Operationen: +name d.h. öffentlich zugreifbar ("public") -name d.h. nur innerhalb der Klasse verwendbar ("private") #name Beispiel: d.h. nur innerhalb der Klasse und in allen Subklassen verwendbar ("protected") Erstellung des Entwurfsklassenmodells Klassen aus dem Analyse-Modell plus zusätzliche Steuerungsund Infrastruktur-Klassen Modellierung der Funktionalität des Systems Umsetzung der Use-Cases Refactoring Technische Detaillierung Refactoring Gruppierung von Klassen zu Paketen und Komponenten 5

Erstellung des Entwurfsklassenmodells Attribute 1. Assoziationen ausrichten / Referenz-Attribute einfügen 2. Festlegung von Datentyp und Sichtbarkeit Operationen 1. Operationen hinzufügen 2. Parameter und Rückgabewerte festlegen 3. Zugriffsrechte bestimmen / Schnittstellen definieren Steuerungs- und Infrastrukturklassen 1. Controller-Klassen zur Steuerung von Workflows. 2. Zusätzliche aus technischer Sicht notwendigen Klassen zur Einbindung in Infrastruktur, Altsysteme (z.b. Datenbankzugriff, Web-Serivces,...) modellieren. Wiederverwendung existierender Klassen durch Inklusion oder Vererbung (z.b..net Framework). Beispiel: Entwurfs-Klassendiagramm 1 6

Beispiel: Entwurfs-Klassendiagramm 2 2.2 Paketdiagramm Pakete bündeln Modellelemente mit gleicher Thematik zu größeren Einheiten. Pakete dienen der Gliederung von Klassendiagrammen (vereinfachte, abstrakte Sicht auf System) Entkopplung von Subsysteme (siehe Kapitel Architektur) der Festlegung von Namensräumen. Paketname.Klassenname Z.B. system.data.sql Ziel: Starke Bindung (Kohäsion) innerhalb des Pakets Einheitlicher Themenbereich. Vererbung soweit wie möglich nur innerhalb des Pakets. Ziel: Schwache Kopplung zwischen Paketen Möglichst wenig Assoziationen über Paketgrenzen hinweg. Festlegung wohldefinierter Schnittstellen. Faustregeln für ein sinnvolles Paket: 10-15 Klassen 1 DIN A4 Seite für ein Diagramm 7

Beispiel: Paketdiagramm «import» «import» Notationselemente Paketdiagramm Das Paketdiagramm hat folgende Notationselemente : Paket Pakete beinhalten Klassen sowie ggf. weitere Pakete. Jede Klasse kann nur in einem oder keinem Paket enthalten sein. Import-Beziehung Zeigt den Zugriff eines Pakets auf ein anderes Paket. z.b. Paket Sonnenschein.UserInterface importiert Paket System.Web.UI.HtmlControls 8

2.3 Komponentendiagramm Komponentendiagramme stellten die Bestandteile des Systems zur Laufzeit dar. Komponente modularer Systemteil mit transparenter Kapselung seines Inhalts. können aus mehreren Klassen, Paketen sowie weiteren Komponenten bestehen. lassen sich ausschließlich über ihre öffentlichen Interfaces beschreiben. Komponenten werden oft als eine.exe,.dll oder mittels (mehrerer) PHP Scripte realisiert. Interface Schnittstelle, die eine Komponente anderen Komponenten zur Verfügung stellt. Interfaces werden durch die Signaturen der öffentlich angebotenen Operationen beschrieben. Interfaces werden später von einer konkreten Klasse implementiert. Beispiel Komponentendiagramm cmp FritzAuto FritzBüroApp «provided intefaces» FritzApplicationServer «provided intefaces» System.Data.Net Famework GUI «required interfaces» InformationServices VermietungsServices «realization» InformationServices VermietungsServices VermietungsServices InformationServices «required interfaces» System.Data «realization» System.Security BüroAppMain «artifacts» FritzServiceFassade «artifacts» Fritz.exe ApplicationServer.dll Oracle 9

Beispiel Komponentenstruktur und Interfaces Alternative Notationen für Komponenten Teilnehmerverwaltung TeilnehmerManager EntityObjects 10

2.4 Interaktionsmodelle Interaktion = spezifisches Muster der Zusammenarbeit und des Nachrichtenaustauschs zwischen Objekten zur Erledigung einer bestimmten Aufgabe (z.b. eines Anwendungsfalls). UML bietet die Diagrammtypen Sequenz- und Kommunikationsdiagramm zur Visualisierung implementierungsnaher Abläufe. Wir verwenden Sequenzdiagramme. Sequenzdiagramme sind exemplarisch und können daher keine vollständigen Verhaltensbeschreibungen sein. Die Diagramme dienen der implementierungsnahen Visualisierung von Abläufen im System. der Überprüfung ob die Objekte des Design-Klassenmodells korrekt zusammenarbeiten. UML Sequenzdiagramm Sequenzdiagramme beschreiben den Nachrichtenaustausch zwischen mehreren Objekten. Heben die zeitliche Reihenfolge hervor, in der Nachrichten zwischen Objekten ausgetauscht werden. Nachrichten entsprechen Operationsaufrufen. 11

Sequenzdiagramm: Geld abheben Sequenzdiagramm: Karte gesperrt 12

Nachrichten Nachrichten visualisieren den Informationsfluss zwischen Objekten durch Operationsaufrufe. Antwortnachrichten zeigen an, wann der Kontrollfluss zum Aufrufer zurück geht. welches Ergebnis dabei übertragen wird. Kommunikationsarten synchron: Sender wartet auf Antwortnachricht. asynchron: Sender fährt direkt nach Sendeereignis mit Abarbeitung fort ohne auf Empfängersignal zu warten. Aktionssequenz Zeitspanne, innerhalb der ein Objekt aktiv ist, weil es gerade selbst tätig ist, oder auf die Beendigung einer Aktivierung eines (anderen) Objekts wartet, dem es eine (synchrone) Nachricht gesendet hat ("Rückgabe des Steuerungsfokus") 13

Objekterzeugung und Lösung Objekte die erzeugt werden, werden an der Erzeugungsstelle angegeben. Eine create()-nachricht zeigt direkt auf das Objekt. Objektlöschung wird durch ein Kreuz am Ende der Zeitlinie angezeigt. Übung 1: Transaktion gescheitert weil Konto leer Zeichnen Sie eine Sequenzdiagramm das den Ablauf einer gescheiterten Transaktion visualisiert. 1. Start Operationsaufruf: ATM.betragEin(2000) 2. Grenzen prüfen 3. Konsortium Transaktion verarbeiten 4. Bank Transaktion verarbeiten 5. Rückmeldung an Nutzer 14

3. Leitlinien guter Entwurf Wie soll ich mein System nun tatsächlich modellieren? Was für Klassen? Welchen Klassen soll ich welche Operationen zuordnen? Wie soll ich Klassen zu Paketen zusammenfassen? Wie gliedere ich mein System in Komponenten? Leitlinien Allgemeinen Entwurfsprinzipien Entwurfsmuster Guter Entwurf setzt immer Erfahrung und gute Technologiekenntnis voraus! Hohe Kohäsion anstreben! Dinge die inhaltlich zusammengehören sollen in einer gemeinsamen Struktureinheit (Komponente, Paket, Klasse) zusammengefasst werden. Kohäsion Kohäsion ist ein Maß für die Zusammengehörigkeit der Bestandteile eines Ganzen. z.b. ein schwarzes Schaft verringert Kohäsion einer Herde weißer Schafe. Hohe Kohäsion von Komponenten, Paketen und Klassen erleichtert das Verständnis, die Wartung und die Anpassung, da alle betroffenen Elemente in der Struktureinheit zu finden sind. 15

Geringe Kopplung anstreben! Es sollte immer eine möglichst geringe Kopplung zwischen Struktureinheiten angestrebt werden. Kopplung Kopplung ist ein Maß für die Abhängigkeiten zwischen Struktureinheiten. Niedrige Kopplung zwischen Komponenten und Paketen - erleichtert die Wartbarkeit, da Änderungen meist nur bzgl. einer Komponente. - ermöglicht den Austausch von Komponenten (z.b. verschiedene DBMS) Strukturkopplung über Komponenten, Paketgrenzen hinweg vermeiden! - z.b. keine Vererbung über Paketgrenzen hinweg. Schnittstellenkopplung ist akzeptabel - Klar definierte Schnittstellen, die von verschiedenen Komponenten implementiert werden können (z.b. ODBC). - öffentliche get/set-methoden statt direktem Attributzugriff Beispiel: Hohe Kohäsion + Geringe Kopplung User Interface Dialog 1 Dialog 1 Dialog Controller Fachliches Modell Mietwagen Reservierung Kunde Buchung Hohe Kohäsion: Komponente A darf keine Information und Funktionalität enthalten, die zum Zuständigkeitsbereich von B gehört und umgekehrt. Geringe Kopplung: Es muss möglich sein, Subsystem A weitgehend auszutauschen oder zu verändern, ohne Subsystem B zu verändern. Änderungen von Subsystem B sollten nur möglichst einfache Änderungen in Subsystem A nach sich ziehen. 16

Weitere Leitlinien für einen guten Entwurf Wiederverwendung von Komponenten, Paketen und Klassen verringert Redundanz erhöht Fehlerfreiheit und Stabilität erhöht allerdings auch die Kopplung erst einmal schauen, ob es Klasse im.net Framework schon gibt bevor man sie selber programmiert. Ressourcenschonung So designen, dass nicht unnötig Ressourcen (Speicher, Rechenleistung, Netzwerklast) beansprucht werden. Verständlichkeit Verwendung aussagekräftiger Paket-, Klassen-, Operations- und Attributnamen. Positivbeispiel: Rechnung.getRechungspositionen() Negativbeispiele: paket1, ROj.opGRP gute Dokumentation in den Diagrammen, später im Code 4. Gliederung Entwurfsdokument 1. Komponentendiagramm Aufteilung des Systems in Komponenten 2. Komponenten-spezifisches Entwurfsklassenmodell Verfeinerung des Analyseklassenmodells alle Klassen inkl. aller Eigenschaften und Methoden 3. Paketdiagramm Aufteilung des Klassendiagramms in Pakete 4. Komponenten-spezifische Schnittstellendefinition Definiere ausgehend von den Anwendungsfällen für jede Komponente die notwendigen Schnittstellen. 5. Sequenzdigramme zu jedem Anwendungsfall Visualisieren die Zusammenarbeit zwischen den Objekten 6. Testfälle zu jedem Anwendungsfall Ermöglichen die spätere Verifikation der Implementierung 17

Komponentendiagramm und Schnittstellen-Spezifikation cmp FritzAuto FritzBüroApp «provided intefaces» FritzApplicationServer «provided intefaces» System.Data.Net Famework GUI «required interfaces» InformationServices VermietungsServices «realization» InformationServices VermietungsServices VermietungsServices InformationServices «required interfaces» System.Data «realization» System.Security BüroAppMain «artifacts» Fritz.exe FritzServiceFassade «artifacts» ApplicationServer.dll Oracle Entwurf von Sequenzdiagrammen Input Use-Case Beschreibungen Aktivitätsdiagramme Entwurfs-Klassendiagramm Ziel Modellierung der Zusammenarbeit von Objekten innerhalb eines Use-Cases. Überprüfung des Entwurfs-Klassendiagramms Vorgehensweise Identifiziere die Nachrichten, die innerhalb eines Use-Cases ausgetauscht werden und die Objekte, die die Nachrichten senden und empfangen. (Nachricht = Operationsaufruf) Konstruiere Sequenzdiagramme für jeden Use-Case. - Standardablauf und - Wichtige Ausnahmen 18

Definition von Test Cases Definiere eine Reihe von Test Cases zu jedem Anwendungsfall. Testfall: Inputdaten mit Spezifikation des zu erwarteten Resultates. Darstellung als Tabelle: UC-1: Geld abheben Nr. T1 T2 Test Aufruf der Methode Konsortium.kartePrüfen() mit der ungültigen Kartennummer 5464 3563 435 2354 Aufruf der methode ATM.grenzePrüfen() mit dem Werten 0 und 100 000 000. Resultat Rückgabewert Karte gesperrt Rückgabewert Ungültiger Wert... 19