Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

Überprüfung und Validierung in eingebetteter Software

Kopfbild von Ricardo Camacho, Director of Safety & Security Compliance
28. September 2023
7 min lesen

Verifikation vs. Validierung in eingebetteter Software ist ein heißes Thema in der Softwareentwicklung. Während beide Begriffe ähnliche Bedeutungen darstellen, gibt es bemerkenswerte Unterschiede. Schauen Sie sich diesen Beitrag an, um sie zu lernen.

Wie die Testautomatisierung sowohl die Überprüfung als auch die Validierung beschleunigt

Gewährleistung des ordnungsgemäßen Betriebs, der Qualität und der Sicherheit eingebettet Software macht einen wesentlichen Teil der Softwareaktivitäten für aus eingebettete Systeme. Dies erreichen die Teams größtenteils durch Softwaretests und während der gesamten Entwicklung durch Analyse, Rückverfolgbarkeit, Dokumentation usw. Sicherheitskritische Software verfügt über strenge Verifizierungs- und Validierungsansätze, die oft in Industriestandards kodifiziert sind. Es stellt sich die Frage: Was ist der Unterschied?

Was ist der Unterschied zwischen Verifizierung und Validierung?

Die offiziellen Definitionen für Validierung und Verifizierung sind in der IEEE Standard Glossar der Software Engineering Terminologie.

Überprüfung: Der Prozess der Bestimmung, ob die Produkte einer bestimmten Phase des Softwareentwicklungszyklus die in der vorherigen Phase festgelegten Anforderungen erfüllen oder nicht.

Validierung: Der Prozess der Evaluierung von Software am Ende des Softwareentwicklungsprozesses, um die Einhaltung der Softwareanforderungen sicherzustellen.

Barry Boehm schrieb in Überprüfen und Validieren von Softwareanforderungen und Designspezifikationen prägnantere Definitionen:

Überprüfung: "Baue ich das Produkt richtig?"

Validierung: "Baue ich das richtige Produkt?"

Diese Definitionen bringen den Unterschied zwischen diesen beiden Schlüsselaspekten des Testens auf den Punkt.

Das Ziel der Überprüfung und Validierung

Das ultimative Ziel ist es, das richtige Produkt zu bauen. Darüber hinaus soll sichergestellt werden, dass das Produkt die Qualität, Sicherheit und den Schutz aufweist, um sicherzustellen, dass es das richtige Produkt bleibt.

Die Überprüfung ist Teil des Softwareentwicklungsprozesses, der sicherstellt, dass die Arbeit korrekt ist. Die Softwareüberprüfung umfasst normalerweise:

  • Konformität mit Industriestandards, um sicherzustellen, dass Prozesse und Artefakte den Richtlinien entsprechen.
  • Überprüfungen, exemplarische Vorgehensweisen, Inspektionen.
  • Statischer Code Analyse und andere Aktivitäten zu Artefakten, die während der Entwicklung erstellt wurden.
  • Durchsetzung von Architektur-, Design- und Codierungsstandards

Die Validierung zeigt, dass das Endprodukt die Anforderungen erfüllt. Diese Anforderungen umfassen Funktionalität sowie Zuverlässigkeit, Leistung, Sicherheit und Schutz.

Bei physischen Produkten umfasst die Validierung, dass Kunden das Produkt selbst sehen, ausprobieren und testen. Bei Software besteht die Validierung jedoch aus der Ausführung der Software und der Demonstration ihrer Ausführung. Es beinhaltet typischerweise:

  • Codeausführung zur Demonstration der korrekten Funktionalität.
  • Ausführung in Zielumgebungen.
  • Stress, Leistung, Penetration und andere nicht funktionierende Tests.
  • Abnahmetests für Kunden direkt und häufig.
  • Verwendung von Artefakten aus Verifizierungsprozessen zur Veranschaulichung Rückverfolgbarkeit von Anforderungen um die Funktionalität zu beenden, insbesondere für bestimmte Sicherheitsfunktionen.

Es ist wichtig, die Unterschiede zwischen Verifizierungs- und Validierungszielen zu verstehen und dass die Softwareentwicklung beides benötigt. Diese Aktivitäten sind ein wesentlicher Teil der Anstrengungen, die in die Softwareentwicklung fließen. Unternehmen sind stets bemüht, diese zu optimieren, ohne die Sicherheit oder Qualität zu beeinträchtigen.

Vorgehensweise bei der Überprüfung und Validierung

Das V-Modell zeigt den Ansatz für eine formellere Verifizierung und Validierung, die bei der Entwicklung sicherheitskritischer Software verwendet wird. Es zeigt die Aktivitäten in jeder Entwicklungsphase und die Beziehungen zwischen ihnen.

V Modellvalidierung
Das V-Modell der Softwareentwicklung zeigt die Beziehung zwischen jeder Phase und der Validierung, die in jeder Testphase abgeleitet wurde.

Das V-Modell ist gut geeignet, um die Beziehung zwischen den Entwicklungsstadien und den Validierungsstadien zu veranschaulichen. In jeder Testphase werden vollständigere Teile der Software anhand der Phase validiert, die sie definiert. Das V-Modell könnte jedoch eine Wasserfallentwicklungsmethode implizieren. Es gibt Möglichkeiten, Agile, DevOps und CI / CD in diese Art der Produktentwicklung einzubeziehen.

Die Überprüfung stellt andererseits sicher, dass jede Phase abgeschlossen und ordnungsgemäß durchgeführt wird:

V Modellüberprüfung
Das V-Modell der Softwareentwicklung zeigt die Verifizierungsbeziehung zwischen den einzelnen Entwicklungsstufen.

Die Überprüfung umfasst Überprüfungen, exemplarische Vorgehensweisen, Analysen, Rückverfolgbarkeit, Test- und Codeabdeckung und andere Aktivitäten, um sicherzustellen, dass die Teams den Prozess und das Produkt korrekt erstellen. Beispielsweise ist die Ausführung von Komponententests eine Validierungsaktivität, und die Sicherstellung der Rückverfolgbarkeit, der Codeabdeckung und des Testfortschritts der Komponententests ist eine Überprüfung. Die Schlüsselrolle der Überprüfung besteht darin, sicherzustellen, dass gelieferte Artefakte von der vorherigen Phase bis zur Spezifikation und in Übereinstimmung mit den Unternehmens- und Branchenrichtlinien erstellt werden.

Verwechslung von Verifizierungs- und Validierungsnamen

Unternehmen verwenden Verifizierung und Validierung wahrscheinlich auf leicht unterschiedliche Weise. Es ist gängige Praxis, die Validierung als eine Aktivität zu betrachten, die gegen Ende der Softwareentwicklung stattfindet, wenn Teams das Produkt dem Kunden (oder Testern, die als Stellvertreter fungieren) präsentieren und nachweisen, dass alle Anforderungen erfüllt werden. Bei der Embedded-Entwicklung wird weiterhin das Konzept eines Factory Acceptance Test (FAT) verwendet.

Ein weiterer bemerkenswerter Unterschied in der Philosophie ist DO-178B / C. und verwandte Standards für die Entwicklung sicherheitskritischer Avionik-Software, für die die Validierung kein bekannter Begriff ist. Tatsächlich wird die Validierung als redundant angesehen, wenn die Überprüfung abgeschlossen ist.

„Bei der Validierung wird festgestellt, ob die Softwareanforderungen korrekt und vollständig sind. DO-178C bietet keine Anleitung für Software-Validierungstests, da davon ausgegangen wird, dass Software, deren Richtigkeit überprüft wurde, theoretisch keine Validierungsprobleme beim Testen der Software-Integration aufweisen sollte, es sei denn, die Softwareanforderungen sind unvollständig oder falsch. “ - Zertifizierung sicherheitskritischer Software nach DO-178C und DO-278A, Stephen A. Jacklin, NASA Ames Research Center

Obwohl ich denke Böhms Definition entspricht der gebräuchlicheren Verwendung der Begriffe, es gibt wahrscheinlich Leute, die Einheit und betrachten könnten Software-Integrationstests als Überprüfungsschritte und nicht als Validierung.

Hybrid DevOps Pipelines für sicherheitskritische Software

In vielen Organisationen für eingebettete Software ist die Implementierung eines vollständig agilen Prozesses nicht mit den Einschränkungen kompatibel, die die Sicherheitsstandards der Branche ihnen auferlegen. Für Artefakte, Code, Testergebnisse und Dokumentationen sind häufig Liefertermine erforderlich und festgelegt. Der Fortschritt basiert auf diesen Ergebnissen (Meilensteinen).

In einigen Fällen, z. B. bei großen Militär- und Verteidigungsprojekten, sind Meilensteinleistungen in die Vertrags- und Zahlungsmodalitäten integriert. Obwohl dies einen Wasserfallansatz impliziert, gibt es keinen Grund, die Softwareentwicklung darauf zu beschränken. Teams können Hybridmodelle verwenden, um Meilensteine ​​für Ergebnisse mithilfe iterativer und agiler Methoden intern zu erreichen.

Parasoft Agiles V-Modell
Parasoft Agiles V-Modell

Der Grund, dies in einer Diskussion über Verifizierung und Validierung zur Sprache zu bringen, besteht darin, dass Teams viele der Vorteile einer kontinuierlichen Integration und Prüfung in komplexen sicherheitskritischen Anwendungen nutzen können. Ein Teil davon besteht darin, die Verifizierung und Validierung nach links so früh wie möglich im Entwicklungsprozess zu verschieben. Beispielsweise gibt es keinen Grund, den Komponententest zu verzögern, bis alle Einheiten codiert sind, oder zu warten, um den Code mit statischer Analyse zu analysieren, bis er für die Integration bereit ist.

Ebenso sollten Entwickler Integrationstests versuchen, sobald Unit-getestete Komponenten bereitstehen. Die Kombination von Automatisierung mit einem kontinuierlichen, iterativen Ansatz bietet enorme Vorteile für die Validierung und Verifizierung von Software. Parasoft verfügt über Tools, die sich mit Tests, Qualität und Sicherheit in allen Phasen des SDLC befassen (siehe unten).

Das V-Modell zeigt den Ansatz für eine formellere Verifizierung und Validierung, die bei der Entwicklung sicherheitskritischer Software verwendet wird.

Parasoft V-Modell: Verifizierung vs. Validierung
Wie Parasoft-Produkte in jede Phase des V-Modells des SDLC passen.

Beschleunigung der Überprüfung

Die Überprüfung umfasst die Arbeit, um sicherzustellen, dass jede Entwicklungsphase die Spezifikation des vorherigen Schritts erfüllt. In Bezug auf die Codierung und das Testen von Software wird durch die Überprüfung sichergestellt, dass der Code dem Moduldesign und letztendlich dem übergeordneten Design und den darüber hinausgehenden Anforderungen entspricht.

Darüber hinaus stellt die Überprüfung sicher, dass die Anforderungen auf Projektebene erfüllt werden. Zu diesen Anforderungen gehören die Einhaltung von Industriestandards, Risikomanagement, Rückverfolgbarkeit und Metriken (Codeabdeckung und Einhaltung). Parasofts Software zur Automatisierung von Softwaretests Beschleunigen Sie die Überprüfung, indem Sie die vielen langwierigen Aspekte der Aufzeichnung, Dokumentation, Berichterstellung, Analyse und Berichterstellung automatisieren:

  • Verwenden Sie die statische Analyse so früh wie möglich um Qualität und Sicherheit zu gewährleisten, während Entwickler Code schreiben. Darüber hinaus verhindert die statische Analyse zukünftige Fehler und Schwachstellen und verringert die nachgelagerten Auswirkungen von Fehlern, die bei Inspektionen und Tests übersehen werden.
  • Automatisierung der Einhaltung von Codierungsstandards um den manuellen Aufwand zu reduzieren und die Code-Inspektionen zu beschleunigen.
  • Zweiwege-Rückverfolgbarkeit für alle Artefakte um sicherzustellen, dass die Anforderungen Code und Tests enthalten, um zu beweisen, dass sie erfüllt werden. Metriken, Testergebnisse und statische Analyseergebnisse werden auf Komponenten zurückgeführt und umgekehrt.
  • Code- und Testabdeckung um sicherzustellen, dass alle Anforderungen implementiert sind und um sicherzustellen, dass die Implementierung nach Bedarf getestet wird.
  • Berichterstellung und Analyse um die Entscheidungsfindung zu unterstützen und den Fortschritt zu verfolgen. Die Entscheidungsfindung muss auf Daten basieren, die aus den automatisierten Prozessen gesammelt wurden.
  • Automatisierte Dokumentationserstellung von Analysen und Testergebnissen bis zur Unterstützung der Einhaltung von Prozessen und Standards.
  • Automatisierung der Einhaltung von Standards Reduzierung des Overheads und der Komplexität durch Automatisierung der sich wiederholenden und langwierigen Prozesse. Außerdem können Tools den Projektverlauf und die zugehörigen Ergebnisse anhand von Anforderungen, Softwarekomponenten, Tests und aufgezeichneten Abweichungen verfolgen.
Automatisieren Sie wichtige Tests, um die Polarion-Anforderungen zu überprüfen und zu validieren

Beschleunigung der Validierung

Die Validierung beweist, dass ein Produkt seine Anforderungen erfüllt, wenn die Ausführung von Code entweder isoliert für Komponententests oder in verschiedenen Phasen der Integration erforderlich ist. Die Automatisierung dieser Testsuiten spart viel Zeit für die Entwicklung eingebetteter Software.

Die Validierung erfordert die Ausführung auf der Zielhardware. Durch die Optimierung von Regressionstests werden die verfügbaren Ressourcen, Mitarbeiter und Hardware optimal genutzt. Parasoft-Testautomatisierungstools Beschleunigen Sie den Validierungsprozess, indem Sie die Abhängigkeit von manuellen Tests reduzieren und die Rückverfolgbarkeit und Codeabdeckung aller Ergebnisse aufrechterhalten:

  • Automatisierung aller Testsuiten Minimiert manuelle Tests und reduziert den Testengpass aufgrund der begrenzten Hardwareverfügbarkeit.
  • Ziel- und hostbasierte Testausführung unterstützt je nach Bedarf verschiedene Validierungstechniken.
  • Shift-Left-Test beginnt, sobald Teams Code entwickeln. Es nutzt Unit-Testing-Frameworks und generiert automatisch Kabelbäume zum Testen, sobald der Code fertig ist. Unterstützung für testgetriebene Entwicklung und kontinuierliches Testen ist verfügbar, wenn der Prozess einer Organisation reift.
  • Verwalten Sie Änderungen mit intelligenter Testausführung sich nur auf Tests für geänderten Code und betroffene abhängige Personen zu konzentrieren.
  • Rückverfolgbarkeit in beide Richtungen Dazu gehören Code, Tests, statische Analyseergebnisse sowie Anforderungen und Unterstützung für unternehmensweite ALM-Tools (Application Lifecycle Management).

Zusammenfassung

Die Softwarevalidierung stellt sicher, dass Teams die richtige Software erstellen, um die Kunden- und Marktanforderungen zu erfüllen. Die Validierung ist ein Beweis dafür, dass Sie die Anforderungen erfüllen und dass Ihr Produkt zuverlässig, sicher und geschützt ist, um Ihre Kunden zu schützen.

Durch die Softwareüberprüfung wird sichergestellt, dass Teams das Produkt gemäß den Prozessen und Standards Ihres Unternehmens und den vom Markt geforderten erstellen. Mit anderen Worten, die Validierung beweist, dass das Produkt funktioniert, während die Überprüfung sicherstellt, dass Sie alle t's kreuzen und alle i's punktieren.

Validierung und Verifizierung verbrauchen einen großen Teil der Ressourcen in der Entwicklung eingebetteter Produkte. Parasofts Software zur Automatisierung von Softwaretests bietet eine einheitliche Reihe von Tools zur Beschleunigung des Testens, indem Teams dabei unterstützt werden, Tests in die frühen Entwicklungsstadien zu verlagern und dabei die Rückverfolgbarkeit, die Aufzeichnung von Testergebnissen, Details zur Codeabdeckung, die Berichterstellung und die Compliance-Dokumentation beizubehalten.

Erfahren Sie, wie Sie die Verifizierungs- und Validierungsanforderungen für Industrieprozessstandards erfüllen.