Validierung (Informatik)
aus Wikipedia, der freien Enzyklopädie
Inhaltsverzeichnis |
[Bearbeiten] Validierung als Plausibilitätsprüfung
In der Softwaretechnik bezeichnet Validierung (auch Plausibilisierung, als Test auf Plausibilität, oder engl. 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.
[Bearbeiten] Validierung in der Softwarequalitätssicherung
Unter Validierung (Validation) wird die Eignung beziehungsweise der Wert einer Software bezogen auf seinen Einsatzzweck verstanden. Umgangssprachlich formuliert wird die Frage "Bauen wir das richtige Produkt?" beantwortet. (Lit.: Balzert S. 101) Es wird also die Effektivität der Entwicklung sichergestellt.
Im Zusammenhang mit dem V-Modell wird die Validierung der Anforderungsdefinition bzw. dem Abnahmetest zugeordnet. Insofern ist unter der Validierung die Überprüfung der Eignung der Anforderungsdefinition mit den ursprünglichen Zielen des Kunden zu verstehen. Methoden der Validierung umfassen:
- Reviews mit dem Kunden zur Aufdeckung von Unklarheiten und irrtümlichen Annahmen
- Prototyping von Benutzeroberflächen als Kommunikationsgrundlage mit dem Anwender
- Inkrementelle Entwicklung für schnelles Kundenfeedback
In agilen Entwicklungsprozessen wie XP wird Validierung durch die
- permanente Anwesensenheit des Kunden
- Nutzerakzeptanztests
- kundennutzenbezogene Releaseplanung im XP-Planspiel
- kurzen Releasezyklen
sichergestellt.
[Bearbeiten] Abgrenzung zur Verifikation
In der Verifikation wird dagegen überprüft, ob ein System seiner formalen Spezifikation genügt. Die umgangssprachliche Formulierung lautet: "Bauen wir das Produkt richtig?". Es ist durchaus denkbar, dass eine Software ihre Spezifikation erfüllt, jedoch für den Kunden nur geringen Nutzen hat.
Methoden zur Verifikation umfassen:
- Codereviews
- formale Verifikation besonders sensibler Bereiche
- Verfahren des Softwaretests
[Bearbeiten] Literatur
H. Balzert: Lehrbuch der Software-Technik. Bd.2. Software-Management, Software-Qualitätssicherung, Unternehmensmodellierung. Spektrum Akademischer Verlag, Heidelberg 1998. ISBN 3-8274-0065-1
[Bearbeiten] Weblinks
- Software-Engineering-Kompetenzzentrum (Ein vom Bundesministerium für Bildung und Forschung/BMBF gefördertes Portal)