Software-Code evaluieren

Andrea Gillhuber,

Auswahl eines modernen statischen Analysetools

Software spielt in der Produktion eine immer wichtigere Rolle. Für Produktionsprozesse entscheidend ist die Qualität des Codes, deswegen sollte schon in der Entwicklung auf Defekte und Fehlfunktionen geachtet werden. Moderne statische Analysetools helfen, allerdings gilt es bei deren Auswahl einiges zu beachten. Von Arthur Hicken 

Statische Codeanalyse - Auswahl eines Analysetools © Fit Ztudio/Shutterstock

Geht es um die Qualität von Software, kommt man an statischen Codeanalysen nicht vorbei, speziell bei sicherheitskritischer Software. Grob betrachtet unterscheiden sich alle statischen Analysetools kaum. Sie untersuchen Code, ohne ihn auszuführen, decken Defekte und fehlerträchtige Codeteile in der Software auf und generieren Warnungen und Reports. Für gewöhnlich werden sie in die Entwicklungsumgebung und CI/CD/Build-Systeme integriert. Möchte man ein Codierungswerkzeug erfolgreich in die tägliche Entwicklung einbinden und den größtmöglichen Nutzen aus der Investition ziehen, lohnt es sich allerdings, die Optionen genau zu prüfen.

Oft folgen Entscheider einfach einem einheitlichen Muster: Sie lassen die in Frage kommenden Tools den gleichen Code verarbeiten, vergleichen dann die Ergebnisse und wählen jenes Tool aus, das die meisten Regelverletzungen meldet. Man kann dabei nicht von wirklicher Evaluierung sprechen, denn als Sieger in diesem Schlagabtausch geht nicht unbedingt jenes Tool hervor, das sich am besten zum Einrichten eines nachhaltigen und skalierbaren statischen Analyseprozesses in einem Unternehmen eignet. Tatsächlich werden viele entscheidende Faktoren, die den Unterschied zwischen der Einführung eines erfolgreichen statischen Analysekonzepts und einem weiteren gescheiterten Versuch ausmachen, leicht übersehen.

Anzeige

Bedarfsanalyse und aktueller Stand

Bevor man sich auf die Suche nach einem Tool macht, sollten man einen klaren Blick auf das Unternehmen werfen und folgende Dinge prüfen:

Was wird benötigt? Damit die statische Analyse zum Erfolg führen kann, muss zunächst festgelegt werden, was diese eigentlich leisten soll:

  • Welche neuralgischen Punkte soll sie angehen?
  • Sind Konformitätsanforderungen zu erfüllen?
  • Ist der Security-Aspekt der Applikationen ein Thema?
  • Was wird in dieser Hinsicht bereits getan?
  • Wer wertet die Analysereports aus und muss auf deren Basis handeln?

Wo steht das Unternehmen jetzt? Es ist wichtig zu wissen, welche Probleme die Tools lösen sollen und ob sie zum Unternehmen passen:

  • Ist der derzeitige Entwicklungsprozess ausreichend stabil, reproduzierbar und rationell, um als solides Fundament für die statische Analyse zu dienen?
  • Zu welchen Ergebnissen haben frühere Bewertungen oder Implementierungen statischer Analysetools geführt?

 Kriterien für den Auswahlprozess

Die Auswahl eines statischen Analysetools für den praktischen Einsatz und die langfristige Integration in den Entwicklungsprozess erfordern Aufwand und Planung. Anstelle einer reinen technischen Prüfung bedarf es vielmehr einer Untersuchung, wie gut sich das Tool in das Unternehmen einfügt. Auch die Bewertung des Anbieters, der das Tool verkauft und unterstützt, lohnt sich.

Kriterien zur Evaluierung der Tools 

Bei der technischen Beurteilung der in Frage kommenden Tools sind folgende Kriterien zu berücksichtigen:

  • Abdeckung der erforderlichen Richtlinien,
  • Qualität der eingebauten Checker für die notwendigen Richtlinien,
  • Abdeckung der von der Industrie bzw. dem Unternehmen vorgegebenen Standards,
  • Tiefe und Breite der Analyse,
  • praktische Wege zur Eindämmung des „Rauschens“, das heißt der von den Checkern gemeldeten, aber ignorierbaren Regelverletzungen,
  • vertretbare Anzahl der Falsch-Positivmeldungen und Umgang damit,
  • annehmbare Anzahl der Falsch-Negativmeldungen,
  • Aufwand zum Anpassen der eingebauten Checker an die Unternehmens-Policy,
  • Aufwand zum Hinzufügen neuer, individueller Checker für spezielle Anforderungen
  • unterstütztes Komplexitätsniveau für neue, spezifische Checker

Überlegungen zum Anbieter

Ebenso entscheidend wie das passende Tool ist die Wahl des richtigen Anbieters, denn der Käufer geht unweigerlich eine Beziehung mit dem zugehörigen Anbieter ein. Hinter den erfolgreichsten Tool-Deployments steht immer ein Anbieter, der sich dafür einsetzt, das betreffende Unternehmen zu unterstützen, dessen geschäftliche Zielsetzungen zu erreichen, Herausforderungen zu bewältigen und die Einführung des Tools voranzutreiben. Im Lauf des Evaluierungsprozesses kommt es darauf an, die Anbieter in mehreren Qualifikations- und Bewertungsdurchgängen zu prüfen:

  • Stehen die Fähigkeiten des Anbieters in Sachen Skalierung, Wachstum und Weitsicht im Einklang mit den eigenen Anforderungen und Zielsetzungen?
  • Verfolgt der Anbieter eine kohärente Strategie für den Einsatz im gesamten  Unternehmen und für die Weiterentwicklung, wenn sich die Anforderungen des Unternehmens ändern?
  • Welche „Best Practices“ für die Verwendung seines Tools gibt es vom Anbieter?

Bescheid wissen sollte man auch über den Ruf des Anbieters auf dem Markt:

  • Welche Unternehmen verwenden das Tool bereits?
  • Was sagen die Fallstudien über Deployment, Einsatz und Vorteile des Tools aus?
  • Wie äußern sich Branchenexperten in Testberichten, Rezensionen und Preisverleihungen?

Qualität oder Quantität: Die Abdeckung zählt

Eine gängige Frage lautet: Wie viele Checker hat das Produkt? Dies impliziert, dass die Qualität eines Tools davon abhängt, wie viele verschiedene Fehler es aufdeckt – und ist speziell bei statischen Analysetools ein unzureichendes Beurteilungskriterium. Vielmehr sollte es einem Anwender von statischen Analysetools darum gehen, wie gut das jeweilige Tool unterschiedliche Fehlertypen und Codierstandards abdeckt und wie fundiert seine Analyse ist. Die entscheidende Frage ist  also: Wie gut deckt ein Tool jene Arten von Codierproblemen ab, die für das eigene Unternehmen relevant sind?

Ein Beispiel: Abdeckung von MISRA C, C++ und CERT C

Evaluierung verschiedener quelloffener und kommerzieller Analysetools. Die Daten beruhen auf öffentlich zugängliche Quellen (zum Beispiel CERT-Webseite) sowie auf von Parasoft-Kunden bereitgestellten Informationen aus dem Juni 2019. © Parasoft

Auch wenn Codierstandards wie MISRA ursprünglich aus dem Automobilsektor stammen, finden sie zunehmend Anwendung in anderen Bereichen, in denen es auf funktionale Sicherheit (Safety) ankommt. Neben SEI CERT C wird dies entweder vom Markt verlangt oder dafür benutzt, die eigene Softwareentwicklung von Risiken zu befreien. Unabhängig vom einzelnen Anwendungsfall aber werden diese Standards in jedem Fall zur Evaluierung statischer Analysetools herangezogen.

Die behauptete Abdeckung der einzelnen Standards lässt einen gewissen Interpretationsspielraum, weil die Standards nicht genau definieren, wie ein Tool die Abdeckung für sich beansprucht. Es lohnt sich also, genauer hinzusehen und sich davon zu überzeugen, welche spezifischen Fähigkeiten für den eigenen Anwendungsfall wichtig sein könnten. Wenn das Projekt zum Beispiel MISRA C verlangt, sollten die Fähigkeiten der einzelnen Tools im Detail betrachtet werden.

Die nachfolgende Evaluierung verschiedener quelloffener und kommerzieller Lösungen zeigt die Abdeckung von MISRA und CERT C auf (Tabelle). Es überrascht nicht, dass Open-Source-Lösungen nur eine mäßige Abdeckung bieten, schließlich stand dahinter niemals die Absicht, solchen Standards zu folgen. Aber auch die verschiedenen kommerziellen Tools, die angeben, diese Standards zu unterstützen, werden diesem Anspruch nur bedingt gerecht; denn was zählt, ist schlicht die Abdeckung des Standards und nicht die Zahl der Checker, die man zur Unterstützung des Standards braucht.

Die Abbildung zur Abdeckung von Juliet CWE Top 25 (2011) etwa listet die CWE-IDs (Common Weakness Enumeration) auf und gibt an, ob sie durch Tests in den Juliet C/C++ und Java Test Suites abgedeckt werden. Man erkennt sofort, dass die Test Suite die wichtigen CWEs (Top 25) nicht vollständig abdeckt – und dies trifft auf viele Testsuites zu. © Parasoft

Kommt eine Testsuite zum Messen der Abdeckung eines Standards zum Einsatz, muss man auch die Abdeckung der Testsuite selbst berücksichtigen. Die folgende Abbildung zur Abdeckung von Juliet CWE Top 25 (2011) etwa listet die CWE-IDs (Common Weakness Enumeration) auf und gibt an, ob sie durch Tests in den Juliet C/C++ und Java Test Suites abgedeckt werden. Man erkennt sofort, dass die Test Suite die wichtigen CWEs (Top 25) nicht vollständig abdeckt – und dies trifft auf viele Testsuites zu.

Open-Source-Lösungen

In punkto Verwendung quelloffener Tools für eine statische Analyselösung stellt sich eine offensichtliche Frage. Bei FOSS (Free Open Source Software) sind einige entscheidende Dinge zu beachten. Eine Evaluierung muss die Kosten für fehlende wichtige Features, Services und Support einschließen. Details über die Kosten und Vorteile von FOSS im Allgemeinen sind hier zu finden – darunter Aspekte wie Support, Aktivität und Langlebigkeit des Projekts und die Skalierbarkeit. Möglicherweise kommen FOSS-Lösungen nicht in Frage, wenn es im eigenen Unternehmen auf Industriestandards ankommt und externe Audits an der Tagesordnung sind.

Zu beantwortende Fragen

Bei den Ergebnissen eines Pilotprojekts sollte sich die Evaluierung und finale Entscheidungsfindung auf die Beantwortung folgender maßgeblicher Fragen konzentrieren:

  • Wird das Team die Lösung wirklich annehmen und nutzen? Ein Tool kann noch so gut sein – es ist wertlos, wenn es nicht einsetzbar ist, wenn es die Entwickler nicht akzeptieren, oder wenn es den Fortgang des Projekts zu sehr stört. Bei der Frage, ob etwas angenommen wird, sollte man nicht nur die Tools, Checker und Integrationen untersuchen, sondern auch den Anbieter mit seinen Support-, Service- und Schulungsangeboten.
  • Löst das Tool die Probleme, an deren Lösung das Unternehmen und das Team arbeiten? Der Einsatz neuer Technologien erfordert die Fokussierung auf die zu lösenden Probleme, anstatt einfach nur zu erwarten, die statische Analyse werde diese schon beheben.
  • Sind die an die neue Technologie gerichteten Erwartungen zur Lösung des Problems realistisch? Es ist wichtig, den Erfolg und die Rentabilität zu quantifizieren. Außerdem sollte man vorab festlegen, woran der Erfolg gemessen wird - an der verlorenen Zeit, den verpassten Releases oder den Field-Support-Fällen.
  • Handelt es sich um eine langfristige Lösung? Evaluierungen kosten Zeit und Engagement seitens des Teams, und komplette Deployments noch mehr davon. Sich mit einem Tool abzufinden, das „für den Moment ausreicht“, mag zwar kurzfristig Geld sparen, kann sich aber auf lange Sicht als äußerst kostspielig erweisen.

Bewertungen von statischen Analysetools enden oft so, dass die Ergebnisse nur oberflächlich ausgewertet werden, dabei ist eine zusätzliche technische Evaluierung zweifellos wichtig. Die Beurteilung muss über diese Resultate hinausreichen und das Gesamtbild und die langfristige Perspektive mit einbeziehen. Es empfiehlt sich zu beurteilen, wie gut die Tools die Ergebnisse verwalten, einschließlich einfach anwendbarer Visualisierungs- und Reportfunktionen. Die Teams sollten genau verstehen, wie gut jedes einzelne Tool die Ansprüche unterstützt, die in Bereichen wie etwa Kodierungsstandards erhoben werden, damit ein nachhaltiger Return-on-Investment erzielt werden kann.

Der Autor

Arthur Hicken ist bei Parasoft seit über 25 Jahren im Bereich Software Security und Testautomatisierung tätig, wirkt an der Erforschung neuer Methoden und Techniken (darunter fünf Patente) mit und unterstützt gleichzeitig Kunden bei der Verbesserung ihrer Softwarepraktiken.

Anzeige

Das könnte Sie auch interessieren

Anzeige
Anzeige
Anzeige
Anzeige

Zerspanen

Entscheidende Transparenz

liefert das direkt in die Betriebsführungs-Steuerung integrierte, intelligente Messsystem AIC212 von Bachmann Electronic, um Servicekosten und Stillstandszeiten von Maschinen und Anlagen in den Griff zu bekommen.

mehr...

Dienstleistungen

Ein neues Analysetool

zur Supply-Chain-Optimierung hat Six Sigma Deutschland entwickelt. Mit dem Instrument namens SCM Analytics des Kölner Unternehmens können Unternehmen die Leistungsfähigkeit ihrer Wertschöpfungskette nachhaltig steigern.

mehr...
Anzeige
Anzeige
Anzeige

KI + Datenanalyse

Das Automatisieren von Analyseaufgaben

unterstützt die neue Version der Analysesoftware Cosmos-Designstar von Solidworks. „Die anwenderfreundlichen Softwaretools vereinfachen und automatisieren Analysen und ermutigen Konstrukteure unabhängig von ihren Erfahrungen zu innovativeren...

mehr...

Subscription-Modelle

Industriemaschinen im Abo

Subscription-Modelle setzen sich durch. Auch viele produzierende Unternehmen, allen voran die Automobilbranche, erweitern ihr Portfolio durch digitale Services und entwickeln damit neue Geschäftsmodelle – häufig mit flexiblen, kundenzentrierten...

mehr...