226
@hschwentner IT’S ALL ABOUT THE DOMAIN, HONEY! Fachliche Architektur In hoher Qualitaet durch Domain-Driven design

IT’S ALL ABOUT THE DOMAIN, HONEY! - Entwicklertag · Melvin Conway. Melvin Conway (1967) “Organizations which design systems are constrained to produce designs which are copies

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

@hschwentner

IT’S ALL ABOUT THE DOMAIN, HONEY!

Fachliche Architektur In hoher Qualitaet durch Domain-Driven design

@hschwentner

Was ist dasfür 1 Design?

@hschwentner

Vong Domain her

HENNING

SCHWENTNER

@hschwentner

@hschwentner

speakerdeck.com/hschwentner

Quelle:http://www.schulbilder.org/malvorlage-informatiker-i10418.html

Foto

: H

ennin

g S

chw

entn

er

Fritz&Franz&Lothar&Philipp.

Foto:Steindy/W

ikipedia

Wilhelm Paula Siegfried

Foto:Lotse/W

ikipoe

dia

Vong WPS her

Foto:

Lotse/W

ikip

oedia

@hschwentner

@wps_de

»Business-Softwaredie Spaß macht«

»Business-Softwaredie Spaß macht«

@hschwentner

Inhalt

Domain Model

BausteineDomain EventAggregate

Entity

Value Object

Bounded Context

Strategic Design

Context Mapping

Ubiquitous LanguageDomain Expert

Event Storming

Factory

Tactical Design

MicroservicesCQRS

Hexagonal Architecture

AgileEvent SourcingExtreme Programming

Scrum

Design by Contract

Foto:G

emeinfrei/P

ixabay

Foto:

Rabe!/

Wik

ipedia

Foto:

Xocola

tl/

Wik

ipedia

Ent

wur

f: K

arl P

egla

u/G

emei

nfre

i

@hschwentner

Software != Selbstzweck

?

Software

Domäne

Fach-

wissen

GroßKlein

BIG

Bounded Context

SMALL

public class Konto{

//...}

public class Konto{

public void zahleEin(Betrag b)//...

}

public class Konto{

public void zahleEin(Betrag b)//...public void zahleAus(Betrag b)//...

}

public class Konto{

public void setSaldo(Betrag b)//...

}

public class Konto{

public void setSaldo(Betrag b)//...

}

Fach-sprache

@hschwentner

Technische Sprache

X

Class

Database

Server

Client

O/R-Mapping

Inheritance

A

B

Method

Interface

Linux

Windows

Eclipse

VisualStudio

@hschwentner

Fachsprache

Container

Containernummer

4300

Kran

Twistlock

Frachtbrief

Fachbegriff

Fachbegriff

Technik

Technik

Ubiquitous Language

Allgegenwärtige Sprache

Containernummer

Containernummer

Containernummer

CNR

public class Containernummer{

//...}

Containernummer

public class Containernummer{

//...}

Containernummer

Containernummer

“ThereareonlytwohardthingsinComputerScience:

cacheinvalidationandnamingthings.”

PhilKarlton

“ThereareonlytwohardthingsinComputerScience:

cacheinvalidation,namingthings,

andoff-by-oneerrors.”

PhilKarlton

Brett

König

Figuren

Spieler

Schachuhr

Brett

Figuren

Spieler

Brett

Figuren

Spieler

NichtmenschlicherSpieler

http://www.domainstorytelling.org

http://www.domainstorytelling.org

@hschwentner

Tactical Design

Entity

Auch: Business Object

@hschwentner

Identität

Versicherungspolice

UrlaubsantragBaumaßnahme

Kaufvertrag

Fahrauftrag

Value Object

Postleitzahl

GPS-Koordinate

IBAN

Containernummer

IATA-Code

DomainEvent

AggregateEntity(Wurzel)

Entity

Entity

ValueObjectValueObject

Service

@hschwentner

WAM

Entwurfsmetaphern

Foto:

Dallas M

useum

of

Art/W

ikip

edia

Foto:

Chris

toph M

ichels

/W

ikip

edia

Material

Foto:

MrX/W

ikip

edia

Foto:

Silsor/W

ikip

edia

Werkzeug

Foto:

Wolf

gagn

Lonie

n/W

ikip

edia

Automat

@hschwentner

Material == passiv

Foto:

Chris

toph M

ichels

/W

ikip

edia

Foto:

MrX/W

ikip

edia

@hschwentner

== aktiv

Foto:

Svdm

ole

n/W

ikip

edia

@hschwentner

Strategic Design

“Organizationswhichdesignsystems

areconstrainedtoproducedesigns

whicharecopiesofthe

communicationstructuresof

theseorganizations.”

MelvinConway

MelvinConway

(1967)

“Organizationswhichdesignsystems

areconstrainedtoproducedesigns

whicharecopiesofthe

communicationstructuresof

theseorganizations.”

“Theorganizationofthesoftwareand

theorganizationofthesoftwareteam

willbecongruent.”

EricRaymond

“Ifyouhavefourgroupsworkingonacompiler,

you'llgeta4-passcompiler.”

EricRaymond

Micro-serviceA

UI

Entities

ValueObjects

Services

Micro-serviceB

UI

Entities

ValueObjects

Services

Micro-serviceC

UI

Entities

ValueObjects

Services

Micro-serviceA

Präsentations-Schicht

Fachdomänen-Schicht

Infrastruktur-Schicht

Applikations-Schicht

Micro-serviceB

DirekterZugriffAufdieDB

Micro-serviceC

@hschwentner

Literatur

@hschwentner

speakerdeck.com/hschwentner

https://entwickler.de/online/development/gratis-lesen-entwickler-kiosk-themen-dossier-domain-driven-design-579749361.html

@DDDgerhttps://dddgermany.herokuapp.com

Germanysfirst DDDconference

@hschwentner

Tutorium am Mittwoch

WorkshopDomain-Driven Designkonkret

wps.de/ddd

@hschwentner Foto

: H

ennin

g S

chw

entn

er

@hschwentner

Rabatt!

@hschwentner

FEEDBACK

@hschwentner

Henning Schwentner

[email protected]@hschwentner

�!