Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 N-Version Programmierung N-Version Programmierung von Rafael Bielen.

Ähnliche Präsentationen


Präsentation zum Thema: "1 N-Version Programmierung N-Version Programmierung von Rafael Bielen."—  Präsentation transkript:

1 1 N-Version Programmierung N-Version Programmierung von Rafael Bielen

2 2 Inhalt Inhalt Einleitung Motivation Funktionsprinzip Herausforderungen Abwandlungen wichtige historische Ansätze Probleme Fazit

3 3 weiterer Ansatz um Software fehlertoleranter und robuster zu entwickeln Programmierfehler mildern Kernidee: mehrfach dasselbe Programm implementieren Hoffnung: Auftreten gleicher Fehler senken Einleitung 1/2 Einleitung 1/2

4 4 Implementierungen unabhängig voneinander alle Implementierungen nach gleichen Spezifikationen ein Algorithmus wählt das vermutlich richtige Ergebnis Einleitung 2/2 Einleitung 2/2

5 5 Wieso Programmierfehlern vorbeugen? Sichere Software spart Kosten! Ariane 5 Satelliten, 1,7 Milliarden DM Schaden Programmierfehler: 64Bit – 16Bit Umwandlung Studie aus dem Jahr 1986: pro 1 Million Zeilen Code Bugs Motivation Motivation

6 6 Software ist kein ganzes Stück mehr besteht aus verschiedenen Softwaremodulen Funktionsprinzip Funktionsprinzip

7 7 Herausforderungen 1/4 Herausforderungen 1/4 Spezifikationen: Eingabespezifikation, ein Fehler N fehlerhafte Softwaremodule Cross-Check Punkte gut definieren Designfehler ausschließen Freiraum für verschiedene Implementierungen lassen

8 8 unabhängige Entwicklung: Ziel: Auftreten von gemeinsamen Fehlern in den unterschiedlichen Softwareversionen vermindern. verschiedene Programmiersprachen benutzen Verwendung von unterschiedlichen Instrumenten und Compilern unterschiedliche Teams Herausforderungen 2/4 Herausforderungen 2/4

9 9 Herausforderungen 3/4 Herausforderungen 3/4 Entscheidungs-Algorithmus: effizient selber sicher von Fehlern Wie erkennt man das richtige Ergebnis? oftmals einziger Weg Mehrfachbeschluss

10 10 Herausforderungen 4/4 Herausforderungen 4/4 Wartung eines laufenden Systems: Welches Modul verursacht einen Fehler? Wartung aufwendiger als bei normaler Software höhere Wartungskosten

11 11 verschiedene Abwandlungen Darstellung von verschiedenen Konfigurationen der Abwandlungen als 3er Tupel möglich. Zeit | Plattformen | Software N-Version Programmierung Abwandlungen N-Version Programmierung Abwandlungen

12 12 Nutzung einer einzigen Plattform zur Ausführung N x Zeit | 1 x Plattform | N x Software Rollback-Methode Beispiel: 2 x Zeit | 1 x Plattform | 1 x Software Rollback zum letzten fehlerfreien Zustand mehrfacher Rollback bei einem Fehler auch möglich nicht geeignet für permanente Fehler (zerstörte Hardware) Reparatur von außen nötig Single-Channel 1/2 Single-Channel 1/2

13 13 neue Softwareinstanz-Methode Beispiel: Starten einer neuen Softwareinstanz 2 x Zeit | 1 x Plattform| 2 x Software Daten auf denen gearbeitet wird stabile und fehlerfreie gespeicherte Kopie Single-Channel 2/2 Single-Channel 2/2

14 14 Multi-Channel 1/3 Multi-Channel 1/3 alles nur einmal berechnen mehrere Softwareversionen, jede auf einer eigenen Plattform 1 x Zeit | N x Plattformen | N x Software NASA's Space Shuttle mit N = 4 2. Punkt wichtig für Realisierung

15 15 Multi-Channel 2/3 Multi-Channel 2/3 1. Konsistenz: Plattformen müssen alle die gleiche Eingabe bekommen sowie im gleichen Startzustand sein. 2. Zuverlässiger Entscheidungs- Algorithmus: Kontrolle aller Ergebnisse der Berechnungen unnötig Akzeptanzbereich

16 16 Multi-Channel 3/3 Multi-Channel 3/3 Entscheidungs-Algorithmus wird oft für jeden Bereich neu geschrieben. hilft nicht gegen Designfehler Lösung: Erstelle von Software und Hardware individuelle Versionen.

17 17 Welche Fehler können behoben werden? Welche Fehler können behoben werden? Fehlerbehebung möglich bei: Programmierfehlern Programmfehlern Hardwarefehlern Kein Erfolg bei: mangelhafter Spezifikation fehlerbehaftetem Input Fehler in der Bedienung

18 18 Wichtige historische Ansätze Wichtige historische Ansätze Dr. Dionysius Lardner (1834): Fehler vorbeugen durch gleiche Berechnungen auf unterschiedlichen Plattformen N-Version Programmierung: auch genannt Multi- Version Programmierung, Beginn 1970 zwei wichtige Ansätze von: Brian Randell UCLA (Universität von Kalifornia, Los Angels)

19 19 Recovery Block von Brian Randell 1/2 Recovery Block von Brian Randell 1/2 Ziel: Softwarefehler, auch welche die durch Hardwarefehler verursacht werden, im laufenden Betrieb zu erkennen. Ursprungsversion der Software erstellen Berechnungen der Version im laufenden Zustand mit der Berechnung der Ursprungsversion verglichen Akzeptanztest

20 20 Recovery Block von Brian Randell 2/2 Recovery Block von Brian Randell 2/2 Nichtbestehen des Akzeptanztests ältere Version der Software einspielen, die den Test bestanden hat N x Zeit | 1 x Hardware | N x Software Variierung der Recovery Block Methode möglich: unterschiedliche Plattformen um Design- und Hardwarefehler auszuschließen

21 21 NVP von UCLA NVP von UCLA Erstellung von individuell gestalteten Softwaremodulen Softwaremodule erfüllen alle die gleichen Spezifikationen vermutlich richtiges Ergebnis mit Hilfe eines Algorithmus auswählen 1 x Zeit | N x Hardware | N x Software

22 22 Experimentale Resultate der UCLA 1/4 Experimentale Resultate der UCLA 1/4 UCLA negativ aufgefallen Klassische Computersysteme sind nicht gut dafür geeignet, N-Version Software auszuführen und zu überwachen. Eigener Computer Prototyp designt und implementiert (DEDIX = Design Diversity Experiment).

23 23 Experimentale Resultate der UCLA 2/4 Experimentale Resultate der UCLA 2/4 Betriebssystem, Unix Abwandlung, genannt LOCUS DEDIX nutzt eine verteilte Rechenarchitektur, die auf 20 VAX 11/750 Computern basiert (3.125 MHz pro Maschine)

24 24 Experimentale Resultate der UCLA 3/4 Experimentale Resultate der UCLA 3/4 Studie: Spezifikation in je 3 Sprachen für das gleiche Problem/Aufgabe OBJ (Declarative "ultra high-level" Sprache) PDL (Seitenbeschreibungssprache) Englisch als 3te Kontrollsprache

25 25 30 Programmierer beschäftigt, die 19 Programme erstellten 8 Programme aus der OBJ Spezifikation 5 aus der PDL Spezifikation 6 aus der Kontrollsprache Eng. Spezifikation = 10 Seiten OBJ Spezifikation = 7 Seiten PDL Spezifikation = 74 Seiten Experimentale Resultate der UCLA 4/4 Experimentale Resultate der UCLA 4/4

26 26 Probleme 1/5 Probleme 1/5 Tests: 6 unterschiedliche Versionen, alle untereinander testen, 21 Tests nötig Aufwand fast um N-Mal höher als bei normaler Software Tests werden komplexer Wechselwirkung Entscheidungs-Algorithmus muss getestet werden Kosten steigen damit

27 27 Unterschiedliche Plattformen und Betriebssysteme: Für jedes Betriebssystem meistens eigene Testkonfigurationen und unterschiedliche Hilfsprogramme notwendig Probleme Ergebnisse untereinander vergleichen unterschiedliche Zeichensätze oder komplett andere Byte-Reihenfolge Probleme 2/5 Probleme 2/5

28 28 Probleme 3/5 Probleme 3/5

29 29 Probleme 4/5 Probleme 4/5 Kosten: Es gibt keine konkreten Statistiken, die besagen wie viel teurer die Entwicklung von N- Software Versionen ist. Zahlen schwanken von 25%-134% Die Idee, N-Versionen einer Software lassen die Kosten um N-Mal multiplizieren, ist falsch! viele Gemeinsamkeiten in der Entwicklung

30 30 Probleme 5/5 Probleme 5/5 Unabhängige Versionen: Problemlösung lässt oft wenig Spielraum Implementierungen oft ähnlich Keine Studien die Beweisen, dass gleiche Fehler gemindert werden.

31 31 Fazit 1/2 Fazit 1/2 Positiv: interessanter Ansatz praktisch Einsetzung z.B. NASA Space Shuttle intuitiv verschiedene Softwareversionen müssen nicht die gleichen Fehler enthalten

32 Fazit 2/2 Fazit 2/2 Negativ: nicht gut entwickelt/erforscht Kosten/Aufwand? Werden gleiche Fehler wirklich minimiert?! Entscheidungs-Algorithmus nicht trivial

33 33 Fragen? Fragen? Fragen?

34 34 Literaturverzeichnis Literaturverzeichnis Algirdas Avizienis.The N-Version Approach to Fault-Tolerant Software. Software Engineering, IEEE Transactions on, vol.SE-11, no.12, pp , Dec Israel Koren and C. Mani Krishna. Fault-Tolerant Systems. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2007 Proseminar Software Desaster ARIANE 5 Absturz des Flugs 501 Mathias Riedl , Vorlesung Universtität Zürich, Martin Glinz Software Engineering I The Evolution of the Recovery Block ConceptBRIAN RANDELL and JIE XU University of Newcastle upon Tyne

35 35


Herunterladen ppt "1 N-Version Programmierung N-Version Programmierung von Rafael Bielen."

Ähnliche Präsentationen


Google-Anzeigen