Slide 1

Slide 1 text

Die wahren Probleme finden Wider die Mikroskop-Falle Dr. Gernot Starke https://www.flickr.com/photos/zeissmicro/7039028961/

Slide 2

Slide 2 text

Dr. Gernot Starke innoQ Fellow +49 177 – 728 2570 [email protected] www.arc42.de Schwerpunkte:   Softwarearchitekturen Entwurf, Entwicklung, Evolution Modernisierung, Dokumentation   Mentoring und Coaching   Analyse und Optimierung von Entwicklungsprozessen   Reviews, Audits, Retrospektiven

Slide 3

Slide 3 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 4

Slide 4 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 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 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 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 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 18

Slide 18 text

Software... >  Viele Bestandteile >  Querschnittliche & technische Konzepte >  Viele Beteiligte >  Viele Kategorien von Problemen >  Oft: langjähriger Einsatz (== Änderungen)

Slide 19

Slide 19 text

Kategorien... (1)

Slide 20

Slide 20 text

Kategorien... (2) 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 21

Slide 21 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 22

Slide 22 text

Beispiel: Saubere Schichtung... GUI Application Domain Infrastructure

Slide 23

Slide 23 text

Beispiel: Saubere Schichtung, aber... „Clean“ Code XML Configuration DB Legend: COTS Code Table-1 Table-2 Table-3 Table-4 Database Relational Data

Slide 24

Slide 24 text

Die Werkzeugfalle Statische-Analyse-Tools finden nur eine kleine Menge der Probleme

Slide 25

Slide 25 text

Gute Problemsuche... Kombiniere Breiten- und Tiefensuche

Slide 26

Slide 26 text

Qualitative und quantitative Analyse in erweitertem Suchraum Wider die Mikroskop-Falle Dr. Gernot Starke Treffender Titel

Slide 27

Slide 27 text

Zuerst: Breitensuche... ...

Slide 28

Slide 28 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 fundamental crosscutting 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 29

Slide 29 text

Stakeholder ... wichtige Personen oder Organisationen, die: >  Interesse am System haben, >  von System oder Architektur betroffen sind: – damit arbeiten – daran arbeiten – davon profitieren – darunter leiden – es •  betreiben •  verwalten •  regulieren •  bezahlen ?

Slide 30

Slide 30 text

Stakeholder kennen viele Probleme ?

Slide 31

Slide 31 text

Beispiel: Stakeholder-Interviews... Kurzzeitgedächtnis bekam mehr Fokus... ?

Slide 32

Slide 32 text

Vorsicht – Stakeholder... Erleben Gewöhnungseffekt: >  ...an Probleme oder Workarounds Haben Angst vor Änderung >  menschlich

Slide 33

Slide 33 text

Stakeholder... >  nehmen Probleme subjektiv wahr >  nennen oftmals Symptome, keine Ursachen >  taktieren >  äußern Vermutungen

Slide 34

Slide 34 text

Stakeholder-Map Backlog System (Code) System (Laufzeit) User System operator IT Budget System Budget Support Issues High-Level Manager Business Manager Entwickler/ Architekten Test/QS Product Owner Visualisieren Sie IHRE Stakeholder & Artefakte

Slide 35

Slide 35 text

Übersicht: Systemanalyse >  Qualitative Analyse >  Quantitative Analyse („Vermessung“) >  Code >  Laufzeit >  Datenanalyse >  Kontextanalyse >  ...

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Qualitative Analyse - Vorgehen 1.  Maßgebliche Stakeholder explizieren Qualitätsanforderungen (als Szenarien) 2.  Architekten/Entwickler benennen zugehörige Lösungsansätze des Systems 3.  Bewerter vergleichen und schätzen Risiko

Slide 38

Slide 38 text

Szenarien... §  Anwendungs-/Nutzungsszenarien §  Änderungsszenarien System Nutzung Ereignis, Stimulus Reaktion Metrik Änderung Interaktionen von Stakeholder und System Wie reagiert das System auf Stimulus?

Slide 39

Slide 39 text

Qualitätsziele Q-Ziel Bedeutung / Szenarien Flexibilität •  Neues csv- Importformat in <4h konfigurierbar Last / Performance •  250.000 eingelieferte Fotos innerhalb von 2h prozessiert Sicherheit •  Mandant kann niemals Zugriff auf Daten anderer Mandanten erhalten Architektur-/Lösungsansatz •  Konfigurationssprache für CSV-Parser (Import), auf Basis ANTLR •  Syntaxgesteuerter Editor für die Sprache •  Bilder als Dateien speichern, Links in DB •  Lasttests im DailyBuild •  Generator für (Massen-)Testdaten •  Mandantenspezifische Daten grundsätzlich in (eigener) VM •  Datenlieferungen grundsätzlich in mandantenspezifische Verzeichnisse (ftp-Server) •  Unix-Kennungen spezifisch für Mandanten Lösungsansätze Risiken?

Slide 40

Slide 40 text

Quantitative Analyse (1) - statische Codeanalyse- >  Kopplung >  Komplexität >  Konsistenz >  Verletzung von Idiomen (Style-Checking) Wichtig für Wartbarkeit!!

Slide 41

Slide 41 text

Statische Codeanalyse (2)

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

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

Slide 46

Slide 46 text

Korrelierte Codeanalyse (2)

Slide 47

Slide 47 text

Quantitative Bewertung: „Änderungshäufigkeit“ git log --since="90 days ago" --pretty=format:"" --name-only | \ grep "[^\s]" | \ sort | uniq -c | \ sort -nr | head -10 GIST: https://goo.gl/kzTgFa

Slide 48

Slide 48 text

Laufzeitanalyse (1) >  Analyse von Ressourcenverbrauch („Profiling“) >  Zeitverbrauch >  Speicherbedarf >  Threading, >  Netzwerkressourcen >  Logfile- oder Stacktrace-Analyse („Was ist geschehen“?)

Slide 49

Slide 49 text

>  Analyse von Benutzerverhalten >  Wo und womit verbringen Benutzer Zeit? >  Welche Abläufe dauern ungebührlich lange? >  Korrelieren fachliche Schwierigkeit + reale Dauer? Laufzeitanalyse (2)

Slide 50

Slide 50 text

Kontextanalyse Risiken / Probleme im Kontext: >  Abhängigkeiten bzgl. Qualitätszielen >  Verfügbarkeit, Robustheit, >  Sicherheit >  Kosten >  Performance >  ... >  Fehlende Schnittstellen

Slide 51

Slide 51 text

Kontextanalyse - Beispiel Risiko bzgl. Performance- Anforderung

Slide 52

Slide 52 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 53

Slide 53 text

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

Slide 54

Slide 54 text

Prozessanalyse >  Anforderungsprozesse >  erheben, klären, managen >  Entwicklungs- /Entwurfsprozesse >  Architektur, Implementierung, Dokumentation >  Betrieb >  Deployment, Rollout, Administration, Monitoring >  Management >  Team- und Taskmanagement, Risikomanagement

Slide 55

Slide 55 text

Prozessanalyse (2) >  Welche Voraussetzungen müssen für X gelten? >  Wer ist an X beteiligt? >  Wer/Was ist der Flaschenhals bei X? >  Wie lange dauert X? >  Welche typischen Probleme treten bei X auf? für X = „wiederkehrende Aktivität/Prozess/Aufgabe“

Slide 56

Slide 56 text

Prozessanalyse (Beispiel)

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

Relativitäts- Falle Des Einen Problem Ist des Anderen Freund

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

profitieren vom Problem, haben das Problem erschaffen, greifen Sie und Ihre Vorschläge an sind am Problem schuld, stehen zu Ihnen in Konkurrenz, greifen Ihre Kompetenz an leiden nicht am Problem, leiden unter dessen Lösung tragen (Teil-)Schuld am Problem zweifeln Schlussfolgerungen an, zweifeln Ihre Kompetenz an, haben Angst vor Veränderung

Slide 61

Slide 61 text

Ausblick: Probleme lösen

Slide 62

Slide 62 text

You want to improve systems, you need to talk business. ?

Slide 63

Slide 63 text

Business Value Agility hoch niedrig niedrig hoch Zwei Dimensionen... Agility: Wie schnell / risikoarm können fachliche Änderungen implementiert werden (=„innere Qualität“) Business Value: Fachliche Leistung, Gebrauchs- oder Verkaufswert

Slide 64

Slide 64 text

analyze evaluate improve architecture improvement method

Slide 65

Slide 65 text

Fazit (0) Kochen / Essen: Kohlenhydrat-, Protein- und Fettgehalt prüfen.

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

Fazit (1ff ) Breitensuche in Iterationen 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 fundamental crosscutting 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 http://aim42.github.io

Slide 68

Slide 68 text

Fazit (2) (Statische) Metriken korrelieren – insbesondere mit Zeitaufwand und Fehlerzahl.

Slide 69

Slide 69 text

Fazit (3) 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 70

Slide 70 text

Dr. Gernot Starke [email protected] http://innoq.com https://www.flickr.com/photos/foto_db/16000636092