Traceability bis zum Code
Traceability bedeutet, Beziehungen zwischen den Arbeitsergebnissen des Entwicklungsprozesses nachzuvollziehen. Sie spielt für die Änderungsnachverfolgung eine wesentliche Rolle. Denn wenn Sie die Traceability sicherstellen, dann lassen sich Änderungen und ihre Auswirkungen leichter analysieren. Im Bezug auf Anforderungen können Sie z. B. Fragen beantworten wie: “Welche Anforderungen werden durch Änderungen beeinflusst?” oder “Hängen an diesen Anforderungen weitere Arbeitsergebnisse, die angepasst werden müssen?” Es geht aber noch weiter: Wenn Sie sogar wissen, welche Anforderungen mit welchen Code-Dateien verbunden sind, dann können Sie bei Änderungen die Code-Dateien in wenigen Augenblicken finden und anpassen.
Diese Traceability bis zum Code wird ab Version 5.0 von objectiF RPM integriert sein. Wie das funktionieren wird, möchte ich Ihnen heute vorstellen.
Ob JavaScript, Python oder Java: objectiF RPM verwaltet Ihre Code-Dateien.
objectiF RPM und Visual Studio Code
Bereits in einem vorherigen Blog-Beitrag habe ich erläutert, dass objectiF RPM jetzt auch Visual Studio Code kennt, einen der Top-Editoren für Programmierer. Diese Schnittstelle ist noch weiter ausgebaut worden. objectiF RPM wird damit zum Tool für das Requirements Engineering, Projektmanagement und für die Code-Erzeugung. Der folgende Anwendungsfall soll die Funktionsweise dieses neuen Features veranschaulichen.
Stellen Sie sich vor…
… Sie gehören zum Entwicklerteam,
Als Entwickler oder Entwicklerin, die in einem agilen bzw. hybriden Projekt arbeitet, entwickeln Sie von Sprint zu Sprint. Jeder Sprint enthält User Stories, die die zu entwickelnden Funktionalitäten beschreiben. In objectiF RPM listet das User Story Board oder das Kanban Board die vorhandenen User Stories auf. In diesem Beispiel sehen Sie zwei User Stories, die für den Sprint eingeplant sind (natürlich weiß ich, dass es normalerweise sehr viel mehr sind ;-):
Das User Story Board in objectiF RPM, in dem die User Stories von oben nach unten wandern.
Sie wollen sich der zweiten User Story widmen: Contact um Telefonnummer ergänzen. Damit Ihre Team-Mitglieder Bescheid wissen, ziehen Sie die User Story per Drag & Drop in den Zustand in Realisierung.
… Sie müssen die richtige Stelle im Code finden,
Die Herausforderung ist es nun, herauszufinden, wo genau Sie Änderungen am Code für die Umsetzung dieser User Story machen müssen. Ihr Team hantiert beispielsweise mit mindestens 20.000 Dateien, 50 Komponenten und 300 Klassen – der Überblick mag dort, gelinde gesagt, schwerfallen.
Als ersten Schritt öffnen Sie daher die User Story und erkennen anhand der Registerkarte Verfeinerungen, dass sie zu einer übergeordneten Anforderung gehört. In diesem Fall heiß diese Informationen über Unternehmen integrieren, ein Feature Requirement.
Navigation zur übergeordneten Anforderung
Wahrscheinlich bietet Ihnen das Feature mehr Aufschluss darüber, welche Code-Datei Sie anpassen müssen. Sie haben nun zwei Möglichkeiten, die Beziehung der User Story zum Feature zurückzuverfolgen (in der Grafik oben sehen Sie das bereits):
Entweder navigieren Sie zum Feature und öffnen sein Beschreibungsformular. Dort würden Sie erkennen, dass die Anforderung durch die Komponente Controller realisiert wird. Oder Sie lassen sich die Diagramme anzeigen, in denen das Feature zu sehen ist, z. B. das Blockdiagramm. Mithilfe von Blockdiagrammen können Sie u. a. Systemkomponenten mit Anforderungen verbinden, sodass Sie auch dort sehen, wie das Feature im Lösungssystem realisiert wird.
Darstellung der Beziehung zwischen Anforderungen und Systemkomponente (Beschreibungsformular und Blockdiagramm)
objectiF RPM bildet also eine erfüllt-Beziehung zwischen Feature und Systemkomponente ab.
… Sie wollen den Code direkt bearbeiten
Jetzt geht es ans Eingemachte. Im Blockdiagramm können Sie sofort erkennen, dass die Komponente Controller drei Operationen enthält:
- About
- Contact
- Home
Aha! Die User Story heißt ja: Contact um Telefonnummer ergänzen. Also liegt hier die gesuchte Code-Datei, die Sie anpassen müssen. Um das zu machen, brauchen Sie nur den Block der Komponente zu öffnen und auf das blaue Icon mit den zwei weißen Pfeilen zu klicken.
Vom Block aus das Code-Verzeichnis in Visual Studio Code öffnen
Was geschieht dann? Der Tooltipp verrät Ihnen nur, dass ein Verzeichnis geöffnet wird. Aber das ist ein wenig untertrieben. Jeder Block kann mit einem Code-Verzeichnis, das in objectiF RPM verwaltet wird, verbunden werden. Wenn Sie auf dieses Symbol klicken, dann öffnen Sie dieses Verzeichnis direkt in Visual Studio Code und können die Code-Datei dort bearbeiten.
Code-Datei in Visual Studio Code
… und die Traceability zur User Story sicherstellen.
Wenn Sie die Datei speichern, so wird die Änderung zunächst nur lokal, d. h. auf Ihrem Rechner, ohne dass andere Teammitglieder darauf zugreifen können, gespeichert. Um den neuen Stand der Datei nach objectiF RPM zurückzuführen, wählen Sie im Produktebaum von objectiF RPM das Code-Verzeichnis der Controller-Komponente, machen einen Rechtsklick und wählen Zurückgeben. In dem sich daraufhin öffnenden Dialog können Sie die User Story mit der geänderten Code-Datei in Beziehung setzen und damit die Traceability sicherstellen. objectiF RPM erleichtert Ihnen diese Arbeit, indem das Tool Vorschläge für User Stories anbietet. Nur User Stories, die Ihnen zugeordnet sind und sich im Zustand in Realisierung befinden, werden hier aufgelistet.
Beziehung zwischen User Story und Code-Datei herstellen
Weil Ihre Arbeit damit noch nicht beendet ist, kehren Sie nun zum User Story Board zurück und ziehen die User Story in den Zustand realisiert. Ein Blick auf die User Story sagt Ihnen, dass die Verbindung zur Code-Datei erfolgreich war.
Darstellung der erfüllt-Beziehung im Beschreibungsformular der User Story
Wenn Sie die Historie der Code-Datei öffnen, dann erkennen Sie außerdem eine neue Version. Diese wurde automatisch beim Zustandswechsel der User Story von in Realisierung zu realisiert angelegt.
Automatische Erzeugung einer neuen Version der Code-Datei bei Zustandswechsel der User Story
An dieser Stelle sei gesagt: Sie können von jeder Version einer Code-Datei zur verknüpften Anforderung navigieren. Um genauer zu sein, zu dem Stand der Anforderung, zu der die Version angelegt worden ist. Das heißt, auch wenn sich die Anforderung mittlerweile geändert hat, lässt sich nachvollziehen, wie sie zu einem früheren Zeitpunkt ausgesehen hat. Das ist hilfreich, wenn Fragen wie “Warum wurde das so umgesetzt?” oder “War das wirklich die Anforderung?” auftreten.
Fazit
objectiF RPM bietet Ihnen Traceability von den Anforderungen bis zum Code. Natürlich reicht sie noch weiter, da Sie ja auch von den Anforderungen zurück zu den Zielen und Stakeholdern navigieren können. Auf diese Weise haben Sie die Auswirkungen von Änderungen im Application Lifecycle immer im Blick. Wie ich ebenfalls bereits vorgestellt hatte, können Sie durch einen Vergleich zweier Versionen einer Code-Datei auch weiter ins Detail gehen: Nämlich verfolgen, in welchen Zeilen der Code sich verändert hat.
Die Entwicklung geht natürlich weiter. Freuen Sie sich auf weitere Features für Ihr Application Lifecycle Management! Bis dahin schauen Sie doch in die Trial Edition von objectiF RPM hinein.
Diskutieren Sie mit.