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

Datenanalysen in der Softwareentwicklung mit So...

Datenanalysen in der Softwareentwicklung mit Software Analytics (AG Open Source, TH Nürnberg)

Markus Harrer stellt den Bereich "Software Analytics" vor, dessen Vorgehen und Methoden darauf abzielen, Daten aus der Softwareentwicklung so aufzubereiten, dass sie auch von Nicht-Technikern zur Entscheidungsfindung herangezogen werden können.

Markus bringt hierzu einen digitalen Notizbuchansatz sowie Werkzeuge für die schnelle Durchführung von nachvollziehbaren Datenanalysen mit. Damit können ganz individuelle Problemursachen in Softwaresystemen Schritt für Schritt herausgearbeitet und explizit dargestellt werden. Markus zeigt das Zusammenspiel von Open-Source-Analysewerkzeugen (wie Jupyter, Pandas, jQAssistant, Neo4j) zur Untersuchung von Anwendungen und deren Umgebung (Git, Logfiles etc.).

Im Treffen werten wir im Live-Coding-Teil mit Python und Pandas gemeinsam das mittlerweile 13 Jahre alte Linux-Git-Repository aus und suchen mit der Graphdatenbank Neo4j in einer Anwendung nach Code Smells. Auf der Begleitseite unter https://git.io/vxLQL gibt es für Interessierte hierzu Anleitungen für zwei Hands-Ons. Wer mitmachen möchte, kann sich damit schon einmal vorbereiten.

Markus Harrer

May 17, 2018
Tweet

More Decks by Markus Harrer

Other Decks in Programming

Transcript

  1. Datenanalysen in der Softwareentwicklung mit Software Analytics -> Workshop Edition

    <- AG Open-Source, TH Nürnberg, Nürnberg 17.05.2018 Markus Harrer @feststelltaste feststelltaste.de [email protected]
  2. Häufigkeit Fragen Nutze Standard-Tools für allgemeine Fragen Option 2: Setze

    Software Analytics zur Behandlung riskanter Probleme ein Risiko Software Analytics fokussiert sich auf wichtige Fragen Option 1: Ignoriere Fragen einfach
  3. The Notebook Komplett automatisiert Kontext dokumentiert Ideen, Daten, Annahmen und

    Vereinfachungen aufgeführt Berechnungen verständlich dargelegt Zusammenfassungen erklärt
  4. Interaktives Notebook • Analysen dokumentieren • Code ausführen • Ergebnisse

    darstellen Ergebnisse nachvollziehbar • Alles an einem einzigen Platz • Lösungsweg sichtbar • Auswertung wiederholbar
  5. Visualisierungsbibliothek Programmatische Erstellung von Grafiken • Plotten von Linien-, Balken-,

    Tortendiagramme und vielem mehr • Gute Integration mit Pandas und anderen Frameworks Direktes Darstellung in Jupyter Notebooks Open Source Data Science Tools
  6. • Datenanalysen • NumPy • scikit-learn • TensorFlow • SciPy

    • PySpark • py2neo Open Source Data Science Tools • Visualisierung / Präsentation • pygal • Bokeh • python-pptx • RISE • Anderes • Requests, Selenium, Flask... Python Ökosystem (je nach Bedarf)
  7. Data-Science-Python-Distribution Eierlegende Wollmilchsau • Bringt alles für den Start mit

    • Optimierter, betriebssystemabhängiger C-Code (== schnell) Herunterladen, installieren, fertig Open Source Data Science Tools Python pandas matplotlib Jupyter ...
  8. 164) static void rb532_mask_and_ack_irq(struct irq_data *d) 165) { 166) rb532_disable_irq(d);

    167) ack_local_irq(group_to_ip(irq_to_group(d->irq))); 168) } 169) 170) static int rb532_set_type(struct irq_data *d, unsigned type) 171) { 172) int gpio = d->irq - GPIO_MAPPED_IRQ_BASE; 173) int group = irq_to_group(d->irq); 174) 175) if (group != GPIO_MAPPED_IRQ_GROUP) Identifikation von No-Go-Areas Ausgangslage Source Code (Programmiersprache C)
  9. Identifikation von No-Go-Areas: Idee Change per Line efb02d arch/irq.c (Thomas

    Gleixner 2011-03-23 21:09:10 +0000 164) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 165) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 166) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 167) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 168) 73b439 arch/irq.c (Ralf Baechle 2008-07-16 16:12:25 +0100 169) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 170) 4aa0f4 arch/irq.c (Phil Sutter 2008-11-28 20:45:10 +0100 171) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 172) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 173) 4aa0f4 arch/irq.c (Phil Sutter 2008-11-28 20:45:10 +0100 174) efb02d arch/irq.c (Thomas Gleixner 2011-03-23 21:09:10 +0000 175) https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
  10. Identifikation von No-Go-Areas: Idee Change per Line 164) static void

    rb532_mask_and_ack_irq(struct irq_data *d) 165) { 166) rb532_disable_irq(d); 167) ack_local_irq(group_to_ip(irq_to_group(d->irq))); 168) } 169) 170) static int rb532_set_type(struct irq_data *d, unsigned type) 171) { 172) int gpio = d->irq - GPIO_MAPPED_IRQ_BASE; 173) int group = irq_to_group(d->irq); 174) 175) if (group != GPIO_MAPPED_IRQ_GROUP) Dev Source Code Version Control System Change per Line No-Go-Areas im Linux Kernel https://www.feststelltaste.de/identifying-lost-knowledge-in-the-linux-kernel-source-code/
  11. deluxe 1. Scanne Softwarestrukturen 2. Speichere in Graphdatenbank 3. Analysiere

    und erstelle Verbindungen 4. Füge eigene Konzepte hinzu 5. Finde Antworten
  12. Java Class Business Subdomain Method Field codeChurn 2 bugs 5

    - + insights From developer details to management insights with graphs
  13. types 16 bugs 17 codeChurn 5 problems 8 types 5

    bugs 29 codeChurn 51 problems 11 - + insights From developer details to management insights with graphs
  14. Nutzlose Codeteile, Teil 1: Programmcode scannen Dev Build Source Code

    Graph Byte Code jQAssistant Neo4j Graph-DB https://www.feststelltaste.de/swot-analysis-for-spotting-worthless-code/
  15. Nutzlose Codeteile, Teil 2: Nutzung und Änderungen Web Application Application

    Server User Coverage per Class JaCoCo Dev Build‘n‘Run& Source Code Version Control System Changes per Class https://www.feststelltaste.de/swot-analysis-for-spotting-worthless-code/ Neo4j
  16. + mache sie sichtbar und verständlich + erzeuge sachliche Diskussionen

    10 Priorisiere wertvolle Verbesserungen 20 Zeige, dass es besser wird; GOTO 10 + Meistere Herausforderungen gemeinsam + Fange einfach einfach an :-)
  17. Weitere Infos Literatur Adam Tornhill: Software Design X-Ray Wes McKinney:

    Python For Data Analysis Christian Bird, Tim Menzies, Thomas Zimmermann: The Art and Science of Analyzing Software Data Tim Menzies, Laurie Williams, Thomas Zimmermann: Perspectives on Data Science for Software Engineering Software Python Data Science Distribution: anaconda.com Mein Repo: github.com/feststelltaste/software-analytics jQAssistant: github.com/buschmais/spring-petclinic Markus Harrer: @feststelltaste | feststelltaste.de
  18. Licenses Albert Einstein: Abhandlung Citation: Einstein, Albert: Quantentheorie des einatomigen

    idealen Gases – Zweite Abhandlung. In: Sitzungsberichte der preussischen Akademie der Wissenschaften, page 14, Reichsdruckerei Source: Lorentz Archive (https://www.lorentz.leidenuniv.nl/history/Einstein_archive/Einstein_1925_publication/Pages/paper_1925 _12.html) Python Logo Adopted based on work by www.python.org (www.python.org) License: GPL (http://www.gnu.org/licenses/gpl.html) Source: Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Python-logo-notext.svg) Yoni S. Hamenahem: Chuck Norris - The Delta Force 1986 License: CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/deed.en) Source: Wikimedia Common (https://commons.wikimedia.org/wiki/File:Chuck_Norris,_The_Delta_Force_1986.jpg)