Validierung (Informatik)

Prüfung der Eignung beziehungsweise der Wert einer Software bezogen auf ihren Einsatzzweck verstanden
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. März 2006 um 15:15 Uhr durch DaB. (Diskussion | Beiträge) (2x= ist schon ok :)). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Plausibilisierung oder Plausibilitätsprüfung bezeichnet die Überprüfung von Ergebnissen, die durch komplexe Prozesse ermittelt wurden hinsichtlich ihrer Einfügung in den angenommenen Ergebniserwartungsbereich (ermittelt aus Erfahrungswerten, Überschlagsrechnungen,..). So können falsche Ergebnisse, bspw. verursacht durch Rechenfehler, vermieden werden.


Softwaretechnik

In der Softwaretechnik bezeichnet Validierung oder Plausibilisierung (auch Sanity Check genannt) die Kontrolle eines konkreten Wertes darauf, ob er zu einem bestimmten Datentyp gehört oder in einem vorgegebenen Wertebereich oder einer vorgegebenen Wertemenge liegt. Sie ist ein wichtiger Aspekt der Qualitätssicherung, der sicherstellen soll, dass ein implementiertes Programm den vorher aufgestellten Anforderungen genügt. Die meisten Programmfehler und Sicherheitsprobleme sind letztlich auf fehlende Plausibilisierung von Eingabewerten zurückzuführen.

Für die Validierung gilt die goldene Regel: never trust the user (traue niemals dem Benutzer) - wobei der „Benutzer“ auch ein Programmierer sein kann, der die fraglichen Funktionen und Module verwendet. Die Validierung von Werten kann und soll also an verschiedenen Punkten der Lebenszeit einer Software stattfinden:

  • Im Entwicklungsprozess: Während das Programm entsteht, sollten regelmäßig die einzelnen Funktionen und Module so genannten Unit-Tests unterzogen werden, die die Software stichprobenartig auf korrektes Verhalten überprüfen.
  • Bei der Übersetzung des Programmes: einige Arten der Validierung können bereits von Compiler vorgenommen werden, insbesondere die Typprüfung.
  • Durch die Laufzeitumgebung: Viele Programmiersprachen haben ein Laufzeitsystem, das bestimmte Arten von Fehlern selbständig erkennt; insbesondere der Zugriff auf nicht vorhandene Objekte wird von vielen modernen Systemen erkannt.
  • Zur Laufzeit: Alle Funktionen und Module sollten defensiv umgesetzt sein, sich also nicht darauf verlassen, dass sie korrekt verwendet werden. Das heißt sie sollten, wenn sie mit falschen Parametern verwendet werden, sofort einen Fehler melden statt komplizierte Folgefehler zu riskieren (es gilt die Faustregel: fail fast - schneller Abbruch). Hierfür eignet sich vor allem das Konzept der Ausnahmebehandlung.
  • Bei Benutzereingaben: hier gilt der Grundsatz was sich überprüfen lässt, wird auch überprüft. Bei ungültigen Eingaben wird eine Fehlermeldung ausgegeben und die Verarbeitung abgelehnt. Bei zweifelhaften Eingaben kann eine Warnung, d.h. eine Bitte um Überprüfung durch den Anwender ausgegeben werden.

Abgrenzung zur formalen Verifikation

In der Verifikation wird dagegen überprüft, ob ein System seiner formalen Spezifikation genügt. Es ist durchaus denkbar, dass eine Software ihre Spezifikation erfüllt, nicht jedoch die Anforderungen des Kunden. Das kann passieren, wenn beim Übersetzen der informell formulierten Anforderungen in eine formale Spezifikation Fehler gemacht wurden.

Auch verlangt eine formale Verifikation, dass absolut alle möglichen Fälle betrachtet werden - was im Allgemeinen nicht möglich ist (siehe Halteproblem). Die Verifikation ist ein mathematischer Beweis der Korrektheit des Programmes, die Validierung ist ein pragmatischer Schutz gegen fehlerhafte Benutzung.


Siehe auch: Plausibilität