Digital-Lexikon
N-Versionen-Programmierung
Auch bekannt als: N-Version Programming, NVP, Mehrversionen-Programmierung, Multiversion Programming, diversitäre Software
Herkunft und Begriff
Das Verfahren wurde 1977 von Liming Chen und Algirdas Avizienis an der University of California, Los Angeles, beschrieben. Es überträgt das Prinzip der Hardware-Redundanz auf Software: Da ein Programmierfehler in jeder Kopie desselben Programms steckt, sollen verschiedene Teams verschiedene Programme schreiben. Die zentrale Annahme lautet, dass unabhängig entwickelte Versionen selten dieselben Fehler enthalten.
Funktionsweise
- Eine gemeinsame Spezifikation legt fest, was das Programm leisten soll.
- Mehrere Teams entwickeln unabhängig voneinander je eine Version, oft mit verschiedenen Programmiersprachen, Werkzeugen oder Algorithmen.
- Im Betrieb laufen alle Versionen mit denselben Eingaben.
- Ein Entscheider vergleicht die Ausgaben und wählt das Ergebnis der Mehrheit. Bei zwei Versionen lässt sich nur eine Abweichung erkennen, nicht auflösen.
Anwendung
Eingesetzt wird das Verfahren vor allem in sicherheitskritischen Bereichen wie Luft- und Raumfahrt, Bahntechnik und Kraftwerkssteuerung. Ein bekanntes Beispiel ist das Space Shuttle: Die Hauptsoftware stammte von IBM, die Ersatzsoftware auf dem fünften Bordcomputer entwickelte Rockwell getrennt davon, nach eigenen Anforderungen und ohne gemeinsamen Code.
Bei Systemen mit künstlicher Intelligenz wird ein verwandter Gedanke diskutiert: Mehrere Sprachmodelle verschiedener Hersteller bearbeiten dieselbe Aufgabe, und ihre Antworten werden verglichen oder zur Abstimmung gestellt.
Kritik und Grenzen
- Korrelierte Fehler: John Knight und Nancy Leveson ließen 1986 27 unabhängig entwickelte Versionen eines Programms je eine Million Tests durchlaufen. Die Versionen scheiterten deutlich häufiger gemeinsam, als es bei unabhängigen Fehlern zu erwarten gewesen wäre. Die Unabhängigkeitsannahme hielt der statistischen Prüfung nicht stand.
- Gemeinsame Spezifikation: Ein Fehler in der Spezifikation geht in alle Versionen ein.
- Entscheider: Der Vergleich der Ausgaben ist selbst eine mögliche Fehlerquelle, besonders bei Ergebnissen, die nicht exakt übereinstimmen müssen.
- Kosten: Jede weitere Version vervielfacht Entwicklungs- und Prüfaufwand.
- Sprachmodelle: Eine Studie mit über 350 Sprachmodellen (Kim u. a., ICML 2025) fand, dass zwei Modelle, die beide falsch antworten, auf einem Ranglisten-Datensatz in 60 Prozent der Fälle dieselbe falsche Antwort wählen. Modelle verschiedener Hersteller sind demnach keine unabhängigen Versionen im Sinne des Verfahrens.
Siehe auch
Quellen
- John C. Knight, Nancy G. Leveson: An Experimental Evaluation of the Assumption of Independence in Multiversion Programming, IEEE Transactions on Software Engineering 12 (1), 1986
- Algirdas Avizienis: Software Fault Tolerance, IFIP WG 10.4 Workshop, 1989
- N-version programming, Wikipedia (englisch)
- Why the Space Shuttle’s fifth computer ran different software, Level Up Coding
- Elliot Kim u. a.: Correlated Errors in Large Language Models, ICML 2025
Änderungsprotokoll
Aktuelle Version 1.0 · Stand: · Zitierfähige Quelle: https://www.alpha-digital.de/lexikon/n-versionen-programmierung/
- Version 1.0 Erstveröffentlichung am