Slide 1

Slide 1 text

1 O O P 2 0 2 3 | M Ü N C H E N | 0 3 . - 0 5 . J U L I 2 0 2 3 | 1 . 1 Das tapfere Schneiderlein Sieben Schnitte auf einen Streich Markus Harrer Manh Dung Pham

Slide 2

Slide 2 text

2 Schnittmuster und deren Anwendung im Softwarebereich

Slide 3

Slide 3 text

Das tapfere Schneiderlein Motiv: Blechspielzeug "Tapferes Schneiderlein" Hagen / Domke | Urheberrecht: LWL-Freilichtmuseum Hagen 3 Sieben auf einen Streich

Slide 4

Slide 4 text

Schnitt- muster in der Mode 4 Schnittmusterbogen, Leipzig, ca. 1900. Dieses Werk ist gemeinfrei, weil seine urheberrechtliche Schutzfrist abgelaufen ist.

Slide 5

Slide 5 text

Schnittmuster für Software- systeme? 5

Slide 6

Slide 6 text

6 Warum überhaupt schneiden? Vor- und Nachteile des Schneidens

Slide 7

Slide 7 text

Warum überhaupt schneiden? 7 Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)

Slide 8

Slide 8 text

Warum überhaupt schneiden? 8  Granulare Anpassbarkeit ✗ Falsche Wahrnehmung des Gesamtbildes Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)

Slide 9

Slide 9 text

 Reduzierung der kognitiven Belastung Warum überhaupt schneiden? 9 ✗ Lokale Optimierungen Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)

Slide 10

Slide 10 text

 Feingranulare, wertorientierte Investitionen Warum überhaupt schneiden? 10 Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs) ✗ Doppelte Arbeit

Slide 11

Slide 11 text

 Eingrenzung Warum überhaupt schneiden? 11 ✗ Politik Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)

Slide 12

Slide 12 text

 Teamautonomie Warum überhaupt schneiden? 12 ✗ Schlechtes Alignment Punkte angelehnt an Nick Tune: „5 Tugenden der Modularität in Systemen“ (https://www.youtube.com/watch?v=FUKagZXcpYs)

Slide 13

Slide 13 text

Silver Bullets sind leider schon wieder aus! 13

Slide 14

Slide 14 text

14 Wie könnte man schneiden? Unsere 7 Schnittmuster heute

Slide 15

Slide 15 text

Wirklich, wirklich ins Detail! Unsere 7 Schnittmuster* 15 1. Sprachliche Grenzen 2. Zeithorizonte 3. Prozessübergaben 4. Produktfeatures 5. Entitäten 6. UI / Sitemap 7. Größe Lösungsraum / Implementierungsseite Problemraum / Anforderungsseite im Detail *auch: Schnittheuristiken

Slide 16

Slide 16 text

16 Sprachliche Grenzen Erster Schnitt

Slide 17

Slide 17 text

Die Blinden und der Elefant 17 Elephant icon by Delapouite under CC BY 3.0, game-icons.net Seil! Schlange Speer Baum! Segel

Slide 18

Slide 18 text

Kontext: Online-Baumarkt Die Blinden und das Produkt 18 Lagerplatz, Stückzahl, Gewicht Bilder, Beschreibungen, Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise

Slide 19

Slide 19 text

Achtung, Doppelblindverfahren! 19 Software Wert! Info Textcontainer Daten! Item Lieferanten, Mengenrabatte, Einkaufspreise Bilder, Beschreibungen, Verkaufspreise Lagerplatz, Stückzahl, Gewicht

Slide 20

Slide 20 text

Lagerhaltung Beschaffung Verkauf Erster Schritt: Klarheit schaffen! 20 Bilder, Beschreibungen, Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise Lagerplatz, Stückzahl, Gewicht

Slide 21

Slide 21 text

Lagerhaltung Zweiter Schritt: Module bilden! 21 Beschaffung Verkauf Lagerista ProduktMeta TheSourcer

Slide 22

Slide 22 text

Schneiden nach Begriffswelten 22 BaumaSoft Lagerista ProduktMeta TheSourcer Lagerplatz, Stückzahl, Gewicht Bilder, Beschreibungen, Verkaufspreise Lieferanten, Mengenrabatte, Einkaufspreise Lager Einkauf Verkauf

Slide 23

Slide 23 text

23 Alles gut?

Slide 24

Slide 24 text

24

Slide 25

Slide 25 text

Aber Achtung bei Veränderungen! 25 Head of Elektro Head of Deko Digitalisierung! Value Streams! Re-Org! Baumarkt2000 Head of Schüttgut

Slide 26

Slide 26 text

Yeah! 26 Head of Elektro Head of Deko Head of Schüttgut Neue Ideen! Einkauf Elektro Verkauf Elektro Lager Elektro Einkauf Deko Verkauf Deko Lager Deko Einkauf Schüttgut Verkauf Schüttgut Lager Schüttgut BaumaSoft

Slide 27

Slide 27 text

Autsch! 27 ProduktMeta TheSourcerer Lagerista BaumaSoft Head of Elektro Head of Deko Head of Schüttgut Einkauf Elektro Verkauf Elektro Lager Elektro ? Einkauf Deko Verkauf Deko Lager Deko Einkauf Schüttgut Verkauf Schüttgut Lager Schüttgut

Slide 28

Slide 28 text

28 ProduktMeta TheSourcerer Lagerista BaumaSoft

Slide 29

Slide 29 text

29 Der Kontext ändert sich im Laufe der Zeit, und was heute perfekt war, kann morgen schon völlig ungeeignet sein.“ - Erich Eichinger Tipp Nummer 1 https://opencredo.com/blogs/identify-service-boundary-heuristics/ Den perfekten, stabilen Schnitt gibt es nicht!

Slide 30

Slide 30 text

30 ZEITHORIZONTE Zweiter Schnitt

Slide 31

Slide 31 text

Variierende Häufigkeiten von Ereignissen 31 Kontext: Bahnunternehmen Zugstrecke abgekündigt Zug im Bahnhof eingefahren Zug defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug wurde bestellt

Slide 32

Slide 32 text

32 Kontext: Bahnunternehmen Zugstrecke abgekündigt Zug im Bahnhof eingefahren Zug defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug wurde bestellt häufiger seltener Variierende Häufigkeiten von Ereignissen

Slide 33

Slide 33 text

Zug defekt 33 Kontext: Bahnunternehmen häufiger seltener Variierende Häufigkeiten von Ereignissen Zugstrecke abgekündigt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug bestellt Zug im Bahnhof eingefahren

Slide 34

Slide 34 text

34 Kontext: Bahnunternehmen häufiger Zugstrecke abgekündigt Zug im Bahnhof eingefahren Zug defekt Neue Zugstrecke geplant Fahrplan freigegeben Ersatzzug bestellt seltener Zugleitung Infrastrukturplanung Ressourcenplanung Steuerung Fahrgastinformation Fahrplanplanung Betriebsmanagement Betriebsplanung Variierende Häufigkeiten von Ereignissen

Slide 35

Slide 35 text

35 Kontext: Bahnunternehmen häufiger seltener Betriebsmanagement Betriebsplanung Unterschiedliche Ansprüche an Qualität Sicherheit Zugänglichkeit Workload / Last …

Slide 36

Slide 36 text

36 Wer Qualitäten nicht Rechnung trägt, hat die Kontrolle über sein Leben Softwaresystem verloren.“ - Karl Lagerfeld Tipp Nummer 2

Slide 37

Slide 37 text

Auch: Hierarchische Schnittebenen 37 Qualitäten Subdomänen Prozessschritte

Slide 38

Slide 38 text

38 PROZESSÜBERGABEN Dritter Schnitt

Slide 39

Slide 39 text

Nach abgeschlossenen Prozessteilen schneiden Prozessübergaben 39 Versand berechnet Mahnung geschickt Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt 0 n

Slide 40

Slide 40 text

Nach abgeschlossenen Prozessteilen schneiden Prozessübergaben 40 0 n Versand berechnet Mahnung geschickt Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt

Slide 41

Slide 41 text

Bestellung Nach abgeschlossenen Prozessteilen schneiden Mahnverfahren Bezahlung Prozessübergaben 41 Versand berechnet Mahnung geschickt Zu Inkasso übergeben Zahlung eingegangen Betrag vollständig gezahlt Rechnungs- summe geändert Ware zugefügt Rechnung erstellt Rechnung erstellt 0 n Abschließendes Ereignis

Slide 42

Slide 42 text

42 Start Ist der Outsourcing- Kandidat klein genug? Teile ihn auf! Wird der Outsourcing- Kandidat gut verstanden? Gibt es externe Dienstleister? Können es die Dienstleister besser als wir? Wird der Dienstleister auf unsere Kosten lernen? In-House- Entwicklung Outsourcing (agil) Neues Geschäftsfeld! Outsourcing nein ja nein vielleicht / ja nein nein ja ja nein ja Outsourcing-Überlegungen Simon Wardley, CC BY-SA 4.0 Lizenz Wird der Outsourcing- Kandidat gut verstanden? Gibt es externe Dienstleister? Können es die Dienstleister besser als wir? Wird der Dienstleister auf unsere Kosten lernen? In-House- Entwicklung Outsourcing (agil) Neues Geschäftsfeld! Outsourcing nein ja nein vielleicht / ja nein nein ja ja nein ja

Slide 43

Slide 43 text

43 PRODUKTFEATURES Vierter Schnitt

Slide 44

Slide 44 text

Schnitt nach Produktfeatures 44 Beispiel: Monzo Prepaid Credit Card Service Strong Authentication Service https://www.infoq.com/presentations/monzo-microservices/ Debit Card Service (Bildmaterial aus Präsentation, Beispiel eigene, vereinfachende Darstellung)

Slide 45

Slide 45 text

Monzos Kontext 45 [1] https://monzo.com/blog/2023/03/28/what-we-learned-from-43-experiments-in-12-months … experimenting is at the heart of Monzo’s product development philosophy.“ - Shnay Chohan Senior Product Manager @ Monzo

Slide 46

Slide 46 text

Tradeoffs notwendig 46 Kreative Technologieoffenheit Rigorose Standardisierung

Slide 47

Slide 47 text

47 ZWISCHENSTOPP

Slide 48

Slide 48 text

Unsere 7 Schnittmuster* 48 1. Sprachliche Grenzen 2. Zeithorizonte 3. Prozessübergaben 4. Produktfeatures 5. Entitäten 6. UI / Sitemap 7. Größe Lösungsraum / Implementierungsseite Problemraum / Anforderungsseite *auch: Schnittheuristiken Disclaimer: Jetzt wird es schmutzig Wir gehen zur Bestands- software!

Slide 49

Slide 49 text

WIR HATTEN JA NÜSCHTS Vieles fällt nun hier drunter Teils unter „Anti- Patterns“ zu finden Teils immer noch hilfreich Wir sagen nur „gibt es“ (und ob ihr es nutzt, ist euer Ding!)

Slide 50

Slide 50 text

50 ENITÄTEN Fünfter Schnitt

Slide 51

Slide 51 text

Datenstrukturen nach fachlichen Abhängigkeiten trennen public class Kunde { Vorname Nachname Status … } Entity-basiertes Reverse Engineering 51 public class Produkt { Name Beschreibung Preis … } Quelle: https://particular.net/webinars/finding-your-service-boundaries-a-practical-guide • Vorname des Kunden • Nachname des Kunden • Kundenstatus • Produktpreis • Produktname • Produktbe- schreibung Schritt 1: „Wenn X sich ändert, hat das Auswirkungen auf Y?“ Kundenstammdaten Bepreisung Produktinformationen Schritt 2: Unabhängige, unbenannte Gruppen bilden Schritt 4: Gruppen benennen Schritt 3: Über noch unbenannte Gruppen diskutieren und evtl. anpassen

Slide 52

Slide 52 text

52 UI / SITEMAP Sechster Schnitt

Slide 53

Slide 53 text

UI-basiertes Reverse Engineering 53 Nach Bereichen in der Benutzeroberfläche / Sitemap schneiden

Slide 54

Slide 54 text

54 GRÖẞE* Siebter Schnitt * stellvertretend für all die speziellere Schnitte da draußen

Slide 55

Slide 55 text

Software nach Größe schneiden 55 Wenn gar nichts mehr geht, helfen selbst die (vermeintlich) bescheuertsten Ideen, um ein Softwaresystem etwas zu strukturieren . ├── grosses │ ├── Owner.java │ ├── Person.java │ ├── Pet.java │ ├── Specialty.java │ ├── Vet.java │ └── Visit.java ├── mittleres │ ├── OwnerRepository.java │ ├── PetRepository.java │ ├── VetController.java │ └── VisitRepository.java └── kleines ├── OwnerController.java ├── PetController.java ├── PetValidator.java ├── VetRepository.java └── VisitController.java

Slide 56

Slide 56 text

56 Egal wie schrecklich, Hauptsache einheitlich schrecklich!“ Markus Harrer Tipp Nummer 3

Slide 57

Slide 57 text

57 Zusammenfassung Das tapfere Schneiderlein

Slide 58

Slide 58 text

Was ist der richtige Schnitt? 58 „Es kommt drauf an!“ (= alles hängt vom Kontext ab*) Nach einer Visualisierung aus Michael Keelings Buch „Design It!“ Firma Spaß & Gewinn! Plattform Anwender verwenden wollen will Team hilft entwickelt Software entwickelt für läuft auf leitet an * der sich mit der Zeit auch ändert

Slide 59

Slide 59 text

Was könnt ihr mitnehmen … 59 … für morgen? • überlegt, wie ihr aktuell eure Software geschnitten habt! … für nächste Woche? • tauscht euch im Team über mögliche Schnitte aus! … für nächsten Monat? • macht euch schlau, welche weiteren Schnitte euch helfen!

Slide 60

Slide 60 text

Danke! Fragen? Kontakt & mehr. 60 [email protected] Senior Consultant [email protected] Consultant Markus Harrer Manh Dung Pham Das tapfere Schneiderlein Sieben Schnitte auf einen Streich https://leanpub.com/strategische-spielzuege Markus Harrer Strategische Spielzüge Softwaresysteme listig weiterentwickeln Alternative Möglichkeiten, ein Softwaresystem voranzubringen Folien auf speakerdeck.com/feststelltaste

Slide 61

Slide 61 text

KLIENTEN Finance ● Telko ● Logistik ● E-Commerce ● Fortune 500 ● KMUs ● Startups FAKTEN ~160 Mitarbeitende 1998 gegründet 9 Standorte in D & CH UNSER ANGEBOT Produktkonzeption & Design Software-Entwicklung & -Architektur Technologie-Beratung Infrastruktur & Betrieb Wissenstransfer, Coaching & Trainings FOKUS Webapplikationen SaaS IoT Produktentwicklung ML/AI Blockchain TECHNOLOGIEN (Auswahl) Java/Spring Ruby/Rails Scala AWS Kubernetes Azure JavaScript Python C# ML/AI Blockchain 61

Slide 62

Slide 62 text

62 Anhang Schnittmustersammlungen

Slide 63

Slide 63 text

Schnittmustersammlungen Erich Eichinger: “Heuristics for Identifying Service Boundaries” 63 Prozessabläufe Domänen Prozessübergaben Datenlokalität Prozess- und Datenkriterien Dateneigentum Datenlebenszyklus Sitemap https://opencredo.com/blogs/identify-service-boundary-heuristics/ Operationelle Kriterien Querschnittsfunktionalität Externe Abhängigkeiten Größe Volatilität vs. Stabilität Service-Kommunikation Sicherheitsbeschränkungen Last Make-or-buy Organisatorische Grenzen Teams & Fähigkeiten Organisatorische Kriterien

Slide 64

Slide 64 text

Schnittmustersammlungen Gregor Hohpe: “Hybrid Cloud: Slicing the Elephant” 64 https://architectelevator.com/cloud/hybrid-cloud/ Typen Schicht Genera- tion Kritika- lität Daten- aktualität Daten- schutz- klasse Lebens- zyklus Betriebs- modus Arbeits- last Cloud Front- end Neu Unkri- tisch Backup Offen Entwick- lung Ausfall- situa- tionen Spitzen- last On Premise Backend Alt Kritisch Live Betrieb Vertrau- lich Produkt- ion Normal- betrieb Normal- last

Slide 65

Slide 65 text

Schnittmustersammlungen Team Topologies: “Independent Service Heuristics” 65 1. Sinn-Check: Könnte es einen logischen Sinn ergeben, diese Sache "als Dienstleistung" anzubieten? 2. Marke: Könntest du dir vorstellen, diese Sache als öffentlichen Cloud-Dienst zu vermarkten (wie AvocadoOnline.com )? 3. Umsatz/Kunden: Könnte diese Sache im Hinblick auf Umsatz und Kunden als brauchbarer Cloud- Service verwaltet werden? 4. Kostenverfolgung: Kann das Unternehmen die Kosten und Investitionen in diese Sache getrennt von ähnlichen Dingen verfolgen? 5. Daten: Ist es möglich, die Inputdaten (aus anderen Quellen), die diese Funktion benötigt, klar zu definieren? https://github.com/TeamTopologies/Independent-Service-Heuristics 6. Benutzer: Könnte diese Sache eine kleine/gut definierte Gruppe von Nutzertypen oder Kunden (User Personas) haben? 7. Teams: Könnte ein Team oder eine Reihe von Teams einen auf dieser Sache basierenden Dienst effektiv aufbauen und betreiben? 8. Abhängigkeiten: Wäre das Team in der Lage, die meiste Zeit unabhängig von anderen Teams zu handeln, um seine Ziele zu erreichen? 9. Auswirkungen/Wert: Würde der Umfang dieser Aufgabe dem Team vor eine wirkungsvolle und ansprechende Herausforderung stellen? 10. Produktentscheidungen: Wäre das Team, das an dieser Sache arbeitet, in der Lage, seine eigene Produkt- Roadmap und die Produktrichtung zu bestimmen? “Could this thing be run as a cloud-hosted (SaaS) service or product?"

Slide 66

Slide 66 text

66 Anhang Integrationsdesign mittels Context Mapping

Slide 67

Slide 67 text

Context Mapping 67 Context Maps liefern einen ganzheitlichen Überblick über die Abhängigkeitsbeziehungen zwischen fachlichen Bereichen. Beispiel von https://contextmapper.org, MIT Lizenz

Slide 68

Slide 68 text

Context Map Patterns 68 Muster, um die Kommunikationsbeziehungen zwischen verschiedenen Bereichen genauer zu beschreiben https://github.com/ddd-crew/context-mapping CC-BY-4.0 license

Slide 69

Slide 69 text

Context Map Talk-Tipp 69 Michael Plöd : Context Maps - a deep dive (KanDDDinsky 2019) https://www.youtube.com/watch?v=VjtMt689ql8