Zum Hauptinhalt springen
NetzwerkFachbereichFachartikel

Verlässlichkeit von Software

Wenn Software unsere Welt regiert, unsere Autos und Flugzeuge steuert und unsere medizinischen Instrumente dirigiert, wie schaffen wir es, zu beweisen, dass die Software genau das tut, was sie soll?

Software ist heute allgegenwärtig und kommt im täglichen Leben überall zum Einsatz: in der Kommunikation, der Unterhaltungselektronik, im Haushalt, in der Medizintechnik und in sicherheitskritischen Bereichen. Umso überraschender, dass es keine durchgängigen Methoden und Werkzeuge gibt, um die Verlässlichkeit von Software zu garantieren. Dieser Herausforderung muss sich die Informatik in den kommenden Jahren stellen.

Verlässlichkeit umfasst dabei nicht nur die Frage, ob Software ihre funktionalen Anforderungen erfüllt. Auch Datenschutz und schnelles Erkennen von Fehlfunktionen sind wichtige Aspekte. Für Entwickler etwa wäre die Garantie, dass von ihnen entwickelte Softwaresysteme sensible Daten schützen, ein Qualitätsmerkmal. Anwender, die Software im privaten und industriellen Bereich einsetzen und von Software generierte Ergebnisse zur Grundlage von Entscheidungen machen, können durch Vermeiden oder frühzeitige Fehlererkennung hohe Kosten vermeiden – etwa bei Rückrufaktionen in der Automobilindustrie.

Die Verlässlichkeit von Software lässt sich allerdings nicht vollständig automatisiert überprüfen und garantieren. Softwaresysteme werden für unklare Einsatzfelder und -bedingungen entworfen. Unterschiedliche Entwickler ändern sie im Laufe der Zeit, entwickeln sie weiter und vernetzen sie mit anderen Systemen. Schließlich setzen Nutzer mit verschiedenen Anforderungen sie ein. So entstehen Softwaresysteme von einer Größe, Komplexität und Vielzahl voneinander abhängiger Qualitäten. Deren Verlässlichkeit lässt sich nur durch eine Kombination von automatisierter Verifikation und weiteren Methoden wie Anwenderstudien garantieren.

In vielen Teilen der Informatik – beispielsweise Algorithmenentwicklung und -analyse, formale Spezifikationssprachen, automatische Verifikation, Semantik- und Simulationstechniken, Entwicklungs-, Architektur- und Testmethoden, Mensch-Maschine-Schnittstellenunterstützung – gibt es bereits umfangreiche Vorarbeiten zur Verlässlichkeit von Software. Diese Vorarbeiten müssen durch Zusammenarbeit der Fachleute mit Spezialisten in Hardware-nahen Disziplinen und in den Anwendungsdisziplinen zusammengeführt werden.

Dadurch kann – im mittelfristigen Zeitraum innerhalb eingegrenzter Domänen und Nutzungskontexte, längerfristig auch für vernetzte Anwendungen – das Verhalten von Software präzise vorhergesagt werden. Auf Basis nachvollziehbarer und automatisch auswertbarer Dokumentationen können Softwaresysteme dann sowohl bei der Entwicklung als auch im Betrieb automatisiert zertifiziert werden. Auf Fehler kann das Softwaresystem dann auch mit selbstheilenden Mechanismen reagieren, so dass bei lokalen Ausfällen die Stabilität des gesamten Systems nicht beeinträchtigt wird.

Verlässliche Software steigert das Vertrauen der Nutzer, führt zu einem effizienteren Einsatz knapper Ressourcen und verhindert Katastrophen in sicherheitskritischen Bereichen sowie in der Infrastruktur.

Kontakt

Prof. Dr. Michael Goedicke, Universität Duisburg-Essen
Prof. Dr. Dirk Nowotka, Universität Kiel

Zu den Personen

Prof. Dr. Michel Goedicke ist Professor für Softwaretechnik an der Universität Duisburg-Essen und GI-Vizepräsident. Prof. Dr. Dirk Nowotka ist Heisenberg Professor an der Christian-Albrechts-Universität zu Kiel.

© Pinkypills - iStock