quality-driven software architecture · ddd: domain driven design user interface application ......
TRANSCRIPT
![Page 1: Quality-Driven Software Architecture · DDD: Domain Driven Design User Interface Application ... Repository Typen von ... Grails MDA-tools](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/10.jpg)
... 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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/11.jpg)
... 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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/12.jpg)
... 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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022011801/5affaf907f8b9a256b8ee277/html5/thumbnails/30.jpg)
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
{