Quality-Driven Software Architecture Dr. Peter Hruschka Dr. Gernot Starke www.arc42.de OOP 2011 DDD: Domain Driven Design *) Standard-Schichtenmodell: User Interface Application Domain Infrastructure *) Eric Evans, Addison Wesley 2004 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 Technische Begriffe Domänenbegriffe Fachjargon (für Entwickler unverständlich) Infrastructure Typen von Domänenobjekten User Interface Application Domain Infrastructure
Typen von Domänenobjekten User Interface Application Entity Domain Infrastructure Typen von Domänenobjekten User Interface Application Entity Service Domain Infrastructure
Typen von Domänenobjekten User Interface Application Entity Value Object Service Domain Infrastructure Typen von Domänenobjekten User Interface Application Entity Value Object Service Domain Aggregate Infrastructure
Typen von Domänenobjekten User Interface Application Entity Value Object Service Domain Aggregate Infrastructure Repository Typen von Domänenobjekten User Interface Application Entity Value Object Service Domain Aggregate Infrastructure Factory Repository
Side-Effect Free Functions mache Komposition sicher sichere ab und vereinfache mache Seiteneffekte explizit Assertions "Geschmeidiger Entwurf" (supple design) Intentionrevealing Interfaces Standalone Classes Conceptual Contours beziehe aus Ubiquitous Language modelliere laut Model-Driven Design Namen bestimmen beschreibe Modell mit isoliere Domäne mit Services Layered Architecture Bausteine von DDD Value Objects Entities suche mit Factories erzeuge mit kapsele mit verwalte und validiere mit Repositories erzeuge mit Aggregates suche mit Grails www.grails.org Ruby-on-Rails www.rails.org NakedObjects www.nakedobjects.org DDD www.trailsframework.org Trails JMatter www.jmatter.org Frameworks Romaframework MDAtools www.romaframework.org Strandz www.strandz.org ECO www.capableobjects.com
JMatter Beispiel: Konferenzsystem Wie können wir Qualität genauer beschreiben?
Qualitätsbaum erweitert die Architekturziele um alle interessanten Qualitätsaspekte *) Qualität Effizienz Wartbarkeit *) z.b. abschreiben von DIN/ISO 9126 Qualitätsbaum erweitert die Architekturziele um alle interessanten Qualitätsaspekte *) Qualität Effizienz Portierbarkeit Verstehbarkeit Erlernbarkeit Bedienbarkeit Attraktivität Wartbarkeit Funktionalität Zuverlässigkeit Benutzbarkeit Portierbarkeit Funktionalität Zuverlässigkeit Benutzbarkeit *) z.b. abschreiben von DIN/ISO 9126
*) Verfeinern Sie Qualitätsmerkmale... Look & Feel Useability Quality Performance & Safety Operability Security... *) z.b. die von VOLERE (www.volere.de) *) Verfeinern Sie Qualitätsmerkmale... Look & Feel Useability Quality Performance & Safety Operability Maintainability Maintainability Security... Access Requirement Integrity Privacy Audit Requirement Immunity Requirement *) z.b. die von VOLERE (www.volere.de)
... bis zu konkreten Szenarien Performance Modifiability Quality Availability Security... bis zu konkreten Szenarien Performance Data Latency Transaction Troughput Minimize storage latency on Customer DB to 200 ms Deliver Video in real time Modifiability Quality Availability Security
... bis zu konkreten Szenarien Performance Data Latency Transaction Troughput Minimize storage latency on Customer DB to 200 ms Deliver Video in real time New Product category Quality Modifiability Change COTS Add CORBA middleware in <20 person-months Change web user interface in <4 person-weeks Availability Security... bis zu konkreten Szenarien Performance Data Latency Transaction Troughput Minimize storage latency on Customer DB to 200 ms Deliver Video in real time New Product category Quality Modifiability Change COTS Add CORBA middleware in <20 person-months Change web user interface in <4 person-weeks Availability HW failure Power outage at Site 1 requires traffic redirect to Site 2 in < 3sec Restart after disk failure in <5 sec COTS S/W failure Network failure is detected and recovered in <1.5 mins Security
... bis zu konkreten Szenarien Performance Data Latency Transaction Troughput Minimize storage latency on Customer DB to 200 ms Deliver Video in real time New Product category Quality Modifiability Change COTS Add CORBA middleware in <20 person-months Change web user interface in <4 person-weeks Availability HW failure Power outage at Site 1 requires traffic redirect to Site 2 in < 3sec Restart after disk failure in <5 sec COTS S/W failure Network failure is detected and recovered in <1.5 mins Security Data confidentiality Credit card transactions are secure 99,999% of time Ein Beispiel
Verwaltung von Fotos... Bilder zufügen Keywords ordnen 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? id: 0a7c14592bff34518 datum: 24.Mai 2006 ort: Fuerteventura file: dsc02231.jpg album: 2006/urlaub keywords: [family, urlaub] Domain-Model für Beispiel id Foto imgdata Metadaten key value
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, Übertragungskosten fast identisches Domain-Model! id Foto imgdata Metadaten key value Owner
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 wieder: fast identisches Domain-Model! Foto id imgdata Owner Metadaten key value Nichtfunktionale Anforderungen sind schwieriger als funktionale. riskanter, aufwändiger, komplizierter, komplexer, teurer, schwerer verständlich.
Qualitätsbaum für das Beispiel: (2.Fall) Performanz Datenvolumen Nutzerzahl...... Quality Sicherheit 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? leider nirgendwo vollständig oder systematisch! Patterns, Pattern-Families POSA-Bücher (Patterns of Software Architecture), insbesondere zu Security, Resource-Management, Distribution, Concurrency
Wo lernen Sie Taktiken für NFA n? leider nirgendwo vollständig oder systematisch! Patterns, Pattern-Families POSA-Bücher (Patterns of Software Architecture), insbesondere zu Security, Resource-Management, Distribution, Concurrency Global Analysis [Hofmeister] Wo lernen Sie Taktiken für NFA n? leider nirgendwo vollständig oder systematisch! 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]
Qualität mit Methode! Anforderungen klären...qualitätsziele festlegen... Entscheidungen treffen Strukturen entwerfen Technische Konzepte entwerfen Architektur kommunizieren Umsetzung überwachen Architektur bewerten...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 Architekturentscheidungen Basis eines operationalisierten und priorisierten Qualitätsbaumes und dokumentieren { Fazit (5) Treffen Sie Ihre Architekturentscheidungen 1. Einleitung Basis und Ziele eines 1.1 Aufgabenstellung operationalisierten 1.2 Stakeholder und priorisierten 1.3. Architekturziele Qualitätsbaumes 1.4. Qualitätsbaum 2. Randbedingungen 3. Kontextabgrenzung 4. Bausteinsicht 5. Laufzeitsicht 6. Verteilungssicht 7. Typische Strukturen und Muster 8. Technische Konzepte 9. Entwurfsentscheidungen 10. Szenarien zur Architekturbewertung V5.0