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

Software Modernisierung

Software Modernisierung

Vortrag beim innoQ-Themenabend "Modernisierung"

Dr. Gernot Starke

March 03, 2016
Tweet

More Decks by Dr. Gernot Starke

Other Decks in Programming

Transcript

  1. Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570

    [email protected] g Schwerpunkte: Softwarearchitekturen Entwurf, Entwicklung, Evolution, Modernisierung,Dokumentation Reviews, Retrospektiven Mentoring und Coaching Entwicklungsprozesse
  2. 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
  3. 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.
  4. Business Value Agility hoch niedrig niedrig hoch Langfristige Verbesserung Agility:

    Schnell & risikoarm ändern Business Value: Fachliche Leistung,
  5. 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)
  6. 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
  7. 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
  8. Probleme in komplizierten Systeme > Probleme einzelner Bestandteile > Probleme

    bei Abhängigkeiten > Probleme mit übergreifenden Regeln > Probleme mit Beteiligten > Probleme mit Prozessen
  9. Verbessern komplizierter Systeme > Verbessern einzelner Bestandteile > Verbessern der

    Abhängigkeiten > Verbessern von übergreifenden Regeln > Verbessern der Beteiligten > Verbessern von Prozessen
  10. 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!
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. Abgleich unterschiedlicher Messungen Quantitative Analyse Korrelierte Analyse Beispiele: > Fehler

    pro Komponente > (Zeit pro Bugfix) pro Komponente > (Aufwand pro Feature) pro Komponente
  19. 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?
  20. Beispiel: Datenanalyse „Clean“ Code XML Configuration DB Legend: COTS Code

    Table-1 Table-2 Table-3 Table-4 Database Relational Data
  21. 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.
  22. 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
  23. 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
  24. 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
  25. 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)