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

Zähne putzen, Haare kämmen

Zähne putzen, Haare kämmen

manchmal vergessene Grundlagen des Software Engineerings - von Modularität, Komplexität, KISS, Kopplung und anderen Tatorten...

Dr. Gernot Starke

February 07, 2018
Tweet

More Decks by Dr. Gernot Starke

Other Decks in Programming

Transcript

  1. Zeit • 1 Sekunde = 1.000.000.000 Nanosekunden • Taktfrequenz 1

    GHz -> Taktdauer 1 Nanosekunde • Licht: pro Nanosekunde ca. 20cm t
  2. Zeit (2) • L1 Cache Zugriff: 0.3 – 0.5 nSec

    • Main Memory Access: 100 nSec • Java: new(): 10-15 CPU-Instruktionen 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-831082/ 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 erbt sync async

    idempotent beschränkt Hardware Daten Zeit
  20. Kommt Drauf An (2) 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
  23. 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