Softwarebewertung mit KI

Wie Softwarebewertung künftig durch KI unterstützt werden kann

Im Zeitalter der digitalen Transformation wird die Qualität von Software zu einem entscheidenden Faktor für den Produkterfolg. Künstliche Intelligenz, insbesondere generative KI, bietet vielversprechende Ansätze, um Software-Engineering-Prozesse effizienter zu gestalten und die Produktqualität zu steigern. In diesem Blogbeitrag beleuchten wir, wie KI-unterstützte Methoden die Messung und Verbesserung von Software- und Produktqualität optimieren können. Anhand eines Beispiels aus dem Smart-City-Bereich zeigen wir, wie die Integration von GenAI in die Softwarebewertung neue Möglichkeiten eröffnet.

Der Hype um generative KI

Seit dem ChatGPT »Boom« im Jahr 2022 haben sich die Google-Suchanfragen zum Thema Künstliche Intelligenz vervielfacht [1]. Der Begriff KI (oder auch engl. AI = Artificial Intelligence) lässt sich seither in unzähligen öffentlichen Debatten wiederfinden – obwohl er deutlich älter ist als ChatGPT und Co. Bereits 1955 tauchte er erstmals auf und ist seitdem fester Bestandteil der Informatikforschung und -praxis. Der aktuelle KI-Hype bezieht sich vor allem auf generative KI (generative Artificial Intelligence oder kurz GenAI). GenAI ist für viele ein nützliches Tool geworden, das Texte schnell zusammenfasst, Themen einfach erklärt oder aber auch in Form von Sprachassistenten immer mehr Einzug in den Alltag vieler Menschen findet. Passend zu diesen Beispielen ist auch der Begriff »Large Language Model (LLM)« bekannter geworden. Dabei handelt es sich um die Sprachmodelle hinter den genannten Verwendungsmöglichkeiten. LLMs basieren auf Millionen von Textdokumenten, die die Basis für das Erlernen von Wahrscheinlichkeiten zwischen Wörtern und Satzfolgen legen [2].

Die Einsatzmöglichkeiten von KI sind vielfältig und in einigen Bereichen bereits seit Jahren nicht mehr wegzudenken. KI, insbesondere in Form von maschinellem Lernen, ist inzwischen in vielen Unternehmen in Arbeitsprozesse eingebunden. Dabei werden vor allem Aufgaben wie Entscheidungsfindung, Datenanalyse oder Vorhersage adressiert – beispielsweise in der Bilderkennung oder in Vorschlagssystemen. Mit GenAI eröffnen sich neue, bisher unerschlossene Potenziale. Durch das schnelle Erzeugen von Inhalten wie z.B. Text, Audio oder Video können Aufgaben in bisher unbekanntem Maß effizient automatisiert und Prozesse somit optimiert werden [3]. Innerhalb von Sprachmodellen sind semantische Verknüpfungen zwischen Begriffen verankert, die sowohl analytisch als auch konstruktiv genutzt werden können.

Am Fraunhofer IESE beschäftigen wir uns u.a. mit der Frage, wie KI, speziell GenAI, im Software-Engineering (SE) eingesetzt werden kann, um SE-Prozesse zu unterstützen. Unter anderem betrachten wir die KI-unterstützte Messung von Software- und Produktqualität. Damit kann zunächst Transparenz über den Qualitätsstand erlangt werden, um ausgehend davon zu prüfen, wie die Qualität verbessert werden kann. Während Analysen von Code mittels Werkzeugen wie SonarQube bereits etablierter Standard sind, ist die Analyse von weiteren Artefakten häufig zeitintensiv, mindestens in Teilen manuell und benötigt oftmals Expertenwissen. Wie GenAI dabei grundsätzlich unterstützen kann, skizzieren wir nachfolgend und zeigen anhand eines konkreten Beispiels eines Online-Marktplatzes im Smart-City Bereich die Umsetzung.

Produktqualität ist Softwarequalität

Kaum ein Produkt entsteht heute ohne einen signifikanten Anteil von Software. Eine hohe Qualität von Software ist dann ein wesentlicher Faktor für hohe Produktqualität und damit für den Erfolg eines Produkts. Softwarequalität umfasst viele Aspekte, die weit über Code hinausgehen. Ihr Grundstein wird bereits in den frühen Phasen des SE gelegt. Die ISO 25010 [4] definiert Softwareproduktqualität umfassend in verschiedenen Dimensionen (genannt Charakteristiken). Dazu gehört die »fachliche Eignung«, also wie korrekt und vollständig ein Softwareprodukt die benötigten Funktionen abdeckt. Einfluss auf diese Charakteristik nimmt bereits die Aktivität des Requirements-Engineerings (RE), lange bevor Code geschrieben wird. Charakteristiken wie »Performanz«, »Kompatibilität«, »Sicherheit«, »Wartbarkeit« und »Flexibilität« ergeben sich aus einer hochwertigen Softwarearchitektur – welche aktiv gestaltet werden muss und nicht »zufällig« programmiert wird. Aus Sicht der Nutzerinnen und Nutzer ist die Charakteristik »Nutzbarkeit« besonders relevant. Die Gestaltung einer guten Nutzererfahrung (engl. User Experience, UX) ist eng mit Aktivitäten des RE verbunden, wobei der Fokus stark auf den Bedürfnissen der Menschen liegt.

Sicherstellen von Qualität heißt, eine Vielzahl von Maßnahmen entlang des Software-Entwicklungsprozesses zu treffen. Beispielsweise trägt ein strukturiertes RE, das etablierten Vorgehensmodellen folgt, dazu bei, dass keine Anforderungen vergessen oder Mehrdeutigkeiten vermieden werden. Bei der Gestaltung der UX geben visuelle Repräsentationen wie Skizzen, Mockups oder Prototypen frühzeitig einen Ausblick auf die potenzielle User Experience. Diese Repräsentationen können mit zukünftigen Nutzerinnen und Nutzern iterativ evaluiert und verbessert werden – eine zeitintensive, aber notwendige Aktivität, um eine hohe Qualität der Nutzererfahrung sicherzustellen. Strukturierte Architekturarbeiten helfen dabei, die Grundlage für das Produkt zu schaffen und Qualitäten fundamental durchzudenken sowie Entscheidungen für die tatsächliche Architektur zu treffen. Reviews und Testaktivitäten zu unterschiedlichen Zeitpunkten bzw. Phasen erzeugen Feedbackschleifen und geben Rückmeldung über die Qualität und entsprechende Verbesserungsmöglichkeiten.

Die Nutzung unterschiedlicher konstruktiver und analytischer Aktivitäten im SE hilft dabei, dass die Produktqualität am Ende möglichst hoch ist. So notwendig ein guter Mix aus solchen Aktivitäten ist, so zeitintensiv sind diese aber oftmals auch. Es muss daher abgewogen werden, wie viel Aufwand hier investiert wird. Häufig setzen sie darüber hinaus entsprechendes Expertenwissen voraus. Werkzeuge wie statische Codeanalysen (z.B. SonarQube) können die Softwareproduktqualität auf Basis der Analyse von Code unterstützen und anhand konkreter Metriken Hinweise geben, wo Optimierungspotenzial besteht. Die Grundlagen für hohe Produktqualität werden aber im gesamten SE-Zyklus auch außerhalb des reinen Programmcodes gelegt.

Künstliche Intelligenz, egal ob »traditionelle« oder »generative KI«, verspricht Automatisierungspotenzial und Effizienzgewinne für Aufgaben, die nur (mühsam) von Menschen erledigt werden konnten. Naheliegend ist also die Frage, ob und wie KI, insbesondere GenAI, im SE-Prozess eine hohe Produktqualität unterstützen und in einem ersten Schritt ein Softwareprodukt bewerten kann.

Grundlage für Softwarebewertung bilden Qualitätsmodelle

Während generative KI auf den ersten Blick beeindruckende Fähigkeiten zur Verarbeitung und Analyse von Informationen bietet, gibt es nicht den einen »Master-Prompt«, der alle Charakteristiken von Softwarequalität auf Knopfdruck bewertet. LLMs bilden semantische Verknüpfungen in hochdimensionalen Räumen ab. Durch die Anweisung (Prompt) und weiteren Kontext »schickt« man das Sprachmodell in die gewünschte Richtung. Charakteristiken von Softwareproduktqualitäten sind jedoch viel zu komplex, um »einfach so« von einem Sprachmodell verarbeitet werden zu können. Qualitätsmodelle, die diese komplexen Charakteristiken abbilden, ermöglichen es, die semantischen Fähigkeiten von LLMs zu nutzen und die klassische syntaktische Analyse mit semantischem Verständnis anzureichern. Viele der Bewertungskriterien sind sehr komplex, stehen in Abhängigkeiten voneinander oder müssen in einem zeitlichen Kontext betrachtet werden. LLMs können also nicht in einem einzelnen Prompt angewendet werden. Reines Prompt Engineering führt hier nicht zum Ziel.

Die Komplexität der Softwarequalität erfordert eine differenzierte Herangehensweise, bei der verschiedene Metriken und Datenpunkte berücksichtigt werden müssen. So gilt es, saubere Qualitätsmodelle zu definieren, um die Qualität von Softwareprodukten systematisch zu bewerten. Die ISO 25010 mit ihren verschiedenen Charakteristiken dient uns dabei als Rahmen. Für Teilaspekte (z.B. »Kompatibilität – Interoperabilität«) müssen einzelne Metriken identifiziert werden, die einerseits repräsentativ für die zugehörige Qualitätscharakteristik und andererseits, ganz praktisch, »messbar« sind. Auf Ebene einzelner Metriken werden dann die analytischen Fähigkeiten generativer KI verwendet, um große Mengen an Daten zu analysieren und Muster zu erkennen, die für die Qualität relevant sind. Für die endgültige Bewertung werden dann viele dieser Einzelmetriken aggregiert. Dafür nutzen wir auch Expertenwissen, denn die Bewertung von Softwareproduktqualität erfordert menschliches Urteilsvermögen und Fachwissen.

Einsatz von KI-Qualitätsbewertung auf dem Marktplatz »DEUTSCHLAND.DIGITAL«

Screenshot Marktplatz Deutschland.Digital
Marktplatz DEUTSCHLAND:DIGITAL mit vielen Lösungen für smarte Kommunen und Landkreise.

Die KI-Qualitätsbewertung wird unter anderem auf dem Marktplatz »DEUTSCHLAND.DIGITAL« eingesetzt. Dieser Marktplatz ist eine zentrale Anlaufstelle für Kommunen, die im Rahmen von Smart City nach Lösungen und Beratungsangeboten zur Daseinsvorsorge suchen. Die Plattform verbindet Nachfrager und Lösungsanbieter miteinander und vermittelt technische Lösungen. Für Kommunen ist es wichtig, sich für eine Lösung mit der für sie passenden Qualität zu entscheiden, welche bei wachsender Anzahl an Lösungen auf dem Marktplatz zunehmend zeitintensiver wird. Dafür ist eine tiefgehende und umfassende Qualitätsbewertung und -einordnung nötig, die auf die Bedürfnisse der Kommunen eingeht. Eine solche ausführliche Bewertung ist von menschlichen Expertinnen und Experten für hunderte Lösungen nicht effizient zu leisten.

Viele der auf dem Marktplatz angebotenen Lösungen sind Open-Source-Software, das heißt, der Quellcode ist offen zugänglich. Im Kontext des Marktplatzes ist die Anwendbarkeit der Lösungen durch Kommunen wichtig, sodass hier in der Regel weitere Artefakte wie Grafiken, Screenshots, Beschreibungen oder auch Tickets vorhanden sind. Damit sind diese Open-Source-Lösungen ein guter Ausgangspunkt für die KI-Qualitätsbewertung. Ähnlich einem menschlichen Experten werden verschiedene Aspekte (Metriken im Qualitätsmodell) überprüft, bewertet, zu Punktwerten aggregiert und eine Qualitätsbewertung vergeben. Diese Bewertungen helfen dann den Entscheiderinnen und Entscheidern in Kommunen, die für sie und ihre Situation passenden Smart-City-Lösungen auszuwählen.

Automatisierte Qualitätsbewertung mit KI.

Metriken müssen natürlich messbar sein – aber wie sieht das im konkreten Beispiel aus? Anhand von Repositorys lassen sich verschiedene Artefakte als Eingabe für eine Qualitätsbewertung gewinnen. Dort findet sich Source Code, der ebenso Kommentare mit Dokumentation enthält, begleitende Dokumentation in Text- und Bildform (meistens in sogenannten »Markdown-Dateien«), Kommentare und Ergänzungen von Entwicklerinnen und Entwicklern (in Form von »Issues« oder »Pull Requests«) und teilweise auch Bilder der Lösungen (Screenshots). Auch wenn diese Repositorys zu einem Großteil natürlich Source Code enthalten, geht die KI-Qualitätsbewertung über klassische Codeanalyse hinaus. Im Fall der Usability wurden zudem verschiedene ISO-Normen zur Usability, wie z.B. ISO 25019, betrachtet und als Grundlage für die automatisierte Bewertung von Lösungen auf dem Marktplatz herangezogen. Die Ableitung von Metriken für die Bewertung durch KI ist dabei ein andauernder Prozess und wird stetig neu evaluiert und erweitert.

Im Hinblick auf die Usability-Bewertung finden sich innerhalb der Open Source Repositorys vor allem Screenshots. Gerade Nutzertests finden vor allem aufgabenbasiert statt. Das bedeutet, dass sie das wirkliche Arbeiten mit der Lösung umfassen, z. B. das Ausfüllen von Textfeldern. Dennoch gibt es Kriterien, die bereits anhand von Beschreibungen oder Screenshots gut analysiert und mithilfe der System Usability Scale [5] (SUS) bewertet werden können und deren KI-Ergebnisse mit denen echter menschlicher Experten verglichen wurden. Das Ergebnis zeigt: Das Ergebnis der Bewertung durch die KI ist dem durch menschliche Experten gar nicht so unähnlich, auch wenn die KI-Bewertung immer etwas wohlwollender, als die der echten Experten war. Somit können auch Screenshots bereits ein für die KI-Qualitätsbewertung nutzbares Artefakt sein, was der Qualitätsbewertung im Rahmen des Marktplatzes »DEUTSCHLAND.DIGITAL« zugutekommt. Anbieter von Lösungen müssen nicht extra weitere Informationen für die Qualitätsbewertung einreichen, die über das hinausgehen, was sich sowieso in gut gepflegten Repositorys findet, und Nutzerinnen und Nutzer des Marktplatzes erhalten eine Aussage zur Produktqualität.

Unser Fazit zur Bewertung von Softwarequalität mit GenAI

Um die Qualität von Softwareprodukten umfassend zu bewerten, ist es entscheidend, über die Analyse von Repositorys und Screenshots hinauszugehen. Neben dem Quellcode und der begleitenden Dokumentation dienen auch andere Artefakte aus dem Software-Engineering-Prozess als Grundlage für die Analyse, etwa Beschreibungen, Spezifikationen, Architekturmodelle, Mockups und User Journeys. Die Integration dieser Daten ermöglicht es, weitere Metriken in die Qualitätsmodelle aufzunehmen, Rückmeldungen über die Produktqualität direkt während der Softwareentwicklung zu erhalten, und teure Evaluationsschritte zu ergänzen oder zu ersetzen.

Was sind Ihre Erfahrungen? Wo setzen Sie schon KI im Software Engineering ein? Haben Sie Fragen zur Softwarebewertung mit KI? Wir freuen uns, von Ihnen zu hören! Nehmen Sie gerne Kontakt zu uns auf.

Quellen:
Google Trends: Künstliche Intelligenz
Cornell University, Arxiv: GPT-4 Technical Report
EconStor: Künstliche Intelligenz – wie Unternehmen sie nutzen und was sie noch daran hindert
ISO25000.com: ISO/IEC 25010
germanupa.de: SUS – A quick and dirty usability scale (PDF)