Design OOA OOD

20
Design SEP WS 09/10

description

Präsentation über OOA und OOD als Kurzeinführung für Studenten des Bachelor Studiengang Informatik an der Hochschule Mannheim

Transcript of Design OOA OOD

Page 1: Design OOA OOD

Design

SEP WS 09/10

Page 2: Design OOA OOD

Vorabinfos

Inhalt

Ready?

Wie man es nicht macht

Go!

Wer bin ich?

Besser machen

Dokumente fürs Design

ToolsErgänzungenWas zum Lesen

Quak, Quik, Quek

Page 3: Design OOA OOD

Wer bin ich?

Jeffrey Groneberg

2. Mal Tutor im SEP

Master-Student

BSc seit SS09

Adobe Flex - Entwickler

www.twitter.com/inkvine

www.inkvine.de

Page 4: Design OOA OOD

Vorabinfos

Nicht all zuviel Theorie

Nicht der Master-Plan

Kein Ersatz für OOT / TPE und SEE

Page 5: Design OOA OOD

Vorabinfos

Eigene Erfahrung

Auflistung, die hilft

Überblick der Dokumente

Betrachtung der Voraussetzungen

Page 6: Design OOA OOD

Ready?

Pflichtenheft

Logical ViewDevelopment

View

Process View Physical View

Architekturspezifikation

http://www.ifi.uzh.ch/swe/teaching/courses/seminar2004/abgaben/Wimmer-Architektur-Sichten.pdf

Page 7: Design OOA OOD

Go!

Nie alleine – gegenseitig erklären

Gutes Abstraktionsverständnis

Mind-Mapping

Plotting – Studiengebühren müssen sich rentieren

OOA/OOD ist ein autodidaktischer Prozess

Guter Programmierer != guter Designer

Page 8: Design OOA OOD

Go!

Plotten

Von Oben nach Unten!

Modul für Modul

Gute Architekturerleichtert gutes Design

Schnittstellenund Strukturen sind wichtig

Mit Programmierern absprechen

Page 9: Design OOA OOD

Dokumente fürs Design

Statische Sicht:

• Klassendiagramm verbalisieren• Optional: Datenbank / XML / (Backend)• Frameworks Dynamische Sicht:

• Sequenzdiagramm• Aktivitätsdiagramm• …Design-Validierung:

• Design <-> Pflichtenheft

• Das WAS wird durch das WIE beantwortet

Klassendiagramm

Dokumente stetig anpassen

Page 10: Design OOA OOD

Wie man es nicht macht

Dynamische Sicht:• Sequenzdiagramm• Aktivitätsdiagramm• …

Klassendiagramm

Planlos beginnen• Probleme müssen abstrahiert werden• Fehler in Architektur fehlerhaftes Design

• Me vs. Framework

Design unterschätzen: Probleme bei:

Implementierung

AnforderungenVeränderungenProbleme beim Testen

Nicht Validieren

Page 11: Design OOA OOD

Wie man es nicht macht

Konkrete Beispiele durch fehlerhaftes Design:

• Enge Kopplung

• Static. Static. Static. zzZZzzzZZzz

• Doppelter Code

• Kein automatisiertes Testen• White-Box-Testing wird umständlich

Positives Beispiel durch fehlerhaftes Design:• Anwendung wird kryptographisch

Arbeitsplatz gesichert

Page 12: Design OOA OOD

Besser machen

Das Rad nicht neu erfinden

Problemlösungen nutzen, die sich in der Praxis bewährt haben

Erfahrungen von anderen nutzen

Ändernde Anforderungen führen zu anderen Best Practices

Best Practices

Page 13: Design OOA OOD

Besser machen

StrategyPattern

ObserverPattern

DecoratorPattern

Factory Pattern

Singleton Pattern

FacadePattern

Template Methode Pattern

Iterator andComposite

Pattern

State Pattern Proxy PatternCommand

Pattern…

Best Practices in OOD sind Design Pattern

Page 14: Design OOA OOD

Besser machen

„Nicht alles Gold, was glänzt“

Pattern genau kennen für Anwendung

Problem komplexer als Beispiel-UML des Pattern

Zwang, bei allem ein Pattern zu verwenden

Page 15: Design OOA OOD

Quak, Quik, Quek

Strategy Pattern

Änderung des Verhaltens zur Laufzeit

Veränderungen kapseln

Schnittstellen nutzen

Kapselung wiederverwenden

Komposition > Vererbung

Page 16: Design OOA OOD

Flugverhalten flugVerhalten

Quakverhalten quakVerhalten

schwimmen()

anzeigen()

tuQuaken()

tuFliegen()

setQuakVerhalten()

setFlugVerhalten

//ANDERE Enten-Methoden

Stockente MoorEnte

LockenteGummiEnte

anzeigen() anzeigen()

anzeigen()

<<Interface>>

FlugVerhalten

fliegen()

FliegtMitFlügeln FliegtGarnicht

fliegen() fliegen()

quaken()

<<Interface>>

QuakVerhalten

Quak, Quik, Quek

Ente

anzeigen()

Gekapseltes Quakverhalten

Gekapseltes FlugverhaltenClient

Page 17: Design OOA OOD

OmondoUML

Microsoft Visio

Dia

Jude

Werkzeuge

Reverse-Engineering um Design anzupassennicht um Design zu erstellen

Page 18: Design OOA OOD

Checkstyle

DocFlexFind-Bugs

JavaDocs

Ergänzungen

Spring-Framework

Page 19: Design OOA OOD

Was zum Lesen

Head First – Design PatternGang of Four: Design Pattern

Refactoring – Improving the Design of Existing Code

Karteikartenhttp://www.mcdonaldland.info/2007/11/28/40/

Ausführliche Erklärungenhttp://sourcemaking.com/design_patterns

Page 20: Design OOA OOD

Fragen?