Hände waschen,Zähne putzen(manchmal) vergesseneGrundlagen des Software Engineering
Dr. Gernot StarkeFellow
Dr. Gernot StarkeinnoQ Fellow
+49 177 – 728 [email protected]
üArchitektur-Verbesserer
üCoach, Trainer
üarc42, aim42
ü iSAQB e.V.
Warum?Mangel an gMV!
tZeit
nano, micro, milli, Sek, Min
Phot
oby
Veri
Ivan
ova
on U
nspl
ash
Zeit• 1 Sekunde = 1.000.000.000 Nanosekunden• Taktfrequenz 1 GHz ->
Taktdauer 1 Nanosekunde
• Licht: pro Nanosekunde ca. 20cm
t
x eine Milliarde
Photo by Austin Ban on Unsplash
L1 cache reference (0.5 ns) 1x klatschen
t
Main Memory Access (100nSec)
Zähne putzen
Photo: M. Zomer, Pexelshttps://www.pexels.com/photo/adorable-animal-animal-portrait-blur-422212/
t
3kByte komprimieren(3 !Sec) Folge „Tatort“
Photo: http://www.daserste.de/unterhaltung/krimi/tatort/tatort-logo-twitter-100~_v-facebook1200_748594.jpg
t
2kB via 1 Gbps Netzwerk senden(20!Sec)
t
SSD Random Read(150 !Sec)
5 Staffeln„Breaking Bad“(ca. 36h)
Photo by Alex Plesovskich on Unsplash
t
1MByte SequentialRead from SSD(1 mSec)
Lange Rad fahren...(ca. 12 Tage)
t
Hard-Drive Disk Seek(10 mSec == 10.000.000nSec)
Ein Semesterstudieren...
t
1.1MB sequentiell von Disk lesen(20 mSec) 9 Monate...
Photo by Patrick Lindenberg on Unsplash
Photo by Tim Bish on Unsplash
t
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
Jekyll Generator (single) page regenerate(2 Sec)
Rentenalter...(ca. 63 Jahre)
Photo byAlex HarveyonUnsplash
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
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
ModularGeheimnisprinzip
zusammensetzbararbeitsteilig
ModularitätM
Systeme(hier: Produkte)
aus kleineren Einheiten(Modulen, Komponenten, Services etc.)
zusammensetzen
ModularitätM
Systeme(hier: Produkte)
aus kleineren Einheiten(Modulen, Komponenten, Services etc.)
zusammensetzenVerständlichÄnderbarEinfach
SicherRobustVerlässlichPortabelGünstigAnalysierbarKorrekt...
Siehe:KohäsionKopplung
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
ModularitätM
Systeme(hier: Produkte)
aus kleineren Einheiten(Modulen, Komponenten, Services etc.)
zusammensetzen SchnittstellenProtokolleFormateKonzepte/Prinzipien
Siehe:KonsistenzKISSKoDrA
6KSechs K-Worte
Komplexität, Kompliziertheit, Kopplung, Kohäsion, Konsistenz,
KoDrA
Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,
KoDrA
6K
komplexkomplizierteinfach
chaotisch
Technologie
Anfo
rder
unge
n /
Ges
chäf
tspr
ozes
se
sehr unsicher
sehr sicher
kaumverstanden
gutverstanden
kompl{iziert|ex}6K
KISS (keep it stupid simple)
6K
komplizierteinfach
sehr sicher
gutverstanden
Photo by Tom Roberts on Unsplash
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
KISS (keep it stupid simple)
6K
Artefakt KISS...Komponenten • Wenig Kopplung
• Hohe Kohäsion• Hierarchie• Ähnlich (homogen)• prinzipien-/mustertreu
KISS (keep it stupid simple)
6K
Adam Tornhill: Your Code as a Crime Scene
KISS (keep it stupid simple)
6K
Artefakt KISS...Kommunikation(zw Komponenten)
• Ähnlich (homogen)• Wenig Zustände
Prozesse • Feedback(häufig + kurzfristig)
• Ergebnisse statt Artefakte
Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,
KoDrA
6K
Kohäsion 6K
Was gehört zusammen?
ABX
ABXCD
AB
CD
AB CDX
BX
A
X
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, <…>
Kompliziertheit, Komplexität, Konsistenz, Kopplung,Kohäsion,
KoDrA
6K
Kopplunga.k.a. Abhängigkeit
6K
need have?
Kopplung6K
need have
AufrufEventbesitztenthält
syncasyncidempotentbeschränkt
HardwareDatenZeit
Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion,
KoDrA
6K
Kommt Drauf An6K
Kommt Drauf An6K
RisikoGrößeOrganisationTeamKomplexitätUmfeld / KontextLegacyFormalismusRandbedingungen
ANGEMESSENHEIT
Kompliziertheit, Komplexität, Konsistenz,Kopplung, Kohäsion,
KoDrA
6K
Konsistenz a.k.a. konzeptionelle Integrität
6KPh
oto
bySa
mue
l Zel
lero
nUn
spla
shPhoto
byA
shim D
’Silvaon U
nsplash
Konsistenz6K
Innere Ordnung (Homogenität, Einfachheit)
besitztwirtschaftlichen + technischen
Wert
Aufgabenrepeat {
listen, ask, think, discuss, decide, code}
Reality sucks (1)A
repeat {beeing-shouted-atdefendcode
}
Reality sucks (2)A
repeat {listenask, no answerguesscode
}
Photo by conner bowe on Unsplash
Reality should...A
repeat {listenask, get answersthinkdiscussdecidecode
}
Reality should (2)...A
repeat {listenask, get answersthinkdiscussdecidecode
}
Architektur bewerten
Anforderungen und Randbedingungen klären
QuerschnittlicheKonzepteentwerfen
Umsetzung begleiten
Architektur kommunizieren
Strukturenentwerfen
Zwischentitel 1