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
{