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

Software Analytics - Softwaresysteme datengetrieben analysieren (OOP 2021)

9f8d7084bb37f5cb2a72796918fc5d2f?s=47 Markus Harrer
February 09, 2021

Software Analytics - Softwaresysteme datengetrieben analysieren (OOP 2021)

In Unternehmen werden Datenanalysen intensiv genutzt, um aus Geschäftsdaten wertvolle Einsichten zu gewinnen. Warum nutzen wir als SoftwarearchitektInnen nicht auch Datenanalysen, um besser Einsichten in unsere Software und deren Entwicklung zu bekommen?

In diesem Workshop stelle ich Vorgehen und Best Practices von Software Analytics sowie zugehörige Werkzeuge (wie Jupyter, pandas, jQAssistant, Neo4j und Co.) vor. Damit gewinnen wir gemeinsam wertvolle Einsichten aus Datenquellen wie Git-Repositories, Performancedaten, Qualitätsberichten oder auch direkt aus dem Programmcode.

9f8d7084bb37f5cb2a72796918fc5d2f?s=128

Markus Harrer

February 09, 2021
Tweet

Transcript

  1. Software Analytics Softwaresysteme datengetrieben analysieren 09.02.2021 OOP2021 DIGITAL 1 Markus

    Harrer Software Development Analyst @feststelltaste
  2. “ Markus Harrer Senior Consultant, Roth Tools only find, people

    have to find out!“ • Architektur-, Design- und Code-Reviews • Softwaremodernisierung und -sanierung • Datenanalysen in der Softwareentwicklung 2 Foundation & IMPROVE Instructor
  3. @feststelltaste Software Analytics? 3

  4. Problem der technischen Probleme 4 Fachliche Features Architektur Erkannte Fehler

    Technische Probleme sichtbar unsichtbar negativer Wert positiver Wert https://pkruchten.files.wordpress.com/2013/12/kruchten-colours-yow-sydney.pdf
  5. Management Entwicklung Kommunikationsbarriere Risikoappetit Technische Probleme 5 Software Analytics

  6. “…ist die Analyse von Softwaredaten für Manager und Softwareentwickler mit

    dem Ziel, es allen an der Entwicklung Beteiligten zu ermöglichen, neue Einsichten aus ihren Daten zu erhalten, um bessere Entscheidungen zu treffen.” Software Analytics… Frei übersetzt nach Tim Menzies und Thomas Zimmermann 6
  7. Spezifische Fragen beantworten 7 Häufigkeit Fragen Wichtigkeit Nutze Standard-Tools für

    allgemeine Fragen Option 2: Setze Software Analytics zur Beantwortung wichtiger Fragen ein! Option 1: Verpenne die anderen Fragen einfach
  8. Warum jetzt? • Bezeichner im Code werden immer fachlicher •

    Analysen können sich mit der Fachlichkeit verbinden • Analysewerkzeuge können nun auch mit stark vernetzten Daten umgehen • Datenanalysen sind einfacher durchzuführen 8
  9. @feststelltaste Anwendungsbeispiele 9

  10. Ermittlung von Performance-Hotspots über Call-Tree-Analyse 10 https://www.feststelltaste.de/performance-hotspots/ Laufzeit API-Calls zum

    Backend Einstiegspunkt in die Anwendung Hot-Spot-Metrik (z. B. Anzahl DB-Calls) Ausgangspunkt zum Bottleneck Wo sind die Performance- Hotspots?
  11. Analyse der Community-Aktivitäten um Software-Tools 11 Community Wie gut wird

    das Tool durch die Community supported?
  12. Analyse von Softwaresystemen* 12 aus (Graph) Data Science mit Vorgehen,

    Methoden und Standardwerkzeugen (M)eine Umsetzung von Software Analytics * wird sehr weit aufgefasst
  13. @feststelltaste Data Science als Fundament 13

  14. Data Science und Softwareentwicklung? 14 “Ein Data Scientist ist besser

    in Statistik als ein Softwareentwickler und besser in Softwareentwicklung als ein Statistiker.”
  15. Data Science Tools 15

  16. Interaktives Notebooksystem • Dokumentenzentrierte Analysen • Ausführbare Codeblöcke • Direkt

    sichtbare Visualisierungen 16
  17. Die Programmiersprache für Data Science Einfach Effektiv Schnell 17

  18. Pragmatisches Datenanalysewerkzeug Das programmierbare Excel-Arbeitsblatt • Richtig schnell • Flexibel

    • Ausdrucksstark Sehr gute Integration mit anderen Bibliotheken 18
  19. Visualisierungsbibliothek Ermöglicht die programmatische Erstellung von Grafiken • Erstellung von

    Balken-, Linien-Diagrammen und mehr • Gute Integration mit pandas & Co. Direkte Ausgabe in Jupyter Notebooks 19
  20. Application Server Welcher Code in welchen Packages wird nicht verwendet?

    Demo „Production Coverage“ User Java Web Application Coverage Tool Coverage per Class liefert verwendet PACKAGE,CLASS,LINE_MISSED,LINE_COVERED org.springframework.samples.petclinic,PetclinicInitializer,0,24 org.springframework.samples.petclinic.model,NamedEntity,1,4 org.springframework.samples.petclinic.model,Specialty,0,1 org.springframework.samples.petclinic.model,PetType,0,1 org.springframework.samples.petclinic.model,Vets,4,0 org.springframework.samples.petclinic.model,Visit,0,12 ... 20 →Spezieller Fall mit allgemeinen Analysemustern!
  21. @feststelltaste Graph Data Science 21

  22.  Verschiedene Datenquellen werden miteinander in Beziehung gesetzt  Neue

    Konzepte / Perspektiven werden auf feingranulare Daten projiziert  Vielen Einzelheiten werden zu einer besser interpretierbaren Gesamtsicht zusammengefasst Graph-orientierte Analysen 22 Pet 2016-09-31 78,5% PetDBO Coverage Commits God Class Code Smells Entity Pattern Patterns Pet Code „Unsere Entitys tendieren dazu, God Classes zu werden“
  23. Graph Data Science Tools 23

  24. Die Spezialisten für vernetzte Daten ė Framework zur statischen Architektur-

    und Code-Analyse auf Basis von Softwaredaten ė Graph-Datenbank zur Ablage und Analyse stark vernetzter Daten [:SPEICHERT_IN] 24
  25. Neo4j, Cypher & Jupyter Notebook Cypher-Extension https://github.com/versae/ipython-cypher Alternative: Cypher-Kernel https://github.com/HelgeCPH/cypher_kernel

    25
  26. Jupyter Notebook + py2neo 26 1. Bibliotheken importieren 2. Verbindung

    zur laufenden Neo4j Instanz herstellen 3. Abfrage in Cypher absetzen 4. Ergebnis in DataFrame umwandeln 5. Ergebnis von der Graph-Datenbank wird dargestellt https://py2neo.org/
  27. Roundtrip pandas ←→ Neo4j 27 pandas DataFrame as input Neo4j

    output as DataFrame Import code into Neo4j with py2neo
  28. @feststelltaste Das war‘s schon wieder :-( 28

  29. Klick auf https://mybinder.org/repo/feststelltaste/software-analytics-workshop-guided Dann Klick auf Ordner „tutorial“ Ihr Weg

    zum Mini-Tutorial 29
  30. Weitere Infos 30

  31. Sammlung von Ressourcen über Software Analytics https://github.com/feststelltaste/awesome-software-analytics Einstiegshilfen von mir

    31
  32. TOP 5 Software Analytics https://www.feststelltaste.de/top-5-software-analytics/ Mein Software Analytics Repository https://github.com/feststelltaste/software-analytics

    Mini-Tutorial und mehr zu Software Analytics https://github.com/feststelltaste/software-analytics-workshop Einstiegshilfen von mir 32
  33. Podcast-Folge „Software Analytics - Mit Data Science Probleme in der

    eigenen Software finden“ https://www.innoq.com/de/podcast/083-software-analytics/ Vortrag „Software-Systeme datengetrieben analysieren“ https://www.youtube.com/watch?v=v73iPtJEkIs Mein Blog https://feststelltaste.de Weiteres über das Thema von mir 33
  34. Bücher zu Software Analytics Adam Tornhill: Software X-Ray Tim Menzies,

    Laurie Williams, Thomas Zimmermann: Perspectives on Data Science for Software Engineering Christian Bird, Tim Menzies, Thomas Zimmermann: The Art and Science of Analyzing Software Data 34
  35. Weitere Details zu jQAssistant/Neo4j https://easychair.org/publications/preprint/893N 35

  36. @feststelltaste Software Analytics Training 36

  37. Öffentliche Termine ab März 2021 remote, firmenintern nach Abstimmung Software

    Analytics Training 37
  38. Nächste Termine Website: https://www.innoq.com/de/trainings/software-analytics/ Rabatt-Code: OOP2021 38 1. März –

    4. März 2021 4 Nachmittage 13:30 bis 16:30 Uhr Deutsche Version 3. Mai – 6. Mai 2021 4 Abende 18:00 bis 21:00 Uhr Englische Version
  39. Miro • Online-Whiteboard • Nutzung über anonyme Gastzugänge • Interaktive

    Übungen zu diversen Themen Zoom • Videokonferenzlösung • Nutzung für Theorie und Übungen • In Übungen meist Arbeit in Kleingruppen (Breakout-Sessions) 39 Remote-Tools zur Durchführung Zusätzlich verwenden wir eine Online-Datenanalyse-Plattform für Pandas, Neo4j & Co.
  40. Kollaborative Übungen in Kleingruppen mit Miro Übungen mit Online-Whiteboard Übung

    zu Software Analytics Canvas Übung zum Aufbau von Datenanalysen 40
  41. Kurzbeschreibung Nutzen Sie datengetriebene Softwareanalysen, um Entscheidungen bei der Weiterentwicklung

    Ihrer Softwaresysteme auf eine solide Faktenbasis zu stellen! Dieser Kurs bietet Ihnen dazu einen kompletten Einstieg in das Thema Software Analytics. Lernen Sie die Methodik, Vorgehensweisen und Werkzeuge, um eigenständig nachvollziehbare Datenanalysen in der Softwareentwicklung durchzuführen. 41
  42. Lernziele • Standardwerkzeuge aus dem Data-Science- und Graphdatenbanken-Bereich für die

    Analyse von Softwaredaten einsetzen • Probleme in der Softwareentwicklung datengetrieben, methodisch und strukturiert herausarbeiten • Handlungsorientierte Schlüsse aus den Analyseergebnissen ableiten • Analysen und Erkenntnisse verständlich kommunizieren 42
  43. Inhalte Tag 1 • Grundprobleme der Softwareentwicklung • Einführung in

    Software Analytics • Datenquellen für Analysen • Herausforderungen bei Analysen im Softwarebereich • Einführung in Reproducible Data Science • Datenanalysen mit Jupyter, Python, pandas & Co. • Visualisierungen mit matplotlib 43
  44. Inhalte Tag 2 • Interaktive Visualisierung mit D3 und pypal

    • Graph-basierte Softwareanalysen mit Neo4j • Integration von Software Analytics in die Softwareentwicklung • Ausblick in das Maschinelle Lernen auf Basis von Softwaredaten 44
  45. 45 Fragen!? Diskussionen!? Anmerkungen!? Feedback!?

  46. 46 Vielen Dank! innoQ Deutschland GmbH Krischerstr. 100 40789 Monheim

    am Rhein Germany +49 2173 3366-0 Ohlauer Str. 43 10999 Berlin Germany Ludwigstr. 180E 63067 Offenbach Germany Kreuzstr. 16 80331 München Germany Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 01 11 Albulastr. 55 8048 Zürich Switzerland innoQ Schweiz GmbH www.innoq.com Markus Harrer markus.harrer@innoq.com @feststelltaste https://feststelltaste.de