Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten aus Softwareprojekten zur Unterstützung der Wartbarkeitsoptimierung langlebiger Softwaresysteme
Software Analytics - Datenanalysen in der Softwareentwicklung (BigDataMeetup)Markus Harrer
More Related Content
Similar to Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten aus Softwareprojekten zur Unterstützung der Wartbarkeitsoptimierung langlebiger Softwaresysteme
Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“hpaustria
Similar to Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten aus Softwareprojekten zur Unterstützung der Wartbarkeitsoptimierung langlebiger Softwaresysteme (20)
Erkenntnistheoretische Beurteilung von Extreme Programming
Einsatzmöglichkeiten der automatisierten Analyse von Artefakten und Metadaten aus Softwareprojekten zur Unterstützung der Wartbarkeitsoptimierung langlebiger Softwaresysteme
5. Grundlegendes
Ziele (generisch)
Wo liegen die Möglichkeiten und Grenzen von
Softwaredatenanalysen?
Wie kann damit die Verbesserung der Wartbarkeit
unterstützt werden?
Wie weit ist bereits der praktische Einsatz möglich?
7. Softwaredatenanalyse
Grundidee
Ausgangsbasis
Jeder Schritt in der Entwicklung und Verwendung von Software
erzeugt wertvolle Daten
Ziel
Neues, handlungsunterstützendes Wissen gewinnen
• automatisiert mit Hilfe statistischer Methoden
• aus vorhandenen Daten
Weg (ohne das Rad neu zu erfinden)
Unternehmensdaten Softwaredaten
Data Mining Mining Software Repositories
Business Intelligence Software Intelligence
Data Analytics Software Analytics
Predictive Analytics Recommendation Systems
9. Softwaredatenanalyse
Möglichkeiten
• Welche meiner Komponenten sollte ich am sorgfältigsten testen?
• Habe ich meinen Quellcode richtig strukturiert?
• Wenn ich Funktion foo() ändere, muss ich dann noch mehr ändern?
• Wie verwenden Benutzer typischerweise meine Software?
• Welche Bestandteile der Software sind beim Kunden am
beliebtesten?
11. Softwaredatenanalyse
Limitationen
Unzureichende Qualität der Datenbasis
• Datenbasis kann falsch, unvollständig, unglaubwürdig, veraltet
etc. sein
Kontextabhängigkeit von Auswertungen
• Ergebnisse meist nicht übertragbar
• Teils widersprüchliche Aussagen
(Statistische Unzulänglichkeiten)
• Shotgun Surgery
• Missachtete Einflussfaktoren (Korrelationen, Effektgrößen)
• ...
12. Softwaredatenanalyse
Was nun?
„Keine auf Empirie basierende Untersuchung
kann ein „allumfassendes Ergebnis“ liefern.“
Betrand Meyer
⇒ Ende des Vortrags? Nein!
Aktives Gegensteuern durch:
Einschränkung der kontextabhängigen Messergebnisse
Möglichkeit der manuellen Datenbewertung
14. Wartbarkeitsoptimierung
Was ist das?
Definition Wartbarkeit
„Software-Wartbarkeit ist ein Maß für die Leichtigkeit, mit
der sich Programme korrigieren, ändern und erweitern
lassen.“ Harry M. Sneed
Maßnahmen zur Optimierung der Wartbarkeit
• Softwaresanierung
• Reengineering
• Rewriting
• Replacing
• Redesign oder Refactoring
19. Wartbarkeitsoptimierung
„State of the Art“ Wartbarkeitsmessung
Wir haben 5309
Methoden, die zu
komplex sind!
Wir haben 51021 Zeilen
undokumentierten
Code!
Ja und?
Entwickler Entscheider
ExpressionParser hat
eine zyklomatische
Komplexität von 1967!
21. Wartbarkeitsoptimierung
Portfolioanalyse der Wartbarkeit
Entwickler Entscheider
Keine
Wartbarkeits-
optimierungen
Niedrig
priorisierte
Wartbarkeits-
optimierungen
Ersetzung
durch
kommerzielle
Produkte
Kandidaten für
Wartbarkeits-
optimierungen
Wartbarkeit
Nutzen
hoch
hoch
Kosten Qualität = Herstellung +
Erhalt der Qualität
Bewertbare
Quellcode-
bereiche
notwendig!
22. Wartbarkeitsoptimierung
Lösungsidee
Bewertbare Bereiche aus dem Quellcode extrahieren
Bezeichner wie die Namen von
• Klassen
• Instanzen
• Methoden
• Variablen
• Konstanten etc.
enthalten semantische Informationen.
Mehrere Quelltexte können daher semantisch ähnlich
zueinander sein
Wie lassen sich diese begrifflich abgeschlossenen Bereiche
anhand von Quellcodebezeichnern extrahieren?
23. Wartbarkeitsoptimierung
Belange
Belange sind begrifflich zusammengehörige Quellcodeteile,
welche einen bestimmten Zweck in der Software realisieren.
„...anything that stakeholders of a software project may want to
consider as a conceptual unit.”
Beispiele
• Funktionalität
• Geschäftsregeln
• Übergreifende Programmfunktionen
• Architektur- oder Entwurfsmuster
25. Wartbarkeitsoptimierung
Zusammenfassung
Bewertung der Wartbarkeit in begrifflich abgeschlossenen
Bereichen
Nutzenbewertung der Wartbarkeit
nach Belangen (=Kontexte)
Einschränkung der kontextabhängigen
Messergebnisse
Möglichkeit der manuellen Datenbewertung
39. Fallstudie
Semantische Analyse
Topic-Modeling
• Erkennt semantische Struktur aus einer Menge von
Dokumenten
• Dokumente bestehen aus Mischungen von Themen
• Themen bestehen aus Mischungen von Wörtern
• Zugehörigkeit von Dokumenten zu Themen lässt dann auf die
semantische Ähnlichkeit schließen
Latent-Dirichlet-Allocation
• Einfacher, probabilistisch generativer Topic-Modeling-Ansatz
• Probabilistisch: Mischungen sind diskrete
Wahrscheinlichkeitsverteilungen
• Generativ: Grundidee, dass jedes Dokument aus einer
Dokument-Themen-Verteilung bzw. jedes Thema aus einer
Thema-Wörter-Verteilung generiert wird.
47. Identifikation der Cluster
Erstellung der
Punktordnung
a) Datenobjekte im zwei-
dimensionalen Raum
c) Cluster
b) Erreichbarkeitsplot
d) Cluster
Fallstudie
Bildung von Belangen
Prinzip des dichtebasierten
Clustering-Verfahrens OPTICS-Xi
51. Fallstudie
Bildung von Belangen
DropOver
EvaluationstabelleBelang-Cluster-Plot
ID Top 5 Bezeichner Beschreibung Präzision
Treffer-
quote
0 request comment model response gateway Schnittstelle und Use-Cases für Kommentare 91,67% 57,89%
1 todo request model list response Schnittstelle und Use-Cases für Todo-Liste 96,55% 93,33%
2 scheduling request model response gateway Schnittstelle und Use-Cases für Terminplaner 100,00% 73,08%
3,6 request model file gateway response
Schnittstelle, Use-Cases und Entitäten für
Datei-Upload
88,89% 94,12%
4 exception creator site utils invalid Nicht eindeutig, meist Fehlerbehandlung 66,67% 33,33%
5 site location date creator description
Schnittstelle, Use-Cases und Entitäten für
Seitenerstellung
100,00% 45,00%
7 request scheduling model response javax REST-Webschnittstelle 90,00% 94,74%
Durchschnitt 90,54% 70,21%
60. Fallstudie
Bewertung von Belangen
Beispiel 2: Komplexität „REST-Schnittstelle“
DropOverGenehmigt!
Entwickler Entscheider
Wir müssen etwas bei
unserer technischen
Schnittstelle
vereinfachen.
63. Fallstudie
Bewertung von Belangen
Beispiel 3: Komplexität „Datenpersistenz“
(auch ohne Belang sind Klassen bewertbar)
DropOver
Egal, kommt
bald raus!
Entwickler Entscheider
Der Teil für die
Datenspeicherung ist
komplex!
65. Handlungsempfehlungen
Belastbare Erkenntnisse
Aus dem theoretischen Teil
• Technologie kein Problem
• Softwareentwicklungswerkzeuge zusammen mit Data-Mining,
Business-Intelligence, Data-Science, Big-Data etc. bieten ausreichend
Unterstützung
• Pauschale Auswertungen nicht sinnvoll
• Datenqualität zu unsicher
• Messungen immer kontextabhängig
Aus der Fallstudie
• Nutzen der Belang-Cluster-Bildung ist fraglich
• Einige „Hot-Spots“ erkannt, aber viele Quellcodeteile nicht erfasst
• Belang-Cluster bereits sehr stark ähnlich der Ordnerstruktur
• Ähnlichkeitsmatrizen können zur Architekturbewertung dienen
• Implizite und explizite „Konzepte“ erkennbar
66. Handlungsempfehlungen
Ausblick
• Extraktion von Features statt Belangen
• Feingranulare Messungen z. B. nach Use-Cases
• Begrifflicher Abstand als Metrik für Programmverständlichkeit?
• Vorsicht bei Datenschutz und Betriebsrat!
• Weitere Testprojekte nur mit anonymisierten Datenmaterial
aufwandsmäßig vertretbar
68. Zusammenfassung
• Softwaredatenanalyse bringt frischen Wind in die
Softwareentwicklung
• Aber keine ultimative Methode möglich
• Daher gezielte Eingrenzung des Betrachtungskontextes
vornehmen, um belastbare Aussagen zu schaffen
• Wirtschaftliche Bewertung der Wartbarkeit nach
Belangen durch Entscheider prinzipiell machbar
• Extraktion von Belangen aber nur Symptombekämpfung
• Besser: Quellcode nach begrifflicher Zusammengehörigkeit
strukturieren, dann nach „Verzeichnissen“ (bzw. Modulen
oder Packages) bewerten
• Insgesamt große Ernüchterung