Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services...

18
Quality-Driven Software Architecture Dr. Peter Hruschka Dr. Gernot Starke 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 - sigs.de · Factory Repository. Model-Driven Design Services...

Page 1: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Quality-DrivenSoftware Architecture

Dr. Peter HruschkaDr. Gernot Starke

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 - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

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

Entity ValueObject

Service

Aggregate

RepositoryFactory

Page 3: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

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 4: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Beispiel: Konferenzsystem

JMatter

Wie können wir „Qualität“ genauer

beschreiben?

Page 5: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

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

AccessRequirement

Integrity

Privacy

AuditRequirement

ImmunityRequirement...

Page 6: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

... bis zu konkreten Szenarien

Quality

Performance

Modifiability

Availabily

Security

DataLatency

TransactionTroughput

Minimize storage latency on Custerome 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 redirectto 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 7: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

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

Ordner anlegen / ändern / löschen

Fotos suchen

Page 8: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Domain-Model?

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

Domain-Model für Beispiel

FotoidimgData

Metadatenkeyvalue

Page 9: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Lösungsansätze

iPhoto xnView Picasa

Apache PhotArk

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

Page 10: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Fertig?

Neue Anforderungen (1)...

10.000.000 Benutzer im Web

jeweils 50 GByte Speicher

Suche (nach Keyword / Metadaten) < 1 sec!

24 x 7 mit 99,9% Verfügbarkeit

Page 11: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

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)...<100 Benutzer, jeweils < 1 GByte

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

24 x 7 mit 99,9% Verfügbarkeit

Page 12: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Was nun?Kritische Aufgabenstellungen:

Crypto, Key-Management

Identity-Management, Authentisierung

Rechte und Rollen, Administration

FotoidimgData

Metadatenkeyvalue

Owner

„fast“ identisches

Domain-Model!

Nichtfunktionale Anforderungen

sind schwieriger als funktionale.

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

Page 13: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Q-Szenario und mögliche Taktiken...

Ziel: Kein Administrator darf in der Lage sein, die auf dem Server gespeicherten Bilddaten zu entschlüsseln.

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!

Patterns, Pattern-Families

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

Global Analysis [Hofmeister]

Quality Tactics [Bass, Clements, Katzman]

Page 14: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Qualität mit Methode!Anforderungen

klären...Qualitätsziele

festlegen...

Strukturen entwerfen

Technische Konzepte entwerfen

Architekturkommunizieren

Architekturbewerten

Umsetzungüberwachen

Entscheidungen treffen

...alles klar??

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 15: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Fazit (1)

Qualität ist spezifisch und vielseitig.

Sie kommt NIEMALS von allein!

Fazit (1b)

Refactoring ist überbewertet:Hilft (nur selten), Qualitätsziele zu erreichen!

Page 16: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Fazit (2)

Die Trennung von Fachlichkeit und Technik (á la DDD)

ist richtig und wichtig

aber (oft) nicht ausreichend

Fazit (3)

Jedes Qualitätsmerkmal kann Ihre Architektur zum Scheitern bringen

Starten Sie deshalb mit expliziten Architekturzielen

Page 17: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Fazit (4)

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 (3)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

{

Page 18: Quality-Driven Software Architecture - sigs.de · Factory Repository. Model-Driven Design Services ... Grails MDA-tools  ... Ergänzt Domain Driven Design um die

Qualitätsbaum für das Beispiel:

Quality

Performanz

Sicherheit

Daten-volumen

Nutzerzahl

......

......