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

Nachvollziehbare, datengetriebene, automatisier...

Nachvollziehbare, datengetriebene, automatisierte Analysen der Softwareentwicklung (DeveloperCamp2017)

Jeder Schritt in der Entwicklung oder Verwendung von Software hinterlässt wertvolle, digitale Spuren. Die Auswertung dieser „Softwaredaten“ (wie etwa Laufzeitmessungen, Logdateien oder Commits) lässt unser Bauchgefühl zu Fakten und stichhaltigen Beweisen werden.

Ich zeige, wie sich Fragen aus der Softwareentwicklung datengetrieben, automatisiert und nachvollziehbar beantworten lassen. Dazu demonstriere ich das Zusammenspiel von Open-Source-Analysewerkzeugen (wie jQAssistant, Neo4j, Pandas und Jupyter) zur Auswertung von Daten aus unterschiedlichen Quellen (wie Profiler, Jenkins und Git). Gemeinsam sehen wir uns u. a. an, wie wir Lösungen zur Optimierung der Performance erarbeiten, Build-Breaker identifizieren oder Wissenslücken im Quellcode offenlegen können.

Markus Harrer

May 17, 2017
Tweet

More Decks by Markus Harrer

Other Decks in Programming

Transcript

  1. 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?
  2. 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
  3. Software- daten- analyse Metriken Dash- boards Sweet Spot der Analysen

    Handlungs- orientierung Nachvollziehbarkeit Rohdaten
  4. 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
  5. Checkliste Nachvollziehbarkeit • Idee / Kontext / Rahmen der Analyse

    dokumentiert • Annahmen und Vereinfachungen kommuniziert • Vorverarbeitung (insb. Löschungen) dokumentiert • Rechenweg offengelegt • Zusammenfassungen begründet
  6. 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 DB CSV Excel BigQuery Inputs HDFStore Web JSON Git Pandas jQAssistant
  7. Analyse-Pipeline Interaktives Notebook • Analysen dokumentieren und ausführen Ergebnisse nachvollziehbar

    • Alles an einem einzigen Platz • Lösungsweg sichtbar • Auswertung wiederholbar
  8. Bei Bedarf • Data Mining • NumPy • scikit-learn •

    SciPy • Visualisierung / Präsentation • matplotlib • plot.ly • Bokeh • python-pptx • ... Analyse-Pipeline
  9. Analyse-Pipeline XML/Graph Tabellen matplotlib Pandas, ... Pandas jQAssistant, Neo4j Text

    xlsx E pptx P Python Jupyter Eingabe Vorver- arbeitung Analyse Ausgabe D3
  10. 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!
  11. Was ist der Wert der Information in Relation zum Aufwand

    für die Gewinnung der Information? Zu guter Letzt
  12. 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.