Bessere Softwarequalität und weniger Risiken: Optimierte Tickets in der agilen Softwareentwicklung durch KI und RAGs
Künstliche Intelligenz (KI), insbesondere generative Sprachmodelle und Retrieval Augmented Generations (RAGs), haben das Potenzial, die Qualität von Tickets in der agilen Softwareentwicklung erheblich zu steigern. Dadurch können Entwickler effizienter und präziser arbeiten, was den gesamten Entwicklungsprozess optimiert.
Zudem können diese Technologien einen wesentlichen Beitrag zur Erhöhung der Sicherheit und Compliance beitragen, indem potenzielle Sicherheitslücken und Risiken bereits im Entwicklungsprozess erkannt werden. Dadurch lässt sich langfristig die Stabilität, die Sicherheit und die Integrität von Systemen nachhaltig verbessern.
Die agile Softwareentwicklung hat die Art und Weise, wie Teams Software entwickeln, grundlegend verändert, indem sie mehr Flexibilität, eine intensivere Zusammenarbeit und eine schnellere Reaktion auf Veränderungen ermöglicht. Ein wesentlicher Bestandteil dieser Methode ist die Verwendung von Tickets, bei denen es sich um strukturierte Einheiten handelt, die spezifische Anforderungen, Fehlerberichte oder andere relevante Aspekte des Softwaresystems dokumentieren. Tickets dienen als standardisierte Dokumentation von Aufgaben, die entwickelt, korrigiert oder überprüft werden müssen. Sie stellen sicher, dass das gesamte Team ein gemeinsames Verständnis der priorisierten Arbeiten hat und dass die Aufgaben klar und eindeutig formuliert sind.
Neben der Flexibilität, die agile Softwareentwicklung so effektiv macht, gibt es auch Herausforderungen im Umgang mit Ticketsystemen, insbesondere wenn die Tickets ungenau beschrieben sind. Angesichts der zunehmenden regulatorischen und Compliance-Anforderungen in verschiedenen Branchen ist es zudem entscheidend, dass diese Tickets nicht nur die funktionalen Anforderungen abdecken, sondern auch sicherstellen, dass alle notwendigen Compliance-Anforderungen erfüllt werden. Eine unzureichende Berücksichtigung dieser Aspekte kann zu erheblichen Risiken führen, einschließlich der Nichteinhaltung gesetzlicher Vorschriften, finanzieller Sanktionen und im schlimmsten Fall einer Schädigung der Reputation der Organisation.
Im letzten Fachartikel „Effizienteres ISMS durch KI“ in Ausgabe 4/2024 unserer zweiteiligen Serie haben wir Schritt für Schritt erklärt, wie Retrieval Augmented Generation (RAG) funktioniert und wie diese Technologie in Informationssicherheits-Managementsystemen (ISMS) eingesetzt werden kann. RAGs nutzen große Sprachmodelle wie ChatGPT, Gemini oder Llama, um aus umfangreichen Wissensdatenbanken gezielt relevante Informationen abzurufen und präzise Antworten zu generieren.
Die Technologie besteht aus zwei Hauptkomponenten: dem Retrieval-Modell und dem generativen Sprachmodell. Das Retrieval-Modell identifiziert gezielt relevante Informationen in der Wissensdatenbank, die dann vom generativen Sprachmodell genutzt werden, um maßgeschneiderte Antworten für den Nutzer zu generieren.
In diesem Artikel gehen wir näher darauf ein, wie diese Technologie effektiv ins Ticketing-System der agilen Softwareentwicklung integriert werden kann, um sicherzustellen, dass die Tickets sowohl die funktionalen als auch die regulatorischen Anforderungen erfüllen. Damit wird ein wesentlicher Beitrag zu Effizienz, Sicherheit und Compliance in modernen Entwicklungsprozessen geleistet, sodass potenzielle Sicherheitslücken und Risiken deutlich reduziert werden können, was langfristig zur Stabilität, Sicherheit und Integrität von Systemen beitragen kann.
„Understanding Story and Features Tickets in Agile”
Bevor darauf eingegangen wird, wie KI unterstützend in der agilen Softwareentwicklung eingesetzt werden kann, ist es wichtig, die verschiedenen Arten von Tickets im Kontext der agilen Entwicklung zu definieren.
Story-Tickets sind Benutzeranforderungen, die in der Regel aus der Perspektive eines Endnutzers oder Kunden formuliert werden. Ein Story-Ticket beschreibt eine spezifische Funktion oder ein Feature in folgendem Format: „Als [Nutzertyp] möchte ich [Aktion/Funktion], um [erwünschtes Ergebnis] zu erreichen.“ Ein Beispiel hierfür wäre: „Als Käufer möchte ich Produkte nach Preis filtern können, um Artikel innerhalb meines Budgets zu finden.“
Feature-Tickets sind detaillierter als Story-Tickets und zerlegen ein größeres Feature oder Epic in kleinere, ausführbare Aufgaben. Während ein Story-Ticket das allgemeine Benutzerbedürfnis
beschreibt, legt ein Feature-Ticket die technischen Anforderungen und Aufgaben fest, die notwendig sind, um dieses Bedürfnis zu erfüllen. Feature-Tickets dienen häufig als detaillierter Plan für Entwickler, da sie die genauen Schritte und Kriterien für die Implementierung des Features spezifizieren.
Bug-Tickets werden eingesetzt, um Probleme oder Fehler in der Software zu dokumentieren und nachzuverfolgen. Diese Tickets beschreiben das aufgetretene Problem, die Schritte zur Reproduktion sowie den erwarteten im Vergleich zum tatsächlichen Verhalten der Software.
Bug-Tickets sind von entscheidender Bedeutung für die Aufrechterhaltung der Softwarequalität, da sie Entwicklern ermöglichen, Probleme zu identifizieren und zu beheben, die die Benutzererfahrung oder die Systemfunktionalität beeinträchtigen können.
Eigenschaften von Tickets und ihre Bedeutung
Jira und Azure DevOps zählen zu den am häufigsten genutzten Tools in der agilen Softwareentwicklung. Beide Plattformen bieten umfangreiche Funktionen zur Verwaltung von Story-, Feature- und Bug-Tickets. Damit Tickets effektiv bearbeitet werden können, müssen sie einige wesentliche Eigenschaften aufweisen.
Diese Merkmale gewährleisten nicht nur, dass die Entwickler die Erwartungen verstehen, sondern auch, dass alle notwendigen Informationen zur Verfügung stehen, um die Anforderungen genau und effizient zu erfüllen. Sie stellen auch sicher, dass alle Arbeiten in Übereinstimmung mit den Unternehmensrichtlinien und -standards ausgeführt werden, einschließlich der Einhaltung von Compliance-Anforderungen.
Wichtige Merkmale sind:
- Datum: Das Erstellungsdatum eines Tickets spielt eine entscheidende Rolle, um die zeitliche Abfolge von Aufgaben und Ereignissen im Projektverlauf nachvollziehen zu können. Es ermöglicht eine effektive Überwachung des Projektfortschritts und unterstützt dabei, priorisierte Aufgaben termingerecht abzuschließen.
- Ticketnummer: Jedes Ticket erhält eine eindeutige Nummer, die es identifizierbar und leicht referenzierbar macht, was die Nachverfolgung und Dokumentation von Änderungen oder Fehlern im System erleichtert.
- Titel: Der Titel eines Tickets gibt einen kurzen und prägnanten Überblick über das Anliegen oder die zu erledigende Aufgabe.
- Beschreibung: Die detaillierte Beschreibung bildet das Herzstück jedes Tickets. In diesem Abschnitt werden die Anforderungen, Probleme oder Änderungswünsche umfassend dargelegt, sodass die Entwickler genau verstehen, was von ihnen erwartet wird. Eine präzise Beschreibung reduziert Rückfragen und trägt dazu bei, den Entwicklungsprozess zu beschleunigen.
- Vorgangstyp (Bug, Feature, Change Request etc.): Der Vorgangstyp klassifiziert das Ticket und gibt an, ob es sich um die Entwicklung einer neuen Funktion, die Behebung eines Fehlers oder die Änderung einer bestehenden Funktion handelt.
- Bearbeitungsstatus: Der Bearbeitungsstatus (zum Beispiel „Offen“, „In Bearbeitung“, „Erledigt“) zeigt den aktuellen Fortschritt des Tickets an und ermöglicht allen Beteiligten, den Status der Aufgaben zu verfolgen und gegebenenfalls rechtzeitig einzugreifen.
- Schritte zur Reproduktion (bei Fehlern): Wenn ein Ticket einen Fehler beschreibt, ist es wichtig, die genauen Schritte zur Reproduktion des Problems zu dokumentieren. Diese Informationen ermöglichen es den Entwicklern, den Fehler zu reproduzieren und nachzuvollziehen, wie er aufgetreten ist.
- Erwartetes und tatsächliches Verhalten: Diese Merkmale sind entscheidend, um die Diskrepanz zwischen dem gewünschten und dem tatsächlichen Systemverhalten zu verstehen. Sie geben klare Hinweise darauf, was korrigiert oder verbessert werden muss.
- Akzeptanzkriterien: Diese Kriterien definieren die Bedingungen, unter denen ein Ticket als abgeschlossen betrachtet wird. Sie legen fest, welche Anforderungen erfüllt sein müssen, damit die Änderung oder das Feature als erfolgreich implementiert gilt.
- Priorität und Dringlichkeit: Die Einschätzung der Dringlichkeit und der Priorität eines Tickets unterstützen dabei, die Reihenfolge festzulegen, in der Tickets bearbeitet werden sollten. Tickets mit hoher Priorität oder Dringlichkeit werden vorrangig behandelt, um sicherzustellen, dass kritische Aufgaben rechtzeitig abgeschlossen werden.
- Verantwortliche Person: Die Zuweisung eines Tickets an eine bestimmte Person stellt sicher, dass klare Verantwortlichkeiten definiert sind.
- Benutzte Testumgebung: Angaben zur Testumgebung sind von besonderer Bedeutung, um sicherzustellen, dass die Lösung in der passenden Umgebung getestet und implementiert wird. Dies minimiert das Risiko von Fehlern in der Produktionsumgebung erheblich.
- Dateien (zum Beispiel Bilder oder Screenshots): Anhänge wie Screenshots oder andere relevante Dateien können helfen, das Problem oder die Anforderung visuell zu veranschaulichen. Dies erhöht die Verständlichkeit und Nachvollziehbarkeit des Tickets.
Herausforderungen bei der Erstellung von Anforderungen im Form von Tickets
Die Erstellung von Tickets ist ein unverzichtbares Instrument für den Erfolg in der Softwareentwicklung, jedoch nicht ohne Herausforderungen und potenzielle Probleme, die den Fortschritt verzögern oder die Qualität des Endprodukts beeinträchtigen können. Zu den häufigsten und bedeutendsten Herausforderungen zählen:
Falsch eingeschätzte Priorität und Dringlichkeit
Wenn Tickets falsch priorisiert werden oder ihre Dringlichkeit falsch eingeschätzt wird, besteht die Gefahr, dass kritische Aufgaben verzögert werden oder weniger wichtige Aufgaben unnötig Ressourcen binden. Dies kann sich auf den gesamten Projektzeitplan auswirken und dazu führen, dass wichtige Funktionen oder Fehlerbehebungen nicht rechtzeitig abgeschlossen werden.
Fehlende Informationen
Wenn Tickets unvollständig oder unklar formuliert sind oder wesentliche Informationen fehlen, müssen Entwickler zusätzliche Zeit aufwenden, um Klärungen einzuholen. Dies verlangsamt den Fortschritt und erhöht das Risiko von Missverständnissen. Betroffen sind dabei nicht nur technische Details, sondern auch Kontextinformationen, die für die erfolgreiche Umsetzung der Anforderung
entscheidend sind.
Gleiche oder ähnliche Tickets
In großen Projekten oder Teams kommt es häufig vor, dass gleiche oder sehr ähnliche Tickets erstellt werden, ohne dass dies den Beteiligten bewusst ist. Das führt zu Doppelarbeit, ineffizienter Ressourcennutzung und kann Verwirrung darüber stiften, welches Ticket tatsächlich bearbeitet
werden soll.
Fehlende Informationen zu (Secure) Software-Life-Cycle-Richtlinien
Oftmals fehlen Tickets wichtige Informationen oder klare Anweisungen, wie die Anforderung im Einklang mit den (Secure) Software-Life-Cycle-Richtlinien umgesetzt werden soll. Dies kann zu Sicherheitslücken führen und die Einhaltung von Compliance-Vorgaben gefährden.
Wie kann KI effektiv eingesetzt werden?
KI, insbesondere generative Sprachmodelle und RAGs, bieten ein erhebliches Potenzial, viele der oben genannten Herausforderungen zu bewältigen, die Effizienz und Qualität von Tickets deutlich zu verbessern und die Fehleranfälligkeit zu minimieren. Die Arbeit der Entwickler kann dadurch schneller und präziser werden, was zu einer Optimierung des gesamten Entwicklungsprozesses führen kann.
Erkennung und Ergänzung fehlender Informationen
Generative Sprachmodelle können eingesetzt werden, um den Inhalt von Tickets zu analysieren und nach den oben genannten notwendigen Eigenschaften zu strukturieren. Mithilfe von RAG, das auf Wissen aus bereits abgeschlossenen Tickets zugreift, können fehlende oder unzureichend formulierte Informationen automatisch ergänzt werden (gekennzeichnet zum Beispiel durch „[KI-Vorschlag]“).
Sollte eine automatische Ergänzung nicht möglich sein, können diese Modelle den Benutzer auf fehlende Details aufmerksam machen, die vor der Weiterleitung des Tickets an die Entwickler ergänzt werden müssen (siehe Abbildung 1). Informationen und Videos zu Prototypen sind hier in voller Länge verfügbar: http://tiny.cc/softwaretest, http://tiny.cc/bugtracking.
Abbildung 1: KI-strukturiertes Ticket
Verbesserte Prioritätenschätzung
Neue Tickets können mithilfe von RAGs automatisch priorisiert werden. Dadurch können kritische Anfragen schneller identifiziert und bearbeitet werden, was die Effizienz des gesamten Entwicklungsteams erheblich steigert. Gleichzeitig werden Fehleinschätzungen durch subjektive Bewertungen und die Notwendigkeit manueller Nachbesserungen vermieden.
Automatisierte Erstellung wiederkehrender Anforderungen
In der Softwareentwicklung treten häufig wiederkehrende Anforderungen auf, wie zum Beispiel die Erstellung einer neuen Schnittstelle. Solche Aufgaben werden oft mehrfach erstellt und bearbeitet, was zu einer ineffizienten Nutzung von Ressourcen führen kann. Anstatt dass ein Product Owner oder Projektmanager diese Anforderung jedes Mal neu formulieren muss, kann ein RAG eingesetzt
werden, welches die relevanten Informationen sammelt und eine vollständig ausgearbeitete Anforderung mit den entsprechenden Akzeptanzkriterien liefert.
Das generative Sprachmodell erstellt auf Basis der bereitgestellten Informationen eine präzise Anforderung, die alle wichtigen Details enthält und sicherstellt, dass die Implementierung den zuvor festgelegten Standards entspricht. Die automatisch hinzugefügten Akzeptanzkriterien gewährleisten, dass die Anforderung korrekt umgesetzt wird und den Qualitätsstandards des Unternehmens entspricht.
Unterstützung bei der Umsetzung neuer Anforderungen
Insbesondere für Entwickler, die neu im Team sind, kann der Zugriff auf Informationen über bereits umgesetzte ähnliche Anforderungen sehr hilfreich sein. KI kann bei der Erstellung oder Bearbeitung eines Tickets ähnliche Anforderungen erkennen, die in der Vergangenheit bereits erfolgreich umgesetzt wurden. Diese Funktion verlinkt relevante Tickets oder Dokumentationen, die dem
Entwickler wertvolle Einblicke und konkrete Lösungsansätze bieten. Durch den Zugriff auf diese Informationen können Entwickler nachvollziehen, wie ähnliche Probleme in der Vergangenheit
gelöst wurden, welche Techniken verwendet wurden, und welche potenziellen Probleme vermieden werden sollten.
Compliance- und Richtlinienprüfung
Die Einhaltung von Compliance-Anforderungen und internen Richtlinien ist ein kritischer Aspekt bei der Softwareentwicklung, insbesondere in stark regulierten Branchen. Mit RAG können Tickets
automatisch überprüft werden, um sicherzustellen, dass sie alle relevanten internen Richtlinien und Compliance-Anforderungen erfüllen, bevor sie weiterverarbeitet werden. Der Inhalt des Tickets wird dabei mit den unternehmenseigenen Richtlinien und Compliance-Vorgaben abgeglichen.
Entspricht ein Ticket nicht den erforderlichen Standards, wird der entsprechende Stakeholder automatisch informiert, sodass notwendige Korrekturen vorgenommen werden können. Darüber hinaus können diese Systeme Vorschläge zur Anpassung des Tickets machen, um die Einhaltung der Richtlinien zu gewährleisten. Dadurch wird nicht nur das Risiko von Verstößen minimiert. Der gesamte Prozess der Ticketbearbeitung wird effizienter und sicherer.
Threat Modeling
Basierend auf den definierten Software-Lifecycle-Richtlinien können RAGs automatisch Checklisten generieren, die potenzielle Sicherheitslücken und Risiken identifizieren. Diese Checklisten werden direkt in die entsprechenden Tickets integriert, sodass die Entwickler bereits während der Ticketbearbeitung auf mögliche Bedrohungen aufmerksam gemacht werden. Dabei werden nicht nur allgemeine Sicherheitsanforderungen hinzugefügt, sondern solche, die genau an die jeweilige Anforderung angepasst sind (siehe Abbildung 2).
Abbildung 2: KI-generierte Checkliste mit Sicherheitsrichtlinien für ein eingereichtes Feature-Ticket
Darüber hinaus kann die Checkliste Links zu den Originalquellen enthalten, sodass die Entwickler bei Bedarf zusätzliche Informationen abrufen können. Compliance-Prüfung von Code: Durch die Integration von KI-gestützten Sicherheits- und Code-Qualitätsprüfungen in den Softwareentwicklungsprozess kann sichergestellt werden, dass mithilfe von RAGs unternehmensinterne Richtlinien konsequent eingehalten werden. Dadurch kann verhindert werden, dass unsicherer, nicht konformer Code auf Produktivsystemen eingesetzt wird. Potenzielle Risiken können so bereits in der Entwicklungsphase adressiert werden (siehe Abbildung 3).
Abbildung 3: Prozess der Code-Prüfung
Das sind nur einige Beispiele, wie RAGs und generative Sprachmodelle ins Ticketing-System der agilen Softwareentwicklung integriert werden können, um sicherzustellen, dass die Tickets sowohl die funktionalen als auch die regulatorischen Anforderungen erfüllen. Diese Technologien können dazu beitragen, den gesamten Entwicklungsprozess zu optimieren, indem sie die Qualität und Genauigkeit der Ticketerstellung verbessern, Doppelarbeit minimieren und die Einhaltung von Standards und Compliance-Anforderungen sicherstellen. Darüber hinaus kann KI die Produktivität von Entwicklungsteams steigern, die Fehlerquote senken und letztlich eine höhere Qualität von Softwareprodukten gewährleisten.
Zukunftsperspektiven: KI-Agenten?!
In unserem letzten Beitrag haben wir mit Blick auf die Zukunft prognostiziert, dass sich die RAG-Technologie kontinuierlich weiterentwickeln wird und Innovationen im Bereich KI-Agenten zunehmen werden. Aber was genau sind KI-Agenten? KI-Agenten sind autonome oder halb-autonome, KI-basierte Softwareprogramme, die in der Lage sind, Informationen aus ihrer Umgebung wahrzunehmen, Muster zu erkennen und eigenständig Entscheidungen zu treffen sowie entsprechende Maßnahmen zu ergreifen. Darüber hinaus können sie nicht nur mit ihrer Umgebung interagieren, sondern auch mit anderen Agenten. In der agilen Softwareentwicklung ist es denkbar, dass in der Zukunft KI-Agenten entwickelt werden, die mehrere der oben genannten Lösungen kombinieren werden.
Es ist auch möglich, dass KI-Agenten mit dem Ticket-Ersteller direkt interagieren, um durch gezielte Rückfragen sicherzustellen, dass die Tickets vollständig und compliant sind, bevor sie an den zuständigen Entwickler weitergeleitet werden. Gleichzeitig werden sie automatisch die Dringlichkeit der Tickets bestimmen und den Entwickler dabei unterstützen, die Tickets fristgerecht und unter Berücksichtigung aller Sicherheitsaspekte abzuschließen.
Dabei werden die Agenten den Entwickler bei der sicheren Code-Implementierung helfen und auf Verstöße gegen Sicherheitsrichtlinien hinweisen. Dies wird in einer für den Entwickler verständlichen Sprache und multimodal, also nicht nur textuell, sondern auch sprachlich erfolgen. Wir gehen davon aus, dass KI das Potenzial hat, die Zukunft maßgeblich zu prägen, indem sie zunehmend komplexe Aufgaben automatisiert und neue Dimensionen der Zusammenarbeit zwischen Mensch und Maschine eröffnet.
Asan Stefanski ist Director des Bereiches Digital Transformation bei der ADVISORI FTC GmbH. Er verfügt außerdem über langjährige Erfahrung als Teamleiter im Bereich Software Engineering.
Inna Vogel ist Senior Consultant im Bereich Digital Transformation bei der ADVISORI FTC GmbH. Vorher hat sie mehrere Jahre an einem renommierten Institut im Bereich maschinelles Lernen und Sprachtechnologie geforscht.