Nachvollziehbare, datengetriebene,
automatisierte Analysen der
Softwareentwicklung
Markus Harrer
@feststelltaste feststelltaste.de talk@markusharrer.de
software analytics softwaresanierung clean code
Coden
“Without data you're
just another person
with an opinion.“
W. Edwards Deming
Priorisierungsproblem
“Not all parts of a
system will be
well designed.“
Eric Evans
Fragen aus der Praxis
• Weshalb schlagen unsere CI-Builds fehl?
• Woher kommen die vielen DB-Calls?
• Welcher Entwickler kennt sich im Code aus?
• Wo gibt es sich gegenseitig überschreibende
statische Variablen?
• Wo verletzen wir Compliance-Vorgaben?
• Welche „JSF-Getter“ greifen auf das Backend
durch?
• ...
•Oft auch: Wo fange ich an?
Derzeitiger Stand
Derzeitiger Stand
Eure Fragen aus der Praxis
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Motivation
Warum?
•Probleme sichtbar machen
+ Klarheit und Verständnis schaffen
•Entscheidungen treiben
+ Budgets sichern
+ Neue Budgets für weitere Analysen sichern
•Kontinuierliches Lernen unterstützen
+ Herausforderungen meistern
+ Selbst stetig besser werden
Software-
daten-
analyse
Metriken
Dash-
boards
Sweet Spot der Analysen
Handlungs-
orientierung
Nachvollziehbarkeit
Rohdaten
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Checkliste Automatisierung
Auswertungen als Skripte mit
• Datenbeschaffung
• Analysen
• Visualisierung
DevOps style
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Arten von Softwareartefakten und Metadaten
chronologischCommunity
Laufzeitstatisch
Checkliste Daten
Pro Variable eine Spalte (mit richtigem
Datentyp)
Für jede Beobachtung eine Reihe
Eine Tabelle für jede zusammengehörige
Gruppe von Variablen
Für jede Tabelle einer Analyse eine
verlinkende Spalte
Daten sind dreckig
Verwendete Zeit für Datenbereinigung:
bis zu 80%
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Checkliste Nachvollziehbarkeit
• Idee / Kontext / Rahmen der Analyse
dokumentiert
• Annahmen und Vereinfachungen
kommuniziert
• Vorverarbeitung (insb. Löschungen)
dokumentiert
• Rechenweg offengelegt
• Zusammenfassungen begründet
Nachvollziehbarkeit + Automatisierung + Daten
Replizierbarkeit
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Anspruch
Lösungsoptionen
automatisiert,
datengetrieben und
nachvollziehbar
erarbeiten.
Analyse-Pipeline
Programmiersprache u. a. für
Scientific Computing
Einfach
Effektiv
Schnell
Automatisierungsmeister
Analyse-Pipeline
Pragmatisches Datenanalyse-Framework
Effektive, tabellarische Datenstruktuen
• Schnell
• Flexibel
• Ausdruckstark
Sehr gute Integration
Die Spezialisten (insb. graphartige Daten)
Analyse-Pipeline
Framework zur statischen
Architektur- und Code-
Analyse
Graph-Datenbank
[:SPEICHERT_IN]
Analyse-Pipeline
ZIP
GZ
*.class
JAR, WAR, EAR
MANIFEST.MF
*.properties
XSD
YAML
XML
application.xml
web.xml
beans.xml
JaCoCo
FindBugs
CheckStyle
pom.xml
surefire-reports.xml RDBMS Schema
M2 Repository
DBCSV
Excel
BigQuery
Inputs
HDFStore
Web
JSON
Git
Pandas
jQAssistant
Analyse-Pipeline
Interaktives Notebook
• Analysen dokumentieren und ausführen
Ergebnisse nachvollziehbar
• Alles an einem einzigen Platz
• Lösungsweg sichtbar
• Auswertung wiederholbar
Bei Bedarf
• Data Mining
• NumPy
• scikit-learn
• SciPy
• Visualisierung / Präsentation
• matplotlib
• plot.ly
• Bokeh
• python-pptx
• ...
Analyse-Pipeline
Analyse-Pipeline
Seit grad‘:
Docker
Analyse-Pipeline
XML/Graph
Tabellen
matplotlib
Pandas,
...
Pandas
jQAssistant,
Neo4j
Text
xlsx
E
pptx
P
Python Jupyter
Eingabe
Vorver-
arbeitung
Analyse
Ausgabe
D3
Beispiel
Demo
Git-Log-Analyse
Erfahrungswerte
• Frameworks voll ausspielen
• Schnelle Installation
• Verschiedene Datenquellen kombinieren
• Zusammenfassende Analysen vornehmen
• Keine Angst vor großen Datenmengen
• Analyseumgebung standardisieren
• Gegenseitig unterstützen
Learning by Doing!
Was ist der
Wert der Information
in Relation zum
Aufwand für die Gewinnung
der Information?
Zu guter Letzt
Literatur
Leek, Jeff: The Elements of Data Analytic Style.
LeanPub, 2015.
McKinney, Wes: Python For Data Analysis, O’Reilly,
2012.
Mens, Tom; Serebrenik; Cleve, Anthony:Evolving
Software Systems. Springer, 2014.
Mens, Tom; Demeyer, Serge: Software Evolution.
Springer, 2008.
Shull, Forrest; Singer, Janice; Sjøberg, Dag I.K.: Guide
to Advanced Empirical Software Engineering. Springer,
2008.
Tornhill, Adam:Your Code As a Crime Scene.
Pragmatic Programmers, 2015.
Fragerunde
Eure Fragen
Fragerunde
Fragen, Details, Demos,
Pair Programming?
Bin heute und morgen hier ;-) !

Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwicklung [DeveloperCamp2017]

Hinweis der Redaktion

  • #7  „Keine auf Empirie basierende Untersuchung kann ein allum-fassendes Ergebnis liefern.“ Betrand Meyer Aktives Gegensteuern durch: Einschränkung der kontextabhängigen Messergebnisse Möglichkeit der manuellen Datenbewertung
  • #9 Weshalb schlagen unsere CI-Builds fehl? Woher kommen die vielen DB-Calls? Welcher Entwickler kennt sich im Code aus? Wo gibt es sich gegenseitig überschreibende statische Variablen? Wo verletzen wir Compliance-Vorgaben? Wie schlimm sind unsere technischen Schulden? ... Oft auch: Wo fange ich an?
  • #10 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #12 3
  • #13 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #14 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #16 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #17 3
  • #19 SonarQube & Co: Null Datenberienigung Nichts ohne Kommentar wegwerfen Datenbereinigung durchführen etc. Datentypen (inkl. Einheiten) kontrollieren Codierungen vermeiden Explizite Ausnahmen erläutern Stylings explizit aufbereiten Fehlenden Daten behandeln Datenprobleme offenlegen  Pro Variable eine Spalte  Für jede Beobachtung eine Reihe  Eine Tabelle für jede zusammengehörige Gruppe von Variablen  Für jede Tabelle einer Analyse ein verlinkende Spalte
  • #20 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #22  Eingabedaten dokumentiert Ideen, Annahmen und Vereinfachungen kommuniziert Vorverarbeitung dokumentiert Rechenweg offengelegt Zusammenfassungen begründet
  • #23 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #24 3 Ideen generieren Problem formulieren Hypothese festlegen etc. Durchführung Reproduzierbarkeit Replizierbarkeit Automatisierung
  • #25  Python is Easy Universally, Python has gained a reputation because of it’s easy to learn. The syntax of Python programming language is designed to be easily readable. Python has significant popularity in  scientific computing. The people working in this field are scientists first, and programmers second. Python is Efficient Nowadays we working on bulk amount of data, popularly known as big data.  The more data you have to process, the more important it becomes to manage the memory you use. Here Python will work very efficiently. Python is Fast We all know Python is an interpreted language, we may think that it is slow, but some amazing work has been done over the past years to improve Python’s performance. My point is that if you want to do high-performance computing, Python is a viable best option today.
  • #26 Pragmatisches Datenanalyse-Framework Schnelle, flexible und ausdruckstarke Datenstrukturen Tabellenartige Daten Zeitreihen Vektor-/Matrix-Operationen Sehr gute Integration mit Datenquellen Wissenschaftlichen Bibliotheken
  • #32 KIV Kinder Idioten Vorstandsvorsitzender
  • #33 7
  • #34 ABER: Auswertungen sind harte Arbeit Erste Schritte: innerhalb von 30 Minuten Erste brauchbare Analyse: nach ca. 1 Woche Gut genug: nach ca. 1 Monat Meistern: ein Leben lang
  • #35 6
  • #37 6
  • #38 6