Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728...

50
Hände waschen, Zähne putzen (manchmal) vergessene Grundlagen des Software Engineering Dr. Gernot Starke Fellow

Transcript of Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728...

Page 1: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Hände waschen,Zähne putzen(manchmal) vergesseneGrundlagen des Software Engineering

Dr. Gernot StarkeFellow

Page 2: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Dr. Gernot StarkeinnoQ Fellow

+49 177 – 728 [email protected]

üArchitektur-Verbesserer

üCoach, Trainer

üarc42, aim42

ü iSAQB e.V.

Page 3: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Warum?Mangel an gMV!

Page 4: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,
Page 5: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

tZeit

nano, micro, milli, Sek, Min

Page 6: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Phot

oby

Veri

Ivan

ova

on U

nspl

ash

Page 7: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Zeit• 1 Sekunde = 1.000.000.000 Nanosekunden• Taktfrequenz 1 GHz ->

Taktdauer 1 Nanosekunde

• Licht: pro Nanosekunde ca. 20cm

t

Page 8: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

x eine Milliarde

Photo by Austin Ban on Unsplash

L1 cache reference (0.5 ns) 1x klatschen

t

Page 9: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Main Memory Access (100nSec)

Zähne putzen

Photo: M. Zomer, Pexelshttps://www.pexels.com/photo/adorable-animal-animal-portrait-blur-422212/

t

Page 10: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

3kByte komprimieren(3 !Sec) Folge „Tatort“

Photo: http://www.daserste.de/unterhaltung/krimi/tatort/tatort-logo-twitter-100~_v-facebook1200_748594.jpg

t

Page 11: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

2kB via 1 Gbps Netzwerk senden(20!Sec)

t

Page 12: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

SSD Random Read(150 !Sec)

5 Staffeln„Breaking Bad“(ca. 36h)

Photo by Alex Plesovskich on Unsplash

t

Page 13: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

1MByte SequentialRead from SSD(1 mSec)

Lange Rad fahren...(ca. 12 Tage)

t

Page 14: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Hard-Drive Disk Seek(10 mSec == 10.000.000nSec)

Ein Semesterstudieren...

t

Page 16: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

IP RoundtripEU – California - EU(150 mSec)

Bachelor-Studium...(ca. 4.8 Jahre)

https://www.hkdm.de/news-detail/news/bachelor-abschlussveranstaltung-der-hkdm-am-6-juli-2017/

t

Page 18: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Hardware Reboot(40 sec) 1300 Jahre

Merowinger, Karolinger,Byzantinisches Reich...

Photo: Rudolf Kirchner, Pexelshttps://www.pexels.com/photo/gray-castle-under-cloudy-sky-

831082/

t

Page 19: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Zeit (Quellen)• L1 cache reference ......................... 0.5 ns

• Compress 1K bytes with Zippy ............. 3,000 ns = 3 µs• Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 µs

• SSD random read ........................ 150,000 ns = 150 µs• Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs• Round trip within same datacenter ...... 500,000 ns = 0.5 ms

• Read 1 MB sequentially from SSD ..... 1,000,000 ns = 1 ms• Disk seek ........................... 10,000,000 ns = 10 ms

• Read 1 MB sequentially from disk .... 20,000,000 ns = 20 ms• Send packet CA->Netherlands->CA .... 150,000,000 ns = 150 ms

https://gist.github.com/jboner/2841832https://dzone.com/articles/every-programmer-should-know

Page 20: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

ModularGeheimnisprinzip

zusammensetzbararbeitsteilig

Page 21: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

ModularitätM

Systeme(hier: Produkte)

aus kleineren Einheiten(Modulen, Komponenten, Services etc.)

zusammensetzen

Page 22: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

ModularitätM

Systeme(hier: Produkte)

aus kleineren Einheiten(Modulen, Komponenten, Services etc.)

zusammensetzenVerständlichÄnderbarEinfach

SicherRobustVerlässlichPortabelGünstigAnalysierbarKorrekt...

Siehe:KohäsionKopplung

Page 23: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

ModularitätM

Systeme(hier: Produkte)

aus kleineren Einheiten(Modulen, Komponenten, Services etc.)

zusammensetzen

Beispiel: AKKA

https://doc.akka.io/docs/akka/2.5.5/scala/stream/stream-composition.html

Page 24: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

ModularitätM

Systeme(hier: Produkte)

aus kleineren Einheiten(Modulen, Komponenten, Services etc.)

zusammensetzen SchnittstellenProtokolleFormateKonzepte/Prinzipien

Siehe:KonsistenzKISSKoDrA

Page 25: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

6KSechs K-Worte

Komplexität, Kompliziertheit, Kopplung, Kohäsion, Konsistenz,

KoDrA

Page 26: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,

KoDrA

6K

Page 27: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

komplexkomplizierteinfach

chaotisch

Technologie

Anfo

rder

unge

n /

Ges

chäf

tspr

ozes

se

sehr unsicher

sehr sicher

kaumverstanden

gutverstanden

kompl{iziert|ex}6K

Page 28: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

KISS (keep it stupid simple)

6K

komplizierteinfach

sehr sicher

gutverstanden

Photo by Tom Roberts on Unsplash

Page 29: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

KISS (keep it stupid simple)

6K

Artefakt KISS...Code • Idiomatisch

• Ähnlich (homogen)• Kurz (aber nicht zu...)• Linear (wenig Verzweigung)• Wenige Zustände

(Werte besser als Variablen)• Redundanzarm

Page 30: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

KISS (keep it stupid simple)

6K

Artefakt KISS...Komponenten • Wenig Kopplung

• Hohe Kohäsion• Hierarchie• Ähnlich (homogen)• prinzipien-/mustertreu

Page 31: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

KISS (keep it stupid simple)

6K

Adam Tornhill: Your Code as a Crime Scene

Page 32: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

KISS (keep it stupid simple)

6K

Artefakt KISS...Kommunikation(zw Komponenten)

• Ähnlich (homogen)• Wenig Zustände

Prozesse • Feedback(häufig + kurzfristig)

• Ergebnisse statt Artefakte

Page 33: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,

KoDrA

6K

Page 34: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kohäsion 6K

Was gehört zusammen?

ABX

ABXCD

AB

CD

AB CDX

BX

A

X

Page 35: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kohäsion braucht Kriterien

6K

Form...

AB

X

AB

X

CD

AB

CD

AB

CDX

BX

AX

AB

X

AB

X

CD

AB

CD

AB

CD

X

B

X

A

X

Farbe... Text... Größe...

AB XAB

XCD ABCD

AB CDX

BX AXAB

X

AB

X

CD

AB

CD

AB

CD

X

B

X

A

X

Daten, Funktionen, Zeit, Ort, Technologie, Stakeholder, Hardware, Verteilung, Organisation, Grösse, Vertraulichkeit Qualitätsanforderungen, Ertrag, Politik, <…>

Page 36: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kompliziertheit, Komplexität, Konsistenz, Kopplung,Kohäsion,

KoDrA

6K

Page 37: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kopplunga.k.a. Abhängigkeit

6K

need have?

Page 38: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kopplung6K

need have

AufrufEventbesitztenthält

syncasyncidempotentbeschränkt

HardwareDatenZeit

Page 39: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,

KoDrA

6K

Page 40: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kommt Drauf An6K

Page 41: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kommt Drauf An6K

RisikoGrößeOrganisationTeamKomplexitätUmfeld / KontextLegacyFormalismusRandbedingungen

ANGEMESSENHEIT

Page 42: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Kompliziertheit, Komplexität, Konsistenz,Kopplung, Kohäsion,

KoDrA

6K

Page 43: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Konsistenz a.k.a. konzeptionelle Integrität

6KPh

oto

bySa

mue

l Zel

lero

nUn

spla

shPhoto

byA

shim D

’Silvaon U

nsplash

Page 44: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Konsistenz6K

Innere Ordnung (Homogenität, Einfachheit)

besitztwirtschaftlichen + technischen

Wert

Page 45: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Aufgabenrepeat {

listen, ask, think, discuss, decide, code}

Page 46: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Reality sucks (1)A

repeat {beeing-shouted-atdefendcode

}

Page 48: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Reality should...A

repeat {listenask, get answersthinkdiscussdecidecode

}

Page 49: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Reality should (2)...A

repeat {listenask, get answersthinkdiscussdecidecode

}

Architektur bewerten

Anforderungen und Randbedingungen klären

QuerschnittlicheKonzepteentwerfen

Umsetzung begleiten

Architektur kommunizieren

Strukturenentwerfen

Page 50: Java Forum Stuttgart 2020 - Händewaschen, Zähne …Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com üArchitektur - Verbesserer üCoach, Trainer üarc42,

Zwischentitel 1