Qualitätssicherung
Unter Qualitätssicherung (QS) versteht man die Summe aller Maßnahmen, die garantieren sollen, dass ein (entstehendes) Produkt die an es gestellten (Qualitäts-)Anforderungen erfüllt. Die Erkenntnis, dass Qualität nicht im Nachhinein in ein Produkt "hineingeprüft" werden kann, hat zur Unterscheidung der konstruktiven Qualitätssicherung von der analytischen Qualitätssicherung führt. Darüber hinaus unterscheidet man die Produkt- von der Prozessqualität. Im Rahmen der Produktqualität werden die Eigenschaften der Software an sich betrachtet. Ist z. B. das Unterkriterium "Korrektheit" des Qualitätsmerkmals "Funktionalität" extrem wichtig, wird man eine formale Spezifikation verlangen, um eine mathematisch-logische Programmverifikation durchführen zu können. Soll jedoch die Benutzbarkeit sichergestellt werden, wird man die Erstellung von Prototypen und anwenderlesbaren anforderungsdokumenten vorschreiben, um das System mit den Anwendern validieren zu können. Darüber hinaus sorgt die konstruktive Qualitätssicherung auch dafür, die entstehenden (Teil-)Produkte so vorzubereiten, dass die analytische Qualitätssicherung effektiv und effizient durchgeführt werden kann. Die Prozessqualität betrachtet den Entstehungsprozess der Software und wird in der Regel durch die Anwendung von Vorgehensmodellen gesichert und mit standardisierten Evaluierungsmethoden wie z.B. CMMI oder SPICE charakterisiert und optimiert. Die konstruktive Qualitätssicherung sucht das Entstehen von Fehlern durch geeignete Maßnahmen während der Entwicklung zu verhindern. Sie basiert auf dem Einsatz von Methoden, Konstruktionsprinzipien, formalen Verfahren, Werkzeugen und Vorgehensmodellen. Die analytische Qualitätssicherung versucht, entstandene Fehler zu entdecken und die erreichte Qualität zu bewerten. Im Mittelpunkt steht die Frage, ob der Prüfgegenstand (Teil-, Zwischen- oder Endprodukt) bestimmte vorgegebene Qualitätskriterien erfüllt. Zu den Prüfgegenständen bei der Softwareentwicklung gehören z. B. die Anforderungsspezifikation, Entwurfsdokumente, Diagramme, Quellcode, ausführbarer Code und die Testdokumente selbst. Bei der analytischen Qualitätssicherung unterscheidet man - statische Prüfungen, welche den Prüfgegenstand nicht ausführen und somit auf alle Entwicklungsprodukte also auch z. B. Anforderungs-und Entwurfsspezifikationen anwendbar sind, und
- dynamische Prüfungen - oft einfach als "Software-Tests" bezeichnet -, welche "ausführbare" Prüfgegenstände i. Allg. also Programmcode, erfordern und diese mit dem Ziel ausführen, Fehler zu finden. Dafür wird für ausgewählte Eingaben das jeweilige Ergebnis der Ausführung mit dem erwarteten (d.h. vorher spezifizierten) Ergebnis verglichen.
Zentrale Aufgabe im Software-Test ist die Überprüfung, ob der Prüfgegenstand gemäß seiner Spezifikation funktioniert. Geht nur die Spezifikation und nicht die Realisierung (verwendeter Algorithmus, Datenstruktur) in das Testverfahren ein, spricht man von einem black-box Testverfahren bzw. funktionalen Testverfahren. Diese wählen Testfälle so aus, dass möglichst alle charakteristischen oder fehlerträchtigen Kombinationen (z. B. Grenzfälle) von Eingabedaten vorkommen. Testverfahren, die gezielt die Programmstruktur unter die Lupe nehmen, heißen white-box Testverfahren bzw. strukturelle Testverfahren. Sie wählen die Testfälle so aus, dass z. B. alle Anweisungen oder sämtliche Programmverzweigungen (mindestens) einmal ausgeführt werden. Strukturelle Testverfahren werden zusätzlich zu funktionalen Testverfahren benötigt, um "Überraschungen" wie z. B. nicht ausführbare, d.h. nicht erreichbare, Programmteile, suspekte Sonderbehandlungen spezieller Eingaben etc. aufzudecken. Das prinzipielle Problem der analytischen Qualitätssicherung besteht darin, dass erschöpfende dynamische Prüfungen wegen der Fülle der möglichen Eingaben und Programmzustände bei größeren Programmen nicht möglich sind. Testen als stichprobenartiges Verfahren kann somit nur die Anwesenheit von Fehlern aufzeigen, nicht aber deren Abwesenheit beweisen. Der Forschungsschwerpunkt berücksichtigt die Belange der Qualitätssicherung in zweierlei Hinsicht. Einerseits wird dem Bedarf an neuen bzw. erweiterten/geänderten Konstruktions- und Prüftechniken Rechnung getragen, welche die inhärente Komplexität neuer Technologien (Multimedia-Software, internetbasierte, verteilte Systeme, ...) berücksichtigen. Andererseits werden vorhandene (und neue) Konstruktions- und Prüftechniken im Hinblick auf Entwicklungsprozesse in kleinen und mittelständischen Unternehmen hin adaptiert und geeignet in entsprechende Qualitätssicherungsprozesse eingebunden. Darüber hinaus engagiert sich der Forschungsschwerpunkt "Software-Qualität" in der Fachgruppe Test, Analyse und Verifikation von Software (TAV) der Gesellschaft für Informatik (GI) und im German Testing Board. Ansprechpartner: Prof. Dr. Mario Winter |
|
|
|