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

Post on 19-May-2018

224 views 2 download

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

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)

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

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity

Typen von „Domänenobjekten“

User Interface

Application

Domain

Infrastructure

Entity

Service

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

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

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

Beispiel: Konferenzsystem

JMatter

Wie können wir „Qualität“ genauer

beschreiben?

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

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...

... 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

... 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

... 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

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

Domain-Model?

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

Domain-Model für Beispiel

FotoidimgData

Metadatenkeyvalue

Lösungsansätze

Lösungsansätze

xnView

Lösungsansätze

xnView Picasa

Lösungsansätze

iPhoto xnView Picasa

Apache PhotArk

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

Fertig?

Neue Anforderungen (1.Fall)...

Neue Anforderungen (1.Fall)...

10.000.000 Benutzer im Web

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!

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!

Neue Anforderungen (2.Fall)...

Neue Anforderungen (2.Fall)...

<100 Benutzer, jeweils < 1 GByte

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

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.

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)

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!

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!

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

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!

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

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

{