Die Perspektiven der Software Intelligence für kleine und mittlere Unternehmen
In jedem Aspekt unseres täglichen Geschäftslebens werden Daten erzeugt. Ob sie nun bewusst durch Handlungen entstehen, die wir direkt ausführen, oder implizit durch die von uns verwendeten Software-Tools erzeugt werden. Einige Aspekte dieser Daten werden bereits in Unternehmen genutzt. So wird zum Beispiel Business Intelligence (BI) in vielen Unternehmen eingesetzt, um aus tagesaktuellen Daten Metriken und Trends zu berechnen. Dadurch gewinnen die Unternehmen neue Erkenntnisse, die den Entscheidungsprozess unterstützen können. BI sammelt, analysiert und präsentiert die Daten oft in Form von Dashboards oder anderen Berichtsformen. In gleicher Weise können Daten aus dem Software-Engineering genutzt werden, um Einblicke in die Entwicklungsaktivitäten zu gewinnen und die diese zu unterstützen. Der Begriff Software Intelligence (SI) beschreibt daher eine Reihe von Methoden und Techniken, mit denen Rohdaten aus dem Softwareentwicklungszyklus gesammelt und in nützliche Erkenntnisse umgewandelt werden, die die Entscheidungsfindung, das Qualitätsmanagement und das Ressourcenmanagement in der Softwareentwicklung unterstützen.
SI umfasst nicht nur die Ableitung einfacher Metriken für die Entscheidungsfindung (z. B. Dateigrößen- oder Komplexitätsmaße), sondern auch aufwändigere Techniken, die eine vorherige Datenkonsolidierung und -aufbereitung erfordern. Angesichts der ständig wachsenden Menge historischer Daten kann das maschinelle Lernen dazu beitragen, Erkenntnisse zu gewinnen und den Lebenszyklus der Softwareentwicklung zu verbessern. Viele Forscher entwickeln neue Techniken, um maschinelles Lernen auf die Softwareentwicklung anzuwenden. ML4SE (Maschinelles Lernen für Software-Engineering) ist eines der Trendthemen in SI, um neue Wege zur Unterstützung von Entwicklern in ihrem täglichen Leben durch den Einsatz von maschinellen Lernmodellen aufzuzeigen.
Das Ziel von Software Intelligence ist es, Entwickler bei ihrer täglichen Arbeit anzuleiten und zu unterstützen. SI unterstützt u.a. die Analyse, Überwachung und Optimierung der Quellcodequalität. Oftmals werden Dashboards verwendet, um die Ergebnisse von SI-Methoden zu präsentieren. Einige Tools helfen auch dabei, SI-Techniken direkt in den Workflow zu integrieren und Informationen direkt in der entsprechenden Anwendung anzuzeigen (z.B. als Teil von kontinuierlichen Integrationsläufen) oder Nachrichten an den Posteingang oder an Kommunikationstools (z.B. Slack) zu senden, um über neue Erkenntnisse zu informieren. Im Folgenden listen wir Aktivitäten entlang des Softwareentwicklungslebenszyklus auf und beschreiben SI-Techniken, die diese unterstützen sollen. Einige dieser Techniken sind bereits gut etabliert. Andere sind noch Bestandteil aktiver Forschung und erst zu einem gewissen Grad in der Industrie adaptiert. Wir wollen einen Ausblick auf diese Techniken geben und neue Entwicklungen beschreiben:
Für all diese Anwendungsfälle werden geeignete Daten benötigt, die nicht nur Informationen über das Problem enthalten, sondern auch Schlussfolgerungen auf neu gewonnene Daten ermöglichen. Daten aus allen möglichen Softwareentwicklungsaktivitäten müssen kontinuierlich gesammelt und analysiert werden. Je nach Anwendungsfall und den eingesetzten Werkzeugen zur Datenerfassung im Softwareentwicklungszyklus kann die Qualität der eingesetzten SI-Techniken variieren. Ein umfassender und gründlicher Plan zum Sammeln und Aufbereitung der Daten ist ein wichtiger Baustein für die Anwendung von Software Intelligence. Einige der oben vorgestellten Methoden benötigen historische Entwicklungsdaten, um fundierte und korrekte Vorhersagen über den Status der Softwareentwicklung zu treffen. Wir kategorisieren Daten aus dem Lebenszyklus der Softwareentwicklung in 3 Bereiche: Prozess-, Produkt- und codebezogene Daten.
Mit der ständig wachsenden Menge an Daten in Software-Engineering-Prozessen (entweder explizit oder implizit gesammelt) können immer mehr Entscheidungshilfen durch die Analyse dieser Daten angeboten werden. SI oder ML4SE erhält immer mehr Aufmerksamkeit von Forschung und Industrie. Die Anwendung von SI-Techniken kann helfen, bei der Entwicklung und Bereitstellung von Softwaresystemen Zeit und Ressourcen zu sparen.
Um das volle Potenzial von SI auszuschöpfen, muss man sich auch Gedanken über die verfügbaren Daten machen und darüber, wie sie gesammelt und organisiert werden können. Daten können verstreut und nur umständlich zugänglich sein. Rohdaten aus einzelnen Quellen können bereits für einfachere Anwendungsfälle verwendet werden, jedoch ist die Kombination verschiedener Quellen oft notwendig, um aussagekräftige Datensätze zu generieren und maschinelle Lernmodelle zu erlernen. Die Verfolgung von Aktivitäten während des gesamten Softwareentwicklungsprozesses ist besonders wichtig.
Das CCE plant eine Serie zu den einzelnen Themen des SI und mehr interessante Anwendungen in verschiedenen Bereichen des Software-Engineerings detailliert vorzustellen, von der Vorhersage von Fehlern bis hin zur Gesundheit und dem Management von Teams.