Im wörtlichen Sinne ist Traceability (the ability to trace, zu deutsch: Rückverfolgbarkeit) die Fähigkeit, eine Spur zu verfolgen. In der Softwareentwicklung oder der Systemtechnik werden als “Spur” die Beziehungen zwischen zwei Entwicklungsartefakten verfolgt. Dies können z. B. Anforderungen, Testfälle, Elemente des System- oder Softwaremodells, ein Dokument, einen Teil des Codes usw. sein. In diesen Bereichen ist Traceability also die Fähigkeit, Beziehungen zwischen Artefakten herzustellen und zu analysieren. Häufige Beispiele für Artefakte und deren Beziehungen sind "eine Anforderung wird durch einen Testfall verifiziert" oder "eine Anforderung wird durch eine Komponente erfüllt".
Um solche Beziehungen rückverfolgbar zu machen, erstellt man Verknüpfungen zwischen zwei dieser Artefakten. Diese Verknüpfungen sollen "semantisch gerichtet" sein. In den obigen Beispielen wird diese Semantik durch die Formulierungen "wird verifiziert durch" und "wird erfüllt durch" ausgedrückt. Trotz der semantischen Richtung sollen die Verknüpfungen bidirektional analysierbar sein: Auf Basis der Beziehung “wird verifiziert durch” kann man in der einen Richtung prüfen, ob eine Test für eine Anforderung vorhanden ist. Die Begründung für einen Testfall kann dann geprüft werden, indem dieselbe Verbindung in entgegengesetzte Richtung ausgewertet wird.
Die bekannteste Möglichkeit, Traceability herzustellen, ist die Definition einer Traceability-Matrix. Dies gilt insbesondere für das Anforderungsmanagement. Die RTM, kurz für Requirements Traceability Matrix, ist im Anforderungsmanagement ein weit verbreiteter Begriff. Über RTMs wurde schon viel geschrieben - zum Beispiel hier und hier. Das möchte ich nicht wiederholen und zeige hier nur ein selbsterklärendes Beispiel für die Beziehung zwischen Anforderungen und Testfällen mit der Verknüpfung “wird verifiziert durch”.
Abb.1: Eine einfache Requirements Traceability Matrix (Quelle: Artikel "Traceability Matrix" auf wikipedia.org)
Traceability strukturiert die Projektdaten - und zwar in Form von semantischen Beziehungen zwischen deinen Artefakten.
Auf den ersten Blick beantworten die Traceability-Daten zwei einfache Fragen:
Erste Frage: Welche Artefakte sind miteinander verknüpft?
Das Aufspüren bestehender Verbindungen - entweder direkte Verbindungen, wie in der Traceability-Matrix dargestellt, oder sogar Ketten von Verbindungen - ist die sogenannte Impact Analysis. Die Impact Analysis betrachtet einzelne Artefakte und deren Verbindungen. Sie hilft bei der Beantwortung von Fragen wie "Welche Teile des Systems sind von einem Change Request betroffen?" oder "Ein Test schlägt fehl. Welche Anforderungen werden nicht korrekt erfüllt?".
Zweite Frage: Welche Artefakte sind (noch) nicht miteinander verknüpft?
Fehlende Verknüpfungen sind ein Indikator dafür, dass gewisse Arbeitsschritte im Projekt noch offen sind. Wenn eine Anforderung nicht mit einem Testfall verbunden ist, ist sie wahrscheinlich nicht getestet - oder sogar noch nicht implementiert. Natürlich kann es auch sein, dass alles in Ordnung ist und nur die Verknüpfung fehlt. Die Analyse der fehlenden Verknüpfungen wird als Coverage-Analyse bezeichnet: Eine Anforderung wird "durch einen Testfall abgedeckt", wenn sie - entweder direkt oder indirekt - mit einem Testfall verknüpft ist. Der Abdeckungsgrad kann ein guter Indikator für deinen Projektfortschritt sein.
Die Coverage und die Impact-Analyse basieren im Wesentlichen auf der Auswertung der bloßen Existenz (bzw. dem Fehlen) von Verknüpfungen. Insbesondere die Semantik der Verlinkung wird nicht beachtet. Bezieht man diese Semantik und auch den Status oder andere Attribute der Artefakte in die Auswertung mit ein, entsteht ein mächtiges Werkzeug, das weitreichende Auswertungen erlaubt. Das folgende Beispiel soll dieses Potenzial illustrieren:
Im obigen Abschnitt wurde schon die grobe Vorstellung angedeutet, dass man Coverage-Analysen zur Analyse des Projektfortschritts verwenden kann. Dieses Beispiel soll hier vertieft werden:
Stellen wir uns folgendes Szenario vor:
Auf dieser Basis kann man nun nicht nur den Projektfortschritt auf Anforderungsebene messen, sondern auch direkt den Restaufwand berechnen. Damit hat man einen zuverlässigen Indikator, ob zum Beispiel der nächste Meilenstein gehalten werden kann. Die besten Entscheidungen basieren auf richtigen Informationen - und dieser Indikator basiert auf deinen Originaldaten und nicht auf Vermutungen.
Die notwendige Voraussetzung für Traceability ist, dass Artefakte eindeutig identifizierbar sind. Wenn diese Voraussetzung gegeben ist, entsteht durch die Verknüpfung ein Graph mit Artefakten als Knoten und den Beziehungen als Kanten. Diese Verknüpfungen oder auch Links kann man - ähnlich es im Browser mit Hyperlinks geschieht - zur Navigation über Werkzeuggrenzen hinweg nutzen. Die folgende Abbildung veranschaulicht dies. Sie zeigt die auf Traceability-Links basierende Navigation vom C-Code in einer IDE über die Modellelemente in MATLAB Simulink zu den Anforderungen in IBM DOORS.
Abb.2: Navigation über Toolgrenzen - in diesem Fall aus der IDE zum Requirements Management Werkzeug
Sinn und Zweck von Traceability ist es, Projekte zu strukturieren und dabei faktenbasierte Einsichten zu gewinnen, auf deren Basis man große und komplexe Projekte besser bewerten und steuern kann.
Die Notwendigkeit hierfür wird durch die aktuelle Situation im Bereich der Softwareentwicklung und Systemtechnik forciert:
Lange Rede, kurzer Sinn: Die Herausforderung für Traceability besteht darin, Vorteile zu schaffen, die helfen, die komplexen und umfangreichen Projekte zu bewältigen. Diese Vorteile gehen über das "Gewinnen von Erkenntnissen aus Datenanalysen" hinaus. Ein Beispiel für einen solchen Nutzen - die werkzeugübergreifende Navigation - wurde oben dargestellt. Hier sind weitere Beispiele für solche Vorteile - ihre Umsetzung ist eine Herausforderung:
Abb.3: Effizientes Verlinken mit dem Bulk link creation editor von YAKINDU Traceability
Traceability hilft Ihnen, Ihre Projektdaten zu strukturieren und zu analysieren - und das toolübergreifend. Dies ist besonders bei heterogenen Werkzeuglandschaften hilfreich. Die schnell wachsenden Projektgrößen und die teilweise unzureichende Interoperabilität der Werkzeuge stellen eine Herausforderung dar.