3. Was ist gutes Design?
•Einfach
•Modular
•Gekapselt
•Erweiterbar
•Stabil
•Zweckmäßig
4. Typische Probleme
•Frontend == Anwendung
•Prozeduraler Code
•Code Duplication
•Architektur, die nicht zum Problem passt
•Pattern madness
•Design for the unpredictable
5. Typische Probleme
●
Untestbar / keine Unit-Tests
●
Spaghetti-Code
Folge:
●
hohe Wartungs- und Pflegekosten
●
ineffektive Erweiterungen
●
hohe Fehlerquote
●
Demotivation
●
Enge Kopplung
13. 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
14. 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.
36. 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!
37. 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
38. 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