Parasoft-Logo
Titelbild des Whitepapers „Käuferleitfaden: Statische Codeanalyse für die Entwicklung eingebetteter Systeme“

Whitepaper

Einkaufsführer: Statische Code-Analyse für die eingebettete Entwicklung

Neugierig auf den Inhalt? Die wichtigsten Kriterien finden Sie unten.

Zum Abschnitt springen

Übersicht

Statische Analysetools mögen auf den ersten Blick ähnlich erscheinen, doch die Auswahl der richtigen Lösung erfordert einen Blick über die grundlegenden Funktionen hinaus. Bei der Bewertung sollten zwei wichtige Gruppen berücksichtigt werden:

1. Technische Merkmale. Unterstützte Sprachen, IDEs, CI/CD-Pipelines, Sicherheitsstandards und Berichtsfunktionen.

2. Kritische immaterielle Werte.

  • Ist für das Tool Support inbegriffen?
  • Entwickelt es sich ständig weiter?
  • Legt der Anbieter Wert auf Kundenerfolg?
  • Passt es zu Ihrem Softwareentwicklungszyklus und Ihrer Entwicklungskultur?
  • Wann sollte man freie und/oder kommerzielle Tools verwenden?

Dieser Leitfaden bietet einen Rahmen für die Bewertung Werkzeuge zur statischen Analyse für die Entwicklung eingebetteter Systeme das über einfache Machbarkeitsstudien hinausgeht und eine nachhaltige, langfristige Akzeptanz gewährleisten soll.

Hintergrund

Die Komplexität von Software steigt, während die Lieferzeiten sinken. Moderne Systeme werden oft mehrmals täglich aktualisiert, müssen sicher, zuverlässig und geschützt sein und Industriestandards erfüllen. Allein das Internet der Dinge umfasst riesige, verteilte Codebasen, die sich über Endgeräte und Cloud-Dienste erstrecken.

Statische Analysewerkzeuge Sie helfen Organisationen sicherzustellen, dass ihr Code einheitlichen Erwartungen hinsichtlich Sicherheit, Zuverlässigkeit, Leistung und Wartbarkeit entspricht. Bei der Evaluierung von Tools testen viele Teams jeden Kandidaten mit demselben Code und wählen dasjenige aus, das die meisten Verstöße meldet.

Dies ist keine Produktbewertung, sondern ein Vergleichstest. Und der Gewinner ist nicht unbedingt das beste Werkzeug, um einen nachhaltigen, skalierbaren Prozess zur statischen Analyse in Ihrem Team oder Unternehmen zu etablieren. Viele Schlüsselfaktoren, die erfolgreiche Implementierungen von gescheiterten Initiativen unterscheiden, werden bei solchen Übungen übersehen.

Bewerten Sie Ihre Bedürfnisse

Bevor Sie nach passenden Werkzeugen suchen, sollten Sie eine schonungslose Selbsteinschätzung vornehmen, wo Ihre Organisation heute steht und wohin sie Ihrer Meinung nach durch statische Analysen geführt werden soll:

  • Welche konkreten Probleme gehen Sie an? Verbesserung der Codequalität und die Zuverlässigkeit? Reduzierung von QA-Fehlern und Verzögerungen bei der Veröffentlichung?
  • Haben Sie regulatorische Compliance-Anforderungen wie beispielsweise funktionale Sicherheitsstandards oder Branchenübliche Codierungsstandards (MISRA, AUTOSAR C++14, JSF, CERT, CWE)?
  • Welche Initiativen sind im Gange – Sicherheitsverbesserung, DevOps, DevSecOps, IoT? Hat die statische Analyse einen direkten oder indirekten Einfluss darauf?
  • Ist Ihr Entwicklungsprozess stabil, wiederholbar und effizient genug, um eine solide Grundlage für die statische Analyse zu bieten?
Zwei Entwickler arbeiten zusammen. Eine Frau mit braunem Hemd und lockigem Haar und ein Mann mit rot-schwarz kariertem Hemd und Brille.

Die statische Codeanalyse untersucht Quellcode ohne Ausführung, typischerweise um Fehler zu finden oder die Qualität zu bewerten. Im Gegensatz zur dynamischen Analyse oder zum Unit-Testing (die ein lauffähiges Programm erfordern) benötigt die statische Analyse keine ausführbare Datei.

Das bedeutet, es kann für unfertigen Code, Bibliotheken und Quellcode von Drittanbietern verwendet werden. Es kann während des Schreibens oder Änderns von Code genutzt oder in beliebige Codebasen eingespielt werden. Im Bereich der Anwendungssicherheit wird es als statisches Anwendungssicherheitstesting (SAST) bezeichnet. Viele kommerzielle Tools unterstützen sowohl die Erkennung von Sicherheitslücken als auch von Fehlern, Qualitätsmetriken und die Einhaltung von Codierungsstandards.

Statische Analysen werden dringend empfohlen oder sind durch Sicherheitsstandards wie beispielsweise vorgeschrieben. ISO 26262 , DO-178C, IEC 62304, IEC 61508 und EN 50716 Aufgrund ihrer Fähigkeit, schwer auffindbare Fehler zu erkennen und die Sicherheit zu verbessern, werden sie geschätzt. Außerdem unterstützen sie Softwareteams bei der Einhaltung von Codierungsstandards wie MISRA, CERT, AUTOSAR C++14 und anderen.

Erfahren Sie mehr darüber, wie die statische Analyse funktioniert →

Gemeinsame Fähigkeiten

Moderne statische Analysetools haben sich zu umfassenden Plattformen entwickelt, die weit über die einfache Codeprüfung hinausgehen. Führende Lösungen bieten flexible Konfigurationsmöglichkeiten für große und ältere Codebasen, anpassbare Prüffunktionen und CI/CD-fähige Bereitstellungen. Die korrekte Konfiguration ist daher ein entscheidender Faktor für langfristigen Erfolg und die Vermeidung von Fehlalarmen.

Die effektive Integration in IDEs, CI/CD-Pipelines und die gesamte Toolchain gewährleistet, dass sich die statische Analyse nahtlos in bestehende Arbeitsabläufe einfügt und nicht zum Engpass wird. Benutzerfreundlichkeit ist ebenso wichtig, da Funktionen wie die Echtzeitanalyse in der IDE, eine übersichtliche Dokumentation und die automatisierte Ergebnisverwaltung die Akzeptanz und Nachhaltigkeit direkt beeinflussen.

Fortschrittliche Berichts- und Analysefunktionen unterstützen Teams bei der Risikoerkennung, der Priorisierung von Ergebnissen, der Verfolgung von Trends im Zeitverlauf sowie der Kommunikation von Projektstatus und ROI. Umfassende Unterstützung von Sicherheitsstandards, einschließlich auditfähiger Berichte und automatisierter Nachweise zur Einhaltung der Vorschriften, ist für die Entwicklung regulierter eingebetteter Systeme unerlässlich.

Für einen detaillierten Leistungsvergleich und eine Tabellenübersicht, Lesen Sie das vollständige Whitepaper.

Immaterielle Vermögenswerte

Eine erfolgreiche statische Analyse erfordert mehr als nur das Abarbeiten einer Funktionsliste. Es gibt mehrere schwer fassbare Faktoren, die über Erfolg oder Misserfolg des Projekts entscheiden können, darunter:

  • Ist das Tool skalierbar?
  • Hält der Anbieter die sich weiterentwickelnden aktuellen Standards ein?
  • Bietet der Anbieter Support, Schulungen und Dokumentation an und arbeitet er generell gut mit seinen Kunden zusammen?

Im Folgenden wird der Auswahlprozess erläutert, wie diese wichtigen nichtfunktionalen Anforderungen in die Evaluierung einbezogen werden können.

Werkzeugauswahlprozess

Erstellen Sie eine vorläufige Liste der Bedürfnisse und Kriterien

Im ersten Schritt gilt es, die verfügbaren Optionen zu prüfen und eine vorläufige Liste vielversprechender Tools zusammenzustellen. Welche Kriterien sollten dabei berücksichtigt werden?

Empfehlungen sollten geprüft, aber nicht blindlings akzeptiert werden.

Wenn bekannt wird, dass eine Organisation oder ein Team neue Tools untersucht, werden wahrscheinlich einige Vorschläge eingehen. Beispielsweise könnte jemand Tool A empfehlen, weil es bereits in einem früheren Projekt eingesetzt wurde. Vielleicht verwendet ein Top-Entwickler Tool B in seinem eigenen Code und ist der Meinung, dass es jeder ebenfalls verwenden sollte.

Diese Empfehlungen liefern wertvolle Hinweise auf Tools, die es genauer zu untersuchen gilt. Man sollte jedoch nicht den Fehler begehen, eine starke Empfehlung, selbst von einer vertrauenswürdigen Quelle, als Entschuldigung für den Verzicht auf eine gründliche Evaluierung zu betrachten.

Das Problem mit diesen Empfehlungen ist, dass die Person, die sie ausgesprochen hat, wahrscheinlich andere Anforderungen hatte als die heutigen. Sie weiß, dass das Tool in einem bestimmten Kontext gut funktioniert hat. Aktuell wird jedoch ein Tool benötigt, das in der bestehenden Umgebung gut funktioniert und zur Erreichung der Abteilungs- und Unternehmensziele beiträgt. Um dies zu erreichen, ist es wichtig, bei einer umfassenden Evaluierung das Gesamtbild im Auge zu behalten.

Anbieter entdecken

Wenn ein Unternehmen ein Tool erwirbt, geht es damit eine Partnerschaft mit dem gewählten Anbieter ein. Hinter den meisten erfolgreichen Tool-Implementierungen steht ein Anbieter, der sich dafür einsetzt, das Unternehmen bei der Erreichung seiner Geschäftsziele zu unterstützen, auftretende Herausforderungen zu bewältigen und die Akzeptanz des Tools zu fördern.

Es ist wichtig, im gesamten Evaluierungsprozess mehrere Ebenen der Anbieterqualifizierung und -bewertung zu berücksichtigen. Beginnen Sie in dieser frühen Phase mit einer ersten Recherche, indem Sie sich einen Eindruck davon verschaffen, wie der Anbieter sein eigenes Tool einschätzt. Lesen Sie dazu Whitepaper, sehen Sie sich Webinare an und nutzen Sie weitere Informationsquellen. Konzentrieren Sie sich auf das Gesamtbild, nicht auf die Details.

Was zu beachten ist

  • Vision, ist das Wenn die Vision des Anbieters nicht mit den Anforderungen und Zielen übereinstimmt oder wenn der Anbieter nicht in der Lage ist, das erwartete Wachstum zu unterstützen, ist es ratsam, dies frühzeitig im Prozess zu erkennen. Es ist nicht empfehlenswert, einen Anbieter zu evaluieren, dessen Vision nicht mit den Zielen einer Organisation übereinstimmt, es sei denn, die Alternativen sind äußerst begrenzt.
  • Best Practices Informieren Sie sich über die vom Anbieter empfohlenen Best Practices für die Nutzung seines Tools. Verfügt er über eine schlüssige Strategie für die unternehmensweite Implementierung? Wird das Tool an die sich ändernden Bedürfnisse des Unternehmens angepasst? Stimmt die Strategie mit den Zielen des Teams und des Unternehmens überein?
  • Ruf. Recherchieren Sie den Anbieter und finden Sie Folgendes heraus: Welche Organisationen nutzen das Tool? Was zeigen die Fallstudien über Implementierung, Nutzung und Vorteile? Was sagen Branchenexperten in Rezensionen, Fachartikeln und Auszeichnungen?

Zusammenfassung

Die Bewertung von Softwaretools hinsichtlich ihrer Einführung und Integration in den Softwareentwicklungsprozess eines Unternehmens ist zwar zeitaufwändig, aber unerlässlich. Es ist entscheidend, dass Unternehmen bei der Einführung neuer Tools, Prozesse oder Technologien ein klares Verständnis ihres Ziels und ihrer Motivation haben. Ohne ein definiertes Ziel ist der Erfolg ungewiss.

Die Evaluierung von Werkzeugen zur statischen Codeanalyse läuft oft auf einen Vergleich hinaus, bei dem jedes Werkzeug an einem gemeinsamen Codeabschnitt getestet und anhand der Ergebnisse bewertet wird. Das ist zwar hilfreich, sollte aber nicht das einzige Kriterium sein. Die technische Bewertung ist natürlich wichtig, doch die Evaluatoren müssen über diese Ergebnisse hinausblicken und das Gesamtbild sowie den längeren Zeithorizont berücksichtigen.

Die Evaluatoren müssen berücksichtigen, wie gut die Tools die Ergebnisse verwalten, einschließlich einer benutzerfreundlichen Visualisierung und Berichtsfunktion.

Teams müssen außerdem genau verstehen, wie die einzelnen Tools beispielsweise Aussagen zu Codierungsstandards unterstützen. Die Tools, die Anbieter selbst verwenden, müssen in die Evaluierung einbezogen werden. Ein Anbieter, der langfristig zum Partner für Ihren Erfolg wird, ist besser als einer, der nicht die benötigte Unterstützung, Anpassungsmöglichkeiten und Schulungen bieten kann.

Am wichtigsten ist jedoch, wie jedes Tool diese drei Schlüsselfragen beantwortet:

  • Wird das Team das Tool nutzen?
  • Ist das Tool die Lösung, die der Organisation helfen wird, ihre Ziele zu erreichen?
  • Ist das Tool eine langfristige Lösung für die Probleme, mit denen das Team konfrontiert ist?

Bereit, tiefer einzutauchen?

Vollständiges Whitepaper anfordern