Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Software-Analytics in komplexen Software-Produkten

Autor: Professor Dr. Rainer Koschke, Universität Bremen

Beitrag - Embedded Software Engineering Kongress 2016

 

Zusammenfassung

Dieser Artikel beschreibt Techniken, Methoden und Werkzeuge der Software-Analytics. Software-Analytics ist die Wissenschaft zur Gewinnung und Auswertung von Daten über ein Software-Produkt oder dessen Entwicklung. Folgende Fragen werden geklärt: Welche verwertbaren Daten fallen im Entwicklungsprozess an? Wie identifziert man die relevanten Daten für eine gegeben Fragestellung? Wie können die Daten erhoben werden? Mit Hilfe welcher Data-Mining-Techniken lassen sich die Daten auswerten? Welche Werkzeuge gibt es für das Data-Mining? Wie können Daten sinnvoll visualisiert werden? Was sind ihre Chancen und Gefahren?

Was ist Software-Analytics und warum ist sie wichtig? 

Manager von Software-Projekten müssen unzählige weitreichende Entscheidungen treffen. Ist das System nun ausreichend getestet? Hat sich die Einführung einer neuen Methode oder eines Tool bewährt? Fehler bei diesen Entscheidungen können teuer werden. Leider fehlen nicht selten Daten, um dazu fundierte Entscheidungen zu treffen. In solchen Fällen sind Manager auf die eigene Intuition oder die Meinung anderer angewiesen. Der Ratschlag anderer ist jedoch nur bedingt zuverlässig, da er nicht selten auch nur auf Intuition beruht. Menschliche Intuition – die eigene oder die anderer – kann fehlgehen. Die landläufige Intuition sagt beispielsweise, dass große Module überproportional mehr Fehler enthalten als kleine. Folgt man diesem Glauben, wird man kleine Module weniger testen als große. Tatsächlich haben aber empirische Studien gezeigt, dass kleine Module überproportional mehr Fehler enthalten.

Aus diesem Grund sollten Entscheidungen auf Basis von empirischem Wissen getroffen werden, wann immer das möglich ist. Hierfür benötigt man jedoch zuerst entsprechende Daten. Und dann müssen Schlüsse aus den Daten gezogen werden. Software-Analytics adressiert diese beiden Punkte. Sie ist die Wissenschaft zur Gewinnung und Auswertung von Daten über ein Software-Produkt und/oder dessen Entwicklungsprozess. Sie ist das Handwerkszeug eines jeden empirischen Forschers in der Softwaretechnik. Sie ist jedoch keinesfalls auf die Forschung begrenzt. Auch in der Praxis ergeben sich relevante Fragestellungen, die möglicherweise nicht auf universelle Verallgemeinerbarkeit abzielen, jedoch für nachhaltige Entscheidungen innerhalb eines Unternehmens von großer Bedeutung sind.

Welche verwertbargen Daten fallen im Entwicklungsprozess an?

In der Entwicklung fallen jede Menge Daten an, die benutzt werden können, um wichtige Fragen in der Software-Entwicklung fundiert zu beantworten. Sie stecken im Quelltext, in Versionskontrollsystemen, Issue-Trackern, E-Mail-Konversationen, Chat-Logs und anderen Quellen. Diese Quellen können genutzt werden. Teils lassen sie sich zu diesem Zweck automatisiert extrahieren. Teilweise müssen sie aber ach über Befragungen oder Beobachtungen erhoben werden, weil viele Informationen in den Köpfen der Entwickler oder anderer am Prozess Beteiligter stecken.

Wie identifiziert man die relevanten Daten für eine gegeben Fragestellung?

Der Ausgangspunkt einer jeden Untersuchung muss eine klar definierte Frage sein. Und bevor man sich die Mühe macht, sie zu beantworten, sollte die Frage selbst hinterfragt werden. Der Test hierfür lautet: Wenn ich eine Antwort auf diese Frage hätte, was könnte und würde ich dann anders machen? Fällt die Frage bei diesem Test durch, mag sie interessant sein, aber sie hat dann keinerlei Relevanz. Die zu beantwortende Frage geht also immer von einem konkreten und relevanten Ziel aus. Beispielsweise kann das Ziel die Verbesserung der Qualitätssicherung lauten. Daraus resultieren dann gleich mehrere relevante Fragen, wie zum Beispiel welche qualitätssicherenden Maßnahmen überhaupt in welcher Weise und Umfang angewandt werden, welche Effektivität sie besitzen und wie effizient sie durchgeführt werden.

Eine präzise Fragestellung ist auch schon deshalb unumgänglich, weil nur eine solche operationalisiert werden kann, das heißt, man kann nur dann auch wirklich ein Messverfahren angeben, mit dem diese Frage beantwortet werden kann. Wird zum Beispiel die Frage nach dem Umfang des Testens gestellt, benötigen wir eine eindeutige und berechenbare Definition von "Umfang". Der Umfang des Tests kann zum Beispiel durch verschiedene Abdeckungsmaße berechnet werden (wie zum Beispiel Anweisungs- oder Zweigabdeckung und viele andere Maße). Alternativ könnte sie definiert werden durch die Zeit, die Tester für den Test aufgewandt haben.

Ist die Frage präzise operationalisiert, dann hat man eigentlich bereits eine Messvorschrift zu ihrer Beantwortung gefunden. Wurde die eingangs gestellte Frage nach dem Umfang des Tests durch "Grad der Testabdeckung gemessen durch Anweisungsabdeckung" operationalisiert, dann ist die Anweisungsabdeckung das Maß, das es zu erheben gilt.

Das Vorgehen, ausgehend von konkreten und relevanten Zielen Fragen abzuleiten, die für das Erreichen der Ziele beantwortet werden müssen, um über diese schließlich zu Maßen zu gelangen, die die Fragen quantifiziert beantworten, ist in der wissenschaftlichen und praktischen Literatur auch als die so genannte Goal-Question-Metric-Methode bekannt.

Da man die Daten möglichst ökonomisch erheben möchte und auch nicht alle Daten für die Beantwortung einer Frage tatsächlich oder in der ausreichenden Datenqualität vorhanden sind, muss dieses Verfahren möglicherweise einige Male iteriert werden, bis man schließlich alle beantwortbaren Fragen und praktikablen Messverfahren gefunden hat.

Wie können die Daten erhoben werden?

Daten über den Quelltext selbst, zum Teil auch über dessen zugrunde liegenden Architektur lassen sich von Code-Analyse-Werkzeugen wie zum Beispiel der Axivion Bauhaus-Suite erheben. Diese Werkzeuge können die Maße oft auch begleitend über die Entwicklungsgeschichte erheben und nicht nur für eine einzelne Version. Solch historische Daten sind besonders wertvoll, wenn man Trends aufspüren möchten.

Die meisten Entwicklungswerkzeuge, in denen Daten anfallen, bieten Schnittstellen und Export-Möglichkeiten an. Liegen die Daten in einer festen Syntax vor, lassen sie sich einfach weiterverarbeiten. Inhaltliche Aspekte werden aber häufig natürlichsprachlich verfasst. Hier muss man dann zum Teil mit Methoden der Computer-Linguistik operieren. Da es sich um eher einfache Texte handelt und nicht um literarische Werke, hat man aber in der Regel gute Chancen, sie automatisiert auszuwerten. Nicht selten genügen hierfür sogar reguläre Ausdrücke zur Suche nach bestimmten Stichwörtern. Mittlerweile wenden Forscher aber auch erfolgreich weitergehende Techniken des Text-Minings an. Beispielsweise werden automatisierte Sentimentanalysen (engl.: Sentiment Detection; auch: Stimmungserkennung) benutzt, um in Texten ausgedrückte Gefühle wie Zustimmung oder Ablehnung zu erkennen. Das Text-Mining wird zunehmend mächtiger.

Manche Daten liegen jedoch nicht oder noch nicht elektronisch vor und müssen dann in anderer Weise beschafft werden, zum Beispiel durch Interviews oder Fragebögen.

Die Daten in elektronischen Archiven wie Versionskontrollsystemen enthalten oft aber nur die halbe Wahrheit. Sie können fehlerhaft oder unvollständig sein. Deshalb sollte man keinesfalls den erfassten Daten blind vertrauen. Vielmehr sollten sie auf Validität geprüft und mit den Entwicklern reflektiert werden, deren Wissen häufig tiefere Einsichten und Interpretationen gewährt. Eine rein quantitative Analyse sollte aus diesem Grund auch stets von einer qualitativen Analyse, die nach Erklärungen für die erfassten Daten und die gefundenen (möglicherweise nur scheinbaren) Zusammenhänge sucht, begleitet werden.

Mit Hilfe welcher Data-Mining-Techniken lassen sich die Daten auswerten?

Software-Analytics bedient sich klassischer Statistik genauso wie fortschrittlicher Data-Mining- und Visualisierungstechniken, um Muster und Zusammenhänge aufzudecken. Die klassische Statistik bietet diverse Assoziationskoeffizienten, Regressionsanalysen, Signifikanztests und vieles mehr, mit Hilfe derer Daten ausgewertet werden können. Auch verschiedene Visualisierungstechniken sind hier zu nennen, wie Beispiel Box-Plots, Verteilungsdiagramme etc. Zu den populären fortschrittlichen Data-Mining-Techniken und dem maschinellen Lernen zählen zum Beispiel die Auffindung von Assoziationsregeln (beim Einkauf auch bekannt als Regeln der Form: "Wer Produkt X gekauft hat, hat auch Produkt Y gekauft") oder das automatische Lernen von Entscheidungsbäumen zur Klassifikation von Daten.

Welche Werkzeuge gibt es für das Data-Mining?

Für die statistische Analyse und das Data-Mining gibt es sowohl freie als auch kommerzielle Werkzeuge. Zu den kommerziellen Werkzeugen zählt zum Beispiel SPSS. Ein sehr mächtiges freies Werkzeug ist R. R ist im engeren Sinne eine Programmiersprache für das Lösen statistischer Probleme. R ist jedoch auch ein großes Ökosystem von Paketen, die von einer großen Gemeinde von R-Entwicklern zur Verfügung gestellt werden. Hierzu zählen Pakete sowohl für klassische statistische Analysen und Tests, genauso wie moderne Algorithmen des Data-Minings und maschinellen Lernens bis hin zu mächtigen Visualisierungsformen. R ist in jedem Falle einen genauen Blick wert. In meiner täglichen Arbeit in der Forschung habe ich bis dato zu jeder meiner statistischen Fragestellungen ein passendes Paket in R gefunden.

Wie können Daten sinnvoll visualisiert werden?

Die genannten Statistik-Werkzeuge wie SPSS oder R bieten eine reichhaltige Auswahl an Visualisierungen, mit deren Hilfe komplexe Daten anschaulich aufbereitet werden können. Eine weiterführende Idee dieser Visualisierungen stellt der Ansatz des Visual Analytics dar. Während klassischerweise Visualisierungen benutzt werden, um die Ergebnisse einer Analyse anzuzeigen, wird bei der Visual Analytics die Visualisierung der Rohdaten einer Analyse aufbereitet, so dass der menschliche Betrachter selbst Muster erkennen kann. Die Inferenz wird hier also von einem Algorithmus auf den Menschen übertragen. Hierbei wird die besonders gut ausgeprägte Fähigkeit des menschlichen Sehsinns für die Mustererkennung ausgenutzt.

Was sind die Chancen und Gefahren der (Mis)Interpretation?

Software-Analytics ist nicht das blinde Vertrauen allein auf Zahlen. Zahlen sind eine enorme Verdichtung zum Teil komplexer Zusammenhänge. Sie müssen interpretiert werden. Der rein quantitativen Analyse sollte deshalb auch immer eine qualitative Analyse an die Seite gestellt werden, die den in Zahlen verdichteten Phänomenen auf den Grund geht. Zudem sind bei der Erhebung und Auswertung personenbezogener Daten auch generell ethische und datenschutzrechtliche Belange zu beachten.

Fazit

Sowohl das Wissen über die Methodik beim richtigen Vorgehen als auch die empirischen Resultate, die mit den Methoden der Software-Analytics erzielt wurden, haben in den letzten Jahren rapide zugenommen. Analyse-Werkzeuge für die Datenerhebung und -auswertung sind frei verfügbar. Die Zeit ist reif, dass sich auch Unternehmen der Software-Analytics widmen. Die empirisch-fundierte Beantwortung relevanter praktischer Fragen im Kontext des eigenen Unternehmens ist hier das Ziel. Es genügt, ein oder zwei Menschen im Unternehmen abzustellen, die auch nur einen Teil ihrer Arbeitszeit der Software-Analytics zu widmen brauchen. Vieles an der Gewinnung und Auswertung der Daten kann automatisiert werden. Ein Grundverständnis von Statistik und die Bereitschaft, sich in Data-Mining-Techniken einzuarbeiten, genügen als Voraussetzung. Programmierkenntnisse sind von großem Vorteil, denn die Auswertung kann und sollte mit statistischer Software wie zum Beispiel R weitestgehend programmiert, das heißt automatisiert werden. Auf diese Weise wird nicht nur mühsame manuelle Arbeit vermieden, man verschafft sich damit auch eine Wiederholbarkeit und Nachvollziehbarkeit der Ergebnisse.

Die Software-Analytics-Experten können dann anhand ihres Methodenwissens für relevante Fragestellungen festlegen, welche Daten erhoben werden müssen und wie diese sinnvoll ausgewertet werden können. Andere Menschen im Unternehmen können diese bereitgestellten Analyse-Werkzeuge anwenden und deren Ergebnisse für die Entscheider aufbereiten. Auf diese Weise können die Entscheider auf Basis empirisch-fundierter Daten entscheiden.

Weiterführende Links und Literatur

R: https://www.r-project.org/
SPSS: https://www-01.ibm.com/software/de/analytics/spss/
Axivion Bauhaus Suite: https://www.axivion.com/de
Software-Analytics: Perspectives on Data Science for Software Engineering von Tim Menzies (Herausgeber), Laurie Williams (Herausgeber), Thomas Zimmermann (Herausgeber). Erschienen bei Morgan Kaufmann, 2016.
Data Mining: Practical Machine Learning Tools and Techniques von Ian H. Witten (Autor), Eibe Frank (Mitwirkende), Mark A. Hall (Mitwirkende). Erschienen bei Morgan Kaufmann Series in Data Management Systems, 2011.

 

Beitrag als PDF downloaden


Software Engineering Management - unsere Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Software Engineering Management /Prozess-, Projekt- und Produktmanagement.

Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.


Software Engineering Management - Fachwissen

Wertvolles Fachwissen zum Thema Software Engineering Management /Prozess-, Projekt- und Produktmanagement steht hier für Sie zum kostenfreien Download bereit.

Zu den Fachinformationen

 

Fachwissen zu weiteren Themen unseren Portfolios finden Sie hier.