Data Science meets Software Data

Markus Harrer, Software Development Analyst

@feststelltaste

JavaLand 2019, Phantasialand, Brühl, 19.03.2019

Data Science

Was ist Data Science?

"Statistik auf nem Mac."

Nach https://twitter.com/cdixon/status/428914681911070720

Was ist dieses "data"?

"Without data you‘re just another person with an opinion."

W. Edwards Deming

=> Belastbare Erkenntnisse mittels Fakten liefern

Was ist dieses "science"?

"The aim of science is to seek the simplest explanations of complex facts."

Albert Einstein

=> Neue Erkenntnisse verständlich herausarbeiten

Was ist ein Data Scientist?

"Jemand, der mehr Ahnung von Statistik
  hat als ein Softwareentwickler
  und mehr Ahnung von Softwareentwicklung
  als ein Statistiker."

Nach zu https://twitter.com/cdixon/status/428914681911070720

Data Science & Software Data: Perfect match!

Software Data

Was ist Software Data?

  • Statisch
  • Laufzeit
  • Chronologisch
  • Community

=> Krass viel!

Beispiele für Analysen

  • Performance-Bottlenecks
  • Verborgene Teamkommunikation
  • Software-Rightsizing
  • Architektur-/Design-/Code-Smells
  • ...

=> vom **Problem** über die Daten zur Erkenntnis!

Technik

Technologie (1/2)

Eher zweiranging...jetzt hier vorwiegend:

  • Jupyter (mit RISE)
  • Python 3
  • pandas
  • matplotlib

Technologie (2/2)

Es geht aber auch...

  • Jupyter // :-)
  • Java Groovy / beakerx / tablesaw
  • Cypher / Neo4j mit jQAssistant
  • ...

Praktischer Teil

Erstes Hands-On

Der Patient

Linux

  • Betriebsystem-Kernel
  • Hat verschiedene Module
  • Fast ausschließlich in C geschrieben
  • Entwickelt über 800.000 Entwicklern

I. Idee (1/2)

Fragestellung

  • Gibt es besonders alte Komponenten (No-Go-Areas)?

I. Idee (2/2)

Umsetzung

  • Werkzeuge: Jupyter, Python, pandas, matplotlib
  • Datenquelle: Git Blame Log

Meta-Ziel: Grundfunktionen anhand eines einfachen Show-Cases sehen.

Git Blame Log

Git Blame Log

Git Blame Log

II. Laden

Wir laden Git Blame Daten aus einer CSV-Datei


In [1]:

Was haben wir hier eigentlich?


In [2]:

1 DataFrame (~ programmierbares Excel-Arbeitsblatt), 4 Series (= Spalten), 5665947 Rows (= Einträge)

III. Bereinigen

  • Daten sind oft nicht so, wie man sie braucht
  • Datentypen passen teilweise noch nicht

Wir wandeln die Zeitstempel um


In [3]:

IV. Anreichern

  • Vorhandenen Daten noch zusätzlich mit anderen Datenquellen verschneiden
  • Aber auch: Teile aus vorhanden Daten extrahieren

=> Dadurch werden mehrere Perspektiven auf ein Problem möglich

Wir berechnen und das Alter jeder Quellcodezeilenänderung


In [4]:

Wir ordnen jeder Zeilenänderung eine Komponente zu.


In [5]:


String-Operationen...die dauern. Gibt aber diverse Optimierungsmöglichkeiten!

V. Aggregieren

  • Vorhandene Daten sind oft zu viel für manuelle Sichtung
  • Neue Einsichten über Problem aber oft auf hoher Flugbahn möglich

=> Daher feingranulare Daten sinnvoll zusammenfassen

Wir fassen nach Komponenten zusammen und arbeiten mit der jeweils jüngsten Zeilenänderung weiter.


In [6]:

IV. Visualisieren

  • Grafische Darstellung geben Analysen den letzten Schliff
  • Probleme können Außenstehenden visuell dargestellt besser kommuniziert werden

Wir bauen uns ein Balkendiagramm mit dem minimalen Alter pro Komponente.


In [7]:

Weitere Analysen

Weitere Beispiele

  • Analyse von Performance-Problemen
  • Identifikation von Code-Smells mit Cypher/jQAssistant/Neo4j
  • Code-Call-Analyse mit Groovy/beakerx/tablesaw

Ausblick

EDV mit OZAPFDIS, pandas und AUSI

Beispiel: Abhängigkeitsanalyse mit Daten von jdeps und Visualisierung mit D3.

Zusammenfassung

1. Analysen mit Standard-Werkzeugen einfach möglich
2. Wer mehr will bekommt auch mehr!
3. Es gibt unglaublich viele Quellen für Daten in der Softwareentwicklung

=> vom **Problem** über die Daten zur Erkenntnis!

Literatur

  • Adam Tornhill: Software Design X-Ray
  • Wes McKinney: Python For Data Analysis
  • Leek, Jeff: The Elements of Data Analytic Style
  • Tim Menzies, Laurie Williams, Thomas Zimmermann: Perspectives on Data Science for Software Engineering

Vielen Dank! Fragen?

Markus Harrer
innoQ Deutschland GmbH

markus.harrer@innoq.com

@feststelltaste

Demos & "Slides": https://github.com/feststelltaste/software-analytics => demos/20190319_JavaLand_Bruehl/