Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 [email protected] üArchitektur- Verbesserer üCoach, Trainer üarc42, aim42 üiSAQB e.V.

Slide 3

Slide 3 text

Warum? Mangel an gMV!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

t Zeit nano, micro, milli, Sek, Min

Slide 6

Slide 6 text

Photo by Veri Ivanova on Unsplash

Slide 7

Slide 7 text

Zeit • 1 Sekunde = 1.000.000.000 Nanosekunden • Taktfrequenz 1 GHz -> Taktdauer 1 Nanosekunde • Licht: pro Nanosekunde ca. 20cm t

Slide 8

Slide 8 text

x eine Milliarde Photo by Austin Ban on Unsplash L1 cache reference (0.5 ns) 1x klatschen t

Slide 9

Slide 9 text

Main Memory Access (100nSec) Zähne putzen Photo: M. Zomer, Pexels https://www.pexels.com/photo/adorable-animal-animal-portrait-blur-422212/ t

Slide 10

Slide 10 text

3kByte komprimieren (3 !Sec) Folge „Tatort“ Photo: http://www.daserste.de/unterhaltung/krimi/tatort/tatort-logo-twitter- 100~_v-facebook1200_748594.jpg t

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

SSD Random Read (150 !Sec) 5 Staffeln „Breaking Bad“ (ca. 36h) Photo by Alex Plesovskich on Unsplash t

Slide 13

Slide 13 text

1MByte Sequential Read from SSD (1 mSec) Lange Rad fahren... (ca. 12 Tage) t

Slide 14

Slide 14 text

Hard-Drive Disk Seek (10 mSec == 10.000.000nSec) Ein Semester studieren... t

Slide 15

Slide 15 text

1.1MB sequentiell von Disk lesen (20 mSec) 9 Monate... Photo by Patrick Lindenberg on Unsplash Photo by Tim Bish on Unsplash t

Slide 16

Slide 16 text

IP Roundtrip EU – 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

Slide 17

Slide 17 text

Jekyll Generator (single) page regenerate (2 Sec) Rentenalter... (ca. 63 Jahre) Photo byAlex HarveyonUnsplash

Slide 18

Slide 18 text

Hardware Reboot (40 sec) 1300 Jahre Merowinger, Karolinger, Byzantinisches Reich... Photo: Rudolf Kirchner, Pexels https://www.pexels.com/photo/gray-castle-under-cloudy-sky- t

Slide 19

Slide 19 text

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/2841832 https://dzone.com/articles/every-programmer-should-know

Slide 20

Slide 20 text

Modular Geheimnisprinzip zusammensetzbar arbeitsteilig

Slide 21

Slide 21 text

Modularität M Systeme (hier: Produkte) aus kleineren Einheiten (Modulen, Komponenten, Services etc.) zusammensetzen

Slide 22

Slide 22 text

Modularität M Systeme (hier: Produkte) aus kleineren Einheiten (Modulen, Komponenten, Services etc.) zusammensetzen Verständlich Änderbar Einfach Sicher Robust Verlässlich Portabel Günstig Analysierbar Korrekt ... Siehe: Kohäsion Kopplung

Slide 23

Slide 23 text

Modularität M 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

Slide 24

Slide 24 text

Modularität M Systeme (hier: Produkte) aus kleineren Einheiten (Modulen, Komponenten, Services etc.) zusammensetzen Schnittstellen Protokolle Formate Konzepte/Prinzipien Siehe: Konsistenz KISS KoDrA

Slide 25

Slide 25 text

6K Sechs K-Worte Komplexität, Kompliziertheit, Kopplung, Kohäsion, Konsistenz, KoDrA

Slide 26

Slide 26 text

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion, KoDrA 6K

Slide 27

Slide 27 text

kom plex kom pliziert einfach chaotisch Technologie Anforderungen / Geschäftsprozesse sehr unsicher sehr sicher kaum verstanden gut verstanden kompl{iziert|ex} 6K

Slide 28

Slide 28 text

KISS (keep it stupid simple) 6K kom pliziert einfach sehr sicher gut verstanden Photo by Tom Roberts on Unsplash

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

KISS (keep it stupid simple) 6K Artefakt KISS... Komponenten • Wenig Kopplung • Hohe Kohäsion • Hierarchie • Ähnlich (homogen) • prinzipien-/mustertreu

Slide 31

Slide 31 text

KISS (keep it stupid simple) 6K Adam Tornhill: Your Code as a Crime Scene

Slide 32

Slide 32 text

KISS (keep it stupid simple) 6K Artefakt KISS... Kommunikation (zw Komponenten) • Ähnlich (homogen) • Wenig Zustände Prozesse • Feedback (häufig + kurzfristig) • Ergebnisse statt Artefakte

Slide 33

Slide 33 text

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion, KoDrA 6K

Slide 34

Slide 34 text

Kohäsion 6K Was gehört zusammen? AB X AB X CD AB CD AB CD X B X A X

Slide 35

Slide 35 text

Kohäsion braucht Kriterien 6K Form... AB X AB X CD AB CD AB CD X B X A X AB X AB X CD AB CD AB CD X B X A X Farbe... Text... Größe... AB X AB X CD AB CD AB CD X B X A X AB 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, <…>

Slide 36

Slide 36 text

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion, KoDrA 6K

Slide 37

Slide 37 text

Kopplung a.k.a. Abhängigkeit 6K need have ?

Slide 38

Slide 38 text

Kopplung 6K need have Aufruf Event besitzt enthält sync async idempotent beschränkt Hardware Daten Zeit

Slide 39

Slide 39 text

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion, KoDrA 6K

Slide 40

Slide 40 text

Kommt Drauf An 6K

Slide 41

Slide 41 text

Kommt Drauf An 6K Risiko Größe Organisation Team Komplexität Umfeld / Kontext Legacy Formalismus Randbedingungen ANG EME SSEN HEIT

Slide 42

Slide 42 text

Kompliziertheit, Komplexität, Konsistenz, Kopplung, Kohäsion, KoDrA 6K

Slide 43

Slide 43 text

Konsistenz a.k.a. konzeptionelle Integrität 6K Photo by Samuel Zeller on Unsplash Photo by Ashim D’Silva on Unsplash

Slide 44

Slide 44 text

Konsistenz 6K Innere Ordnung (Homogenität, Einfachheit) besitzt wirtschaftlichen + technischen Wert

Slide 45

Slide 45 text

Aufgaben repeat { listen, ask, think, discuss, decide, code }

Slide 46

Slide 46 text

Reality sucks (1) A repeat { beeing-shouted-at defend code }

Slide 47

Slide 47 text

Reality sucks (2) A repeat { listen ask, no answer guess code } Photo by conner bowe on Unsplash

Slide 48

Slide 48 text

Reality should... A repeat { listen ask, get answers think discuss decide code }

Slide 49

Slide 49 text

Reality should (2)... A repeat { listen ask, get answers think discuss decide code } Architektur bewerten Anforderungen und Randbedingungen klären Querschnittliche Konzepte entwerfen Umsetzung begleiten Architektur kommunizieren Strukturen entwerfen

Slide 50

Slide 50 text

Zwischentitel 1