9 Min. Lesezeit

Was ist der Nutzen? Welche Herausforderungen gibt es?

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”.

Sample traceability matrix

Abb.1: Eine einfache Requirements Traceability Matrix (Quelle: Artikel "Traceability Matrix" auf wikipedia.org)

Vorteile von Traceability

Traceability strukturiert die Projektdaten - und zwar in Form von semantischen Beziehungen zwischen deinen Artefakten.

Was wird verknüpft?

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.

Was können wir noch aus Traceability-Daten lernen?

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:

  • Die Anforderungen sind mit dem System verknüpft, welches die Aufwandsschätzungen für Umsetzung und Test enthält. Das kann zum Beispiel ein Projektmanagement-Werkzeug oder ein Bugtracker sein.
  • Aus der o.g. Coverage-Analyse weiß man bereits, welche Anforderungen ungetestet sind. Analog kann man per Coverage-Analyse ermitteln, welche Anforderungen umgesetzt sind.

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.

Welche Vorteile gibt es neben den Erkenntnissen aus Datenanalysen?

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.

NavigationAlongTraceabilityLinks

Abb.2: Navigation über Toolgrenzen - in diesem Fall aus der IDE zum Requirements Management Werkzeug

Herausforderungen im Bereich Traceability

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:

  • Projektkomplexität wächst … schnell!
    Der Hauptgrund für die zunehmende Komplexität, ist, dass immer mehr Systeme intelligent werden - und diese intelligenten Systeme zusammenarbeiten. Das bedeutet, dass Systeme komplexere Software enthalten und mehr externe Schnittstellen bereitstellen. Diese Beobachtung wurde bereits 2013 in dieser empirischen Studie nachgewiesen. Seitdem hat sich die Situation verschärft.
  • Projektgrößen wachsen ... schnell!
    Die Projektgrößen (gemessen an der Anzahl der Artefakte) wachsen. System werden nicht nur intelligent, sondern sogar autonom. Deep Learning und neuronale Netzwerke erfordern viele begleitende Artefakte (Lerndaten, Testfälle). In der Automobilindustrie sind Projekte im Bereich des autonomen Fahrers um das 100-fache größer als zum Beipsiel Projekte für intelligente elektronische Steuergeräte.
  • Standards werden immer wichtiger
    Maturity Modelle und ähnliche Standards werden immer wichtiger. Sie helfen nicht nur, die Prozesse zu verbessern - sie helfen auch, die Reife des eigenen Entwicklungsprozesses zum Beispiel gegenüber Kunden nachzuweisen. Zertifizierte Standards überzeugen die Kunden, dass man gewappnet ist für die oben genannten Herausforderungen.
    Weil Traceability exakt dabei hilft, ist sie obligatorischer Bestandteil vieler dieser Standards.

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:

  • Synchronisation von Daten zwischen verschiedenen Werkzeugen
    Folgendes Szenario illustriert den Nutzen der Synchronisation:
    Auf Basis der Traceability-Daten können zum Beispiel Anforderungen im Modellierungswerkzeug angezeigt werden um sie zu verknüpfen. Die Anforderungen können sogar im Modellierungswerkzeug bearbeitet werden und in das Anforderungsmanagement-Werkzeug zurückgespielt werden.
  • Herstellung einer Historie deiner Artefakte und ihrer Verbindungen
    Basierend auf den Traceability-Daten werden sowohl Vergleiche einzelner Artefakte (zum Beispiel: Anforderung 345 hatte eine Textänderung, das Delta ist <...>) als auch der Vergleich aggregierter Daten möglich (zum Beispiel: seit letzter Woche haben wir 23 neue Anforderungen, aber die Testabdeckung hat sich von 83% auf 92% erhöht).
  • Aussagekräftige Berichte mit Drill-Down-Funktionalitäten
    Bei der Beherrschung der Projektkomplexität helfen Drill Downs (die Navigation vom Aggregat zu den Details) - ungemein. Für das o.g. Beispiel mit der Testabdeckung von 92% wäre eine denkbare Drill Down etwa:
    • Testabdeckung beträgt 92 %.
    • Liste der Anzahl der nicht abgedeckten Anforderungen pro Subsystem
    • Liste der nicht abgedeckten Anforderungen für Subsystem A
  • Unterstützung der schnellen und sicheren Verlinkung von Artefakten
    In Situationen, bei den die automatisierte Herleitung von Verknüpfungen nicht möglich ist, muss manuell verlinkt werden. Die Anzahl der zu erzeugenden Links ist groß. Basierend auf Traceability-Daten lassen sich Editoren bauen, welche die schnelle und dennoch konsistente Verlinkung der Artefakte ermöglichen.
relnotesIM3_BulkLinkCreation

Abb.3: Effizientes Verlinken mit dem Bulk link creation editor von YAKINDU Traceability

Yakindu_ANALYZE_300px Information: YAKINDU Traceability Is Now itemis ANALYZE

Fazit

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.

Kommentare