Softwareüberprüfung und Validierung

Im Software -Projektmanagement, Softwaretest, und Softwareentwicklung, Verifizierung und Validierung (V & v) ist der Prozess der Überprüfung, ob ein Softwaresystem Spezifikationen und Anforderungen erfüllt, damit es seinen beabsichtigten Zweck erfüllt. Es kann auch als bezeichnet werden Software -Qualitätskontrolle. Es liegt normalerweise in der Verantwortung von Softwaretester Im Rahmen des Softwareentwicklungslebenszyklus. In einfachen Worten ist die Softwareverifizierung: "Angenommen, wir sollten X erstellen, erreicht unsere Software ihre Ziele ohne Fehler oder Lücken?" Andererseits lautet die Software-Validierung: "War X was wir hätten aufbauen sollen? Erfüllt X die Anforderungen an hoher Ebene?"

Definitionen

Überprüfung und Validierung sind nicht dasselbe, obwohl sie oft verwirrt sind. Boehm prägnant den Unterschied als Unterschied als ausgedrückt[1]

  • Überprüfung: Bauen wir das Produkt richtig?
  • Validierung: Bauen wir das richtige Produkt auf?

"Bauen des Produkts richtig" überprüft, ob die Spezifikationen werden vom System korrekt implementiert, während "das richtige Produkt bauen" Bedürfnisse des Benutzers. In einigen Kontexten müssen sowohl für formale Verfahren als auch für formale Verfahren oder Protokolle schriftliche Anforderungen zur Bestimmung der Compliance erforderlich sein. Im Idealfall, Formale Methoden Stellen Sie eine mathematische Garantie vor, dass die Software ihre Spezifikationen erfüllt.

Das Aufbau des Produktrechts impliziert die Verwendung der Anforderungenspezifikation als Eingabe für die nächste Phase des Entwicklungsprozesses, des Entwurfsprozesses, dessen Ausgabe die Entwurfsspezifikation ist. Anschließend impliziert dies auch die Verwendung der Entwurfsspezifikation, um den Bauprozess zu ernähren. Jedes Mal, wenn die Ausgabe eines Prozesses seine Eingabespezifikation korrekt implementiert, ist das Softwareprodukt der endgültigen Überprüfung näher. Wenn die Ausgabe eines Prozesses falsch ist, bauen die Entwickler nicht das Produkt auf, das die Stakeholder richtig wollen. Diese Art der Überprüfung wird als "Artefakt- oder Spezifikationsüberprüfung" bezeichnet.

Das Aufbau des richtigen Produkts impliziert, dass eine Anforderungenspezifikation erstellt wird, die die Bedürfnisse und Ziele der Stakeholder des Softwareprodukts enthält. Wenn ein solches Artefakt unvollständig oder falsch ist, können die Entwickler das von den Stakeholdern gewünschte Produkt nicht aufbauen. Dies ist eine Form von "Artefakt- oder Spezifikationsvalidierung".

Notiz: Die Überprüfung beginnt vor der Validierung und laufen dann parallel, bis das Softwareprodukt veröffentlicht wird.[Klarstellung erforderlich] (umgekehrt siehe unten warum :)

Der Begriff Überprüfung wird oft mit dem Begriff verbunden Validierung und als ein einziges Konzept von verstanden V & v. Validierung wird verwendet, um dies sicherzustellen Man arbeitet das richtige Problem, während die Überprüfung verwendet wird, um dies sicherzustellen Man hat das Problem richtig gelöst (Martin 1997). Aus einer tatsächlichen und etymologischen Bedeutung kommt der Begriff Überprüfung vom Lateinischen Veruswas bedeutet Wahrheit und Facere, was bedeutet, zu machen/durchzuführen. Überprüfung bedeutet daher, zu beweisen, dass etwas ist Stimmt oder korrekt (eine Eigenschaft, eine Eigenschaft usw.). Der Begriff Validierung kommt vom Latein Valere, was bedeutet, stark zu werden und die gleiche etymologische Wurzel wie das Wort zu haben Wert. Validierung bedeutet daher, zu beweisen, dass etwas die richtigen Merkmale hat, um die erwarteten Effekte zu erzielen. (Angepasst aus "Überprüfung und Validierung in einfachem Englisch" (Lake Incose 1999). [1][ISO/IEC/IEEE 15288]

Softwareüberprüfung

Es würde bedeuten, zu überprüfen, ob die Spezifikationen durch Ausführen der Software erfüllt werden, dies ist jedoch nicht möglich (z. B., wie kann jemand wissen, ob die Architektur/das Design/usw. durch Ausführen der Software korrekt implementiert werden?). Kann jemand nur durch Überprüfung der zugehörigen Artefakte zu dem Schluss kommen, ob die Spezifikationen erfüllt sind oder nicht.

Artefakt- oder Spezifikationsüberprüfung

Die Ausgabe jeder Softwareentwicklungsprozessstufe kann auch bei der Überprüfung der Eingabespezifikation einer Überprüfung unterzogen werden (siehe Definition nach CMMI unten).

Beispiele für die Artefaktüberprüfung:

  • Der Entwurfsspezifikation gegen die Anforderungspezifikation: Implementieren Sie die Architektur-Design-, detaillierten Design- und Datenbank-logischen Modellspezifikationen korrekt die funktionalen und nicht funktionalen Anforderungenspezifikationen?
  • Von den Konstruktionsartefakten gegen die Entwurfsspezifikation: Implementieren Sie den Quellcode, Benutzeroberflächen und Datenbankmodell die Entwurfsspezifikation korrekt?

Software -Validierung

Die Software-Validierung prüft, ob das Softwareprodukt die beabsichtigte Verwendung erfüllt oder passt (Überprüfung auf hoher Ebene), d. H. Die Software erfüllt die Benutzeranforderungen, nicht als Spezifikationsartefakte oder als Anforderungen derjenigen, die die Software nur betreiben. aber wie die Bedürfnisse aller Stakeholder (wie Benutzer, Betreiber, Administratoren, Manager, Investoren usw.). Es gibt zwei Möglichkeiten, Softwarevalidierung durchzuführen: intern und extern. Während der internen Software -Validierung wird angenommen, dass die Ziele der Stakeholder korrekt verstanden wurden und dass sie in den Anforderungen genau und umfassend ausgedrückt wurden. Wenn die Software die Anforderungspezifikation erfüllt, wurde sie intern validiert. Eine externe Validierung erfolgt, wenn sie durchgeführt wird, indem die Stakeholder gefragt werden, ob die Software ihre Anforderungen entspricht. Unterschiedliche Methoden zur Softwareentwicklung erfordern verschiedene Ebenen der Beteiligung und Feedback der Benutzer und der Stakeholder. Eine externe Validierung kann also ein diskretes oder kontinuierliches Ereignis sein. Eine erfolgreiche endgültige externe Validierung tritt auf, wenn alle Stakeholder das Softwareprodukt akzeptieren und ausdrücken, dass es ihre Bedürfnisse erfüllt. Eine solche endgültige externe Validierung erfordert die Verwendung eines Abnahmeprüfung die ein Dynamischer Test.

Es ist jedoch auch möglich, interne statische Tests durchzuführen, um herauszufinden, ob die Software die Anforderungenspezifikation erfüllt, dies jedoch in den Umfang der statischen Überprüfung fällt, da die Software nicht ausgeführt wird.

Artefakt- oder Spezifikationsvalidierung

Die Anforderungen sollten validiert werden, bevor das Softwareprodukt als Ganzes fertig ist (der Wasserfallentwicklungsprozess erfordert, dass sie perfekt definiert werden, bevor das Design startet. Iterative Entwicklungsprozesse müssen jedoch nicht so sein und ihre kontinuierliche Verbesserung zuzulassen).

Beispiele für Artefaktvalidierung:

  • Validierung der Benutzeranforderungen Spezifikation: Benutzeranforderungen, wie in einem Dokument mit dem Namen Benutzeranforderungen angegeben, werden validiert, indem sie überprüft werden, ob sie tatsächlich das Willen und die Ziele der Stakeholder darstellen. Dies kann durch Befragung der Stakeholder und die direkte Frage (statische Tests) oder sogar durch die Freigabe von Prototypen und die Bewertung der Benutzer und Stakeholder (Dynamische Tests) erfolgen.
  • Benutzereingabevalidierung: Benutzereingabe (gesammelt von einem Peripheriegericht wie Tastatur, biometrischer Sensor usw.) ist bestätigt Durch Überprüfen der Eingabe, die von den Software -Betreibern oder -Nutzern bereitgestellt werden, erfüllt die Domänenregeln und -beschränkungen (z. B. Datentyp, Bereich und Format).

Validierung vs. Überprüfung

Laut dem Reifegradmodell (CMMI-SW v1.1),[2]

  • Softwarevalidierung: Der Prozess der Bewertung von Software während oder am Ende des Entwicklungsprozesses, um festzustellen, ob sie festgelegte Anforderungen erfüllen. [IEEE-STD-610]
  • Softwareverifizierung: Der Prozess der Bewertung von Software, um festzustellen, ob die Produkte einer bestimmten Entwicklungsphase die zu Beginn dieser Phase auferlegten Bedingungen erfüllen. [IEEE-STD-610]

Die Validierung während des Softwareentwicklungsprozesses kann als Form der Validierung der Benutzeranforderungspezifikation angesehen werden. und das am Ende des Entwicklungsprozesses entspricht einer internen und/oder externen Software -Validierung. Die Überprüfung aus CMMIs Sicht ist offensichtlich von der Artifakt -Art.

Mit anderen Worten, die Softwareverifizierung stellt sicher, dass die Ausgabe jeder Phase des Softwareentwicklungsprozesses effektiv durchgeführt wird, was das entsprechende Eingangsartefakt angibt (Anforderung -> Design -> Softwareprodukt), während die Softwarevalidierung sicherstellt, dass das Softwareprodukt den Anforderungen von von erfüllt Alle Stakeholder (daher wurde die Anforderungen an erster Stelle korrekt und genau ausgedrückt). Die Softwareverifizierung stellt sicher, dass "Sie es richtig erstellt" und bestätigt, dass das Produkt, wie angegeben, die Pläne der Entwickler erfüllt. Die Software -Validierung stellt sicher, dass "Sie das Richtige erstellt haben" und bestätigt, dass das Produkt, wie angegeben, die beabsichtigte Verwendung und die Ziele der Stakeholder erfüllt.

Dieser Artikel hat den strengen oder verwendet eng Definition der Überprüfung.

Aus Sicht der Tests:

  • Fehler - Falsche oder fehlende Funktion im Code.
  • Misserfolg - Die Manifestation eines Fehlers während der Ausführung. Die Software war nicht effektiv. Es tut nicht "was" es soll.
  • Fehlfunktion - Gemäß der Spezifikation entspricht das System seine angegebene Funktionalität nicht. Die Software war nicht effizient (sie dauerte zu viele Ressourcen wie CPU -Zyklen, verwendete zu viel Speicher, führte zu viele E/A -Operationen usw.), sie war nicht verwendbar, sie war nicht zuverlässig usw., sie tut nicht Etwas "Wie" soll es tun.


Verwandte konzepte

Sowohl die Überprüfung als auch die Validierung beziehen sich auf die Konzepte von Qualität und von Software Qualitätssicherung. Überprüfung und Validierung garantieren die Softwarequalität nicht. Planung, RückverfolgbarkeitKonfigurationsmanagement und andere Aspekte des Software -Engineering sind erforderlich.

Innerhalb der Modellierung und Simulation (M & S) Community, die Definitionen von Überprüfung, Validierung und Akkreditierung sind ähnlich:

  • Die Verifizierung von M & S ist der Prozess der Bestimmung, dass a Computermodell, Simulation oder Föderation von Modellen und Simulationen implementiert und deren zugehörige Daten repräsentieren die konzeptionelle Beschreibung und Spezifikationen des Entwicklers genau.[3]
  • Die M & S -Validierung ist der Prozess der Bestimmung des Grades, in dem ein Modell, eine Simulation oder ein Föderation von Modellen und Simulationen und ihre damit verbundenen Daten aus der Perspektive der beabsichtigten Verwendung (n) genaue Darstellungen der realen Welt sind.[3]
  • Akkreditierung ist die formale Zertifizierung, dass ein Modell oder eine Simulation für einen bestimmten Zweck akzeptabel ist.[3]

Die Definition der M & S-Validierung konzentriert sich auf die Genauigkeit, mit der das M & S die realistische Verwendung (en) darstellt. Die Bestimmung des Grads der M & S -Genauigkeit ist erforderlich, da alle M & S -Annäherungen an die Realität sind und es normalerweise kritisch ist zu bestimmen, ob der Annäherungsgrad für die beabsichtigten Verwendung (en) akzeptabel ist. Dies steht im Gegensatz zur Software -Validierung.

V & V Methoden

Formell

Im Missionskritisch Softwaresysteme, Formale Methoden Kann verwendet werden, um den korrekten Betrieb eines Systems zu gewährleisten. Diese formalen Methoden können sich jedoch als kostspielig erweisen und bis zu 80 Prozent der gesamten Software -Designkosten darstellen.

Unabhängig

Unabhängige Softwareverifizierung und Validierung (ISVV) ist auf sicherheitskritische Ziele ausgerichtet Software Systeme und zielt darauf ab, die Qualität von Softwareprodukten zu erhöhen und so die Risiken und Kosten durch die operative Lebensdauer der Software zu verringern. Das Ziel von ISVV ist es, die Gewissheit zu gewährleisten, dass Software das festgelegte Vertrauensniveau und innerhalb der entworfenen Parameter und definierten Anforderungen erbringt.[4][5]

ISVV -Aktivitäten werden von unabhängigen technischen Teams durchgeführt, die nicht am Softwareentwicklungsprozess beteiligt sind, um die Prozesse und die daraus resultierenden Produkte zu bewerten. Die Unabhängigkeit des ISVV -Teams wird auf drei verschiedenen Ebenen durchgeführt: finanzielle, leitende und technische.

ISVV geht über "traditionelle" Überprüfungs- und Validierungstechniken hinaus, die von Entwicklungsteams angewendet werden. Während der letztere sicherstellen will, dass die Software gegen die nominalen Anforderungen gut abschneidet, konzentriert sich ISVV auf nicht funktionale Anforderungen wie Robustheit und Zuverlässigkeit sowie auf Bedingungen, die die Software fehlschlagen können.

ISVV -Ergebnisse und Ergebnisse werden den Entwicklungsteams zur Korrektur und Verbesserung zurückgegeben.

Geschichte

ISVV leitet sich aus der Anwendung von IV & V (unabhängige Überprüfung und Validierung) auf die Software ab. Frühe ISVV -Anwendung (wie heute bekannt) stammt aus den frühen 1970er Jahren, wenn der US-Armee sponserte das erste bedeutende Programm im Zusammenhang mit IV & V für den Schutz Antiballistische Rakete System.[6] Ein weiteres Beispiel ist das IV & V -Programm der NASA, das 1993 gegründet wurde.[7]

Bis Ende der 1970er Jahre wurde IV & V schnell populär. Die ständige Zunahme der Komplexität, Größe und Bedeutung der Software führte zu einer steigenden Nachfrage nach IV & V für Software.

In der Zwischenzeit konsolidiert IV & V (und ISVV für Softwaresysteme) und wird nun von Organisationen wie dem verwendet Dod, FAA,[8] NASA[7] und ESA.[9] IV & V wird in erwähnt Do-178b, ISO/IEC 12207 und formalisiert in IEEE 1012.

Bei ESA

Zunächst 2004-2005, ein europäisches Konsortium, das von der angeführt wird Europäische Weltraumagenturund komponiert von DNV, Kritische Software SA, Terma und Coda scisys plc Erstellte die erste Version eines Leitfadens, das ISVV mit dem Titel "ESA -Leitfaden für unabhängige Überprüfung und Validierung" mit Unterstützung anderer Organisationen genannt wurde.[10] Dieser Leitfaden deckt die Methoden ab, die für alle Phasen der Software -Engineering in welchen Betroffenen ISVV anwendbar sind.

Im Jahr 2008 veröffentlichte die Europäische Weltraumagentur eine zweite Version, nachdem sie Inputs von vielen verschiedenen ISVV -Stakeholdern in europäischen Weltraum erhalten hatte.[10]

Methodik

ISVV besteht normalerweise aus fünf Hauptphasen, diese Phasen können nacheinander oder als Ergebnisse eines Schneiderprozesses ausgeführt werden.

Planung

  • Planung von ISVV -Aktivitäten
  • Analyse der Systemkritikalität: Identifizierung kritischer Komponenten durch einen Satz von Widder Aktivitäten (Wert für Geld)
  • Auswahl der entsprechenden Methoden und Werkzeuge

Anforderungsprüfung

  • Überprüfung für: Vollständigkeit, Korrektheit, Testbarkeit

Designüberprüfung

  • Entwerfen Sie Angemessenheit und Konformität mit Softwareanforderungen und Schnittstellen
  • Interne und externe Konsistenz
  • Überprüfung der Machbarkeit und Wartung

Codeüberprüfung

Validierung

  • Identifizierung instabiler Komponenten/Funktionen
  • Validierung konzentriert sich auf Fehlerbehandlung: Komplementäre (nicht gleichzeitige) Validierung in Bezug auf die vom Entwicklungsteam durchgeführte Validierung
  • Einhaltung der Software und System Anforderungen
  • Black Box -Tests und Weiße Box -Tests Techniken
  • Erfahrung basierte Techniken

Regulatorische Umgebung

Software muss häufig die Compliance -Anforderungen von legal regulierten Branchen erfüllen, die häufig von Regierungsbehörden geleitet werden[11][12] oder industrielle Verwaltungsbehörden. Zum Beispiel die FDA Benötigt Softwareversionen und Patches zur Überprüfung.[13]

Siehe auch

Weitere Lektüre

  • 1012-2012 IEEE-Standard für System- und Softwareüberprüfung und Validierung. 2012. doi:10.1109/IEEESTD.2012.6204026. ISBN 978-0-7381-7268-2.
  • Tran, E. (1999). "Überprüfung/Validierung/Zertifizierung". In Koopman, P. (Hrsg.). Themen in zuverlässigen eingebetteten Systemen. Carnegie Mellon Universität. Abgerufen 2007-05-18.
  • Menzies, T.; Y. Hu (2003). "Data Mining für sehr beschäftigte Menschen". Computer. 36 (1): 22–29. doi:10.1109/mc.2003.1244531.

Externe Links

Verweise

  1. ^ Pham, H. (1999). Softwarezuverlässigkeit. John Wiley & Sons, Inc. p. 567. ISBN 9813083840. Software -Validierung. Der Prozess der Sicherstellung, dass die Software den richtigen Prozess ausführt. Softwareüberprüfung. Der Prozess der Gewährleistung der Software führt den Prozess recht ? '' Validierung: '' bauen wir das richtige Produkt? ''
  2. ^ "CMMI für Software-Engineering, Version 1.1, inszenierte Darstellung (CMMI-SW, v1.1, inszeniert)". ressourcen.sei.cmu.edu. Abgerufen 2021-03-20.
  3. ^ a b c "Dokumentation des Verteidigungsministeriums für Verifizierung, Validierung und Akkreditierung (VV & A) für Modelle und Simulationen". Raketenverteidigungsagentur. 2008. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  4. ^ Rogers, R. (1981-10-26). "Planung für unabhängige Softwareüberprüfung und Validierung". 3. Computer in der Luft- und Raumfahrtkonferenz. San Diego, CA, USA.: American Institute of Aeronautics and Astronautics. doi:10.2514/6.1981-2100.
  5. ^ Ambrosio, Ana; Mattiello-Francisco, Fátima; Martins, Eliane (2008-05-12). "Ein unabhängiger Softwareverifizierung und Validierungsprozess für Raumanwendungen". SpaceOps 2008 Konferenz.Heidelberg, Deutschland: American Institute of Aeronautics and Astronautics. doi:10.2514/6.2008-3517. ISBN 978-1-62410-167-0.
  6. ^ Lewis, Robert O. (1992). Unabhängige Überprüfung und Validierung: Ein Lebenszyklus -Engineering -Prozess für Qualitätsoftware. New York: Wiley. ISBN 0-471-57011-7. OCLC 74908695.
  7. ^ a b Asbury, Michael (2015-03-09). "Über das IV & V -Programm der NASA". NASA. Abgerufen 2021-03-20.
  8. ^ Balci, O. (2010). "Goldene Regeln der Überprüfung, Validierung, Test und Zertifizierung von Modellierungs- und Simulationsanwendungen". S2CID 61476570. Abgerufen 2021-03-20.
  9. ^ "Flugsoftware-Systemabschnitt (TEC-SWF)". www.esa.int. Abgerufen 2021-03-20.
  10. ^ a b lavva.pt. "Neuer ISVV -Leitfaden für den Raum in Arbeit". www.criticalSoftware.com. Abgerufen 2021-03-20.
  11. ^ "Allgemeine Grundsätze der Software -Validierung; endgültige Leitlinien für Industrie- und FDA -Mitarbeiter" (PDF). Food and Drug Administration. 11. Januar 2002. Abgerufen 12. Juli 2009.
  12. ^ "Leitlinien für die Industrie: Teil 11, elektronische Aufzeichnungen; elektronische Unterschriften - Umfang und Anwendung" (PDF). Food and Drug Administration. August 2003. Abgerufen 12. Juli 2009.
  13. ^ "Leitlinien für die Industrie: Cybersicherheit für vernetzte medizinische Geräte mit Off-the Shelf (OTS) -Software" (PDF). Food and Drug Administration. 14. Januar 2005. Abgerufen 12. Juli 2009.