![Page 1: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/1.jpg)
Software Designund Design Patterns
FIO SYSTEMS AG®
![Page 2: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/2.jpg)
Gliederung
•Gutes Design•Typische Designprobleme•Software-Wartung•Schichtenarchitektur•Architektur-Patterns•Übergreifende Patterns•Aufgabenstellung
![Page 3: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/3.jpg)
Was ist gutes Design?
•Einfach•Modular•Gekapselt•Erweiterbar•Stabil•Zweckmäßig
![Page 4: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/4.jpg)
Typische Probleme
•Frontend == Anwendung•Prozeduraler Code•Code Duplication•Architektur, die nicht zum Problem passt•Pattern madness•Design for the unpredictable
![Page 5: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/5.jpg)
Typische Probleme
● Untestbar / keine Unit-Tests● Spaghetti-Code
Folge:● hohe Wartungs- und Pflegekosten● ineffektive Erweiterungen● hohe Fehlerquote● Demotivation● Enge Kopplung
![Page 6: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/6.jpg)
Praxisbeispiel Wartung(stark vereinfacht)
•FIOPORT Vermarktung•Grobkonzept 2003, 35 Seiten•Entwicklungszeit: 1 Jahr, 5 Entwickler•Wartungszeit: 9 Jahre, Wartung und Erweiterung durch
mittlerweile 10 Entwickler
![Page 7: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/7.jpg)
Erstellung vs. Wartung / Pflege
Erstellung
Wartung / Pflege
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 20130
1
2
3
4
5
6
7
8
9
10
Entwickler
Praxisbeispiel Wartung
![Page 8: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/8.jpg)
Praxisbeispiel Wartung 2(stark vereinfacht)
•FIOPORT Account•Grobkonzept 2003•Entwicklungszeit: 4 Monate, 1 Entwicklerin•Wartungszeit: 9 Jahre, Wartung und Erweiterung durch
mittlerweile 8 Entwickler
![Page 9: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/9.jpg)
Erstellung vs. Wartung / Pflege
Erstellung
Wartung / Pflege
Praxisbeispiel Wartung 2
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 20130
1
2
3
4
5
6
7
8
Entwickler
![Page 10: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/10.jpg)
Schichtenarchitektur
![Page 11: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/11.jpg)
Schichtenarchitektur
![Page 12: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/12.jpg)
Schichtenarchitektur
![Page 13: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/13.jpg)
Dependency Inversion
•Abhängigkeit Frontend → … → Backend erscheint natürlich
•Dadurch haben Änderungen in niederen Schichten jedoch Auswirkungen auf alles darüber
•Außerdem erschwert eine solche Architektur die Wiederverwendung
![Page 14: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/14.jpg)
Dependency Inversion Principle
Formuliert von Robert C. Martin, 1996:
A. High-level modules should not depend on low-level modules. Both should depend on abstractions.B. Abstractions should not depend upon details. Details should depend upon abstractions.
![Page 15: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/15.jpg)
Architektur-Patterns
•Frontend Patterns● MVC● Front Controller● Page Controller● MVP
•BLL-Patterns● Service Layer● Domain Model
•DAL-Patterns● Repository● Data Mapper● Active Record
![Page 16: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/16.jpg)
Frontend-Patterns - MVC
![Page 17: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/17.jpg)
Frontend-Patterns - FC
![Page 18: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/18.jpg)
Frontend-Patterns - FC
Code
![Page 19: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/19.jpg)
Frontend-Patterns - PC
![Page 20: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/20.jpg)
Frontend-Patterns - MVP
![Page 21: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/21.jpg)
Frontend-Patterns - MVP
Code
![Page 22: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/22.jpg)
BLL-Patterns – Service Layer
![Page 23: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/23.jpg)
BLL-Patterns – Service Layer 2
![Page 24: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/24.jpg)
BLL-Patterns – Domain Model
![Page 25: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/25.jpg)
DAL-Patterns – Repository
![Page 26: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/26.jpg)
DAL-Patterns – Data Mapper
![Page 27: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/27.jpg)
DAL-Patterns – Active Record
@products = Product.all@product = Product.find(params[:id])@product = [email protected]
![Page 28: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/28.jpg)
Übergreifende Patterns
•Value Object•Data Transfer Object•Factory•Singleton•Observer•Facade•Proxy
![Page 29: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/29.jpg)
Value Object
![Page 30: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/30.jpg)
Data Transfer Object
![Page 31: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/31.jpg)
Factory
![Page 32: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/32.jpg)
Singleton
![Page 33: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/33.jpg)
Observer
![Page 34: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/34.jpg)
Facade
![Page 35: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/35.jpg)
Proxy
![Page 36: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/36.jpg)
Zusammenfassung
•einfaches Design, bereit für geplante Anforderungen•Dependencies planen – Interfaces verwenden•Unit-Tests als Absicherung für Umbauten•Wartungskosten minimieren durch Investition in gute
Architektur-Planung am Projektanfang•Bei bestehendem Code – schrittweise umstellen
Denn: Änderungen werden kommen!
![Page 37: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/37.jpg)
Aufgabe
•Erstellen einer Web-Anwendung für das fiktive Maklerbüro “Alt & Schimmel GmbH” unter Verwendung von mind. 3 Patterns
•Seite für Kunden mit aktuellen Angeboten•Seiten für Händler zur Pflege der Angebote
•Architekturdiagramm•Beliebige Programmiersprache•Vorstellung der Patterns mit Begründung
![Page 38: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/38.jpg)
Quellen, Lesetipps
•Wikipedia (de, en)•Martin Fowler “Patterns of Enterprise Application
Architecture”•Eric Evans “Domain Driven Design”•http://www.oodesign.com• "Design Patterns. Elements of Reusable Object-Oriented
Software" Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides
![Page 39: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/39.jpg)
Fragen?
(Spätere Fragen einfach per E-Mail an die Adresse auf der Veranstaltungswebsite schicken!)
![Page 40: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/40.jpg)
Vielen Dank!
![Page 41: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor](https://reader033.vdokument.com/reader033/viewer/2022052900/555da878d8b42a257b8b5cea/html5/thumbnails/41.jpg)
www.fio.de