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

t Zeit Dauer, nano, micro, milli, Sek, Min

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Zeit (2) • L1 Cache Zugriff: 0.3 – 0.5 nSec • Main Memory Access: 100 nSec • Java: new(): 10-15 CPU-Instruktionen t

Slide 5

Slide 5 text

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

Slide 6

Slide 6 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 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 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 12

Slide 12 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 13

Slide 13 text

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

Slide 14

Slide 14 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-831082/ t

Slide 15

Slide 15 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 16

Slide 16 text

Modular Geheimnisprinzip zusammensetzbar arbeitsteilig

Slide 17

Slide 17 text

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

Slide 18

Slide 18 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 19

Slide 19 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 20

Slide 20 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 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 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 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 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 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 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 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Kommt Drauf An 6K

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 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 46

Slide 46 text

von Herzen Informatiker, seit 1985 an Entwicklung und Architektur zahlreicher produktiver IT-Systeme beteiligt. Zuhause in Architektonien und Prograland, versteht Management Requirements, Betrieb und Test. Autor diverser Bücher rund um Softwarearchitektur, Mitgründer und – betreiber von arc42, Gründer von aim42, Gründungsmitglied des iSAQB e.V. [email protected] Dr. Gernot Starke Fellow INNOQ Deutschland GmbH