Schwerpunkte

Konforme Software erstellen

Mit Tool Suite zu besserem Code

15. März 2021, 16:00 Uhr   |  Von Arthur Hicken

Mit Tool Suite zu besserem Code
© Parasoft | Shutterstock

Beim Entwickeln von Code müssen Softwareentwickler unterschiedliche Standards einhalten – wichtig für die Konformität des Codes. Um sie zu wahren, müssen Entwickler Dokumentationen erstellen. Mit den richtigen Tools ist das jedoch ein Kinderspiel.

Wichtig für jeden Softwareentwickler: Seine Software muss sicher sein. Denn ein Versagen von Software kann zu materiellen Schäden oder im schlimmsten Fall sogar zu Verletzungen beim Endnutzer führen. Aus dem Grund ist es essenziell, im Entwicklungsprozess vorgegebene Standards einzuhalten. Sie sollen Kunden und Anwender vor Schaden bewahren. Aber woher weiß ein Softwareentwickler, ob er alle Standards richtig umgesetzt hat? Dafür gibt es die Konformität – sie ist ein Gradmesser für das Einhalten der Anforderungen. Wie viel Zeit ein Entwickler für das Umsetzen dieser Anforderungen aufwenden muss, hängt vom Strenge­grad des jeweiligen Standards ab. Zudem definiert jeder Standard eigene Entwicklungsrichtlinien – je nach Auswirkung auf den Endnutzer.

elcher Sicherheitsstufe ein Produkt zuzuordnen ist, bestimmen die Schwere eines Fehlers (Severity), die Wahrscheinlichkeit des Auftretens (Exposure) sowie die Beherrschbarkeit (Controllability) des Risikos
© Parasoft

Bild 1. Welcher Sicherheitsstufe ein Produkt zuzuordnen ist, bestimmen die Schwere eines Fehlers (Severity), die Wahrscheinlichkeit des Auftretens (Exposure) sowie die Beherrschbarkeit (Controllability) des Risikos.

Schwere eines Fehlers einordnen

Welcher Sicherheitsstufe ein Produkt zuzuordnen ist, bestimmen die Schwere eines Fehlers (Severity), die Wahrscheinlichkeit des Auftretens (Exposure) sowie die Beherrschbarkeit (Controllability) des Risikos (Bild 1). Bild 2 zeigt den Schweregrad, die Wahrscheinlichkeit und die Beherrschbarkeit eines Fehlers in Bezug auf die verschiedenen Automotive Safety Integrity Level (ASIL) der Norm »ISO 26262«.

Schweregrad, Wahrscheinlichkeit und Beherrschbarkeit eines Fehlers in Bezug auf die verschiedenen ASIL-Level der Norm ISO 26262
© Parasoft

Bild 2. Schweregrad, Wahrscheinlichkeit und Beherrschbarkeit eines Fehlers in Bezug auf die verschiedenen ASIL-Level der Norm ISO 26262.

Mit ähnlichen Kriterien definiert die Norm »EN 50128« den Begriff Software Safety Integrity Level (SSIL). Sowohl die ISO 26262 als auch die EN 50128 leiten ihre Definitionen aus der »IEC 61508« ab, einer übergreifenden Norm für funktionale Sicherheit (FuSi).

Die SSIL-Level basieren auf der Ausfallwahrscheinlichkeit und der Schwere der Auswirkungen des Ausfalls auf den Menschen. Das Niveau beziehungsweise die Strenge steigt mit dem erforderlichen ASIL/SIL-Level und somit ebenso der Zeitbedarf und die Kosten für das Programmieren von (A)SIL-gerechtem Code.

Komformität - aber wie?

Das größte Risiko ist das Versagen der Software. Es kann zu Schäden kommen, für die ein Unternehmer haften muss. Um das zu vermeiden, sollten Softwareunternehmen die geltenden Sicherheitsstandards einhalten. Sie müssen in Form einer Verpflichtungserklärung nachweisen, dass sie alle nötigen technischen Entscheidungen getroffen haben, um die Sicherheit des Benutzers zu gewährleisten. Werden wichtige Sicherheitsprobleme zu einem späten Zeitpunkt im Softwarelebens­zyklus entdeckt, erfordert das umfangreiche Nacharbeiten, Testwiederholungen und erneute Dokumentation. Das ist teuer und verschlingt Zeit – und deutet auf ein mögliches Versagen des Systems und des Entwicklungsprozesses hin.

Es ist entscheidend, das Einhalten von Richtlinien so früh wie möglich im Entwicklungsprozess der Software (Software Development Life Cycle, SDLC) umzusetzen. Hierzu empfiehlt Parasoft geeignete Tools, Prozesse und ein Automatisieren. So können Entwickler das Softwarerisiko reduzieren und
die Konformität erhöhen, ohne die Kosten und den Zeitplan negativ zu beeinflussen.

Softwareentwicklungs-Tools können die in Konformitätsprozessen wieder­kehrenden und langwierigen Prozesse automatisieren und reduzieren hiermit die Arbeitslast und Fehlerquote. Entwickler können zudem die Projekthistorie besser verfolgen und ihre Ergebnisse mit den gestellten Anforderungen, Softwarekomponenten, Tests und aufgezeichneten Abweichungen in Beziehung setzen. Sie helfen außerdem beim Durchsetzen guter Praktiken wie Programmierstandards, Unit-Tests, Codeabdeckung, Rückverfolgbarkeit und mehr. Tools lassen sich schon früh im Lebenszyklus einsetzen, um den Arbeitsaufwand für die Kon­formität vorzuverlegen. Wie das praktisch geschieht und welche Rolle die Automatisierung hierbei spielt, wird nachfolgend am Bespiel der Tools von Parasoft erläutert.

Fehler einfach aufdecken

Um das Entwickeln von sicherheitskritischer Software zu unterstützen, umfasst das Angebot von Parasoft unterschiedliche Entwicklungs-, Test- und Verifikationswerkzeuge wie:
➔ Konformitätsanalyse mit Programmierstandards
➔ Daten- und Kontrollflussanalyse
➔ Unit-Tests
➔ Anwendungsüberwachung
➔ Workflow-Komponenten

Hierbei unterstützt es Standards wie AUTOSAR, CERT, CWE, ISO 26262,  MISRA oder OWASP. Das Tool C/C++test bietet Testfunktionen, konfigurierbare Kontexte und Berichtsmechanismen, die beim Testen von Software helfen. Es gibt Entwicklerteams eine praktische Möglichkeit an die Hand, um Fehler in Code mit automatisch generierten Berichten und Dashboards zu verhindern, aufzudecken und zu korrigieren. Außerdem können sie die für Audits erforderliche Dokumentation mit Hilfe der auto­matisierten Werkzeugqualifizierung vorbereiten.

Mit dem Assembly Coverage Tool (ASMTool) lassen sich strukturelle Berichte von ausführbarem Code erzeugen
© Parasoft

Bild 3. Mit dem Assembly Coverage Tool (ASMTool) lassen sich strukturelle Berichte von ausführbarem Code erzeugen.

Beispielsweise erfüllt Parasoft die Empfehlungen für ausführbaren Objektcode gemäß »DO-178B/C Level A« mit dem »Assembly Coverage Tool« (ASM Tool). Es kann mit geringem Aufwand strukturelle Berichte von ausführbarem Code erzeugen. Hierbei wird die Strukturabdeckung mit einem leicht überprüfbaren Einblick in den vom Compiler generierten Code gecheckt, der nicht direkt auf Quellcode-Anweisungen zurückführbar ist. Indem das Tool Switch-Anweisungen nachverfolgt, liefert es einen vollständigen Einblick in die Testausführungspfade auf Ebene der Maschinensprachbefehle. Zudem unterstützt es das Erfassen der Strukturabdeckung sowohl aus dem Softwareintegrationsprozess (Testen der Zielhardware) als auch aus der Desktop-Entwicklungsumgebung (Bild 3).

Programmierstandards einhalten

Bei vielen Safety- und Security-Vorschriften spielen Programmierstandards eine wichtige Rolle. In den meisten Fällen ist ein statisches Analysewerkzeug die einzige Möglichkeit, die Konformität durchzusetzen. Weil C/C++test zugeordnete Checker für die Programmierstandards unterstützt, müssen Entwickler keine Warnungen zurück zu den Standards ableiten. Als Basis für einen effizienten Tagesablauf können sie das interaktive Berichtssystem an die Anforderungen der von ihnen verwendeten Regeln anpassen. Entwickler können die Konformität ihres Codes überprüfen, ohne ihre Entwicklungsumgebung (IDE) zu verlassen und den Scan-Prozess in Continous Integration (CI)-Builds auf Servern integrieren.

 Die CERT-C-Compliance-Level in der Übersicht
© Parasoft

Bild 4. Die CERT-C-Compliance-Level in der Übersicht.

Vorteilhaft ist weiterhin der Support von Parasoft für sicherheitsrelevante Standards wie »SEI CERT«. Er hilft Unternehmen, Sicherheitsschwachstellen in ihrem Code zu erkennen und den Prozess der Konformität mit dem Standard zu steuern. Außerdem tragen folgende Faktoren dazu bei, die
mit dem Einhalten der Konformität
verbundenen Kosten und den Aufwand zu minimieren:
➔ hohe Genauigkeit der Code-Checker
➔ niedrige Anzahl an Fehlalarmen
➔ Compliance-Berichterstattung
Die speziellen Konformitätsberichte ermöglichen eine dynamische Sicht auf den Entwicklungsprozess. Interaktive Reports und benutzerdefinierte Dashboards bieten verschiedene Ein­blicke in die Ergebnisse des CERT-Com­pliance-Status. Außerdem verwenden sie den Wortlaut und die Kategorisierungen, die im Standard definiert sind, um sie leichter verständlich zu machen (Bild 4).

Zentrales Reporting und Erstellen von Dokumenten

Die Kombination mehrerer Testautomatisierungstechniken erzeugt eine große Menge an Informationen. Auch wenn die Daten nützlich sind, erschwert die schiere Menge den Einblick in die Qualität der Ergebnisse und das Treffen von Entscheidungen, zum Beispiel über die Freigabe oder Änderungen im Entwicklungsprozess. Für die Entscheidungsfindung ist es vorteilhaft, die Daten in einer zentralen Ansicht der Qualität zu bündeln. Grafische Dashboards liefern eine Top-Level-Ansicht des Testfortschritts. Eine Korrelation von Qualitätsdaten mit den individuellen Anforderungen und User Stories ermöglicht die bidirektionale Rückverfolgbarkeit. So lassen sich Geschäftsrisiko und Auswirkungen von Lücken in den Testverfahren beurteilen.

Das Reporting- und Analyse-Dashboard von Parasoft sammelt Daten aus allen verschiedenen Testverfahren, beispielsweise statische Analyse, Code-Abdeckung, Rückverfolgen aus Unit-Tests, Programmierschnittstellen (API)-Tests sowie funktionalem Validieren auf Systemebene. Es erlaubt eine zentrale Sicht auf die Qualität – vergleichbar mit einem Echtzeit-Audit des eigenen Prozesses und ein Einblick in den Status der Konformität. Außerdem generiert die Analyse die Dokumentation, die für den Konformitätsnachweis erforderlich ist.

Seite 1 von 2

1. Mit Tool Suite zu besserem Code
2. Komformitätsberichte einfach erstellen

Auf Facebook teilen Auf Twitter teilen Auf Linkedin teilen Via Mail teilen

Das könnte Sie auch interessieren

Verwandte Artikel

Parasoft Corp.