Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Zähne putzen, Haare kämmen...

Zähne putzen, Haare kämmen...

"friendly reminder" an manchmal vergessene Grundlagen des Software-Engineering...

in großen Teilen ein Appell an mehr "gesunden Menschenverstand" bei der Softwareentwicklung.

Dr. Gernot Starke

July 05, 2018
Tweet

More Decks by Dr. Gernot Starke

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

  3. Warum?
    Mangel an gMV!

    View full-size slide

  4. t
    Zeit
    nano, micro, milli, Sek, Min

    View full-size slide

  5. Photo by Veri Ivanova on Unsplash

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. 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

    View full-size slide

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

    View full-size slide

  17. 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

    View full-size slide

  18. 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

    View full-size slide

  19. Modular
    Geheimnisprinzip
    zusammensetzbar
    arbeitsteilig

    View full-size slide

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

    View full-size slide

  21. 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

    View full-size slide

  22. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  34. 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, <…>

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  39. Kommt Drauf An 6K

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  48. 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

    View full-size slide

  49. Zwischentitel 1

    View full-size slide