OOAD Richtlinien & Tips



Ähnliche Dokumente
Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Software Engineering

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Objektorientiertes Software-Engineering

Objektorientierte Programmierung OOP

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Klausur Software-Engineering SS 2005 Iwanowski

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Silca Software ERKLÄRUNG. February 2013 Copyright Silca S.p.A. V.2.0

Reengineering und Refactoring von Softwarearchitekturen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

BIF/SWE - Übungsbeispiel

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Kapitel 2: Der Software-Entwicklungsprozess

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

SDD System Design Document

Professionelle Seminare im Bereich MS-Office

OOD. Objektorientiertes Design. Peter Coad und Edward Yourdon. Prentice Hall Verlag

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Software-Engineering

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

OO Softwareentwicklung

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Arbeiten mit UMLed und Delphi

Installation der SAS Foundation Software auf Windows

Java Enterprise Architekturen Willkommen in der Realität

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

Vorlesung Programmieren

Client-Server-Beziehungen

Softwaretechnik (Allgemeine Informatik) Überblick

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Generatives Programmieren

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Vorlesung Donnerstags, bis Uhr, HS12 Übung Dienstags, bis Uhr 4-5 ÜbungsbläMer (Programmieraufgaben)

Requirements Engineering I

e-business - Patterns Stefan Brauch (sb058) -- Julian Stoltmann (js057)

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Fallstudie HP Unified WLAN Lösung

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

SMART Newsletter Education Solutions April 2015

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Internet Explorer Version 6

4. AuD Tafelübung T-C3

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

12.4 Sicherheitsarchitektur

Objektbasierte Entwicklung

3.4 Unified Process Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process.

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Komponentenbasierter Taschenrechner mit CORBA

Das Model View Controller (MVC) Konzept

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Grundbegriffe der Wirtschaftsinformatik Informationssystem I

SEMINAR Modifikation für die Nutzung des Community Builders

Testen mit JUnit. Motivation

Netzwerkeinstellungen unter Mac OS X

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Vodafone Conferencing Meeting erstellen

Abschnitt 16: Objektorientiertes Design

Softwareentwicklung und Projektmanagement Teil 2: Objektorientierte Softwareentwicklung WS 05/06

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Acceptor-Connector. Acceptor-Connector

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Kurzanleitung OOVS. Reseller Interface. Allgemein

Lizenzierung von Windows Server 2012

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Informatik-Sommercamp Mastermind mit dem Android SDK

SEP 114. Design by Contract

Kurzanleitung So geht s

Es war einmal... "StudyING: Welten bewegen - Welten gestalten"

Java lernen mit BlueJ

Objektorientierte Programmierung

Wireless LAN PCMCIA Adapter Installationsanleitung

Multichannel Challenge: Integration von Vertriebsorganisation und Contact Center in der Versicherung

8 Design Patterns. Events

Programmieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Abschlussarbeiten für StudentInnen

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

HANDBUCH LSM GRUNDLAGEN LSM

Service. Was ist eine Enterprise Service Architecture und wie reagiert SAP. Warum Monitoring in ZENOS, was monitort die XI?

Modellgetriebene Softwareentwicklung. 31. Januar 2013

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Business-Rule-Management als Instrument des Software-Reengineering

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Transkript:

Software-Architekturen Sommersemester 2002 Prof. Dr. Wolfgang Pree Universität Salzburg www.softwareresearch.net/swa 1 OOAD Richtlinien & Tips 2002, W. Pree, Software-Architekturen, SS2002; Teil I 2

Metriken (I) Klassen: Anzahl der Methoden: > 5 < 30 Methoden: durschnittliche Methodenlänge: 10 20 LOC 2002, W. Pree, Software-Architekturen, SS2002; Teil I 3 Metriken (II) System: Anzahl der zentralen abstrakten Klassen: < 10 Vererbungstiefe: < 15 2002, W. Pree, Software-Architekturen, SS2002; Teil I 4

UML Tools Trotz der Empfehlung der Tool- Hersteller, die Entwicklung möglichst auf UML abzustützen (OOAD; Code- Generierung), hat es sich in der Praxis bewährt, UML-Diagramme lediglich für eine überblicksmäßige Visualisierung der wichtigen Aspekte eines Systems zu benutzen. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 5 Information Hiding Mittels Zugriffsrechten werden Implementierungsdetails vor dem Benutzer der Klasse versteckt und gesichert, daß Objekte immer in konsistenten Zuständen sind. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 6

Vererbung nicht immer! Vererbung sollte nicht verwendet werden, um Klassen zu korrigieren oder Implementierungen zu verbessern. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 7 Is-A versus Has-A Vererbung (Is-A) sollte keinesfalls verwendet werden, um Has-A-Beziehungen (Associations oder Aggregations) zu modellieren. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 8

Abstrakte Klassen (I) 30% - 40% der Methoden, die in eine abstrakte Klasse herausfaktorisiert werden sollten, sind offensichtlich. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 9 Abstrakte Klassen (II) Wird zuwenig herausfaktorisiert, so wird es schwierig, Halbfertigfabrikate zu implementieren. Wird zuviel herausfaktorisiert, so werden die Unterklassen zu überladen bzw. mit unnötigem Verhalten belastet. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 10

Interfaces versus abstrakte Klassen Gründe für Interfaces: Die kritische Masse an Methoden für eine Klasse wird nicht erreicht. Es werden keine Instanzvariablen oder keine konkreten Methoden gebraucht. Unabhängigkeit von der Klassenhierarchie 2002, W. Pree, Software-Architekturen, SS2002; Teil I 11 (Re-)Design- Strategien 2002, W. Pree, Software-Architekturen, SS2002; Teil I 12

Allgemein Architektur-Zerlegung in Pakete/Module/Klassen/Komponenten/ Objekte prüfen Hots Spots (Flexibilität) von Frameworks prüfen 2002, W. Pree, Software-Architekturen, SS2002; Teil I 13 Modularisierung/Strukturierung in der Theorie (I) Gleichgewicht zwischen Maximierung der Kohesion innerhalb einer Komponente (Modul/Klasse) Minimierung der Kopplung zwischen Komponenten Komplexität gesamte Komplexität Kopplung Kohesion Anzahl der Module Eine Komponente => Kopplung = 0 Kohesion > max Jede Methode in einer separaten Komponente => Kopplung -> max Kohesion = 0 2002, W. Pree, Software-Architekturen, SS2002; Teil I 14

Modularisierung/Strukturierung in der Theorie (II) Ausgeglichene Verteilung von Responsibilities zwischen Komponenten Minimale Schnittstelle einer Komponente (erhöht die Kopplung innerhalb der K.) enge Verbindung zw. Methoden und Instanzvariablen keine redundanten Methoden kleine Anzahl von Parametern ausdrucksstarkes und konsistentes Namensschema keine globalen Daten/Komponenten/Objekte 2002, W. Pree, Software-Architekturen, SS2002; Teil I 15 Anwendung der Theorie auf OO Systeme grobkörniges Design von Klassenhierarchien Kopplung/Interaktion von Komponenten Kohesion innerhalb einer Komponente Evolution von Klassenhierarchien Hot Spots (Variation Points) von Frameworks 2002, W. Pree, Software-Architekturen, SS2002; Teil I 16

Grobkörniges Design von Klassenhierachien (I) Klassen können grob in Familien, Teams und Subsysteme unterteilt werden. Klassenfamilien basieren auf abstrakten Klassen/Schnittstellen Container Klassen (abstrakte Klasse Container) GUI Komponenten (abstrakte Klasse Component) bottom-up oder top-down Entwicklung von Familien Wurzeln von Klassenfamilien sollten leicht sein, insbesondere Datenrepräsentationen (Instanzvariable) vermeiden 2002, W. Pree, Software-Architekturen, SS2002; Teil I 17 Grobkörniges Design von Klassenhierachien (II) Klassenteams bestehen aus mehreren Klassenfamilien ET++: Text team besteht aus Text, TextView undtextformatter Familien Container und Iterator Familien bilden ein Team werden als ganzes wiederverwendet sind abstrakt gekoppelt => Vermeidung von enger Kopplung 2002, W. Pree, Software-Architekturen, SS2002; Teil I 18

Grobkörniges Design von Klassenhierachien (III) Subsysteme Explizite Kapselung eines Klassenteams ( > Facade Pattern) reduziert die Kopplung zwischen Klassen eines Teams Definition einer zusätzlichen Abstraktion, um Wiederverwendung für Clients zu vereinfachen Client-Komponenten Subsystem 2002, W. Pree, Software-Architekturen, SS2002; Teil I 19 Reduktion der Kopplung durch Mediatoren Effekt des Mediator Patterns: Komponenten können eher unabhängig voneinander wiederverwendet werden. M 2002, W. Pree, Software-Architekturen, SS2002; Teil I 20

Erreichen von Kohesion innerhalb einer Komponente Um die Kohesion qualitativ zu prüfen, sind folgende Fragen hilfreich Kann eine Komponente verstanden getestet werden, ohne zu wissen, wie sie in ein System eingebracht wird? siehe Fallstudie: Ereignissimulation Hat eine Komponente Seiteneffekte auf andere Komponenten? 2002, W. Pree, Software-Architekturen, SS2002; Teil I 21 Evolution von Klassenhierarchien Vertikale Reorganisationen Verschieben von gemeinsamen Eigenschaften/Verhalten hinauf in der Klassenhierarchie (-> abstrakte Klassen) Aufsplitten einer zu komplexen Klasse in eine Klassenfamilie Vermeiden des Überschreibens von zu vielen spezifischen Methoden, indem abstrakte Klassen eingeführt werden Horizontale Reorganisationen Aufsplitten einer zu komplexen Klasse in ein Klassenteam/Subsystem Verschieben von Verhalten in Strategie -Klassen (Stategy/Bridge- Patterns) 2002, W. Pree, Software-Architekturen, SS2002; Teil I 22

Analyse von Variation Points (= Hot Spots) Was macht die Qualität eines Frameworks aus? Flexibilität um der Flexibilität willen indem möglichst viele Patterns angewendet werden führt zu unnötig komplexen Frameworks Flexibilität muß in der richtigen Dosis hinein Identifikation von Hot Spots stellt eine explizite Aktivität im Framework-Entwicklungsprozeß dar 2002, W. Pree, Software-Architekturen, SS2002; Teil I 23 OO: Cluster-Modell (Bertrand Meyer) Cluster 1 Generalization Test Analysis (Re)Design Implementation Cluster 2 Cluster N Analysis Generalization (Re)Design Test Implementation Generalization Test Analysis (Re)Design Implementation... zb Design und Implementierung können sich in verschiedenen Clustern überlappen 2002, W. Pree, Software-Architekturen, SS2002; Teil I 24

erweitertes Cluster-Modell bei Framework-Entwicklung Definition eines spez. Objektmodells Domänenexperte, SW-Engineer CRC Karten spezifisches Objektmodell (also noch kein Framework) Aufsplittung in Cluster Identifikation von Variationspunkten Domänenexperte, SW-Engineer Variationspunkt-Karten... Framework (Re)Design Software Engineer Framework-Adaption SW-Engineer, Domänenexperte Framework- Design Patterns N Var.- Punkte OK? J 2002, W. Pree, Software-Architekturen, SS2002; Teil I 25 Literaturhinweise 2002, W. Pree, Software-Architekturen, SS2002; Teil I 26

Literaturhinweise (I) Gamma E., Helm R., Johnson R. and Vlissides J. (1995). Design Patterns Elements of Reusable OO Software. Reading, MA: Addison-Wesley (auch als CD verfügbar) Pree W. (1995). Design Patterns for Object-Oriented Software Development. Reading, Massachusetts: Addison- Wesley/ACM Press Fontoura M., Pree W., Rumpe B. (2001) The UML-F Profile for Framework Architectures, Addison Wesley Szyperski C. (1998) Component Software Beyond Object-Oriented Programming, Addison-Wesley. Fayad M., Schmidt D., Johnson R. (1999) Building Application Frameworks: Object-Oriented Foundations of Framework Design, Wiley Fayad M., Schmidt D., Johnson R. (1999) Implementing Application Frameworks: Object-Oriented Frameworks at Work, Wiley Fayad M., Schmidt D., Johnson R. (1999) Domain-Specific Application Frameworks: Manufacturing, Networking, Distributed Systems, and Software Development, Wiley Shannon et al.: Java 2 Platform, Enterprise Edition Platform and Component Specifications, Addison-Wesley, 2000 Horstmann C., Cornell G.: Core Java Advanced Features, Vol. II, Prentice Hall, 1998 Hamilton G. et al.: JDBC Database Access with Java, Addison-Wesley, 2000 Monson-Haefel R.: Enterprise JavaBeans, O Reilly, 2000 Englander R.: Developing Java Beans, O Reilly, 1999 Vanhelsuwe L.: Mastering JavaBeans (full text: http://www.lv.clara.co.uk/masbeans.html) 2002, W. Pree, Software-Architekturen, SS2002; Teil I 27 Literaturhinweise (II) Booch G., Jacobson I, Rumbaugh J. (1999) Objektorientierte Analyse und Design. Mit praktischen Anwendungsbeispielen Das UML-Benutzerhandbuch (Unified Modeling Language User Guide) Unified Modeling Language Reference Manual, The Objectory Software Development Process, Addison-Wesley Österreich B. (2000) Erfolgreich mit Objektorientierung, Oldenburg Verlag Balzert H. (2000) Objektorientierung in 7 Tagen, m. CD-ROM. Vom UML-Modell zur fertigen Web-Anwendung, Spektrum Akadem. Verlag Gabriel R.P. (1996). Patterns of Software Tales from the Software Community. New York: Oxford University Press Wirth N, Gutknecht J. (1993) Project Oberon, Addison-Wesley. 2002, W. Pree, Software-Architekturen, SS2002; Teil I 28