n-version-programming

6 posts

Differential Testing funktioniert ohne formalen Beweis, aber Common-Mode Failures sind der Haken

Differential Testing hilft dir, Bugs zu finden, ohne die korrekte Antwort zu kennen. Das Problem ist, dass korrelierte Fehler wie Übereinstimmung aussehen. So entdeckst du die blinden Flecken.

Du kannst Differential Testing ohne formalen Beweis vertrauen, aber nur, wenn du genau verstehst, wo es zusammenbricht. Die Schwäche heißt Common-Mode Failure.…

Tests beweisen nicht, dass zwei Funktionen �quivalent sind. Das hier schon.

N-version programming setzt voraus, dass deine Implementierungen �bereinstimmen. Wir zeigen, warum Tests nicht ausreichen, wie SMT solver tats�chlich �quivalenz beweisen k�nnen, und wo man die Grenze zwischen gut genug und formal verifiziert zieht.

Du hast ein n-version-System gebaut. Drei unabh�ngige Implementierungen derselben kritischen Funktion, ein Voter, der das Mehrheitsergebnis w�hlt, und ein…

Fünf Implementierungen und keine Mehrheit: Wie man tatsächlich die beste wählt

N-version Programming klingt einfach: mehrere Implementierungen laufen lassen und die beste Antwort wählen. In der Praxis ist 'beste' viel schwerer zu definieren als 'am häufigsten'.

Du hast fünf Implementierungen derselben Funktion. Drei liefern dasselbe Ergebnis. Eine weicht leicht ab. Eine wirft eine Exception. Welche ist richtig? Die…

Das gleiche LLM kann fünf Versionen deiner Funktion schreiben. So machst du sie wirklich unterschiedlich.

N-Version-Programming mit LLMs erfordert keine mehreren Modelle. Du kannst vielfältige, korrekte Implementierungen aus einem einzigen Modell extrahieren, indem du Prompts, Personas und Reasoning-Constraints variierst.

N-Version-Programming geht davon aus, dass Vielfalt von unterschiedlichen Autoren kommt. Bei LLMs bedeutet das: verschiedene Modelle, verschiedene Anbieter,…

NASA ließ 27 Kopien desselben Programms laufen. Die Bugs stimmten als Block ab.

N-Version Programming versprach, dass unabhängige Teams unabhängige Fehler machen würden. Das Experiment von Knight und Leveson aus dem Jahr 1986 bewies das Gegenteil, und NASA zog sich stillschweigend zurück.

Anfang der 1980er Jahre stand NASA vor einer Frage, die die sicherheitskritische Entwicklung bis heute verfolgt: Wie toleriert man Bugs, die man noch nicht…