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, zeigen wir in diesem Vortrag, wie man die Architektur so baut, dass sie die Fachlichkeit darstellt und wie Domain Driven Design (DDD) und Microservices uns dabei helfen können.
8. 30.03.2017 //// Seite 9WPS - Workplace Solutions GmbH
SOFTWARE != SELBSTZWECK
Software ist ein Mittel zum Zweck
Kein Selbstzweck
Das Ziel ist das Ziel
9. 30.03.2017 //// Seite 10WPS - Workplace Solutions GmbH
SOFTWARE UND DOMÄNE
Schreibe Software, die tief
in der Domäne verwurzelt
ist!
Software
Domäne
10. 30.03.2017 //// Seite 11WPS - 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
11. 30.03.2017 //// 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. 30.03.2017 //// Seite 14WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
?
UBIQUITOUS LANGUAGE
14. 30.03.2017 //// Seite 15WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
Fach-
sprache
UBIQUITOUS LANGUAGE
15. 30.03.2017 //// Seite 16WPS - Workplace Solutions GmbH
Fach-
sprache
Techno
Babble
UBIQUITOUS LANGUAGE
16. 30.03.2017 //// Seite 17WPS - Workplace Solutions GmbH
Techno
Babble
Fach-
sprache
UBIQUITOUS LANGUAGE
17. 30.03.2017 //// Seite 18WPS - Workplace Solutions GmbH
Fach-
sprache
{
Techno
Babble
}
?
UBIQUITOUS LANGUAGE
18. 30.03.2017 //// Seite 19WPS - Workplace Solutions GmbH
Fach-
sprache
{
Fach-
sprache
}
UBIQUITOUS LANGUAGE
19. 30.03.2017 //// Seite 20WPS - Workplace Solutions GmbH
UBIQUITOUS LANGUAGE
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. 30.03.2017 //// 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. 30.03.2017 //// Seite 22WPS - Workplace Solutions GmbH
DOMÄNEN-SPRACHE
Brett
König
Figuren
Spieler
Schachuhr
22. 30.03.2017 //// Seite 23WPS - Workplace Solutions GmbH
ALLGEGENWÄRTIGE FACHSPRACHE
Brett
Figuren
Spieler
Nichtmenschlicher
Spieler
23. 30.03.2017 //// 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. 30.03.2017 //// Seite 26WPS - Workplace Solutions GmbH
GLOSSAR
Fachsprache der Benutzer/Ubiquitous Language
• bereits existierende Begriffe
• rekonstruierte Begriffe
• neue Begriffsbildungen
•Wer tut was damit wozu?
Kernkonzepte
Wichtiger am Anfang des Projektes
Oft Wegwerfprodukt
26. 30.03.2017 //// Seite 27WPS - Workplace Solutions GmbH
WIE LERNEN WIR DIE FACHLICHKEIT?
Durch die Fachexperten (domain experts)
Sie haben das Wissen
Worum es bei ihrer Arbeit geht
Wo die Software sie unterstützen kann
Auch wenn sie das Wissen nicht selbständig aufschreiben bzw. abstrahieren
können
Wer die Fachlichkeit nicht
versteht, kann ihr nicht
helfen
Softwareentwickler und
Fachexperten bilden
zusammen das Team
27. 30.03.2017 //// Seite 28WPS - Workplace Solutions GmbH
WIE KOMMEN WIR AN DAS WISSEN DER FACHEXPERTEN?
Welche Techniken gibt es?
Interviews
Use Cases + Szenarien
Workshops
Event Storming
Domain Storytelling
Das wollen wir
extrahieren!
Fach-
wissen
28. 30.03.2017 //// Seite 29WPS - Workplace Solutions GmbH
WORKSHOPS MIT ANWENDERN UND PRODUCT OWNERN
“Georgia?” by The Library of Congress, flickr.com
• Teilnehmer aus verschiedenen Bereichen (Business, IT, Management, …)
• ein Moderator für den Workshop
direktes Feedback von allen Beteiligten
29. 30.03.2017 //// Seite 30WPS - Workplace Solutions GmbH
EVENT STORMING
Eine Methode um Geschäftsprozesse zu modellieren
Modelliert werden:
Domain Events
Commands
Acteure
Aggregate
32. 30.03.2017 //// Seite 33WPS - Workplace Solutions GmbH
TAKTISCHES UND STRATEGISCHES MODELLIEREN
DDD gibt Anleitung für Modellierung im Großen und im Kleinen
Strategisches Modellieren
Teile die Domäne in getrennte Bounded Contexts auf
Jeder BC hat sein eigenes Fachmodell und seine eigene Allgegenwärtige
Sprache
Context Mapping hilft die Beziehungen zwischen Bounded Contexts zu
verstehen
Taktisches Modellieren
Innerhalb eines Bounded Context
Building Blocks: Entity, Value Object,
Aggregate, Service, Repository, Factory
33. 30.03.2017 //// Seite 34WPS - Workplace Solutions GmbH
GROSSE PROJEKTE
Erfordern mehrere Teams
Entwicklung findet parallel statt
Jedes Team korrespondiert mit einem Teil des Modells
Ein großes Modell?
34. 30.03.2017 //// Seite 35WPS - Workplace Solutions GmbH
DAS GROSSE VEREINHEITLICHTE MODELL
Umfasst die vollständige Domäne eines Unternehmens
Ein schwer erreichbares Ideal
Oft nicht lohnenswert anzuvisieren
Hoher Koordinationsaufwand in Teams
Führt oft zu einem big ball of mud
35. 30.03.2017 //// Seite 36WPS - 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
36. 30.03.2017 //// Seite 37WPS - Workplace Solutions GmbH
WIE SCHNEIDE ICH MEINE DOMÄNE?
Nach Unterschieden in der Verwendung von Begriffen der Ubiquitous Language
Nach Grenzen im Geschäftsprozess, die die Domänenexperten beschreiben
Nach Abteilungen in der Organisation bzw. Gruppen von Domänenexperten
NICHT: Nach Entities
oder Aggregaten!
37. 30.03.2017 //// Seite 38WPS - Workplace Solutions GmbH
BEISPIEL – BOUNDED CONTEXTE
NACH ABTEILUNG UND NACH PROZESS
VERTRIEB
Buchhaltung
HR
38. 30.03.2017 //// Seite 39WPS - 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
39. 30.03.2017 //// Seite 40WPS - Workplace Solutions GmbH
JEDER BOUNDED CONTEXT HAT SEIN EIGENES
MODELL
40. 30.03.2017 //// Seite 41WPS - Workplace Solutions GmbH
Subdomänen
Kern (Core Domain)
Unterstützende (Supporting Domain)
Allgemeine (Generic Domain)
Context Mapping
Shared Kernel
Customer/Supplier
Open-Host-Service
Published Language
Separate Ways
Anticorruption Layer
STRATEGISCHES DESIGN – WEITERE BEGRIFFE
41. 30.03.2017 //// Seite 42WPS - Workplace Solutions GmbH
DER PREIS FÜR DOMÄNENMODELLE
Zusätzliche Arbeit
Definition der Modellgrenzen
Definition der Beziehungen zwischen verschiedenen Modellen (Context
Mapping)
Abbildungen zwischen verschiedenen Modellen
Objekte können nicht zwischen den BC transportiert werden
42. 30.03.2017 //// Seite 43WPS - Workplace Solutions GmbH
WAS WIR NICHT BAUEN WOLLEN
✘
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
Viele Util, Helper und Manager Klassen