41
Software Design und Design Patterns FIO SYSTEMS AG ®

Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Embed Size (px)

DESCRIPTION

Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Citation preview

Page 1: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Software Designund Design Patterns

FIO SYSTEMS AG®

Page 2: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

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

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

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

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

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

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

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

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

Schichtenarchitektur

Page 11: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Schichtenarchitektur

Page 12: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Schichtenarchitektur

Page 13: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

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

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

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

Frontend-Patterns - MVC

Page 17: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Frontend-Patterns - FC

Page 18: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Frontend-Patterns - FC

Code

Page 19: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Frontend-Patterns - PC

Page 20: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Frontend-Patterns - MVP

Page 21: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Frontend-Patterns - MVP

Code

Page 22: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

BLL-Patterns – Service Layer

Page 23: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

BLL-Patterns – Service Layer 2

Page 24: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

BLL-Patterns – Domain Model

Page 25: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

DAL-Patterns – Repository

Page 26: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

DAL-Patterns – Data Mapper

Page 27: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

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

Ü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

Value Object

Page 30: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Data Transfer Object

Page 31: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Factory

Page 32: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Singleton

Page 33: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Observer

Page 34: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Facade

Page 35: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

Proxy

Page 36: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

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

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

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

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

Vielen Dank!

Page 41: Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Patterns vor

www.fio.de