Slide 1

Slide 1 text

Software modernisieren Methoden, Praktiken, Beispiele Dr. Gernot Starke

Slide 2

Slide 2 text

Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 Gernot.Starke@innoq.com g Schwerpunkte: Softwarearchitekturen Entwurf, Entwicklung, Evolution, Modernisierung,Dokumentation Reviews, Retrospektiven Mentoring und Coaching Entwicklungsprozesse

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Features delivered to production 0 Q1-11 Q2-11 Q3-11 Q4-11 Q1-12 Q2-12 Q3-12 Q4-12 Q1-13 Q2-13 Q3-13 Q4-13 Q1-14 Q2-14 Q3-14 Q4-14 20 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Slide 5

Slide 5 text

Typische Reaktionen ... Management: Zu teuer. Zu viele Fehler. Zu hohe Aufwände. Zu lange Time-to-Market. Techniker:--- Zu hohe technische Schuld. Zu schlechte Technologie. Zu wenig Innovation. Zu wenig Budget. Zu wenig Zeit.

Slide 6

Slide 6 text

Typische Fehler... Management: Druck. Kontrolle. Regeln, Prozesse. Standardisierung. Techniker:--- Refactoring. Impulsive Innovation. Resignation.

Slide 7

Slide 7 text

Wenn innere Qualität sinkt, wird neue fachliche Leistung teurer. Agility

Slide 8

Slide 8 text

Wenn innere Qualität steigt, wird neue fachliche Leistung einfacher. Time-to-Market

Slide 9

Slide 9 text

Business Value Agility hoch niedrig niedrig hoch Langfristige Verbesserung Agility: Schnell & risikoarm ändern Business Value: Fachliche Leistung,

Slide 10

Slide 10 text

analyze evaluate improve architecture improvement method Software verbessern http://aim42.org

Slide 11

Slide 11 text

Probleme in einfachem System suchen (0)

Slide 12

Slide 12 text

Probleme in einfachem System suchen (1) Ursache : Wirkung iStock_000006201684

Slide 13

Slide 13 text

Probleme in einfachem System suchen (2) Ursache : Wirkung https://flic.kr/p/5L7G5q

Slide 14

Slide 14 text

Issue (Problem) Improvement (remedy) Cost Risk Cause cost of improvement improvement has risks or consequence improvements resolve cause (root) causes of issues cost of issue (potential) cost of risk risk might result in issue solve issue with improvement(s) improvement solves issue(s)

Slide 15

Slide 15 text

Issue (Problem) Improvement (remedy) Cost Risk Cause cost of improvement improvement has risks or consequence improvements resolve cause (root) causes of issues cost of issue (potential) cost of risk risk might result in issue solve issue with improvement(s) improvement solves issue(s) Probleme == Auslöser für Verbesserung

Slide 16

Slide 16 text

Komplizierte Systeme > Viele Bestandteile mit Abhängigkeiten (Strukturen) > Übergreifende Regeln (Konzepte) > Mehrere Beteiligte...

Slide 17

Slide 17 text

Kompliziertes System https://flic.kr/p/7XAjXu

Slide 18

Slide 18 text

Probleme in kompliziertem System suchen (0) Geschmack, Preis, Aussehen, Lage (des Restaurants) https://flic.kr/p/6xuSMU

Slide 19

Slide 19 text

Probleme in kompliziertem System suchen (1) Geschmack, Temperatur, Aussehen, Konsistenz, Beliebtheit

Slide 20

Slide 20 text

Probleme in kompliziertem System suchen (2) Anteile an Kohlenhydrat, P rotein, Fett, Vitamin Nachweis von Drogen, Schad- oder Giftstoffen, oder Radioaktivität https://flic.kr/p/bDGDMY

Slide 21

Slide 21 text

Probleme in kompliziertem System suchen (3) Logistik: Transport- und Lagerung https://flic.kr/p/pnVsxu

Slide 22

Slide 22 text

Probleme in kompliziertem System suchen (4) Einkauf, Herstellung, Verpackung, Vertrieb https://flic.kr/p/dZfxi5

Slide 23

Slide 23 text

Probleme in komplizierten Systeme > Probleme einzelner Bestandteile > Probleme bei Abhängigkeiten > Probleme mit übergreifenden Regeln > Probleme mit Beteiligten > Probleme mit Prozessen

Slide 24

Slide 24 text

Verbessern komplizierter Systeme > Verbessern einzelner Bestandteile > Verbessern der Abhängigkeiten > Verbessern von übergreifenden Regeln > Verbessern der Beteiligten > Verbessern von Prozessen

Slide 25

Slide 25 text

Software ist komplex (nicht nur kompliziert)

Slide 26

Slide 26 text

Zwischen Problemen und Ursachen bestehen viele nichtlineare Wirkungsbeziehungen

Slide 27

Slide 27 text

https://www.flickr.com/photos/zeissmicro/7039028961/

Slide 28

Slide 28 text

https://flic.kr/p/8LR4Ts

Slide 29

Slide 29 text

https://www.flickr.com/photos/jonasb/24341322

Slide 30

Slide 30 text

https://www.flickr.com/photos/emiliano- iko/5354414276

Slide 31

Slide 31 text

Die Mikroskop-Falle Wenn Sie NUR im Code suchen, werden Sie NUR DORT Probleme finden... im Code suchen ist richtig und wichtig, aber NUR dort suchen kann fatal sein!

Slide 32

Slide 32 text

Qualitätsmerkmale Software Product Quality ISO 25010 Functional Suitability Reliability Performance efficiency Operability (Useability) Security Compatibility Maintain- ability Transfer- ability Appropriateness Accuracy Compliance Availability Fault tolerance Recoverability Compliance Time- behaviour Resource- utilisation Compliance Appropriateness- recogniseability Learnability Ease-of-use Helpfulness Attractiveness Technical- accessibility Compliance Confidentiality Integrity Non-repudiation Accountability Authenticity Compliance Replace- ability Coexistence Inter- operability Compliance Modularity Reusability Analyzability Changeability Modification stability Testability Compliance Portability Adaptability Installability Compliance Kosten Prozessqualität Requirements Architecture Implementation Test Deploy Run/Production

Slide 33

Slide 33 text

Mikroskoprisiko in-Aktion... Software Product Quality ISO 25010 Functional Suitability Reliability Performance efficiency Operability (Useability) Security Compatibility Maintain- ability Transfer- ability Appropriateness Accuracy Compliance Availability Fault tolerance Recoverability Compliance Time- behaviour Resource- utilisation Compliance Appropriateness- recogniseability Learnability Ease-of-use Helpfulness Attractiveness Technical- accessibility Compliance Confidentiality Integrity Non-repudiation Accountability Authenticity Compliance Replace- ability Coexistence Inter- operability Compliance Modularity Reusability Analyzability Changeability Modification stability Testability Compliance Portability Adaptability Installability Compliance Kosten Statische Codeanalyse

Slide 34

Slide 34 text

Beispiel: Saubere Schichtung... GUI Application Domain Infrastructure

Slide 35

Slide 35 text

Saubere Schichtung, aber... https://flic.kr/p/ndu3mh

Slide 36

Slide 36 text

Gute Problemsuche... Kombiniere Breiten- und Tiefensuche

Slide 37

Slide 37 text

Zuerst: Breitensuche... ...

Slide 38

Slide 38 text

Qualitative Analysis ATAM Context Analysis Issue Tracker Analysis Data Analysis Documentation Analysis Runtime Analysis Stakeholder Analysis Stakeholder Interview prepares Requirements Analysis foundation for part of validates external stakeholder Quantitative Analysis finds risks and non-risks identify risk areas Questionnaire prepares gives overview Software Archeology supported by measure at runtime Static Code Analysis measure code supports Legend: collect issues collect improvement opportunities part of Development Process Analysis part of find input for Infrastructure Analysis part of Instrument System provide better information User Analysis prepares prepares Security Analysis part of part of Nach: aim42

Slide 39

Slide 39 text

Iteration 1 Analyse Breitensuche in Iterationen Stake- holder (Code) Metriken Kontext Qualität Daten Iteration 2 ... Prozesse

Slide 40

Slide 40 text

Qualitative Analyse > Welche Qualitätsziele sind „gefährdet“? > Soll-Ist Vergleich: > Soll: konkrete Q-Ziele > Ist: Lösungsansätze (Code, Konzepte, Entscheidungen...) Software Product Quality ISO 25010 Functional Suitability Reliability Performance efficiency Operability (Useability) Security Compatibility Maintain- ability Transfer- ability

Slide 41

Slide 41 text

Statische Codeanalyse

Slide 42

Slide 42 text

Beispiel (1) Anmerkung: je höher desto schlechter Fix me? Komplexität: 2 Kopplung: 10 Komplexität: 10 Kopplung: 30 Komplexität: 9 Kopplung: 35 Komplexität: 7 Kopplung: 20

Slide 43

Slide 43 text

Beispiel (2) Komplexität: 2 Kopplung: 10 DTFB: 0.5 Bugs: 200 Komplexität: 10 Kopplung: 30 DTFB: 2 Bugs: 30 Komplexität: 9 Kopplung: 35 DTFB: 3 Bugs: 20 Komplexität: 7 Kopplung: 20 DTFB: 8 Bugs: 15 Fix me DTFB: Days-to-Fix-Bug

Slide 44

Slide 44 text

Komplexität: 2 Kopplung: 10 DTFB: 0.5 Bugs: 200 Komplexität: 10 Kopplung: 30 DTFB: 2 Bugs: 30 Komplexität: 9 Kopplung: 35 DTFB: 3 Bugs: 20 Komplexität: 7 Kopplung: 20 DTFB: 8 Bugs: 15 DTFB: Days-to-Fix-Bug

Slide 45

Slide 45 text

Abgleich unterschiedlicher Messungen Quantitative Analyse Korrelierte Analyse Beispiele: > Fehler pro Komponente > (Zeit pro Bugfix) pro Komponente > (Aufwand pro Feature) pro Komponente

Slide 46

Slide 46 text

Kontextanalyse - Beispiel Risiko bzgl. Performance- Anforderung

Slide 47

Slide 47 text

Datenanalyse 1. Struktur 2. Typen 3. Zugriffe > Read / write 4. Volumen > auch von Query-Results + Indizes 5. Korrektheit 6. Schutzbedarf 7. Verteilung/Dezentralisierung 8. Duplikation/Redundanz 9. Durchsatz -> Laufzeitanalyse Struktur / Typen ungeeignet für das Problem Wonach ist Persistenz optimiert, read oder write? Haben wir besonders viel?Ist etwas besonders groß? Haben wir falsche Daten? Haben wir sensible Daten? Halten wir Daten mehrfach?

Slide 48

Slide 48 text

Beispiel: Datenanalyse „Clean“ Code XML Configuration DB Legend: COTS Code Table-1 Table-2 Table-3 Table-4 Database Relational Data

Slide 49

Slide 49 text

Prozessanalyse (Beispiel)

Slide 50

Slide 50 text

Improve... Grundprinzipien, Verhaltensregeln Kategorien von Verbesserungen langfristige, strategische Ansätze 3 2 1 Fundamentals Approaches Practices

Slide 51

Slide 51 text

Big Bang (aka Cold Turkey) Client Code Flawed System User 1 New System Client Code User Entwickle ein neues System parallel zu Betrieb und Pflege des alten.

Slide 52

Slide 52 text

Change By Split Client Type 1 Flawed System Client Type 2 Kopiere für alle Client-Typen 1 Client Type 1 Flawed System Client Type 2 Flawed System Client Type 1 Reduced to Type 1 Client Type 2 Reduced to Type 2 Commons Reduziere und extrahiere Gemeinsamkeiten 2 Client Type 1 Reduced to Type 1 Client Type 2 Reduced to Type 2 New Commons Optimiere Gemeinsamkeiten 3

Slide 53

Slide 53 text

Client Type 1 Reduced to Type 1 Client Type 2 Reduced to Type 2 New Commons Optimiere spezifische Teilsysteme („Splits“) New Type 1 System Client Type 1 Client Type 2 New Commons New Type 2 System Change By Split

Slide 54

Slide 54 text

Strangulate Bad Parts Ersetze einige schlechte Teile Ersetze weitere schlechte Teile Und noch mehr... Client Code Flawed System User Client Code Flawed System User better Client Code Flawed System User better Better System Client Code User Flawed Parts

Slide 55

Slide 55 text

analyze evaluate improve architecture improvement method

Slide 56

Slide 56 text

Fazit (0) Kohlenhydrat-, Protein- und Fettgehalt prüfen.

Slide 57

Slide 57 text

Fazit (1) Suchraum verbreitern – bei „code-only“ droht Mikroskopfalle. Breitensuche in Iterationen

Slide 58

Slide 58 text

Fazit (2) Sammeln Sie Ideen für Verbesserung, während Sie Probleme suchen. Issue (Problem) Improvement (remedy) solve issue with improvement(s) improvement solves issue(s)

Slide 59

Slide 59 text

Dr. Gernot Starke gernot.starke@innoQ.com http://innoq.com https://www.flickr.com/photos/foto_db/16000636092