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

Avatar for Dr. Gernot Starke

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