SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Design
SEP WS 09/10
Wer bin ich?
            Vorabinfos
 Ready?
             Go!
Dokumente fürs Design
   Wie man es nicht macht
Besser machen
            Quak, Quik, Quek
     Tools
           Was zum Lesen  Ergänzungen
Inhalt
Jeffrey Groneberg
                 Master-Student

                   Adobe Flex - Entwickler
                   BSc seit SS09

                    2. Mal Tutor im SEP

            www.twitter.com/inkvine

            www.inkvine.de

Wer bin ich?
Nicht all zuviel Theorie
Nicht der Master-Plan
Kein Ersatz für   OOT / TPE und SEE

Vorabinfos
Eigene   Erfahrung

Auflistung, die hilft

             Überblick       der Dokumente


Betrachtung der   Voraussetzungen



Vorabinfos
Pflichtenheft
                               Architekturspezifikation

                                              Development
                               Logical View
                                                 View



                               Process View   Physical View




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

Ready?
Nie alleine     – gegenseitig erklären


     Gutes   Abstraktionsverständnis
Plotting – Studiengebühren
müssen sich rentieren 
                         Mind-Mapping
OOA/OOD ist ein autodidaktischer Prozess

       Guter   Programmierer != guter Designer

Go!
Von Oben nach Unten!
Modul für Modul

Schnittstellen           Mit Programmierern
und Strukturen           absprechen
                       Plotten
sind wichtig
             Gute Architektur
             erleichtert gutes Design


Go!
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
Dokumente fürs Design
Planlos beginnen
  • Probleme müssen abstrahiert werden
  • Fehler in Architektur  fehlerhaftes Design
                              Dynamische Sicht:
  • Me vs . Framework            • Sequenzdiagramm
                                 • Aktivitätsdiagramm
Design unterschätzen:            •…
 Probleme bei:
     Implementierung
     Anforderungen
     Veränderungen          Klassendiagramm
     Probleme beim Testen

Nicht Validieren
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 



Wie man es nicht macht
Das   Rad nicht neu erfinden

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

                Best Practices
      Ändernde Anforderungen            führen zu   anderen
      Best Practices

Besser machen
Best Practices        in OOD sind   Design Pattern
    Strategy        Observer        Decorator     Factory
    Pattern          Pattern         Pattern      Pattern

                                    Template    Iterator and
   Singleton        Facade
                                    Methode      Composite
    Pattern         Pattern
                                     Pattern       Pattern

                                    Command
  State Pattern   Proxy Pattern                      …
                                     Pattern




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

Besser machen
Strategy Pattern
              Änderung des Verhaltens zur Laufzeit
Veränderungen kapseln
                        Schnittstellen   nutzen


                        Kapselung wiederverwenden

                          Komposition > Vererbung




Quak, Quik, Quek
Client                      Gekapseltes Flugverhalten
                                                             <<Interface>>
                     Ente                                    FlugVerhalten

      Flugverhalten flugVerhalten                            fliegen()
      Quakverhalten quakVerhalten

      schwimmen()
      anzeigen()                                FliegtMitFlügeln             FliegtGarnicht
      tuQuaken()
      tuFliegen()                                fliegen()                     fliegen()
      setQuakVerhalten()
      setFlugVerhalten
      //ANDERE Enten-Methoden                  Gekapseltes Quakverhalten


                                                             <<Interface>>
       Stockente                    MoorEnte                 QuakVerhalten
 anzeigen()                 anzeigen()
                                                              quaken()
      GummiEnte                     Lockente
 anzeigen()                 anzeigen()




Quak, Quik, Quek
OmondoUML

                                 Jude
              Microsoft Visio
                                  Dia
Reverse-Engineering um Design anzupassen
nicht um Design zu erstellen


Werkzeuge
Checkstyle
               JavaDocs
    DocFlex
                    Find-Bugs

   Spring-Framework

Ergänzungen
Head First – Design Pattern
         Gang of Four: Design Pattern

 Refactoring – Improving the Design of Existing Code


           Karteikarten
           http://www.mcdonaldland.info/2007/11/28/40/

           Ausführliche Erklärungen
           http://sourcemaking.com/design_patterns

Was zum Lesen
Fragen?

Mais conteúdo relacionado

Semelhante a Design OOA OOD

Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuCédric Hüsler
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Sebastian Sanitz
 
Anforderungsanalyse - Grundlagen und Prototyping
Anforderungsanalyse - Grundlagen und PrototypingAnforderungsanalyse - Grundlagen und Prototyping
Anforderungsanalyse - Grundlagen und PrototypingChristian Baranowski
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRAlexander Hundt
 
Titchysync Presentation
Titchysync PresentationTitchysync Presentation
Titchysync Presentationtitchysync
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
EventStorming für Domain-Driven Design
EventStorming für Domain-Driven DesignEventStorming für Domain-Driven Design
EventStorming für Domain-Driven DesignNicole Rauch
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungEduard Hildebrandt
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...Aberla
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Serverguest23319
 

Semelhante a Design OOA OOD (20)

Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Informatik Curriculum NEU
Informatik Curriculum NEUInformatik Curriculum NEU
Informatik Curriculum NEU
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010
 
Anforderungsanalyse - Grundlagen und Prototyping
Anforderungsanalyse - Grundlagen und PrototypingAnforderungsanalyse - Grundlagen und Prototyping
Anforderungsanalyse - Grundlagen und Prototyping
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
Titchysync Presentation
Titchysync PresentationTitchysync Presentation
Titchysync Presentation
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
EventStorming für Domain-Driven Design
EventStorming für Domain-Driven DesignEventStorming für Domain-Driven Design
EventStorming für Domain-Driven Design
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 

Último (8)

Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.
 
1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf
 
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdfLAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
 
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_EssenAngewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
 
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg EssenBetriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
Betriebswirtschaftslehre (B.Sc.) an der Universität Duisburg Essen
 
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-EssenWirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
 
1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf
 
Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!
 

Design OOA OOD

  • 2. Wer bin ich? Vorabinfos Ready? Go! Dokumente fürs Design Wie man es nicht macht Besser machen Quak, Quik, Quek Tools Was zum Lesen Ergänzungen Inhalt
  • 3. Jeffrey Groneberg Master-Student Adobe Flex - Entwickler BSc seit SS09 2. Mal Tutor im SEP www.twitter.com/inkvine www.inkvine.de Wer bin ich?
  • 4. Nicht all zuviel Theorie Nicht der Master-Plan Kein Ersatz für OOT / TPE und SEE Vorabinfos
  • 5. Eigene Erfahrung Auflistung, die hilft Überblick der Dokumente Betrachtung der Voraussetzungen Vorabinfos
  • 6. Pflichtenheft Architekturspezifikation Development Logical View View Process View Physical View http://www.ifi.uzh.ch/swe/teaching/courses/seminar2004/abg aben/Wimmer-Architektur-Sichten.pdf Ready?
  • 7. Nie alleine – gegenseitig erklären Gutes Abstraktionsverständnis Plotting – Studiengebühren müssen sich rentieren  Mind-Mapping OOA/OOD ist ein autodidaktischer Prozess Guter Programmierer != guter Designer Go!
  • 8. Von Oben nach Unten! Modul für Modul Schnittstellen Mit Programmierern und Strukturen absprechen Plotten sind wichtig Gute Architektur erleichtert gutes Design Go!
  • 9. 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 Dokumente fürs Design
  • 10. Planlos beginnen • Probleme müssen abstrahiert werden • Fehler in Architektur  fehlerhaftes Design Dynamische Sicht: • Me vs . Framework • Sequenzdiagramm • Aktivitätsdiagramm Design unterschätzen: •…  Probleme bei: Implementierung Anforderungen Veränderungen Klassendiagramm Probleme beim Testen Nicht Validieren Wie man es nicht macht
  • 11. 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  Wie man es nicht macht
  • 12. Das Rad nicht neu erfinden Erfahrungen von anderen nutzen Problemlösungen nutzen, die sich in der Praxis bewährt haben Best Practices Ändernde Anforderungen führen zu anderen Best Practices Besser machen
  • 13. Best Practices in OOD sind Design Pattern Strategy Observer Decorator Factory Pattern Pattern Pattern Pattern Template Iterator and Singleton Facade Methode Composite Pattern Pattern Pattern Pattern Command State Pattern Proxy Pattern … Pattern Besser machen
  • 14. „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 Besser machen
  • 15. Strategy Pattern Änderung des Verhaltens zur Laufzeit Veränderungen kapseln Schnittstellen nutzen Kapselung wiederverwenden Komposition > Vererbung Quak, Quik, Quek
  • 16. Client Gekapseltes Flugverhalten <<Interface>> Ente FlugVerhalten Flugverhalten flugVerhalten fliegen() Quakverhalten quakVerhalten schwimmen() anzeigen() FliegtMitFlügeln FliegtGarnicht tuQuaken() tuFliegen() fliegen() fliegen() setQuakVerhalten() setFlugVerhalten //ANDERE Enten-Methoden Gekapseltes Quakverhalten <<Interface>> Stockente MoorEnte QuakVerhalten anzeigen() anzeigen() quaken() GummiEnte Lockente anzeigen() anzeigen() Quak, Quik, Quek
  • 17. OmondoUML Jude Microsoft Visio Dia Reverse-Engineering um Design anzupassen nicht um Design zu erstellen Werkzeuge
  • 18. Checkstyle JavaDocs DocFlex Find-Bugs Spring-Framework Ergänzungen
  • 19. Head First – Design Pattern Gang of Four: Design Pattern Refactoring – Improving the Design of Existing Code Karteikarten http://www.mcdonaldland.info/2007/11/28/40/ Ausführliche Erklärungen http://sourcemaking.com/design_patterns Was zum Lesen