Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ......

30
Quality-Driven Software Architecture Dr. Peter Hruschka Dr. Gernot Starke www.arc42.de OOP 2011 DDD: Domain Driven Design User Interface Application Domain Infrastructure *) *) Eric Evans, Addison Wesley 2004 Standard-Schichtenmodell: Ausgabe, Kommandos interpretieren Koordination, Delegation (keine Business-Logik) Das Herz des Business Generische techn. Dienste (Persistenz, UI-Widgets, Kommunikation)

Transcript of Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ......

Page 1: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Quality-DrivenSoftware Architecture

Dr. Peter HruschkaDr. Gernot Starke

www.arc42.de

OOP 2011

DDD: Domain Driven Design

User Interface

Application

Domain

Infrastructure

*)

*) Eric Evans, Addison Wesley 2004

Standard-Schichtenmodell:

Ausgabe, Kommandos interpretieren

Koordination, Delegation(keine Business-Logik)

Das Herz des Business

Generische techn. Dienste (Persistenz, UI-Widgets, Kommunikation)

Page 2: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Anwender und Entwickler kommunizieren über eine

„Ubiquitous Language“

User Interface

Application

Domain

Infrastructure

Technische Begriffe

Fachjargon(für Entwicklerunverständlich)

Domänen-begriffe

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Page 3: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity

Service

Page 4: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity ValueObject

Service

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity ValueObject

Service

Aggregate

Page 5: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity ValueObject

Service

Aggregate

Repository

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity ValueObject

Service

Aggregate

Repository

Factory

Page 6: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Model-Driven

Design

Services

Entities

LayeredArchitecture

isoliere Domänemit

beschreibeModell

mit

ValueObjects

Ubiquitous

Language

modellierelaut

Intention-revealingInterfaces

"Geschmeidiger Entwurf"

(supple design)

Bausteine von DDD

Side-EffectFree Functions

Assertions

StandaloneClasses

ConceptualContours

Namenbestimmen

bezieheaus

sichere abund

vereinfache macheSeiteneffekte

explizit

macheKomposition

sicher

Repositories

Factories

Aggregates

verwalte und validiere mit

suche mit

erzeuge mitkapsele

mit

erzeugemit suche mit

DDDFrameworks

NakedObjects

JMatter

Roma-framework

Ruby-on-Rails

Strandz

Trails

ECO

Grails

MDA-tools

www.rails.org

www.nakedobjects.org

www.jmatter.org

www.romaframework.org

www.grails.org

www.trailsframework.org

www.capableobjects.com

www.strandz.org

Page 7: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Beispiel: Konferenzsystem

JMatter

Wie können wir „Qualität“ genauer

beschreiben?

Page 8: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Qualitätsbaumerweitert die Architekturziele um alle interessanten

Qualitätsaspekte

Qualität

Funktiona-lität

Zuverlässig-keit

Benutzbar-keit

Effizienz

Wartbarkeit

Portierbar-keit

*)

z.B. abschreiben von DIN/ISO 9126*)

Qualitätsbaumerweitert die Architekturziele um alle interessanten

Qualitätsaspekte

Qualität

Funktiona-lität

Zuverlässig-keit

Benutzbar-keit

Effizienz

Wartbarkeit

Portierbar-keit

*)

z.B. abschreiben von DIN/ISO 9126*)

Versteh-barkeit

Erlern-barkeit

Bedien-barkeit

Attraktivität

Page 9: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Verfeinern Sie Qualitätsmerkmale ...

z.B. die von VOLERE (www.volere.de)*)

*)

Quality

Look & Feel

Useability

Performance & Safety

Operability

Maintain-ability

Security

...

Verfeinern Sie Qualitätsmerkmale ...

z.B. die von VOLERE (www.volere.de)*)

*)

Quality

Look & Feel

Useability

Performance & Safety

Operability

Maintain-ability

Security

AccessRequirement

Integrity

Privacy

AuditRequirement

ImmunityRequirement...

Page 10: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availability

Security

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availability

Security

DataLatency

TransactionTroughput

Minimize storage latency on Customer DB to 200 ms

Deliver Video in real time

Page 11: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availability

Security

DataLatency

TransactionTroughput

Minimize storage latency on Customer DB to 200 ms

Deliver Video in real time

New Productcategory

ChangeCOTS

Add CORBA middleware in <20 person-months

Change web user interface in <4 person-weeks

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availability

Security

DataLatency

TransactionTroughput

Minimize storage latency on Customer DB to 200 ms

Deliver Video in real time

New Productcategory

ChangeCOTS

Add CORBA middleware in <20 person-months

Change web user interface in <4 person-weeks

HW failure

COTS S/Wfailure

Power outage at Site 1 requires traffic redirect to Site 2 in < 3sec

Restart after disk failure in <5 sec

Network failure is detected and recovered in <1.5 mins

Page 12: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availability

Security

DataLatency

TransactionTroughput

Minimize storage latency on Customer DB to 200 ms

Deliver Video in real time

New Productcategory

ChangeCOTS

Add CORBA middleware in <20 person-months

Change web user interface in <4 person-weeks

HW failure

COTS S/Wfailure

Power outage at Site 1 requires traffic redirect to Site 2 in < 3sec

Restart after disk failure in <5 sec

Network failure is detected and recovered in <1.5 mins

Dataconfidentiality Credit card transactions are secure 99,999% of time

Ein Beispiel

Page 13: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Verwaltung von Fotos...Bilder zufügen

ordnen

Keywords

Metadaten(Datum, Ort, Kamerainfos,...)

Use-Cases für Beispiel

Foto hinzufügen / löschen

Fotos anzeigen

Metadaten für Foto ändern (Ort, Datum, Keywords etc.)

Album anlegen / ändern / löschen

Fotos suchen

Page 14: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Domain-Model?

datum: 24.Mai 2006ort: Fuerteventurafile: dsc02231.jpgalbum: 2006/urlaubkeywords: [family, urlaub]id: 0a7c14592bff34518

Domain-Model für Beispiel

FotoidimgData

Metadatenkeyvalue

Page 15: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Lösungsansätze

Lösungsansätze

xnView

Page 16: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Lösungsansätze

xnView Picasa

Lösungsansätze

iPhoto xnView Picasa

Page 17: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Apache PhotArk

http://incubator.apache.org/photark/photark-architecture-guide.html

Fertig?

Page 18: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Neue Anforderungen (1.Fall)...

Neue Anforderungen (1.Fall)...

10.000.000 Benutzer im Web

Page 19: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Neue Anforderungen (1.Fall)...

10.000.000 Benutzer im Web

jeweils 50 GByte Speicher

Neue Anforderungen (1.Fall)...

10.000.000 Benutzer im Web

jeweils 50 GByte Speicher

Suche (nach Keyword / Metadaten) < 1 sec!

Page 20: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Neue Anforderungen (1.Fall)...

10.000.000 Benutzer im Web

jeweils 50 GByte Speicher

Suche (nach Keyword / Metadaten) < 1 sec!

24 x 7 mit 99,9% Verfügbarkeit

Was nun?Kritische Aufgabenstellungen:

Behandlung SEHR großer Datenmengen

Skalierung der Benutzerzahlen

Hohe Leseperformance

Caching, Replikation, ÜbertragungskostenFotoidimgData

Metadatenkeyvalue

Owner

„fast“ identisches

Domain-Model!

Page 21: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Neue Anforderungen (2.Fall)...

Neue Anforderungen (2.Fall)...

<100 Benutzer, jeweils < 1 GByte

Page 22: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Neue Anforderungen (2.Fall)...

<100 Benutzer, jeweils < 1 GByte

Bilddaten sind streng geheim(„military grade security“)

Neue Anforderungen (2.Fall)...

<100 Benutzer, jeweils < 1 GByte

Bilddaten sind streng geheim(„military grade security“)Dürfen niemals Unbefugten zugänglich werden

Page 23: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Was nun?Kritische Aufgabenstellungen:

Crypto, Key-Management

Identity-Management, Authentisierung

Rechte und Rollen, Administration

FotoidimgData

Metadatenkeyvalue

Owner

wieder:„fast“ identisches Domain-Model!

Nichtfunktionale Anforderungen

sind schwieriger als funktionale.

riskanter, aufwändiger, komplizierter, komplexer, teurer, schwerer verständlich.

Page 24: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Qualitätsbaum für das Beispiel: (2.Fall)

Quality

Performanz

Sicherheit

Daten-volumen

Nutzerzahl

......

......

Geheimhaltung

Nur berechtigte Benutzer dürfen Bilddaten entschlüsseln können - Administratoren NICHT

Benutzer dürfen keine Bilder sehen, für die sie keine ausdrücklichen Berechtigungen besitzen.

Q-Szenario und mögliche Taktiken...

Ziel / Szenario: Nur berechtigte Benutzer dürfen Bilddaten entschlüsseln können - Administratoren NICHT.

Maßnahme: Schlüssel (private-key) zum Entschlüsseln nicht auf dem Server speichern.

Smartcard

Secure-Remote-Password-Protocol (SRP)

Page 25: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Wo lernen Sie Taktiken für NFA‘n?

leider nirgendwo vollständig oder systematisch!

Wo lernen Sie Taktiken für NFA‘n?

Patterns, Pattern-Families

POSA-Bücher (Patterns of Software Architecture), insbesondere zu Security, Resource-Management, Distribution, Concurrency

leider nirgendwo vollständig oder systematisch!

Page 26: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Wo lernen Sie Taktiken für NFA‘n?

Patterns, Pattern-Families

POSA-Bücher (Patterns of Software Architecture), insbesondere zu Security, Resource-Management, Distribution, Concurrency

Global Analysis [Hofmeister]

leider nirgendwo vollständig oder systematisch!

Wo lernen Sie Taktiken für NFA‘n?

Patterns, Pattern-Families

POSA-Bücher (Patterns of Software Architecture), insbesondere zu Security, Resource-Management, Distribution, Concurrency

Global Analysis [Hofmeister]

Quality Tactics [Bass, Clements, Kazman]

leider nirgendwo vollständig oder systematisch!

Page 27: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Qualität mit Methode!Anforderungen

klären...Qualitätsziele

festlegen...

Strukturen entwerfen

Technische Konzepte entwerfen

Architekturkommunizieren

Architekturbewerten

Umsetzungüberwachen

Entscheidungen treffen

...alles klar??

Der Prozess(www.arc42.de)

QDA: Quality Driven Architecture

Ergänzt Domain Driven Design um die explizite und frühzeitige Beachtung von Qualitätsanforderungen

durch Festlegung von Architekturzielen

durch Präzisierung der Architekturziele mittels eines Qualitätsbaumes

durch Strategien zur Erreichung von Qualitätsmerkmalen

Page 28: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Fazit (1)

Qualität ist spezifisch und vielseitig.

Sie kommt NIEMALS von allein!

Fazit (2)

Refactoring ist überbewertet:

Hilft nur selten, Qualitätsziele zu erreichen!

Page 29: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Fazit (3)

Konzentration auf Fachlichkeit(á la DDD):

ist richtig und wichtig

aber (oft) nicht ausreichend

Fazit (4)

Jedes Qualitätsmerkmal kann Ihre Architektur zum Scheitern bringen

Starten Sie deshalb mit expliziten Architekturzielen

Page 30: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools

Fazit (5)

Treffen Sie Ihre Architektur-entscheidungen Basis eines operationalisierten und priorisierten Qualitätsbaumes

Treffen Sie Ihre Architektur-entscheidungen Basis eines operationalisierten und priorisierten Qualitätsbaumes

Fazit (5)und dokumentieren

1. Einleitung und Ziele1.1 Aufgabenstellung1.2 Stakeholder1.3. Architekturziele1.4. Qualitätsbaum

2. Randbedingungen3. Kontextabgrenzung4. Bausteinsicht5. Laufzeitsicht6. Verteilungssicht7. Typische Strukturen und Muster8. Technische Konzepte9. Entwurfsentscheidungen10. Szenarien zur Architekturbewertung

V5.0

{