Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell

Slides:



Advertisements
Ähnliche Präsentationen
Einstellungen im umantis Bewerbermanagement
Advertisements

Christian Scheideler SS 2009
Prüfung objektorientierter Programme -1
Integrations- und Funktionstests im Rahmen des V-Modelles
Objektorientierung Auffassung der Software als eine Sammlung
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Von David Keß, Heinrich Wölk, Daniel Hauck
On the Criteria to Be Used in Decomposing Systems into Modules
Designing Software for Ease of Extension and Contraction
TECHNISCHE UNIVERSITÄT DARMSTADT Naive Bayes for Ranking
Design Patterns- Entwurfsmuster
Objektorientierte Analyse (OOA) Inhaltsübersicht
Objektorientierter Entwurf (OOD) Übersicht
Systemanalyse In der Systemanalyse wird aus den fachspezifischen Anforderungen das Systemmodell erstellt; im Systemmodell ist spezifiziert, was das System.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Datentyp  Zusammenfassung von Mengen von "Werten" mit auf
Routing mit dem Distanzvektoralgorithmus
Software-Engineering
Was sind Histogramme? (1)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Dependents, Publish-Subscribe, Listener
Der argumentative Gedankengang
Buch S70ff (Informatik I, Oldenbourg-Verlag)
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Weitere Vorgehensmodelle Der Rational Unified Process RUP –bei IBM.
10. Vorlesung: Dynamische Konzepte
SMED = Single Minute Exchange of Die
Objektorientierte Programmierung
Kundenbedürfnisse erheben
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Seminar Softwareentwicklung Programmierstil Helmut Schmidauer
Definitionen der SWT (1)
1.5 Das Entwurfsmuster Kompositum
NDK Enterprise Technologien Informationen Infrastruktur und Fallstudie Daniel Nydegger Studienleiter Enterprise System Entwicklung.
UML-Kurzüberblick Peter Brusten.
Wahrscheinlichkeitsrechnung
Zusammengestellt von Mag. Raimund Hermann
ENDLICHE KÖRPER RSA – VERFAHREN.
Content Management System
Software Development Principles Stefan Lieser Web:
Objektorientierung.
Software Engineering Grundlagen
Analyse der Laufzeit von Algorithmen
Bienert EDV Software für das 21. Jahrhundert Der Vermieter ist eine universelle Lösung für jeden Vermieter. Durch reichhaltige Anpassungsmöglichkeiten.
Software Design Patterns
BIC, Excel 2007 und Bilder in Dokumenten QIP-Meeting Bremerhaven
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Dieser Vortrag wird gesponsort von:
Schritt für Schritt-Anleitung
Geoinformationssysteme
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
X. Übungsblatt – Aufgabe X Mit Hilfe von NAND-Gattern, kann jede beliebige Boolesche Funktion realisiert werden. (Gleiches gilt für die Verwendung von.
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Einfache Bäume Übung 13 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
Europäische Patientenakademie zu Therapeutischen Innovationen Verblindung in klinischen Studien.
Die Logistikkette Erstellt von A. Ivanova. Die Design- und Einkaufsabteilung in Stockholm ist der Ort an dem die Kollektionen von H&M geschaffen werden.
Methoden zur Strategieumsetzung Prof. Dr. Klaus-Peter Franz Übung Werttreiberbaum Prof. Dr. Klaus-Peter Franz Heinrich-Heine-Universität Düsseldorf.
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell Wie komme ich zu einem guten Entwurf? Definition: Der beste Entwurf ist derjenige, der über die gesamte Lebenszeit der Software minimale Kosten verursacht. Oder Ein schlechter Entwurf erzeugt hohe Wartungskosten Problematisch wird es immer dann, wenn sich Entwurfsentscheidungen hinsichtlich Qualitätsmerkmalen gegenseitig beeinflussen: Erhöhung der Flexibilität geht häufig einher mit einer Verringerung der Verständlichkeit.

Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell Drei Ansätze führen zu einem guten Entwurf: Einsatz von bekannten Prinzipien und Heuristiken, die zu robusten, flexiblen und wieder verwendbaren Entwürfen führen. Die zwei bekanntesten sind: Information hiding (Parnas), auch Kapselung, Abstraktion genannt Geringe Kopplung Verwendung von Metriken, die einen Entwurf aus einem festzulegenden Blickwinkel beurteilen. Dadurch kann die Komplexität verringert und die Verständlichkeit erhöht werden. Die bekannteste ist die Cyclomatische Komplexität (McCabe) Zu guter letzt haben wir natürlich noch die bekannten Entwurfs-Muster (design pattern) Und nicht zu vergessen: Bei mehreren Lösungsalternativen ist die einfachste zu wählen.

Objektorientierter Entwurf (OOD) Qualitätsmodell Beispiel: Ausleihe von Videofilmen. Ziel: Es soll ein System zur Rechnungserstellung entworfen werden. Kunde, Ausleihe und Videofilm werden jeweils durch Klassen modelliert. Dem Kunden sind seine Ausleihen zugeordnet, während jede Ausleihe den ausgeliehenen Videofilm und die Ausleihdauer (in Tagen) kennt. Ein Videofilm hat einen Preiscode, der zusammen mit der Leihdauer den Preis bestimmt. Es gibt Preiscodes für normale Filme, Kinderfilme und neue Filme. Der Preiscode eines Videofilmes kann sich ändern, daher gibt es in der Klasse Videofilm eine Methode setzePreiscode(). 1. Entwurf: Es erscheint sinnvoll, die Erstellung einer kundenspezifischen Rechnung in der Klasse Kunde vorzunehmen und dazu alle erforderlichen Informationen bei den Klassen Ausleihe und Videofilm einzuholen.

Objektorientierter Entwurf (OOD) Qualitätsmodell

Objektorientierter Entwurf (OOD) Qualitätsmodell Diskussion des 1. Entwurfs: Dieses Vorgehen ist ein Verstoß gegen die Regel, unnötige Kopplungen zu vermeiden, siehe Benutz-Beziehung im Klassendiagramm: Auf einem Objekt, das von einer anderen Klasse (Ausleihe) als Resultat eines Methodenaufrufs (holeVideofilm) geliefert wurde, wird eine Methode (ermittlePreis) aufgerufen. Außerdem erscheint es sinnvoll, die Preisberechnung für einen(!) Ausleihvorgang in der Klasse Ausleihe durchzuführen. 2. Entwurf: Die Preisberechnung wird geteilt und sowohl in der Klasse Ausleihe als auch in der Klasse Videofilm durchgeführt. (Diagramme nächste Seite) Diskussion des 2. Entwurfs: Zwischen den Klassen bestehen weniger Kopplung (Kunde weiß nichts mehr von Videofilm) und die Kapselung von Ausleihe und Videofilm wurde verbessert, da die drei get-Methoden (holeAusleihdauer, holeVideofilm, holePreis) entfallen können. Jedoch ist die Berechnung des Rechnungsbetrages nun über drei Klassen „verschmiert“, so dass man drei Klassen betrachten muss, um den Algorithmus vollständig nachvollziehen zu können.

Objektorientierter Entwurf (OOD) Qualitätsmodell

Objektorientierter Entwurf (OOD) Qualitätsmodell Unter Einbeziehung des Design Patterns „State“ (zustandsabhängiges Verhalten in separaten Objekten) wird die Preisberechnung in eine abstrakte Klasse Preis ausgelagert. Fallunterscheidung nach dem Preiscode durch dynamisches Binden.

Objektorientierter Entwurf (OOD) Qualitätsmodell Diskussion des 3. Entwurfs: Diese Lösung ist einfacher (als der 2. Entwurf) um neue Preiscodes zu erweitern, auch Änderungen in der Preisberechnung sind einfacher durch zu führen. Dafür jedoch hat sich die Anzahl der Klassen mehr als verdoppelt und damit hat sich die Verständlichkeit verringert.

Objektorientierter Entwurf (OOD) Qualitätsmodell Schlussfolgerungen: Die Änderungen der Entwürfe von 1 nach 3 dienten der Entkopplung und damit der Änderbarkeit. Jedoch verschlechtert sich die Verständlichkeit dadurch, dass die Anzahl der Klassen ansteigt. Es wird Flexibilität eingebaut, die aber nur dann wirklich sinnvoll ist, wenn sich die Preiscodes tatsächlich ändern werden. Die Güte des Entwurfs hängt somit auch vom Kontext der Software ab. Empfehlung: Grundsätze wie Entkopplung und Kapselung von Details und von (sich wahrscheinlich ändernden) Entwurfsentscheidungen sollten immer beachtet werden. Flexibilität, insbesondere durch Entwurfsmuster (design pattern) ist oft teuer, da der vorhandene Entwurf geändert werden muss, und sollte erst dann eingebaut werden, wenn sie benötigt wird.