Schwere Fehler schneller finden: Auswirkungen von Software-Änderungen auf das Business

Code, der team-/projektübergreifend wiederverwendet wird, sowie Drittanbieter-Code von Zulieferern und Partnern in der Wertschöpfungskette, der in den eigenen Code integriert wird, stellt für Entwicklungsfirmen ein reales Problem dar. Ein einzelner Fehler kann sich auf weitere Produkte übertragen.

Die Folgen dieses Fehlers – und sämtliche Stellen, an denen er auftritt – lassen sich mit herkömmlichen Werkzeugen der statischen Analyse kaum ermitteln. Dadurch steigt der Druck auf die Programmierer, Systementwickler und CTOs sowie Entwicklungsleiter, um folgende Fragen zu beantworten:

Anzeige
  • Sind durch Änderungen neue Fehler entstanden, und wie finde ich sie?
  • Wie wirken sie sich auf meine Codebasen, Projekte und Produkte aus?
  • Welche Fehler muss ich zuerst beheben?
  • Woher weiß ich, dass sie korrigiert wurden und wie kann ich das nachweisen?

itf_219.jpg
Das Vorgehensmodell zur Risikominimierung in der Software-Entwicklung.

Dabei kann Software  wertvolle Unterstützung liefern. Ein Beispiel hierfür ist Coverty, aktuell im Releasestand 5. Es ist eine Software mit Defect Impact Mapping und einem Defect Management Interface. Diese Funktionen ermöglichen die automatische Überprüfung der Software auf Fehler, die durch Software-Änderungen hervorgerufen werden. Sie priorisiert diese Defekte nach ihrem Schweregrad und listet die Folgen auf für alle anderen Produkte, die auf dieselbe Codebasis zugreifen. Damit wird der bislang hochgradig manuelle, ungenauen und zeitraubenden Prozess automatisiert und zudem Transparenz erreicht. Auf der Basis dieser Informationen können Entwickler fundierte Entscheidungen bei der Behebung von Softwarefehlern treffen.

In fünf Schritten zur Risiko-Minimierung

1. SCAN – Überprüfung der Software
Das Programm ist auf jede Codegröße anwendbar und scannt Millionen an Codezeilen in einem einzigen Analysedurchgang innerhalb weniger Stunden. Dank einer patentierter Technologie arbeitet die Lösung mit über 90prozentiger Genauigkeit. Sie erzielt mit 15% eine im Vergleich zu anderen Systemen niedrige False Positive Rate und deckt dabei die Pfade zu hundert Prozent ab. So werden echte, relevante und schwer auffindbare Fehler im Software-Code, die durch Änderungen entstanden, einfach aufgespürt.

2. FIND – Automatische Klassifizierung der Fehlerschwere
Hier kommt das neue Unified Defect Management Interface für sowohl statische als auch dynamische Fehler zum Tragen: Es stellt alle C/C++, C# und Java Defekte in einem einzigen Fenster dar und priorisiert sie mit Hilfe von detailreichen und fortschrittlichen Browsing-Fähigkeiten. Dazu zählen der Zugriff auf Defekt-Marker, die interaktive Suche und die gemeinsame Fehleransicht mit betroffenen Teammitgliedern oder nach Projekten. Eine umfangreiche Defect Knowledge Base enthält zu jedem Fehler detaillierte Information in Klarsprache sowie eine Einschätzung der potenziellen Folgen des Fehlers sowohl nach dem Coverity-eigenen Defect Index als auch nach dem Industriestandard Common Weakness Enumeration (CWE; http://cwe.mitre.org). Die Verknüpfung zu den CWE Definitionen für jeden statischen und dynamischen Defekt bietet den Entwicklern eine enorme Erleichterung, da sie per Mausklick auf eine umfangreiche Knowledge Datenbank mit Fehlerdetails zugreifen können.

3. MAP – Abbildung der Auswirkung auf das Geschäft
Als erste Software überhaupt ermöglicht das Defect Impact Mapping eine automatische Darstellung und genaue Bestimmung, wie sich durch Änderungen hervorgerufene Fehler auswirken. Die Lösung bildet jeden Fehler im Shared Code ab und identifiziert jeden betroffenen Codezweig, alle Teams und Projekte und Produkte im Portfolio. So können Entwickler, die mit Shared Code arbeiten, verstehen, ob Defekte sich nur auf einen einzigen Codezweig beschränken oder mehrere Ziele betreffen. In Folge können sie jenen Fehlern Vorrang geben, von denen die größten Auswirkungen auf die gesamten Produktreihen zu erwarten sind.
 
4. FIX – Schnelle Behebung der schwersten Fehler
Über die Integrationen von Entwicklungsumgebungen und Entwicklungstools von Drittanbietern (etwa Eclipse, Microsoft Visual Studio) ermöglicht Coverity den schnellen Zugriff auf Fehler und ihre rasche Behebung mit dem Tool der Wahl. Dank moderner Kommunikation und Selektierungsbenachrichtigungen können Entwickler andere Teams über ihre Arbeit informieren oder Aufgaben und Instruktionen verteilen, und die enge Zusammenarbeit sicherstellen. Ist ein Defekt ausgewählt, kann ein Entwickler definieren, welche Projekte die Selektierungsinformation erhalten und den entsprechenden Schweregrad je nach Einsatz des Codes im Projekt bestimmen. Hat ein Fehler beispielsweise unterschiedliche Auswirkungen auf verschiedene Ziele, lassen sich diese Fehler nun individuell bewerten. Zudem können Entwickler Details mit nur einem Mausklick von jedem Bildschirm aus, an dem sie arbeiten, einlesen und mit ihren Teams und dem Management teilen.

5. REPORT – Bericht über die Fehlerkorrektur
Das umfangreiche Defekt Reporting ermöglicht die Nachverfolgung von behobenen Defekten und liefert Informationen über Fehlertrends, Gesamtqualität der Codebasis über die gesamte Produktreihe sowie Nachweise für die Behebung und die Übersicht über noch offene Defekte. Dank erhöhter Skalierbarkeit kann eine noch größere Anzahl an Nutzern gleichzeitig daran arbeiten und Analysen parallel durchführen. Auch für Entwicklungsorganisationen, die zur Erfüllung von Standards wie DO-178, MISRA und CMMI über jeden entdeckten und behobenen Fehler Rechenschaft ablegen müssen, bietet die Lösung eine wertvolle Unterstützung.

Die Software findet Fehler in C/C++, C# und Java und läuft auf den Plattformen Windows XP, 2003, Vista, Linux, Solaris, HP/UX, Mac OS X, FreeBSD sowie NetBSD.

Coverity 5 im Einsatz – ein Beispiel

Ein Entwickler arbeitet an einem Projekt, um die Kamerafunktion auf einem Low-End Handy anzupassen. Er untersucht den Code und stellt rasch kritische Fehler in der Shared Codebasis fest, auf der alle weiteren Kameras der Serie basieren. Automatisch zieht Coverity  die Aufmerksamkeit auf die schwersten Fehler, und mit der umfassenden Information aus dem CWE wird die Bedeutung der Fehler schnell verständlich, ebenso wie sich diese beheben lassen. Er muss nun entscheiden, welche er zuerst neu codiert und welches Team er von den Änderungen benachrichtigen muss. Das Defect Impact Mapping zeigt ihm, dass dieser Fehlersatz in derselben Codebasis steckt, auf der die High-end Smartphones als Verkaufsschlager des Unternehmens basieren. Jetzt liegt es auf der Hand: Diese Fehler sind zuerst zu korrigieren. Die Selektierung und Fehlerpriorisierung wird so einfach und richtig.

 

Defect Impact Mapping in der Praxis

o Projektübergreifend genutzter Code: Für Entwickler, die mit projektübergreifend genutztem Code arbeiten, revolutioniert das Defect Impact Mapping die Art der Priorisierung der Defekte und optimiert diesen Vorgang. Bietet ein Kunde beispielsweise drei zentrale Produktreihen an, die zu 90 Prozent auf derselben Codebasis aufsetzen, würde sich ein Fehler ohne den Einsatz einer solchen Software verdreifachen. Für die Qualitätssicherung heißt dies: Jedes Entwicklungsteam muss die Dringlichkeitsreihenfolge unter unnötigem Zeitaufwand separat festlegen. Dieser Fehler kann in Abhängigkeit von der konkreten projektbezogenen Funktion des Codes in den einzelnen Projekten aber unterschiedlich schwer sein. Mit dem Defect Impact Mapping lässt sich jeder Fehler auf dieser Basis für das spezifische Projekt klassifizieren und priorisieren und beheben. Anschließend werden die betroffenen Teams von diesem Fehler in Kenntnis gesetzt.

o Ein Kunde verwaltet 4 Millionen Zeilen Code sowie 500 verschiedene Projekte und Analyse-Streams, muss aber jeweils nur einige wenige Projekte auf alle Defekte prüfen. Ohne die Software müsste man die einzelnen Analyse-Streams gesondert analysieren und dokumentieren. Das bedeutet einen erheblichen zeit- und Personalaufwand. Zudem besteht die Gefahr, dass kritische Defekte unerkannt bleiben. Coverity 5 analysiert die Defektdaten und den Schweregrad auf Projektebene (statt der einzelnen Streams). So lässt sich der Defektstatus viel einfacher erkennen und dokumentieren. Der höhere Transparenzgrad ermöglicht bessere Dringlichkeitsentscheidungen.

 

Ulrich Parthier

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.