Upload
dinhkhuong
View
217
Download
0
Embed Size (px)
Citation preview
Besser, schöner, schneller
Dr. Gernot Starkewww.arc42.de
www.innoq.com
aktivFellow
gerade frisch...
member of:(co) founder of:
Fellow
Was wollen Stakeholdervon Software?
Was Benutzer wollen...
fast
flexible
foolproof(robust)
nice'n easy(useable)
correctsecure
User
new
features
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
iPhoto xnView Picasa
Fertig?
Build what users want:DDD: Domain Driven Design
User Interface
Application
Domain
Infrastructure
*
*) Eric Evans, Addison Wesley 2004
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
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
fast
flexible
foolproof(robust)
nice'n easy(useable)
correctsecure
User
easy tooperate
System operator or administrator
costeffective
Manager
new
featur
es
newhardware
easy totest
Tester
Was
wol
len
ande
reSt
akeh
olde
r?
Zurück zum Beispiel
iPhoto
FotoidimgData
Metadatenkeyvalue
Neue Anforderungen (1.Fall)...
• 100.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, BASE statt ACID,Übertragungskosten
„fast“ identisches Domain-Model!
FotoidimgData
Metadatenkeyvalue
Owner
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!
FotoidimgData
Metadatenkeyvalue
Owner
Nichtfunktionale Anforderungen
sind schwieriger als funktionale.
riskanter, aufwändiger, komplizierter, komplexer, teurer, schwerer verständlich.
non-functional
functional
Requirements
non-functional
= besser, schöner, schneller
non-functional
Domain-drivenvernachlässigt (oft)
nichtfunktionale Qualitätsmerkmale
Abhilfe:
• Qualitätsziele präzise beschreiben
• Qualität bei Systementwurf explizit berücksichtigen
besser, schöner, schnellerexplizit
konstruieren.
Konstruktion:1.) Ziel / Anforderung festlegen2.) Mit Erfahrung: Maßnahmen definieren3.) do - check- act
QDSA in Action...Qualitätsmerkmal Szenarien Maßnahmen
Änderbarkeit Neue Report über die xy-Ergebnisse (als pdf) in < 10 PT Entwicklungsaufwand
• Reporting-Engine statt selbst definierter Reports• pluggable reports• iText als pdf Bibliothek• pdf Layer zur Flexibilisierung• Reporting-Menü in GUI konfigurierbar gestalten
Erweiterung um mobile Clients beeinträchtigt Performance des Gesamtsystems nicht („normale“ Clients in 90% aller Fälle identisch schnell, in 10% höchstens 25% langsamer als vorher)
• replizierte oder read-only DB für mobile Clients• horizontale Skalierbarkeit der Hardware durch skalierbare Middleware• Betrieb der Serverkomponenten in der Cloud
Sicherheit Vertrauliche Kundendaten dürfen keinem Administrator zugänglich werden
• Einsatz einer NetHSM CryptoBox• User-Password nicht speichern• Trennung von Admin und Leserechten auf DB-Ebene• Entschlüsselte Kundendaten niemals in Dateisystem (auch temporär) ablegen• ExternSecurity-Audit durch Unabhängige
Wie können wir „Qualität“ genauer
beschreiben?
Qualitätsbaumhierarchische Verfeinerung von „Qualität“
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
... 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
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?
• 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)
• Ergänzt Domain Driven Design um explizite Beachtung von Qualitätsanforderungen durch:
• Festlegung von Architekturzielen
• Präzisierung über Qualitätsbaum und Q-Szenarien
• Strategien zur Erreichung von Qualitätsanforderungen
Fazit (1)
•Qualität ist spezifisch und vielseitig.
• Sie kommt NIEMALS von allein!
Fazit (2)
• Konzentration auf Fachlichkeit(á la DDD):
• ist richtig und wichtig
• aber (oft) nicht ausreichend
Fazit (3)
• Ihre Architektur kann an JEDEM Qualitätsziel scheitern!
• Starten Sie deshalb mit expliziten Qualitätszielen
Fazit (4)
• Treffen Sie Ihre Architekturentscheidungen auf Basis eines operationalisierten und priorisierten Qualitätsbaumes
Treffen Sie Ihre Architektur-entscheidungen Basis eines operationalisierten und priorisierten Qualitätsbaumes
Fazit (4)und dokumentieren
1. Einleitung und Ziele1.1 Aufgabenstellung1.2 Stakeholder1.3. Qualitätsziele
2. Randbedingungen3. Kontextabgrenzung4. Lösungsstrategie5. Bausteinsicht6. Laufzeitsicht7. Verteilungssicht8. Typische Strukturen und Muster9. Technische Konzepte10. Entwurfsentscheidungen11. Qualitätsszenarien
{