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. Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570

    [email protected] üArchitektur- Verbesserer üCoach, Trainer üarc42, aim42 üiSAQB e.V.
  2. Zeit • 1 Sekunde = 1.000.000.000 Nanosekunden • Taktfrequenz 1

    GHz -> Taktdauer 1 Nanosekunde • Licht: pro Nanosekunde ca. 20cm t
  3. x eine Milliarde Photo by Austin Ban on Unsplash L1

    cache reference (0.5 ns) 1x klatschen t
  4. Main Memory Access (100nSec) Zähne putzen Photo: M. Zomer, Pexels

    https://www.pexels.com/photo/adorable-animal-animal-portrait-blur-422212/ t
  5. SSD Random Read (150 !Sec) 5 Staffeln „Breaking Bad“ (ca.

    36h) Photo by Alex Plesovskich on Unsplash t
  6. 1.1MB sequentiell von Disk lesen (20 mSec) 9 Monate... Photo

    by Patrick Lindenberg on Unsplash Photo by Tim Bish on Unsplash t
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. Modularität M Systeme (hier: Produkte) aus kleineren Einheiten (Modulen, Komponenten,

    Services etc.) zusammensetzen Schnittstellen Protokolle Formate Konzepte/Prinzipien Siehe: Konsistenz KISS KoDrA
  13. kom plex kom pliziert einfach chaotisch Technologie Anforderungen / Geschäftsprozesse

    sehr unsicher sehr sicher kaum verstanden gut verstanden kompl{iziert|ex} 6K
  14. KISS (keep it stupid simple) 6K kom pliziert einfach sehr

    sicher gut verstanden Photo by Tom Roberts on Unsplash
  15. 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
  16. KISS (keep it stupid simple) 6K Artefakt KISS... Komponenten •

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

    Komponenten) • Ähnlich (homogen) • Wenig Zustände Prozesse • Feedback (häufig + kurzfristig) • Ergebnisse statt Artefakte
  18. 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, <…>
  19. Kopplung 6K need have Aufruf Event besitzt enthält sync async

    idempotent beschränkt Hardware Daten Zeit
  20. Kommt Drauf An 6K Risiko Größe Organisation Team Komplexität Umfeld

    / Kontext Legacy Formalismus Randbedingungen ANG EME SSEN HEIT
  21. Reality sucks (2) A repeat { listen ask, no answer

    guess code } Photo by conner bowe on Unsplash
  22. 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