besser, schöner, schneller - dotnet-zentral.ch · repository factory. model-driven design ... ...

24
Besser, schöner, schneller Dr. Gernot Starke www.arc42.de www.innoq.com aktiv Fellow

Upload: dinhkhuong

Post on 19-May-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Besser, schöner, schneller

Dr. Gernot Starkewww.arc42.de

www.innoq.com

aktivFellow

Page 2: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

gerade frisch...

member of:(co) founder of:

Fellow

Page 3: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Was wollen Stakeholdervon Software?

Was Benutzer wollen...

fast

flexible

foolproof(robust)

nice'n easy(useable)

correctsecure

User

new

features

Page 4: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Ein Beispiel

Verwaltung von Fotos...Bilder zufügen

ordnen

Keywords

Metadaten(Datum, Ort, Kamerainfos,...)

Page 5: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 6: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Domain-Model für Beispiel

FotoidimgData

Metadatenkeyvalue

Lösungsansätze

iPhoto xnView Picasa

Page 7: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Fertig?

Build what users want:DDD: Domain Driven Design

User Interface

Application

Domain

Infrastructure

*

*) Eric Evans, Addison Wesley 2004

Page 8: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 9: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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 10: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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?

Page 11: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 12: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 13: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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.

Page 14: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

non-functional

functional

Requirements

non-functional

= besser, schöner, schneller

Page 15: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

non-functional

Domain-drivenvernachlässigt (oft)

nichtfunktionale Qualitätsmerkmale

Page 16: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

Abhilfe:

• Qualitätsziele präzise beschreiben

• Qualität bei Systementwurf explizit berücksichtigen

besser, schöner, schnellerexplizit

konstruieren.

Page 17: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 18: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 19: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 20: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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!

Page 21: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 22: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 23: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

Page 24: Besser, schöner, schneller - dotnet-zentral.ch · Repository Factory. Model-Driven Design ...   ... •Ergänzt Domain Driven Design um explizite

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

{