Beim Bauen von Software werden tolle Technologien, Programmiersprachen und Tools eingesetzt. Das ist gut und richtig. Aber leider wird dabei oft aus den Augen verloren, dass das Entscheidende nicht die Technik, sondern die *Fachlichkeit* ist. Wenn wir in der Software nicht das fachliche Modell abbilden, dann wird sie unseren Anwendern nicht bei Ihrer Arbeit helfen. Davor schützt uns keine Technologie der Welt. Um das zu verhindern, zeige ich in diesem Vortrag, wie man die Architektur von E-Commerce-Systemen so baut, dass sie die Fachlichkeit darstellt und wie Domain Driven Design (DDD) und Microservices uns dabei helfen können.
5. 19.04.2016 //// Seite 6WPS - Workplace Solutions GmbH
SOFTWARE != SELBSTZWECK
Software ist ein Mittel zum Zweck
Kein Selbstzweck
Das Ziel ist das Ziel
7. 19.04.2016 //// Seite 8WPS - Workplace Solutions GmbH
SOFTWARE UND DOMÄNE
Schreibe Software, die tief in der
Domäne verwurzelt ist!
Software
Domäne
8. 19.04.2016 //// Seite 9WPS - Workplace Solutions GmbH
WAS IST DIE DOMÄNE?
Domäne: Ein abgrenzbares Problemfeld, dem eine Software gewidmet ist
Software entspringt einer Domäne und steht damit in engem Zusammenhang
Es ist verlockend, zu viel Zeit mit dem technischen Code zu verbringen!
9. 19.04.2016 //// Seite 10WPS - Workplace Solutions GmbH
DOMAIN DRIVEN DESIGN ANWENDEN
Zu Beginn eines Softwareprojekts:
Fokussiere die Domäne in der die Software eingesetzt wird
Wie erschafft man Software, die zu einer Domäne passt?
Begreife Software als Reflektion
der Domäne
Lasse Kernkonzepte und
Elemente der Domäne
in die Software einfließen
Realisiere ihre
Zusammenhänge
Erstelle ein Domänenmodell
10. 19.04.2016 //// Seite 11WPS - Workplace Solutions GmbH
DAS MODELL KOMMUNIZIEREN
Das Modell kann nicht nur in unseren Köpfen bestehen
Wir müssen Wissen und Informationen verteilen
Grafisch
Schriftlich
Mündlich
Eine gemeinsame Sprache ist notwendig, um
das Modell ausdrücken zu können
11. 19.04.2016 //// Seite 12WPS - Workplace Solutions GmbH
TECHNISCHE SPRACHE
X
Class
Database
Server
Client
O/R-Mapping
Inheritance
A
B
Method
Interface
Linux
Windows
Eclipse
Visual Studio
13. 19.04.2016 //// Seite 14WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
?
ALLGEGENWÄRTIGE FACHSPRACHE
14. 19.04.2016 //// Seite 15WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
Fach-
sprache
ALLGEGENWÄRTIGE FACHSPRACHE
15. 19.04.2016 //// Seite 16WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
ALLGEGENWÄRTIGE FACHSPRACHE
16. 19.04.2016 //// Seite 17WPS - Workplace Solutions GmbH
Techno
Babble
Fach-
sprache
ALLGEGENWÄRTIGE FACHSPRACHE
17. 19.04.2016 //// Seite 18WPS - Workplace Solutions GmbH
Fach-
sprache
{
Techno
Babble
}
?
ALLGEGENWÄRTIGE FACHSPRACHE
18. 19.04.2016 //// Seite 19WPS - Workplace Solutions GmbH
Fach-
sprache
{
Fach-
sprache
}
ALLGEGENWÄRTIGE FACHSPRACHE
19. 19.04.2016 //// Seite 20WPS - Workplace Solutions GmbH
ALLGEGENWÄRTIGE FACHSPRACHE
Verwende die gemeinsame Sprache in..
der Kommunikation
mündlich
schriftlich
grafisch
im Code
Im Grunde genommen überall
Deswegen nennt sich die Fachsprache allgegenwärtig.
20. 19.04.2016 //// Seite 21WPS - Workplace Solutions GmbH
SPRACHE TAUCHT NICHT EINFACH AUF
Es braucht Wochen bis Monate...
harter Arbeit
und scharfem Fokus
… um die Schlüsselkonzepte offenzulegen.
Die ersten Wörter einer allgemeinen Fachsprache kommen
üblicherweise direkt aus der Domäne
Im laufe der Entwicklung werden neue Begriffe definiert
und hinzugefügt
21. 19.04.2016 //// Seite 22WPS - Workplace Solutions GmbH
DOMÄNEN-SPRACHE
Brett
König
Figuren
Spieler
Schachuhr
22. 19.04.2016 //// Seite 23WPS - Workplace Solutions GmbH
ALLGEGENWÄRTIGE FACHSPRACHE
Brett
Figuren
Spieler
Nichtmenschlicher
Spieler
23. 19.04.2016 //// Seite 24WPS - Workplace Solutions GmbH
SPRACHEN SIND LEBENDIG
Experimentiere mit alternativen Ausdrucksformen
Das Modell und die Sprache entwickeln sich weiter
Überarbeite dann den Code
Benenne Klassen, Methoden, Module
Entspreche dem neuen Modell
Eine Sprache will gesprochen werden:
Beseitige Unklarheiten durch Konversation
25. 19.04.2016 //// Seite 26WPS - Workplace Solutions GmbH
WORKSHOPS ZU PROZESSA- UND ANFORDERUNGS-
ANALYSE MIT ANWENDERN ODER DEM PO
“Georgia?” by The Library of Congress, flickr.com
• Teilnehmer aus verschiedenen Bereichen (Business, IT, Management, …)
• 1 Moderator, 1 Modellierer an der Tastatur
• “live” Modellierung mit einem Projektor
direktes Feedback von allen Beteiligten
26. 19.04.2016 //// Seite 27WPS - Workplace Solutions GmbH
eGPM „Die Methode mit den Männchen“
http://www.omilab.org/web/bpm
Wer tut was
womit und
warum?
27. 19.04.2016 //// Seite 28WPS - Workplace Solutions GmbH
Glossar
• Fachsprache der Benutzer
• bereits existierende Begriffe
• rekonstruierte Begriffe
• neue Begriffsbildungen
• Wer tut was damit warum?
28. 19.04.2016 //// Seite 29WPS - Workplace Solutions GmbH
DIE OBJEKTORIENTIERTE GRUNDIDEE:
FACHLICHE GEGENSTÄNDE ALS AUSGANGSPUNKT
29. 19.04.2016 //// Seite 30WPS - Workplace Solutions GmbH
DIE OBJEKTORIENTIERTE GRUNDIDEE: AUS
FACHLICHEN
GEGENSTÄNDEN WERDEN KLASSEN
Die Artefakte
der Fachdomäne...
... werden in ihrem Verhalten
fachlich modelliert ...
einfügen
beschriften
suchen
entnehmen
Der Kundenordner
... und softwaretechnisch in fachlichen Klassen beschrieben.
beschriften
suchen
Liste der
Dokumente
Zeichenkette
Integer
Klasse Ordner
einfügen (Dokument doc)
{
assert doc!=null, „NN“);
…
docs.add(doc);
}
entnehmen
einfügen
30. 19.04.2016 //// Seite 31WPS - Workplace Solutions GmbH
SCHNITTSTELLEN DER FACHLICHEN KLASSEN
Das Konzept der Modellierung von fachlichen Klassen:
• Wähle anwendungsfachliche Begriffe ( als Substantiv)
• Beschreibe Umgangsformen ( als Verb) und die dabei benötigten
weiteren Gegenstände.
Keine Daten
modellieren.
Ordner
- Dokument entnehmen
- Dokument einfügen
- mit Text beschriften
- Beschriftung?
- Dokument suchen
- Dokument auswählen
- das Register aufschlagen
- voll?
...
31. 19.04.2016 //// Seite 32WPS - Workplace Solutions GmbH
TRENNUNG VON FACHLICHER + TECHNISCHER SOFTWARE
Application Kernel
Persistence
GUI 2
Database
Altsystem B
Altsystem A
Adapter
A
Adapter
B
GUI 1
interfaces submitted to
third parties
Transformations-Software
Technische Software
Vermischte Software
Fachliche Software
32. 19.04.2016 //// Seite 33WPS - Workplace Solutions GmbH
ELEMENTE VON DOMAIN-DRIVEN-DESIGN
Services
Factories
Value Objects
Repositories
Aggregates
Entities
Infrastruktur-
Komponente
"Mikro-Schichtung"
Fachobjekte
Unterstützen den
Lebenszyklus der
Fachobjekte
33. 19.04.2016 //// Seite 34WPS - Workplace Solutions GmbH
DIE FACHLICHEN „KERNELEMENTE“ VON DDD
Services
Value Objects
Entities
zustandslos
veränderlicher
Zustand
unveränderlicher
Zustand
"Mikro-Schichtung"
35. 19.04.2016 //// Seite 36WPS - Workplace Solutions GmbH
ENTITIES
Sind die Kernobjekte einer
Fachdomäne.
Besitzen eine
zustandsunabhängige,
unveränderliche Identität.
Haben einen klar definierten
Lebenszyklus.
Besitzen einen (meist
veränderlichen) Zustand.
Beschreiben ihren Zustand
mithilfe von ValueObjects.
Sind praktisch immer
persistent.
Versicherungs-
nehmer
• Name
• Vorname
• Straße
• PLZ
• Ort
• Versicherungs-
nummer
Beitrags-
zahler
• Name
• Vorname
• IBAN
• BIC
Versicherte
Person
• Name
• Vorname
• Tarif
Forderung
• Geldbetrag
• Fälligkeit
• Schuldner
Bankver-
bindung
• IBAN
• BIC
Person
• Name
• Vorname
✘
✔
37. 19.04.2016 //// Seite 38WPS - Workplace Solutions GmbH
VALUE OBJECTS
Symbolisieren Werte
eines bestimmtenTyps
der Fachdomäne.
Symbolisieren bei
Gleichheit denselben
Wert.
Sind unveränderlich.
Können ggf. (aus
anderen ValueObjects)
berechnet werden.
Können aus anderen
ValueObjects bestehen,
aber nie aus Entitäten!
ValueObject
2,5
ValueObject
ValueObject
ValueObject
ValueObject
zwei-
einhalb
38. 19.04.2016 //// Seite 39WPS - Workplace Solutions GmbH
VALUE OBJECTS – BEISPIELE
Postleitzahl
GPS-Koordinate
IBAN
Containernummer
IATA-Code
39. 19.04.2016 //// Seite 40WPS - Workplace Solutions GmbH
ANEMIC DOMAIN MODEL
„blutarme“ fachliche Objekte
Schnittstelle ohne Aussagekraft
aus Gettern/Settern
Viele String Parameter
Eigentliche Fachlichkeit außerhalb Entities +
Value Objects in Services oder im UI
Oberhalb des Modells findet man Klassen
mit dupliziertem Code zur
Konsistenzprüfung
Konvertierung
Validierung
Viele Util, Helper und Manager Klassen
41. 19.04.2016 //// Seite 42WPS - Workplace Solutions GmbH
UNKLARE STRUKTUREN IN DER ACHITEKTUR
42. 19.04.2016 //// Seite 43WPS - Workplace Solutions GmbH
GROSSE ZYKLEN VERSCHMUTZEN DAS SYSTEM
119 Klassen aus 4 Komponenten
+ 28 weitere Klassen
43. 19.04.2016 //// Seite 44WPS - Workplace Solutions GmbH
GROSSE ZYKLEN VERSCHMUTZEN DAS SYSTEM
327 Klassen aus 8
Komponenten
brauchen sich gegenseitig
45. 19.04.2016 //// Seite 46WPS - Workplace Solutions GmbH
GROSSE PROJEKTE
Erfordern mehrere Teams
Entwicklung findet parallel statt
Jedes Team korrespondiert mit einem Teil des Modells
Ein großes Modell?
46. 19.04.2016 //// Seite 47WPS - Workplace Solutions GmbH
KEIN GROSSES VEREINHEITLICHTES MODELL
Die vollständige Domäne ist zu groß für ein einzelnes Modell
Bewusste Aufspaltung in Teilmodelle
Separate Modelle
können unabhängig entwickelt werden
Müssen den an sie gestellten
Anforderungen genügen
sollten klar abgegrenzt sein
Jedes Modell sollte klein genug sein, so
dass man es einem Team zuweisen kann
47. 19.04.2016 //// Seite 48WPS - Workplace Solutions GmbH
KONTEXTGRENZEN (BOUNDED CONTEXT)
Jedes Modell hat einen Kontext
Kontext = Grundsätzliche Voraussetzungen, damit Begriffe eine bestimmte
Bedeutung erhalten
Wird ein Modell aufgespalten, so ist für jedes Teilmodell eine Kontextdefinition
erforderlich
Setze explizite Grenzen in der…
Organisation von Teams
Benutzung von Teilen der
Applikation
Codebasis
Entwicklung von
Datenbank-Schemas
48. 19.04.2016 //// Seite 49WPS - Workplace Solutions GmbH
LIVING IN A BOX
Erhalte die Konsistenz innerhalb der Grenzen
Keine Ablenkung durch äußere Angelegenheiten
Freie Gestaltung eines Teilmodells durch das zugehörige Team
Kenne die Restriktionen
Bleibe innerhalb der Modellgrenzen
Häufig werden Wertobjekte für die
Kontext-Interkommunikation verwendet
49. 19.04.2016 //// Seite 50WPS - Workplace Solutions GmbH
KONTEXTÜBERSICHT (CONTEXT MAP)
Jedes Team kennt seinen Kontextgrenzen. Wie steht es um die anderen?
Eine Kontextübersicht skizziert
Die verschiedenen abgegrenzten Kontexte
ihre wechselseitigen Beziehungen
Abgegrenzte Kontexte sollten
benannt sein.
50. 19.04.2016 //// Seite 51WPS - Workplace Solutions GmbH
SHARED KERNEL
Teams verwenden mitunter ähnliche Modelle.
Um Duplizierung zu vermeiden, einigen sich diese Teams auf ein gemeinsam
genutztes Teilmodell, den Shared Kernel.
Wird dieser Shared Kernel weiterentwickelt, werden alle beteiligten Teams mit
einbezogen.
Die Kontexte der Teams bleiben weiterhin voneinander abgegrenzt.
Address
Bank Data
51. 19.04.2016 //// Seite 52WPS - Workplace Solutions GmbH
MICROSERVICES AND SELF-CONTAINED SYSTEMS
Micro-
service A
UI
Entities
Value
Objects
Services
Micro-
service B
UI
Entities
Value
Objects
Services
Micro-
service C
UI
Entities
Value
Objects
Services
TechnischeSchichtung
Value
Object
Value
Object
? ?
54. Vielen Dank für Ihre Aufmerksamkeit!
www.langlebige-softwarearchitektur.de
Dr. Carola Lilienthal
Mitglied der
Geschäftsleitung
cl@wps.de
www.wps.de
+49 170 184 77 11
Diplom-Informatikerin
@cairolali