Warum explodierten Mariner 1, Ariane 5, ...


oder:


Was kümmern mich die Probleme der Datenverarbeitung


?


Softwarezuverlässigkeit gestern, heute und morgen


Ingolf Giese
GSI Darmstadt

http://www.gsi.de/~giese/swr/
Ingolf Giesegsi.de

28. Februar 2002 
19. Juni 2001   6. Juni 2001
5. März 1996   3. März 1995
6. Oktober 1994   9. September 1993
3. Juni 1992   16. März 1992


Inhalt

  1. Motivation

  2. Hardware/Software, Sprachen

  3. Auswirkungen von Software-Fehlern

  4. Programm-Beispiel

  5. Ursachen der Software-Probleme

  6. Einige Bemerkungen (KI + SDI)

  7. Zusammenfassung

  8. Literaturhinweise


Vollständiger Vortrag als ein Dokument (insbesondere zum Ausdrucken geeignet)


Ingolf Giese

Last update:



Software Reliability - Ariane 5 - 501

Ariane 5 - 501 (1-3)


4. Juni 1996, Kourou / Frz. Guyana, ESA

Jungfernflug der neuen europäischen Trägerrakete (Gewicht: 740 t, Nutzlast 7 - 18 t) mit 4 Cluster-Satelliten

Entwicklungskosten in 10 Jahren: DM 11 800 Millionen

Ada-Programm des Trägheits-Navigationssystems (Ausschnitt):

...
declare
  vertical_veloc_sensor: float;
  horizontal_veloc_sensor: float;
  vertical_veloc_bias: integer;
  horizontal_veloc_bias: integer;
  ...
begin
  declare
    pragma suppress(numeric_error, horizontal_veloc_bias);
  begin
    sensor_get(vertical_veloc_sensor);
    sensor_get(horizontal_veloc_sensor);
    vertical_veloc_bias := integer(vertical_veloc_sensor);
    horizontal_veloc_bias := integer(horizontal_veloc_sensor);
    ...
  exception
    when numeric_error => calculate_vertical_veloc();
    when others => use_irs1();
  end;
end irs2;


Wirkung:

37 Sekunden nach Zünden der Rakete (30 Sekunden nach Liftoff) erreichte Ariane 5 in 3700 m Flughöhe eine Horizontal-Geschwindigkeit von 32768.0 (interne Einheiten).
Dieser Wert lag etwa fünfmal höher als bei Ariane 4.

Die Umwandlung in eine ganze Zahl führte daher zu einem Überlauf, der jedoch nicht abgefangen wurde.

Der Ersatzrechner (Redundanz !) hatte das gleiche Problem schon 72 msec vorher und schaltete sich sofort ab.
Daraus resultierte, daß Diagnose-Daten zum Hauptrechner geschickt wurden, die dieser als Flugbahndaten interpretierte.

Daraufhin wurden unsinnige Steuerbefehle an die seitlichen, schwenkbaren Feststoff-Triebwerke, später auch an das Haupttriebwerk gegeben, um die großen Flugabweichungen (über 20 Grad) korrigieren zu können. Die Rakete drohte jedoch auseinanderzubrechen und sprengte sich selbst (39 sec).

Ein intensiver Test des Navigations- und Hauptrechners wurde nicht unternommen, da die Software bei Ariane 4 erprobt war.

Schaden:

DM 250 Millionen Startkosten
DM 850 Millionen Cluster-Satelliten
DM 600 Millionen für nachfolgende Verbesserungen
Verdienstausfall für 2 bis 3 Jahre

Der nächste Testflug konnte erst 17 Monate später durchgeführt werden - 1. Stufe beendete vorzeitig das Feuern.
Der erste kommerzielle Flug fand im Dezember 1999 statt.


Tragik:

Der problematische Programmteil wurde nur für die Vorbereitung beim Start und den Start selbst gebraucht.

Er sollte nur während einer Übergangszeit aktiv sein, aus Sicherheitsgründen: 50 sec, bis die Bodenstation bei einer Startunterbrechung die Kontrolle übernommen hätte.
Trotz des ganz anderen Verhaltens der Ariane 5 wurde dieser Wert nicht neu überlegt.

Optimierung:

Nur bei 3 von 7 Variablen wurde ein Überlauf geprüft - für die anderen 4 Variablen existierten Beweise, daß die Werte klein genug bleiben würden (Ariane 4).

Diese Beweise galten jedoch nicht für die Ariane 5 und wurden dafür auch gar nicht nachvollzogen.
Problem der Wiederverwendung von Software !

Unglaublich - nach 40 Jahren Software-Fehler-Erkenntnissen:

Es wurde beim Programm-Design davon ausgegangen, daß nur Hardware-Fehler auftreten können!

Daher hatte der Ersatzrechner auch die identische Software. Die System-Spezifikation legte fest, daß sich im Fehlerfall der Rechner abschalten soll und der Ersatzrechner einspringt.
Ein Restart eines Rechners war nicht sinnvoll, da die Neubestimmung der Flughöhe zu aufwendig ist.

 
PS: Der Versuch, neue 4 Cluster-Satelliten zu starten, gelang im Juli und August 2000 mit zwei russischen Trägerraketen.


Ingolf Giese



Software Reliability - Mariner 1

Mariner 1 (1-2)


22. Juli 1962, Cape Canaveral/Florida
Start der ersten amerikanischen Venussonde Mariner 1
Trägerrakete Atlas-Agena B (NASA, 15. AAB-Start)

Ausschnitt aus dem FORTRAN-Programm zur Steuerung der Flugbahn der Trägerrakete:

    ...
    IF (TVAL .LT. 0.2E-2) GOTO 40
    DO 40 M = 1, 3
    W0 = (M-1)*0.5
    X = H*1.74533E-2*W0
    DO 20 N0 = 1, 8
    EPS = 5.0*10.0**(N0-7)
    CALL BESJ(X, 0, B0, EPS, IER)
    IF (IER .EQ. 0) GOTO 10
 20 CONTINUE
    DO 5 K = 1. 3
    T(K) = W0
    Z = 1.0/(X**2)*B1**2+3.0977E-4*B0**2
    D(K) = 3.076E-2*2.0*(1.0/X*B0*B1+3.0977E-4*
   *(B0**2-X*B0*B1))/Z
    E(K) = H**2*93.2943*W0/SIN(W0)*Z
    H = D(K)-E(K)
  5 CONTINUE
 10 CONTINUE
    Y = H/W0-1
 40 CONTINUE
    ...


Wesentlicher Ausschnitt aus dem FORTRAN-Programm zur Steuerung der Flugbahn der Trägerrakete:

    DO 5 K = 1. 3
    ...
  5 CONTINUE

Entscheidender Fehler:

Punkt statt Komma!

Wirkung:

    DO5K = 1.3

Wertzuweisung an eine nicht deklarierte Variable

Kein Durchlauf der (nicht vorhandenen) Schleife

Folge:

Abweichung der Trägerrakete von der vorgesehenen Flugbahn

Zerstörung der Rakete nach 290 Sekunden

Kosten dieser Wertzuweisung: $ 18.5 Millionen

Ursache:

Schlechte Programmiersprache wegen Blanks (Zwischenräume) in Namen und Zahlen erlaubt

Variablen-Deklaration nicht notwendig

Strukturierte Schleife (END DO) nicht möglich

Würde auch heute noch so fehl-funktionieren!

C ist nicht besser:

   while(x > 0,1) { ... }

=> Endlosschleife

oder:

  erg = 0;
  if (erg == 1) printf("Ergebnis: %d\n", erg),
  printf("Fertig.\n");

=> "Fertig." erscheint nicht!


Ingolf Giese



Software Reliability - Hardware/Software

Hardware/Software (1)


Hardware kann man anfassen, Software nicht


Vladimir Rencin


Ingolf Giese



Software Reliability - Hardware/Software

Hardware/Software (2-3)


Computer:

Universal-Rechenanlage für unterschiedliche Anwendungen

1941: Erste Rechner (elektromechanisch, später elektronisch)
(Zuse, Atanasoff/Berry, Aiken - Eckert/Mauchly)

1956: Transistoren; FORTRAN; 1200 Computer weltweit

1971: 1. Mikrochip (Intel 4004); 80 000 Computer weltweit

1986: Graphische Oberflächen, RISC; 20 Millionen Computer weltweit

2001: 600 Millionen Computer weltweit

Hardware:

Relativ kleine Anzahl von direkt ausführbaren Basis-Instruktionen (Maschinensprache)

Jedes Exemplar ist ein Individuum - entweder in Ordnung oder nicht

Software:

Menge aller Programme, die auf einer Hardware eingesetzt werden können

Programm: Folge von Anweisungen, die für eine bestimmte Aufgabe ausgeführt werden soll

Ein Programm ist nicht fest verdrahtet, sondern als Text gespeichert und leicht veränderbar

Mit Software kann einfacher und flexibler mehr "Logik" in ein System gebracht werden

Software wird einmal erstellt und läuft auf allen Rechnern des gleichen Typs; es gibt keine Herstellungsfehler oder Alterungsprobleme

"Hardware kann ausfallen, Software ist von Anfang an kaputt!"


Anwendungsbereiche

Numerische Datenverarbeitung Zahlen
Textverarbeitung Text
Algebraische Datenverarbeitung Formeln
Datenbanken Daten jeder Art
Graphische Datenverarbeitung Bilder
Prozeßdatenverarbeitung Steuerung
Künstliche Intelligenz "alles andere"

Einsatzgebiete

Haus Kamera, Videorekorder
Auto ABS, 4-Rad-Antrieb
Supermarkt Barcode-Leser, Lager
Bank Kontoführung, Geldautomat
Behörden Kriminaldatei, Steuer
Wetteramt Wettervorhersage
Reisebüro Platzreservierung
Eisenbahn, U-Bahn Signalanlage
Luftraum-Überwachung Radar, Kontrolle
Flugzeug Steuerung, Optimierung
Militär Waffensysteme, Überwachung
Krankenhaus Medizinische Geräte


Ingolf Giese



Software Reliability - Programmiersprachen

Programmiersprachen (1)


Stammbaum von 32 weit verbreiteten Programmiersprachen

(von über 2000 existierenden Programmiersprachen einschließlich Dialekten)



Ingolf Giese



Software Reliability - Programmiersprachen

Programmiersprachen (2-3)


Wenige, prinzipiell sehr einfache Befehlsarten

Zuweisung (a <= x+1):

PASCAL, ADA, ALGOL, MODULA-2 a := x+1 ;
FORTRAN (PL/1) A = X+1
CLIST (BASIC) SET A = X+1
APL, SMALLTALK 80, GNOM a <- x+1
COBOL ADD X 1 GIVING A .

Abfrage (bedingte Anweisung: IF a = 3 THEN ... ):

PASCAL, ADA, MODULA-2, PL/1 if a = 3 then ... ;
C if (a == 3) ... ;
COBOL IF A IS EQUAL TO 3 ... .
SMALLTALK 80 a = 3 ifTRUE: [ ... ]
APL -> 5 * í (a = 3)


Schleife (LOOP k <= 1 TO 100 | ... | ENDLOOP):

PASCAL, (ALGOL) for k := 1 to 100 do ... ;
ADA for k in 1 .. 100 loop | ... | end loop ;
C for (k = 1; k <= 100; k++) ... ;
FORTRAN DO 5 K = 1, 100 | ... | 5 CONTINUE
COBOL PERFORM 5 VARYING K FROM 1 UNTIL K EQUAL 100 .
SMALLTALK 80 1 to: 100 do: [ :k | ... ]

Sonstige Anweisungsarten:

Ein-/Ausgabe-Befehle
Unterprogramm-Aufrufe
Variablen-Deklarationen
Sprungbefehle
Auswahl-Anweisungen
Kommentare
Speicherverwaltungs-Befehle
Fehlerkontrollbefehle
Preprozessor-Befehle


Ingolf Giese



Software Reliability - Programmiersprachen

Programmiersprachen (4)


Unnatürliche Sprache

  • Oft unverständlich
  • Eindeutigkeit/Exaktheit notwendig
  • Keine Redundanz möglich

    Beispiele für Zeichensetzungs-Probleme:

    PL/1:
    DO k = 1 TO 100 WHILE(a = 3); ... ; END;
    DO k = 1 TO 100, WHILE(a = 3); ... ; END;
    Natürliche Sprache:
    Der brave Mann denkt an sich selbst zuletzt.
    Der brave Mann denkt an sich, selbst zuletzt.
    Komma-Verschiebung:
    Treu war sie, nicht ohne Tränen ließ ich sie gehen.
    Treu war sie nicht, ohne Tränen ließ ich sie gehen.

    Beispiele für Mißverständnisse:

    PL/1:
    a = b = c;
    Natürliche Sprache:
    Das Mädchen lobt die Mutter.
    Das sagten die Kinder der Tante.
    Der Junge beobachtet den Mann mit dem Fernglas.
    Ich denke über die Aufgabe meines Jobs nach.
    Der Ausbau der PC-Zusatzkarte ist erforderlich.


    Ingolf Giese



    Software Reliability - AT&T-Telefonnetz

    AT&T-Telefonnetz (1)


    Das AT&T-Telefonsystem in USA besteht aus einer Zentralstelle in New Jersey und 114 vernetzten regionalen Schaltzentralen

    (entsprechend den verschiedenen Vorwahl-Nummern)


    Ingolf Giese



    Software Reliability - AT&T-Telefonnetz

    AT&T-Telefonnetz (2)


    15. Januar 1990:

    70 Millionen von 138 Millionen Ferngesprächen innerhalb USA konnten 9 Stunden lang nicht vermittelt werden.

    Schaden:

    $ 75 Millionen bei AT&T (ohne Folgeschäden)

    Mehrere $ 100 Millionen bei den Kunden (Versandhandel, Transportunternehmen, Reisebüros usw.)

    Ursache:

    Eine Schaltzentrale in New York setzte sich nach einer Fehlfunktion in den RESET-Modus:
      Ausfall-Meldung an alle anderen Zentralen
      Neubesetzung interner Tabellen (Reset)
      OK-Meldung an alle anderen Zentralen
      Weiterleiten neuer Ferngespräche

    Alle Zentralen mußten daraufhin ihre Tabellen ändern

    Bei 3 Schaltzentralen kamen aber kurz nach der OK-Meldung mehrere neue Gespräche an

    Verarbeitung der Meldung und der neuen Gespräche zerstörte Daten, was zum Rechnerausfall führte

    Im Schneeball-System wurden 9 Stunden lang alle Zentralen lahmgelegt (zu 50% im RESET-Modus)

    Notlösung: keine OK-Meldungen mehr verschicken

    Eigentlicher Fehler wurde eine Woche später gefunden:

    Der break-Befehl von C wurde falsch eingesetzt

    Existierte seit Programm-Optimierung 4 Wochen vorher


    Ingolf Giese



    Software Reliability - Therac-25 Beschleuniger

    Therac-25 Beschleuniger


    Therac-25: Linearbeschleuniger zur Tumorbehandlung

    (10 Geräte seit 1983 in USA und Kanada im Einsatz)

    Software errechnet und steuert Bestrahlungs-Stärke entweder als Elektronenstrahlung (bis 25 MeV) oder als Röntgenstrahlung (mit 100-facher Elektronenstrahlung, Wolfram-Scheibe im Strahl, absorbiert Elektronen, Röntgenstrahlen entstehen)

    Juni 1985, Georgia/USA

    Elektronenstrahl brannte Loch durch Schulter

    Krankenhaus lehnte Verschulden ab:

      "Computer-gesteuert", "Hat schon immer funktioniert"

    März 1986, Texas/USA

    Patient erhielt zweimal Überdosis, Tod September 1986

    Hersteller untersuchte das Problem, fand aber nichts

    April 1986, Texas/USA

    Fehler in derselben Klinik, Patient starb im Mai 1986

    Zufällig gefundene Ursache:
    Operator gab den Strahltyp falsch ein ("X-Ray")
      Maschine schaltete um auf 100-fache Energie
    Operator korrigierte Fehler in weniger als 8 Sekunden
      Maschine nahm nur Wolfram-Scheibe aus Strahl heraus

    Sicherheitsmechanismus schaltete nach 0.3 Sekunden ab

    Notlösung: Abmontieren der Korrektur-Taste (Up-Key)

    Korrektur im November 1986 (über 20 Modifikationen)


    Ingolf Giese



    Software Reliability

    Voyager 2


    US-Raumsonde, Start am 20. August 1977

    Flug zum Jupiter (Juli 1979), Saturn (August 1981), Uranus (Januar 1986) und Neptun (August 1989)

    Software-Probleme kurz vor dem Uranus-Vorbeiflug:
    Programm zur Flugbahnberechnung lieferte Daten, die nicht mit den gemessenen Daten übereinstimmten
    Ursache: Das Programm mußte den Schätzwert der
    Uranusmasse fortlaufend korrigieren; die Anfangs-Schätzung war aber um 0.3% zu klein, wodurch das Programm gegen ein falsches Maximum konvergierte
    Nach Verstehen der komplexen Problemlage gelang Korrektur

    6 Tage vor dem Vorbeiflug traten Fehler in den zur Erde gesendeten Bilder auf (3 Stunden Laufzeit)
    Ursache: Datenkomprimierungs-Programm der Sonde griff auf einen beschädigten Speicherplatz zu
    Durch Änderung des Programms wurde erreicht, daß dieser Speicherplatz nicht mehr angesprochen wurde

    Fast alle Bord-Programme wurden für den Uranus-Vorbeiflug umgeschrieben: Mitdrehen der Sonde bei der Bildaufnahme
    (1.5 Sekunden Belichtung bei 72 000 km/h relativ),
    Verhindern des Drehimpulses beim schnellen Spulen des Bandgerätes, zeitweises Ausschalten einiger Geräte, dazu spezielle Programme zur Komprimierung und Codierung


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (1-5)


    Gemini 5, August 1965:

    7. bemannter Flug der USA, 120 Erdumrundungen (8 Tage)
    Gemini 5 verfehlte vorgesehenen Landeplatz um 160 km
    Ursache: Umlauf der Erde um die Sonne wurde vom Programm nicht berücksichtigt

    Apollo 8, Dezember 1968:

    1. bemannter Flug zum Mond, 10 Mondumrundungen
    Teile des Computer-Speichers wurden wegen eines Software-Fehlers während des Fluges gelöscht

    Apollo 14, Januar 1971:

    3. Mondlandung (6. Flug zum Mond, 1000. Satellitenstart)
    Auf dem 9-tägigen Flug zum Mond traten 18 verschiedene Software-Fehler auf
    Das Apollo-Programm war das am sorgfältigsten ausgeführte Software-Projekt der 70er Jahre
    Trotzdem war jedes größere Problem ein direktes Resultat eines Software-Fehlers

    Space Shuttle 1 (Columbia), April 1981:

    1. Startversuch der US-Raumfähre: Abbruch des Starts, da die 4 (alten) IBM-Bordrechner zu unterschiedlichen Ergebnissen kamen und sich nicht synchronisierten
    Ursache: Eine Verzögerungsbedingung war zwei Jahre zuvor von 50 ms auf 80 ms geändert worden
    In 2000 Stunden Testzeit wurden über 200 Fehler gefunden
    Beim 1. Flug traten 24 weitere Fehler auf (Fehler-Manual!)


    Eole 1, August 1971:

    1. französischer Anwendungssatellit (NASA-Start)
    Meteorologisches Experiment mit 141 Wetterballons rund um die Erde, Datenübertragung zum Satelliten
    Ballons konnten zwei Kommandos empfangen: "Sende Daten" und "Zerstöre Dich selbst" (Notfall)
    September 1971: Satellit wünschte Datenempfang, Ballons erhielten aber das andere Kommando:
    72 Ballons, die in Sichtweite lagen, explodierten

    Phobos 1, August 1988:

    1. Raumsonde der UdSSR zum Mars und Marsmond Phobos
    Kurz nach dem Start wurden der Sonde mehrere Kommandos zur Kurskorrektur geschickt
    Bei einem Kommando wurde ein Buchstabe vergessen
    Dieses verkürzte Kommando wurde jedoch als ein anderes (nur beim Bodentest vorgesehenes) Kommando interpretiert
    Rotation der Raumsonde, so daß kein Kontakt mehr mit ihr hergestellt werden konnte
    Die Bodentest-Software blieb im ROM-Speicher der Sonde
    Dem Operator wurde gekündigt - aber dem Entwickler/Programmierer hätte man kündigen sollen
    Auch die Schwester-Sonde Phobos 2 ging im März 1989 (bei Phobos) wegen eines Software-Fehlers verloren


    SDI-Laserexperiment, Juni 1985:

    Laserstrahl sollte von der Spitze des Berges Red Hill (Hawaii) zum Spiegel im Fenster des Space Shuttles Discovery gesendet und reflektiert werden (600 km)
    Zur Positionierung des Shuttles wurde seinem Programm die Berghöhe (korrekt) als 10023 ft eingegeben
    Das Programm interpretierte die Zahl jedoch als Angabe in Seemeilen: Mißerfolg

    F-16 Jagdflugzeug, ca. 1978:

    Erstes Jagdflugzeug der USA mit Computer-Steuerung
    Überfliegen des Äquators: Das Flugzeug stellte sich auf den Kopf
    Ursache: Vorzeichenfehler im Algorithmus des Programms bei der Berücksichtigung der geographischen Breite
    Glück: Fehler wurde in der Simulation gefunden

    F/A-18 Jagdflugzeug (US-Navy), ca. 1980:

    Testpilot feuerte Rakete ab
    Computer öffnete Raketenbehälter und gab Rakete frei, schloß ihn aber zu früh wieder
    Rakete zündete und schoß das Flugzeug steuerlos umher

    Falkland-Krieg, H.M.S. Sheffield, 1982:

    Das Radarsystem der britischen Fregatte identifizierte die anfliegende argentinische Exocet-Rakete als "Freund"
    Kein Alarm: Untergang des Schiffes


    Verkehrsflugzeug, Neuseeland, November 1979:

    Flugzeug zerschellte an einem Höhenzug in der Antarktis
    Ursache: Die Besatzung wurde nicht über eine Änderung der Eingabedaten für den Bordcomputer informiert

    B 737, ca. 1980:

    Der automatische Vortriebsregler schaltete sich manchmal während des Startvorgangs bei 60 kn ab
    Ursache: Software legte nur fest, was unter und was über 60 kn passieren sollte

    B 767, Air Canada, Juli 1983:

    Schlechte Lötstelle ergab nur halbe Leistung
    Programm war nur darauf abgestimmt, einen Totalausfall zu erkennen; Ausfall des Computers, keine Treibstoffanzeige
    Treibstoffmenge wurde falsch geschätzt: Notlandung

    B 747, Korean Airlines, August 1983:

    Beim Flug von Anchorage nach Seoul wurden die UdSSR überflogen, das Flugzeug wurde abgeschossen
    Wahrscheinliche Ursache: Falsche Eingabe des Startortes (139° statt 149° West) in den Navigationsrechner
    Eventuell falsche Korrektur/Abschalten der Warnungen

    B 747 und Lockheed L-1011, Juli 1987:

    Fastzusammenstoß über dem Nordatlantik bei 10 m Abstand
    Ursache: Eine Ziffer der Startposition der Lockheed L-1011 wurde falsch in den Navigationsrechner eingegeben


    A 320 Airbus, Air France, Juni 1988:

    Absturz eines Airbus bei einer Flugshow nahe Mühlhausen
    Ursache: Ungewöhnliche Flugaktionen (niedrige Höhe, steiler Flugwinkel) wurden nicht von der Software unterstützt; "Fehlverhalten des Piloten"

    A 300 Airbus, Iran Air, Juli 1988:

    Kreuzer USS Vincennes schoß iranisches Verkehrsflugzeug während des Iran-Irak-Krieges über dem Golf von Persien ab, weil es (angeblich) ein falsches Funksignal aussendete und immer niedriger flog
    Das Verhalten des Flugzeugs (Steigen) wurde auf einem anderen Bildschirm angezeigt und nicht bemerkt
    Elektronisches Aegis-Radarsystem war nicht in der Lage, den Airbus von einem Militärflugzeug zu unterscheiden
    Aegis-System: Etwa 1 Millionen Zeilen Programmcode $ 600 Millionen Kosten (50% der Schiffs-Gesamtkosten)

    B 737, Varig Airlines (Brasilien), September 1989:

    Falsche Eingabe des Zielortes (2700 statt 0270) in den Navigationsrechner
    Flugzeug flog 3 Stunden lang nach Süden statt Norden
    Absturz wegen Treibstoffmangels im Amazonas-Dschungel

    A 320 Airbus, Indian Airlines, Februar 1990:

    Der Pilot wählte falschen Modus für die Landung: Absturz

    A 320 Straßburg, Januar 1992; A 300 Nagoya, April 1994;

    A 320 Hongkong, Juni 1994; A 340 London, September 1994;

    B 747 Guam, August 1997; A 300 Taipeh, Februar 1998; ...


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (6-10)


    NORAD-Frühwarnsystem, Januar 1979-Juni 1980:

    Innerhalb von 2 Jahren wurde in 5 Fällen eine Bedrohung der USA festgestellt und die Alarmstufe 2 ausgelöst
    Oktober 1979: Radar erfaßt niedrig fliegende Rakete, die kurz vor dem Auseinanderfallen war
    November 1979: Simulationsprogramm zum Testen wurde gestartet, ohne die Operateure zu informieren
    Juni 1980: Hardwarefehler täuschte Massenangriff vor, wurde von der Software nicht (sofort) erkannt
    NORAD-Computersystem: 84 Rechner, 10 Millionen Zeilen

    Flugüberwachung Chicago/Illinois, Mai 1987:

    Zwei verschiedenen Flugzeugen von United und American Airlines wurde die gleiche Code-Nummer zugeordnet
    Software ignorierte die zweite Zuordnung ohne Warnung
    Fastzusammenstoß (150 m Abstand)

    Flugüberwachung Dallas/Texas, Oktober 1989:

    Wegen Überlastung zeigten die elektronischen Radargeräte für 30 Minuten nichts mehr an
    Lotsen mußten Flugkontrolle nach Sicht machen

    Zugunglück Japan, Mai 1991:

    Zwei Züge stießen frontal zusammen wegen Fehlfunktion des automatischen Signalsystems: 42 Tote

    Schnurloses Telefon Kanada, 1993:

    Telefon wählt selbst durch zufällige Frequenzen Notruf 911


    Atomreaktoren USA, März 1979:

    Programm zur Berechnung der Erdbebenfestigkeit von 5 Atomreaktoren zeigte kritische Werte
    Längere Abschaltung zum Umbau der Reaktoren
    Ursache: Fehler im CAD-System (arithmetische Summe statt Wurzel aus der Quadratsumme)

    Chemischer Reaktor, ca. 1983:

    Im Fehlerfall sollten alle Parameter eingefroren werden
    Meldung eines zu geringen Ölstandes im Getriebe trat in dem Moment auf, als der Katalysator aufgefüllt wurde und der Reaktor mehr Kühlung gebraucht hätte
    Dies führte zur Überhitzung des Reaktors

    AT&T-Abrechnungsprogramm, 1985:

    AT&T verschickte 117 000 Briefe "Vielen Dank, daß Sie AT&T für Ihre Ferngespräche ausgewählt haben"
    Alle diese Kunden waren jedoch bei der Konkurrenz

    Lokales Telefonnetz, Juni/Juli 1991:

    Telefonnetz stundenlang lahmgelegt in Washington, Los Angeles und Pittsburgh (innerhalb einer Woche)
    Ursache: 3 falsche Bits in 2 Millionen-Zeichen-Programm

    Radioastronomie, Manchester, 1991:

    Im Sommer 1991 wurde der erste Planet außerhalb des Sonnensystems entdeckt.
    1992 ergab es sich als ein Fehler in der Formel der Erdbewegung um die Sonne


    Software in der Medizin:

    Stark wachsende Zahl von medizinischen Geräten mit Software-Steuerung; USA: pro Jahr $ 11 000 Millionen
    Software-Fehler bei Herzschrittmachern, Infusionspumpen, Blutanalyse-Geräten und Überwachungsmonitoren

    Arsen-Spritze:
    Gleichzeitiges Auftreten eines Software-Fehlers mit einem Hardware-Ausfall bei Dosierung einer Arsen-Spritze
    Der gesamte Inhalt führte zum Tod des Patienten

    Kriminal-Datenbank NCIC:

    Wegen eines Tippfehlers im Nachnamen wurde ein Mann 40 Tage lang im Gefängnis behalten
    Mann wurde nach Diebstahl seiner Brieftasche 5 Mal in 14 Monaten verhaftet, obwohl NCIC-Fehler geklärt war

    Landtagswahl Schleswig-Holstein, April 1992:

    Programm der Landeswahlleitung hatte den 4.973%-Anteil der Grünen auf 5.023% aufgerundet und somit das Überspringen der 5%-Hürde vorgetäuscht

    Schaltjahrproblem, Februar 1992:

    MAGSAV-Programm der Firma Prime ging um Mitternacht in eine Endlosschleife.
    Bei der Berechnung des Expiration-Date-Labels für ein Magnetband durch Addition der Jahreszahl um 1 entstand das nichtexistierende Datum: 29.2.1993


    Notrufsystem England, März 1992:

    Programm der British Telecom, das Notrufe zur Ambulanz- Zentrale durchstellen und dort verteilen soll, versagte
    Den Hilfesuchenden wurde nur "Bitte warten" vorgespielt
    Einige Anrufer verstarben während dieser Wartezeit

    Autofabrik General Motors, Michigan, ca. 1985:

    Alle schwarzen Autos verließen die Montagehalle ohne Windschutzscheibe; die für das Einsetzen vorhandenen Roboter erkannten die Farbe schwarz nicht

    Blackhawk-Hubschrauber UH-60, März 1985 und April 1987:

    Absturz/Fastabsturz von Hubschraubern wegen elektrischer Interferenzen nahe starken Radiosendern u.ä.
    Beeinflussung der Computersteuerung des Lagestabilisators

    IBM MVS Betriebssystem, 1976 - 1991:

    Pro Jahr werden etwa 5000 Fehler in der Software korrigiert (3% der gemeldeten Fehler)

    CATIA (CAD-System), Februar 1991:

    Das Ausdrucken des Inhaltes der Projektdaten-Datei führte zum Löschen dieser Datei (neue CATIA-Version)
    Ursache: Die letzte Kommentarzeile im Programm wurde als auszuführendes Kommando interpretiert

    Folienerstellungs-Programm, Februar 1992:

    Bei der Erstellung dieser Folien wurden fünf Fehler in der (eigenen!) Software gefunden


    Allstate Insurance, 1982-1991:

    1982: Beginn eines Büro-Automations-Projektes, das die gesamte Papierarbeit auf Computer umstellen sollte; geschätzte Kosten: $ 8 Millionen
    1984: Wechsel der Software-Firma wegen großer Probleme; Zusatzkosten bisher: $ 15 Millionen
    1991: Projekt noch nicht vollständig abgeschlossen! Gesamtkosten: Etwa $ 100 Millionen

    Bank of America, San Francisco, 1983-1988:

    1983: Plan für "MasterNet"-Softwaresystem für Kreditkonten-Verwaltung mit 2 Jahren Entwicklungszeit und einer bekannten Expertenfirma in Pennsylvania
    1987: Trotz Problemen (zum Teil wegen verschiedener Computerhardware) vollständige Umstellung auf das neue System: tagelange Abstürze, Fehlbuchungen, Zeitverzögerungen der Zinszahlungen, Transaktionsdaten mit Fehlern, Kontoauszüge oft um Wochen oder Monate verspätet gedruckt usw.
    Alle Buchungen mußten von Hand überprüft werden
    1988: Aufgabe des Systems nach 10 Monaten Einsatz
    $ 20 Millionen Ausgaben für die Software
    $ 60 Millionen Ausgaben durch Überziehungszinsen
    Geschätzter Geschäftsverlust: $ 1500 Millionen durch Abspringen vieler Investoren


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (11-15)


    Bank of New York, November 1985:

    An einem Tag mit sehr großer Anzahl von Transaktionen wurde der Transfer von Wertpapieren aufgrund eines Software-Fehlers für 36 Stunden vom Computer gestoppt
    BoNY schuldete anderen Banken bis zu $ 32000 Millionen und mußte laut Gesetz am Abend $ 23600 Millionen Kredit von der Federal Reserve Bank aufnehmen
    Zinsverlust: $ 5 Millionen für einen Tag
    Ursache: Überlauf eines Zählers wurde nicht getestet
    Das komplexe Programm sollte bis zu 36000 verschiedene Arten von Wertpapieren verwalten können

    Banksystem CHAPS, England, Oktober 1989:

    Innerhalb einer halben Stunde wurden wegen eines Software-Fehlers 2000 Millionen Pfund an Kunden in England und USA fälschlicherweise doppelt überwiesen
    Das Geld wurde zwar später zurückgezahlt, man nimmt aber einen Zinsverlust von bis zu 0.5 Millionen Pfund/Tag an

    Geldautomat (ATM), ca. 1990:

    Frau aus Vancouver wollte in Honolulu Can-$ 1100 von ihrem Heimatkonto über einen Geldautomaten abheben, der von einem Computer in New Jersey gesteuert wurde
    Durch die große Zeitverzögerung der Satellitenverbindung und einen Protokollfehler wurde ihr das Geld nicht ausbezahlt, der Betrag aber trotzdem abgebucht


    Golfkrieg, Februar 1991:

    In Dhahran, Saudi-Arabien, konnte eine irakische Scud- Rakete nicht vom hochgelobten Patriot-Abwehrsystem abgefangen werden - sie schlug in ein US-Militärlager ein und tötete 29 und verwundete 97 US-Soldaten
    Ursache: Die "Realzeit seit letztem Booten" der Software der Patriot-Rakete wurde in einer einfachgenauen Gleitkommazahl abgespeichert. Lief das System länger als 8 Stunden (etwa 30 Millionen ms), traten daher Genauigkeitsprobleme auf:
    Nach 100 Stunden Laufzeit ergab der immer größer werdende Zeitfehler eine Abweichung in der Berechnung der Scud-Flugbahn um 678 m
    Das Design der Software sah nur 14 Stunden Einsatz vor

    ZEIT-Logelei, Dezember 1991:

    Zwei von drei Aufgaben waren nicht lösbar
    Ursache: Beim Suchen des Wortes "nichts" im Text wurde versehentlich statt der Funktionstaste SUCHEN die danebenliegende Taste ERSETZEN gedrückt; dadurch wurde das gesuchte Wort dreimal gelöscht

    Finanzabrechnungssystem der US-Navy:

    Im Kongress vorgetragene geschätzte Kosten: $ 6 Millionen
    Später auf $ 32 Millionen verbessert; bei Systemabbruch $ 230 Millionen ausgegeben, Endplanung $ 500 Millionen


    Hubble-Teleskop, 1978-1990:

    Plan von TRW für großes Weltraumteleskop mit 2.4m-Spiegel geschätzter Aufwand: $ 300 Millionen, 6 Jahre
    1985, kurz vor geplantem Start: Boden-Software SOGS ist noch lange nicht fertig. Viele Probleme auch wegen ständiger Änderungswünsche der Wissenschaftler; Software ist zu langsam und muß optimiert werden
    1989, kurz vor geplantem Start: Ursachen der vielen Software-Probleme: Hardware-Bezogenheit (VAX-Rechner vom Stand 1981), wenig Modularität, viel Schlamperei
    Boden-Software hat inzwischen 1 Millionen Zeilen Code und kostete $ 70 Millionen + 50 neue Programmierer
    1990: Start mit Space Shuttle nach 6 Jahren Verzögerung Gesamtkosten $ 1550 Millionen
    Kurz nach dem Start: Das Teleskop hat große Fokussierungsfehler und ist damit weniger wertvoll: der Spiegel war (1981!) schlecht poliert worden

    Einkaufszentrum Salt Lake City, 1985:

    Einsturz des Daches beim ersten großen Schneefall
    Das Programm benutzte ein falsches Modell, machte falsche Annahmen und ignorierte extreme Bedingungen

    Nevada, Juni 1983:

    Katastrophale Überschwemmungen durch Colorado River
    Zurückhalten von zuviel Wasser in den Staubecken


    Börse New York, Oktober 1987:

    Börsenzusammenbruch durch Computer-Programme
    Da zufällig mehrere größere Verkäufe stattfanden, reagierten alle Programme verstärkt mit Verkauf
    Notlösung: Bei größeren Änderungen an der Börse ist kein Computerhandel mehr erlaubt

    Börse Toronto, August 1989:

    Ein 3-fach redundantes Computersystem lieferte in allen Rechnern verschiedene (und falsche) Werte
    Börse mußte für 3 Stunden schließen

    Börse Vancouver, 1983:

    Der Börsenindex VSEI stieg um 50% nach der Korrektur von 2 Jahren Rundungsfehlern im Computerprogramm

    American Airlines, 1987-1989:

    "Sabre"-System für weltweite Reise-Reservierungen
    Spezielles Gebäude unter der Erde, tornadosicher, mit 8 getrennten IBM-Computern, Lebensmittel und Treibstoff für 3 Tage, Sicherheitssystem mit Augen-Scanner usw.
    1988: Software-Fehler im Platzreservierungssystem: Die Kunden bekamen keine ermäßigten Plätze angeboten, obwohl diese vorhanden waren. Dadurch schlechte Auslastung der Flüge: $ 50 Millionen Verlust
    1989: Neue Plattenspeicher eingebaut: Software-Fehler löscht viele Kundendaten, der Fehler wandert in alle Rechner


    Chemical Bank, New York, Februar 1994:

    1 1/2 Tage lang doppelte Abbuchungen in 150000 Fällen mit einem Gesamtwert von $ 15 Millionen bei der Benutzung von Bank-Automaten (ATM)
    Probleme bei 430 Kunden wegen zurückgewiesener Schecks
    Ursache: Zusätzliche Programmzeile, die zur Information eines 2. Computersystems gedacht war

    Mailänder Börse, September 1993:


    51000 Generali-Aktien sollten für 39500 Lire pro Stück verkauft werden, es wurden aber 35000 Lire eingegeben
    Aufruhr im Börsenmarkt, da es eine wichtige Aktie ist; die Aktie fiel bis auf 31000 Lire zurück, bis der Fehler erkannt wurde

    New York Stock Exchange, November 1992:

    Zum ersten Mal kam eine Aktie auf einen Wert von über $ 10000. Das führte zu einem Fehler im Börsen-Computer, der 5-stellige Zahlen nicht vorsah

    San Francisco, April 1993:

    Das Programm eines Steuerberaters errechnete eine zu zahlende Steuer auf Kapitalerträge. Wegen zweier Software-Fehler wurden aber $ 36800 zuviel berechnet
    Unter Steuerberatern ist diese Software weit verbreitet; wegen der komplizierten Steuerregeln verlassen sich die Experten inzwischen fast nur noch auf Programme!


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (16-20)


    Yamhill County, November 1992:

    Bei der Wahl eines Bezirksstaatsanwaltes wurde zuerst ein falscher Sieger ermittelt
    Der Wahlcomputer hatte die Stimmenzahlen in einer anderen Reihenfolge als auf den Wahlzetteln angegeben auf die Kandidaten verteilt

    Handley-Page Victor Flugzeug, 1986:

    Drei unabhängige Testmethoden erbrachten falsche, aber in sich konsistente Ergebnisse, die auf ein stabiles Höhenleitwerk hindeuteten
    Beim ersten Testflug brach dieser jedoch ab: Absturz

    America's Cup, 1986:

    Das US-Boot "Stars and Stripes" verlor den American's Cup; die Computer-Simulation enthielt falsche Programmteile

    Douglas Aircraft C-17, 1988:

    Das C-17 Frachtflugzeug wurde um $ 500 Millionen teurer als geplant durch Probleme in der Steuerungs-Software
    An Bord sind 19 Computer, 80 Mikroprozessoren mit insgesamt 6 verschiedenen Programmiersprachen!

    Bayreuth, September 1994:

    Drei Parksündern wurde eine Anzeige wegen "Vorbereitung eines Angriffskrieges" zugeschickt
    Der Polizist hatte eine falsche Codenummer für die Ordnungswidrigkeit eingegeben


    Denver Flughafen, 1989-1995:

    Oktober 1993: Verschiebung der Flughafeneröffnung wegen Problemen mit der High-Tech-Gepäckverteilungsanlage.

    April 1994: Verschiebung der Eröffnung nach Debakel:
    Gepäckstücke wurden auf Wagen geworfen, die gar nicht da waren; Wagen fielen aus den Fahrspuren heraus; usw.
    Die computergesteuerte Gepäckverteilungsanlage bestand aus über 150 Computern, 4000 Wagen auf 34 km Schienenwegen, 5000 Sensoren, 56 Barcode-Lesern; Wert der Anlage: $ 200 Mio., dazu $ 100 Mio. für Gebäude-Änderungen.
    Probleme: Zu viele Nachrichten im Netz => Timing-Probleme: Anlage funktionierte nur bei sehr langsamen Bedienen. Software kam mit komplexen Bedingungen nicht zurecht.

    Hauptursachen: Trotz großer Bedenken bestand Stadt auf Realisierung; nach Vertragsabschluß wurde das System mehrfach geändert; Airlines wurden nicht befragt.

    August 1994: Installation eines (zweiten) konventionellen Systems mit üblichen Förderbändern: $ 50 Mio. zusätzlich
    Verlust pro Tag: $ 1.1 Mio.: $ 500 Mio. in 16 Monaten

    Erste offizielle Inbetriebnahme: 1. März 1995 - aber kurz danach wieder Stillstand; Wiedereröffnung: Oktober 1995
    Nov. 1996: Weiter Gepäck-Probleme; Passagiere bleiben aus.

    Gesamtkosten: $ 5200 Mio. statt geplanter $ 2000 Mio.

    Navy ASJP, 1993:

    Neue Software der Navy kostete $ 1000 Mio. mehr als erwartet, wurde 4 Jahre später fertig und war nur wenig effektiv


    Markup-Textsystem, Paris, Juni 1988:

    Zug fuhr mit hoher Geschwindigkeit und ohne zu bremsen in den Gare de Lyon, Paris
    56 Personen wurden getötet, viele verwundet
    Ursache: Zu den Hardware-Problemen: Typographie-Fehler
    Ausschnitt aus der Bedienungsanleitung (article 316b):
    b) Plusieurs véhicules sont bloqués, le mécanicien:
       S'assure que ce blocage n'est pas la conséquence
       de la fermeture d'un robinet d'arrêt de la conduite
       générale situé avant la partie de train bloquée:
    1er CAS: Aucun robinet d'arrêt CG n'est fermé:
       Il actionne la commande de la valve de purge le
       temps suffisant pour provoquer le desserrage ...
    2e CAS: Un (ou plusieurs) robinet d'arrêt est trouvé fermé:
       Il ouvre le robinet
    *   Dans les 2 cas, le mécanicien:
       - ouvre le robinet d'arrêt CG situé en arrière ...
       - vérifie en se dirigeant vers la tête du train:
         o  le desserage des freins de tous les ...
         o  que le blocage n'a pas provoqué d'avarie ...
    Il applique les mesures concernant le signalement et la
    reprise de marche (article 385).
    
    Fehler: falsches Einrücken in der markierten Zeile, da ein nicht-strukturiertes Textformatiersystem benutzt wurde


    Y2K: Year 2000, Jahreswechsel, Januar 2000:

    Viele Fehler traten schon bei den Tests vor 2000 auf !

    Kein Chaos - im Wesentlichen nur kleinere Fehler:

    Webseiten mit falschem Datum, z.B. den Jahreszahlen:
    100, 1900, 19100, 192000, 2100, 20100, 202000, 3900, 4000

    Online-Banking, Köln: Ein Kunde fand DM 3000 Millionen auf seinem Konto; Überweisungsdatum: 30.12.1899

    Ikea, England: Die Ikea-Kreditkarten wurden vier Wochen lang nicht mehr akzeptiert.

    Pentagon: 5 Spionage-Satelliten sendeten falsche Daten. Der Fehler konnte erst nach 3 Tagen behoben werden.

    Deutsche Oper, Berlin: Die Gehaltsabrechnungen gingen vom Datum 1900 aus - daher gab es keine Kinderzulagen.

    Nebraska: Videothek schickte Rechnungen über $ 91 250 für 100 Jahre Ausleihzeit.

    Die Web-Software Home Site 4.0 lief in der 30-Tage-Testversion ab Januar 2000 noch für 36 527 Tage.

    Gambia: Flächendeckende Stromausfälle, Computerabstürze im Schiffs- und Flugverkehr und im Finanzwesen.

    7-Eleven, Januar 2001 (!): Das Computersystem der Kette akzeptierte in allen 5300 Filialen keine Kreditkarten mehr.
    1999 wurde die Software für $ 9 Millionen Y2K-fähig gemacht.

    Weltweit wurden etwa $ 1 200 000 Millionen in Softwarekorrekturen investiert, davon USA: $ 600 000 Millionen, BRD: $ 20 000 Millionen

    Länder wie Italien oder Spanien hatten fast nichts investiert.
    Trotzdem gab es dort kaum Probleme: Flop oder gute Arbeit?


    Online-Banking, Annapa.com, August 2000:

    Durch Erraten der URL (Text nach dem ?) gelang es, auf die Konten anderer Kunden zuzugreifen. Es konnten sogar Daten wie z.B. deren Passwort umgesetzt werden.

    Kurs-Einflußnahme, Eumulex, August 2000:

    Eine gefälschte Presse-Erklärung über Verluste der Firma Emulex führte zu einem Kursverfall um 60 %.
    Die Presse-Erklärung wurde über das Internet verteilt; sie wurde dann von Nachrichten-Servern wie Bloomberg oder Dow Jones übernommen.

    Ähnliche Probleme gab es mit Falsch-Informationen zu den Firmen Just Toys und The Havana Republic: 15-jähriger Schüler mußte den Gewinn von $ 272 000 zurückzahlen.

    Hacken einer Firmen-Webseite, Geron Inc., Februar 2000:

    Die (falschen) Aussagen auf der Firmen-Webseite über einen Firmenzusammenschluß von Aastrom Biosciences Inc. und Geron führten zu einem Kursverfall bei Aastrom und zu Kursgewinnen bei Geron.

    Sex-Links von Webseite des Familienministeriums, März 2000:

    Eine Webseite, die von der Homepage aus anklickbar war, zeigte auf Sex-Webseiten, z.B. zu Callboys.

    Ähnliche URL wie PayPal.com, Juli 2000:

    Aus der Ukraine wurden E-Mails verschickt, in denen eine Überweisung von $ 827 versprochen wurde, wenn man auf die (gleich aufgebaute) Webseite PayPaI.com (mit i!) geht.
    Dort wurde u.a. nach Benutzername und Passwort gefragt.


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (21-25)


    Telefon, Singapur, Oktober 1994:

    65 % der Telefonleitungen waren 5 Stunden unterbrochen, die restlichen Leitungen waren erheblich überlastet.
    Ein Softwarefehler in einem Vermittlungsknoten pflanzte sich auf 26 der 28 Systeme aus.

    Rechtschreibkorrektur, San Jose Mercury News, Dezember 1994:

    In der US-Zeitung San Jose Mercury News erschien ein Artikel über Datenverarbeitung, der nur Lacher hervorrief.
    Die automatische Rechtschreibkorrektur änderte ungeprüft Microsoft in Microvolt, Megatest in Megadeath und Intel in Until um.

    Telekom, 1. Januar 1996:

    550 digitalen Vermittlungsknoten der Deutschen Telekom gelang es nicht, den 1. Januar als Feiertag zu erkennen.
    Die betroffenen Teilnehmer mußten zu den neuen und teuren Werktagstarifen telefonieren.
    Ursache: Software-Fehler in einem Programm von Alcatel SEL; Schaden: ca. DM 70 Millionen

    Verkehrsvergehen, Herrsching, Januar 1996:

    Anzeige gegen Autofahrer wegen überhöhter Geschwindigkeit:
    Statt der erlaubten 80 km/h war er 59 km/h gefahren, und somit (bei 3 km/h Toleranz) 24 km/h zu viel

    Social Security, USA, Januar 1997:

    Insgesamt $ 234 000 Millionen Werte an Lohnrechnungen konnten in den letzten Jahren (seit 1978) nicht Personen mit untypischen Namen wie z.B. de la Rosa zugeordnet werden.


    Stellwerk-System, Hamburg-Altona, März 1995:

    Bei starkem Zugverkehr versuchte das neue System einen Speicherplatz von 4 KB im RAM anzulegen; es waren aber nur noch 3.5 KB frei: Absturz des Rechners.
    Bei dem 3-tägigen Verkehrschaos mit Auswirkungen auf den gesamten Bundesbahnverkehr mußten täglich 50 000 bis 100 000 Reisende zu Ausweichbahnhöfen gelangen.
    Behebung des Problems nach 2 Tagen durch Einbau von RAM.

    Tragik: Eigentlich wurden nur 3.5 KB benötigt - aus Sicherheitsgründen wurden aber 4 KB verlangt.

    Verwaltungssystem Comvor, Polizei Hamburg, April 1998:

    Das Vorgangs-Bearbeitungssystem Comvor, 1989 begonnen, wurde wegen umständlicher Bedienbarkeit ausgesetzt; bisherige Kosten: DM 120 Millionen

    VW/Audi und SAP, September 1999:

    VW und Audi waren auf Grund von Problemen bei der Einführung von SAP R/3 im zentralen Ersatzteillager in Kassel mehrere Wochen lang nicht in der Lage, die Händler ausreichend mit Ersatzteilen zu versorgen.

    Sturm Lothar, Frankreich/Deutschland, Dezember 1999:

    Meßgeräte meldeten, daß der Luftdruck über der Biscaya innerhalb von 3 Stunden um 20 hP. gesunken war.
    Software des Wetterdienstes interpretierte daher diese Daten als Meßfehler, ohne die Meteorologen zu informieren.
    Es wurde keine Sturmwarnung gegeben. Der Sturm wütete über Süddeutschland und kostete mindestens 10 Tote.


    Intel Pentium-Prozessor, Oktober 1994:

    Ein Mathematik-Professor aus Virginia fand einen Intel bekannten Fehler im Divisionsalgorithmus des neuen Chips, von dem schon 2 Millionen Stück ausgeliefert waren.

    Intel spielte das Problem 2 Monate lang herunter und verlangte Nachweise, daß die Division notwendig sei.

    Fehlerhäufigkeit: 24 Tage (IBM) bis 27 000 Jahre (Intel) Ursache: Auf Grund einer fehlerhaften Schleife wurden beim Übertragen der Daten auf den Chip nur 1061 statt 1066 Schätzwerte für die nächste Quotientenstelle gesetzt.
    Kosten: $ 450 Millionen + Imageverlust

    Aluminium-Schmelze, Tiwai Point/Neuseeland, Dezember 1996:

    Die Software des Hauptrechners schaltete am 31.12. alle 660 Prozess-Steuerrechner ab: alle Schmelztiegel kühlten ab.
    Ursache: Der Software war nicht bekannt, daß 1996 ein Schaltjahr war: der 366. Tag im Jahr existierte also nicht.

    Justice Link Gerichtsdatenbank, Rhode Island, Dezember 1999:

    Das neue Datenbank-System stellte mindestens 8 falsche Haftbefehle aus: 350 Bugs gefunden.
    Ursache: Falsche Datenumsetzung wegen Terminstress bei der Umstellung auf das Jahr 2000.

    Northeastern University, Boston, August 2000:

    Bei einem Datenbank-Upgrade gingen mehrere Hundert Namen von interessanten Studium-Bewerbern verloren.
    Daraufhin wurden zu viele Bewerber angenommen, so daß die Kapazität um 600 Studenten (25 %) überschritten wurde.


    Erweiterung des Reservierungssystems Sabre, April 1992:

    Gemeinschaftsprojekt von American Airlines, Marriot, Hilton Hotels und Budget Rent-A-Car für Hotelreservierungen und Autovermietungen: "CONFIRM"

    Abbruch nach 5 Jahren Entwicklungszeit
    Kosten: $ 125 Millionen (anfangs geschätzt: $ 55 Millionen)
    Entschädigungszahlung der Herstellerfirma: $ 165 Millionen
    Ursachen: Unvollständige, ständig wechselnde Anforderungen, schlechtes Design, keine Einbeziehung der Endbenutzer.

    Zur gleichen Zeit erstellte Hyatt Hotels ein System, das weniger kostete ($ 15 Millionen) und mehr konnte als geplant.

    Datenbanksystem, California DMV, April 1994:

    Die Entwicklung und Anwendung eines neuen Verwaltungs-Systems für Führerscheine und Fahrzeug-Registrierungen wurde nach 6 Jahren abgebrochen: Kosten: $ 45 Millionen
    Ursachen: Unlösbare Probleme bei der Umwandlung der alten Datenbank (von 1965) in eine relationale Datenbank.
    Problem: DMV hatte selbst die Projektleitung übernommen.

    Gesundheitswesen, San Mateo County, California, Juli 2000:

    1/2 Jahr nach Installation eines neuen Abrechnungssystems konnten immer noch keine Rechnungen erstellt werden.
    Kosten: $ 35 Millionen, Rückstau an Rechnungen: $ 40 Millionen
    Die Kosten lagen bis dahin doppelt so hoch wie geplant.

    Lohn-/Gehalts-Software, King County, Washington, Juli 2000:

    Das Finanzprogramm-Projekt wurde wegen zu vieler Fehler und Zeitverzögerungen abgebrochen: $ 38 Millionen


    Clementine, Mondsonde, Mai 1994:

    Die Foto-Mondsonde sollte nach erfolgreicher Mondmission zum Asteroiden Geographos fliegen. Dazu wurden die Antriebsraketen gezündet.
    Auf Grund eines Software-Fehlers hörten sie aber erst auf zu feuern, nachdem sämtlicher Treibstoff verbraucht war.
    Der Satellit verschwand im All: Kosten: $ 80 Millionen

    Marslandegerät Pathfinder, Fahrzeug Sojourner, Juli 1997:

    Der Bordcomputer bootete öfters fälschlicherweise, wobei die noch nicht gespeicherten Meßdaten verloren gingen.
    Ursache: Prioritätsfehler in der Programm-Logik bei der Datenkommunikation mit Tasks verschiedener Priorität.

    Near-Earth Asteroid Rendezvous NEAR, Dezember 1998:

    Für den Flug der NEAR-Sonde zum Asteroiden Eros wurden in der Sonnenumlaufbahn die Antriebsraketen gezündet.
    Die Software war aber darauf abgestimmt, unkontrollierte Beschleunigungen zu verhindern: Abschalten der Düsen.
    Nach Änderung des Programms konnte erst 13 Monate später der Asteroid angeflogen werden.

    Militärischer Kommunikationssatellit Milstar, April 1999:

    Durch Einsetzen falscher Software in der Raketenoberstufe mißlang der Start des Militärsatelliten Milstar 3.
    Der Satellit wurde in eine viel zu niedrige, nutzlose Umlaufbahn (5000 statt 36 000 km) gebracht.
    Es war der bisher teuerste Fehlstart eines unbemannten Satelliten: $ 1230 Millionen ($ 430 Titan-Rakete, $ 800 Satellit).


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (26-30)


    Airbus A320, Warschau, September 1993:

    Wegen einer erwarteten, aber nicht eingetretenen Änderung der Windrichtung landeten die Piloten mit dem Wind und mit erhöhter Geschwindigkeit.
    Der Airbus hatte (daher) zu viel Auftrieb auf der Landebahn, so daß die Sensoren am Fahrwerk dem Computer die Meldung weitergaben, das Flugzeug würde noch fliegen.
    Daher wurde nicht rechtzeitig (nach 9 Sekunden) gebremst und die Maschine prallte gegen einen Hügel: 2 Tote.
    Ursache: Fehler in der Logik der Software (=> Bodensensoren)

    Boeing 757, Cali/Kolumbien, Dezember 1995:

    Das Leuchtfeuer 'Rozo' von Cali war nicht in der Navigations-Datenbank, die weltweit über 8000 Orte enthält.
    Die Piloten waren so sehr mit dem Computer-Problem beschäftigt, daß sie dann durch die Eingabe eines falschen Codes unbemerkt eine andere Richtung ansteuerten.
    Das Flugzeug prallt gegen einen Berg: 159 Tote.
    Im Juni 2000 sprach eine US-Jury dem Software-Hersteller 17 % der Schuld zu; der Fehler war lange bekannt.

    Flugzeug-Helikopter Osprey, Dezember 2000:

    Wegen hydraulischer Probleme erhielten die Piloten eine Fehlermeldung, die eine Bestätigung erforderte.
    Nach dem Drücken des Buttons geriet die Maschine in eine schwierige Flugsituation.
    Die Piloten drückten daraufhin den Button noch mehrfach, was schließlich zum Absturz des Flugzeugs führte: 4 Tote.


    Einkommenssteuer-Software, Intuit, 1994 und 1995:

    1994: Die Berechnung der Steuer war an verschiedenen Stellen fehlerhaft. Intuit versprach den Kunden, deren Steuerstrafen und Zinsen zu bezahlen.
    1995: Ein Software-Fehler ermöglichte es, in den Hauptrechner von Intuit einzudringen und dort Steuererklärungen zu manipulieren.

    Online-Banking, Barclays Bank, UK, Juli 2000:

    Ein Software-Upgrade erlaubte mehreren Online-Benutzern, sich die Konten anderer Kunden anzusehen.
    Ursache: Zwei Benutzer hatten sich gleichzeitig eingeloggt. Es wurde die alte Version wieder eingesetzt.

    Börse Mailand, Juli 2000:

    Das elektronischen Aktienhandelssystem brach zusammen wegen Nichterkennen von Händlercodes in der Datenbank.
    8 Stunden Ausfall entsprachen einem Verlust von $ 10 Millionen

    Probleme vorher auch bei Börsen in London und Zürich.

    EC-Kartensystem Schweiz, Dezember 2000:

    Einen Tag vor Heiligabend brach das gesamte Schweizer EC-Kartensystem für fast 3 Stunden zusammen. Auch die Bargeldausgabe am Automaten und die Bearbeitung von MasterCard-Bezahlungen waren nicht möglich.
    Ursache: Der Band-Roboter im EC-Datenzentrum ließ eine Kassette fallen. Die anschließenden Fehlermeldungen, verbunden mit dem hohen Ansturm an Anfragen, brachten das System zum Erliegen.
    Es gab kein Ersatzsystem.


    Flugsicherungssystem der FAA, USA, 1984-1995:

    US-Luftfahrtbehörde hatte 1984 mit der Implementierung des neuen Flugsicherungssystems AAS begonnen.
    Die Entwicklungsdauer betrug mindestens 5 Jahre mehr als geplant, die Kosten waren ebenfalls explodiert:
    Bisherige Gesamtkosten: über $ 5100 Millionen
    Juni 1994: Vollständige Erneuerung des Systems

    1995: Zwei der vier Hauptkomponenten wurden aufgegeben, eine dritte Komponente im Umfang reduziert (DSR).
    Das System lief auf Hunderten von Rechnern, war aber noch weit davon entfernt, richtig zu funktionieren.
    Einsatzplanung: Juni 2000 statt Februar 1989

    Schalttag, Digital, Februar 1996:

    Das neue Betriebssystem Digital UNIX/DCE brach am 29. Februar 1996 zusammen: DCE arbeitete nicht zwischen dem 29. Februar und dem 31. März (in allen Schaltjahren).
    Notlösung, zu der alle Benutzer gezwungen waren:
    Umsetzen des Datums auf den 1. April 1996
    Die Folgen dieser Zeitumstellung waren unklar.

    Genossenschafts-Banken, Norddeutschland, November 1997:

    Wegen Software-Fehler wurde rund 13 000 Bankkunden, die mit der EC-Karte bezahlt hatten, das Hundertfache der Beträge abgebucht (DM 270 Millionen)

    Superbomben, Irak-Bombardierung, Februar 2001:

    Durch Software-Fehler in den neuen Superbomben AGM-154A schlugen alle etwa 15 bis 250 m links vom Ziel ein.


    Sleipner A, Öl+Gas-Bohrplattform, August 1991:

    Die Offshore-Plattform nahe Stavanger, Norwegen, die etwa 100 000 t wog, zerbrach und versank in der Nordsee.
    Der Zusammenbruch erzeugte ein Erdbeben-Ereignis von 3.0 auf der Richterskala.
    Ursache: Ungenaue FEM-Analyse mit Programm NASTRAN:
    Die Scherungskräfte wurden zu 47 % unterschätzt.
    Zementstruktur auf 16 000 m*m Fläche. Kosten: $ 700 Millionen

    USS Yorktown, September 1997:

    Eingabe einer 0 in das Steuerungssystem des 'smarten' Raketenkreuzers führte zur Division durch 0 und damit zum Absturz aller LAN-Konsolen und Remote-Terminals.
    Antriebssystem des Schiffes war für mehrere Stunden tot.
    Die Eingabe wurde nicht auf gültige Werte überprüft.
    Ursache: Überlauf in Datenbank des Windows-NT Systems.

    Flugleitsystem NERC, Swanwick/Hampshire, August 2000:

    Das neue Flugleitsystem für 200 Fluglotsen in Südengland konnte immer noch nicht in Betrieb genommen werden.
    Das Projekt wurde 1988 begonnen, die Inbetriebnahme war für 1996 geplant - Anfang 2002 steht nun in Aussicht.
    Die anfangs geschätzten Kosten von Pfund 160 Millionen lagen inzwischen bei Pfund 450 Millionen (+ Pfund 180 Millionen Land+Gebäude).
    1995 waren 21 000 Fehler bekannt, 1999 immer noch 1400.
    Ursache: "Fortschrittlichstes Flugleitsystem der Welt"

    1998: In Amsterdam wurde ein neues Flugleitzentrum eröffnet.
    Bei der Implemtierung wurden auch Fluglotsen einbezogen.


    Mars Climate Orbiter, September 1999:

    Nach 9-monatigem Flug erreichte die US-Marssonde den Mars. Die angesteuerte Umlaufbahn lag aber 170 km tiefer als geplant: Absturz des Satelliten.
    Ursache: Die Navigations-Instrumente eines Herstellers lieferten Daten im englischen Maßsystem, die Software der NASA ging aber von metrischen Einheiten aus.
    Kosten: $ 125 Millionen

    Mars Polar Lander, Dezember 1999:

    Das Mars-Landefahrzeug stürzte 40 m oberhalb der Oberfläche mit 80 km/h auf den Mars.
    Ursache: Durch die Erschütterung beim Ausfahren der Landebeine hatten die Sensoren reagiert, was von der Software als Bodenberührung interpretiert wurde und zu einem Abschalten der Bremsraketen führte.
    Ursache: Die Software wurde falsch entworfen und schlecht getestet: Bei dem einzigen Test waren 3 der 4 Sensoren falsch verdrahtet.
    Kosten: $ 165 Millionen

    Deep Space 2, Marssonden, Dezember 1999:

    Beim Landeanflug des Mars Polar Lander wurden 2 Sonden abgeworfen, die gepolstert auf dem Mars landen sollten.
    Sie sendeten jedoch keine Signale aus.
    Vor dem Start wurden sie so gut wie nicht getestet.
    Die NASA-Philosophie "Schneller - Besser - Billiger" wurde daher in Frage gestellt.


    Ingolf Giese



    Software Reliability - Software-Fehler

    Software-Fehler (31-33)


    Panama, Februar 2001:

    Zwischen August 2000 und Februar 2001 erhielten 28 Krebspatienten in gesundem Gewebe eine hohe Bestrahlung
    Mindestens 5 Patienten starben daran, 15 weitere trugen schwerste Schäden davon
    Im Dezember war aufgefallen, daß sehr viele der am Becken bestrahlten Patienten chronischen Durchfall bekamen
    Im Juni stellte die Internationale Atomenergiekommission fest, daß die Bediener der Therapie-Maschine falsche Daten in das Behandlungsprogramm eingegeben hatten, die von dem System nicht als falsch erkannt wurden. Davon aber waren die Radiologen ausgegangen
    Mitursache: Bedienungsanleitung wurde nicht richtig gelesen

    South York, Lincolnshire, East Midlands, England, Mai 2000:

    Mehr als 150 schwangeren Frauen wurden in 9 verschiedenen Kliniken zwischen Januar 2000 und Mai 2000 falsche Resultate eines Down-Syndrom-Tests mitgeteilt
    Dadurch wurden vier Schwangerschaften mit Down-Syndrom nicht erkannt: Zwei mongoloide Kinder wurden geboren, zwei weitere Schwangerschaften später abgebrochen
    Ursache: Durch einen Jahr-2000-Fehler wurde das Alter der Schwangeren falsch berechnet. Dies ist aber für die Erkennung eines Down-Syndrom-Risikos wesentlich. Anderenfalls wäre durch weitergehende Testverfahren das Problem wesentlich früher erkannt worden
    Mitursache: Man glaubte den Computerergebnissen

    Nikon Digitalkamera, Dezember 2001:

    Nikon stoppt den Verkauf der 5-Megapixel High-End Digitalkamera Coolpix 5000 (Kaufpreis ca. DM 3200,-)
    Durch einen Software-Fehler wurde die Digitalkamera unbrauchbar, wenn sie eingeschaltet wurde, bevor der Objektivdeckel entfernt wurde; dabei hatte auch die Stellung des Zooms der letzten Benutzung einen Einfluß
    Der Fehler konnte nicht vom Fotografen ("Benutzer") behoben werden; war er noch nicht aufgetreten, konnte man einen Software-Upgrade aus dem Internet laden und einspielen

    Viking-Marssonden, 1976 und 1999:

    Ein Neurobiologe wollte Daten der beiden Viking-Marssonden von 1976 noch einmal unter anderen Aspekten untersuchen
    Das Datenband wurde zwar gefunden, aber nicht die Software zum Lesen des Bandes
    Der Programmierer war schon verstorben

    Grünen-Parteitag, Ehingen, Februar 2002:

    Der Parteitag zur Kür der Kandidaten für die Landesliste der Grünen mußte abgebrochen werden, da 202 statt 200 Delegierte erschienen waren. Ursache: Rundungsfehler im Programm, das die Einladungen erstellte

    Internet-Protokoll SNMP, Februar 2002:

    Das grundlegende Simple Network Management Protocol SNMP, auf dem das Internet beruht, hat Sicherheitslücken
    Das Ende der 80er Jahre erstellte Protokoll wurde nie auf Sicherheit, sondern nur auf Funktionalität ausgelegt

    Inpol-Neu, Dezember 2001:

    Das neue Polizei-Informationssystem Inpol-Neu wurde nach 10 Minuten gestoppt. Die Performance war völlig unzureichend; das Programm ist zu komplex und wird wahrscheinlich nie eingesetzt
    Kosten: geplant: 40 Mio. DM, notwendig: 280 Mio. DM
    Folgerung: Neue Haftungsregeln für Projektverträge ab 2002: Hersteller haftet 10 Jahre für Fehler (Planung, Ausführung)

    Sony-Handy, Tokio, Juli 2001:

    Sony mußte in Japan insgesamt 560 000 Handys wegen eines Software-Fehlers zurückrufen; schon im Mai wurden mehrere Hunderttausend Geräte zurückgerufen
    Gesamtkosten: 260 Mio. DM

    Online-Banking, 2000 und 2001:

    Juli 2001: Über die Homepage der Berliner Sparkasse konnte man einen Vormittag lang auf private Daten anderer Bankkunden zugreifen; gleiches galt für die Berliner Bank
    November 2000: Es war bei der Schweizer Bank Credit Suisse möglich, tagelang die Interpretenbeträge an Stars wie Roger Moore, Udo Jürgens oder DJ Bobo einzusehen
    Im Januar 2000 konnte man über die Homepage der US-Bank X.com einen Monat lang Geld von fremden Konten überweisen
    Bei der britischen Barclays Bank war es möglich, mit der Zurück-Taste auf die Seite eines anderen PC-Benutzers zu kommen und dessen Konto-Inhalt einzusehen / zu bearbeiten
    Zeitdruck, Einsparen an Sicherheit, nicht an Funktionalität


    Ingolf Giese



    Software Reliability - Chaos-Report der Standish Group

    Chaos-Report der Standish Group


    Untersuchungen von 1994 an 8380 Projekten in 365 US-Firmen:

    Pro Jahr wurden für IT-Anwendungsentwicklungen ausgegeben
    über $ 250 000 Millionen   für   175 000 Projekte
    ($ 0.4 bis $ 2.4 Millionen im Mittel je nach Firmengröße)

    31 % der Projekte wurden vor Fertigstellung abgebrochen: $ 80 000 Millionen Verluste
    Absolut: 55 000 Abbrüche (1995: 80 000 Abbrüche erwartet)

    53 % der Projekte waren wesentlich teurer und dauerten viel länger als ursprünglich geplant: bis über 400 % (190 % i.D.)
    $ 60 000 Millionen Mehrausgaben
    Nicht meßbar: Gewinn-Ausfälle durch abgebrochene Projekte

    16 % der Projekte konnten finanziell und zeitlich wie geplant beendet werden. Von diesen hatten nur 42 % (7 % absolut) alle ursprünglich vorgesehenen Funktionen.

    Ursachen:

    Die Projekte sind zu groß angelegt, unrealistisch (Featuritis)

    Unklare Anforderungen: häufig Änderungen, Projektneustarts

    Zu wenig Einbeziehung der Endanwender

    Konkurrenz: Stress durch Termindruck

    Probleme mit Management, bei Entwurf und Programmierung

    Aussage von etwa 70 % der IT-Manager:

    Gegenüber von vor 10 Jahren hat sich nichts verbessert.

    Deutschland: LOT Consulting (2000):

    36 % des IT-Budgets mußte für Software-Fehlerbeseitigung ausgegeben werden: DM 15 000 Millionen; 3 % des Umsatzes gingen durch Produktivitätsausfälle verloren: DM 80 000 Millionen


    Ingolf Giese



    Software Reliability - Loesungs-Versuche

    Lösungs-Versuche (1)


    Lösung der Software-Krise

                            ?


    Vladimir Rencin


    Ingolf Giese



    Software Reliability - Loesungs-Versuche

    Lösungs-Versuche (2)


    NASAs Multidisziplinäre Initiative, Dezember 2000:

    NASA/Ames Research Center vereinbarte mit der Carnegie Mellon University und mehreren Industriefirmen, wie IBM und Hewlett-Packard, ein Projekt zu gründen, um fehlerfreie, bedienbare Computer erstellen zu können.
    Trotz der hohen Kosten dieser Unternehmung blieb der Industrie keine andere Wahl, da immer mehr Anwendungen auf Computern basieren.
    Voraussichtliche Dauer: Jahrzehnte...

    Extreme Programming - XP:

    Neuer Ansatz zur Software-Entwicklung (statt Wasserfall):

    Kurze Produktionszyklen (1 - 4 Wochen)
    Kunde arbeitet mit: schnelle Neudefinierung möglich
    Programmierung jeweils mit 2 Personen
    Mehrmals am Tag rigorose Testläufe
    Kunde legt fest, welche Programmteile realisiert werden
    Neudesign, wenn Ansatz zu viele Fehler bringt

    Geeignet für kleine und mittelgroße Projekte

    Eignungsreife-Modell, Capability Maturity Mode CMM:

    Beschreibung der Prozeß-Reife eines Projektes; Soll-Ist-Vergleich auf 5 verschiedenen Ebenen:

    1. Anfangs-Stufe (Projektmanagement)
    2. Wiederholbare Phase (Anforderungen, Konfiguration)
    3. Analyse-Phase (Peer-Review)
    4. Management-Ebene (Software-Qualität)
    5. Optimierungs-Ebene (Änderungsmanagement)


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (1)


    Aufgabe: Gesucht ist die größte ganzzahlige Quadratzahl (q = a^2), die kleiner oder gleich einer gegebenen Zahl (z) ist.

    Beispiel: Gegeben sei z = 7.
    Wie man aus den Quadratzahlen 1, 4, 9, 16, ... erkennt, ist q = 4 die gesuchte Quadratzahl.

    Prinzip: Man schaut sich die Quadratzahlen der Reihe nach an und vergleicht die jeweils nächste Quadratzahl mit z, um den Suchvorgang zu beenden.

    Programm (für Rechner mit 16 bit-Zahlen):

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 >= z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (2)


    Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 >= z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test mit z = 7:

    1. Durchlauf: a = 1
                 Zuweisung: q = 1
                 Abfrage: 4 >= 7 ?
                 Antwort: Nein
    2. Durchlauf: a = 2
                 Zuweisung: q = 4
                 Abfrage: 9 >= 7 ?
                 Antwort: Ja
    

    Ergebnis: q = 4

    OK!


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (3)


    Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 >= z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test mit z = 50:

    1. Durchlauf: a = 1
                 Zuweisung: q = 1
                 Abfrage: 4 >= 50 ?
                 Antwort: Nein
          ...
    7. Durchlauf: a = 7
                 Zuweisung: q = 49
                 Abfrage: 64 >= 50 ?
                 Antwort: Ja
    

    Ergebnis: q = 49

    OK!


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (4)


    Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 >= z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test mit z = 9:

    1. Durchlauf: a = 1
                 Zuweisung: q = 1
                 Abfrage: 4 >= 9 ?
                 Antwort: Nein
    2. Durchlauf: a = 2
                 Zuweisung: q = 4
                 Abfrage: 9 >= 9 ?
                 Antwort: Ja
    

    Ergebnis: q = 4

    Falsch!! Lösung ist: q = 9

    Korrektur des Programms: Abfrage mit ">" statt mit ">=".


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (5)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 > z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test des Programms mit z = 0:

    1. Durchlauf: a = 1
                 Zuweisung: q = 1
                 Abfrage: 4 > 0 ?
                 Antwort: Ja
    

    Ergebnis: q = 1

    Falsch!! Lösung ist: q = 0

    Korrektur des Programms:
    Die Schleife muß schon von a = 0 an laufen.


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (6)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 0 TO 100
       q <= a^2
       IF (a+1)^2 > z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test des Programms mit z = 20000:

    101. Durchlauf: a = 100
                   Zuweisung: q = 10000
                   Abfrage: 10201 > 20000 ?
                   Antwort: Nein
    
    Ende der Schleife!

    Ergebnis: q = 10000

    Falsch!! Lösung ist: q = 19881

    Korrektur des Programms:
    Die Schleife muß länger laufen: bis 181, da 181^2 = 32761 letzte darstellbare Quadratzahl ist


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (7)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 0 TO 181
       q <= a^2
       IF (a+1)^2 > z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test des Programms mit z = 32767:

          ...
    182. Durchlauf: a = 181
                   Zuweisung: q = 32761
                   Abfrage: 33124 > 32767 ?
                   Antwort: Nein (!!)
    

    Ergebnis:

    Falsch!! Speicherplatz für den Ausdruck (a+1)^2 ist nur 16 Bit lang (Zahlen von -32768 bis 32767).
    Die Zahl 33124 ist also nicht darstellbar und ist i.a. sogar negativ (-32412).

    Korrektur des Programms: Umformung mit Hilfe von (a+1)^2 = a^2 + 2*a + 1


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (8)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 0 TO 181
       q <= a^2
       IF a^2 > z - 2*a + 1 THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test des Programms mit z = 3:

          ...
    2. Durchlauf: a = 1
                 Zuweisung: q = 1
                 Abfrage: 1 > 2 ?
                 Antwort: Nein
    3. Durchlauf: a = 2
                 Zuweisung: q = 4
                 Abfrage: 4 > 0 ?
                 Antwort: Ja
    

    Ergebnis: q = 4

    Falsch!! Lösung ist: q = 1

    Korrektur des korrigierten Programms:
    Abfrage mit "z - (2*a + 1)" statt "z - 2*a + 1".


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (9)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 0 TO 181
       q <= a^2
       IF a^2 > z - (2*a + 1) THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Test des Programms mit z = -10:

    1. Durchlauf: a = 0
                 Zuweisung: q = 0
                 Abfrage: 0 > -11 ?
                 Antwort: Ja
    

    Ergebnis: q = 0

    Falsch!! Es gibt keine negativen Quadrate (im Reellen).

    Korrektur des Programms:
    Abfrage nach dem Lesebefehl, ob z negativ ist.
    Falls dies erfüllt ist, wird eine Fehlermeldung geschrieben und das Programm beendet.


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (10)


    Korrigiertes Programm:

    INTEGER q, z, a
    READ z
    IF z < 0 THEN ...
    LOOP a <= 0 TO 181
       q <= a^2
       IF a^2 > z - (2*a + 1) THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Weitere Tests dieses Programms:

    Eingabe einer zu großen Zahl, z.B. "1000000000"
    => Fehler wird i.a. nicht erkannt.

    Eingabe einer Gleitpunktzahl, z.B. "0.42" statt einer ganzen Zahl
    => Fehler wird i.a. nicht erkannt.

    Eingabe eines Textes, z.B. "sieben" statt der Zahl "7"
    => Absturz sehr wahrscheinlich. ...


    Ingolf Giese



    Software Reliability - Beispiel

    Beispiel (11)


    Ursprüngliches Programm:

    INTEGER q, z, a
    READ z
    LOOP a <= 1 TO 100
       q <= a^2
       IF (a+1)^2 >= z THEN LEAVELOOP
    ENDLOOP
    WRITE q
    

    Letzter Stand des Programms:

    INTEGER q, z, a
    STRING s
    WRITE 'Bitte eine ganze Zahl eingeben:'
    READ s
    IF DATATYPE(s) != 'INTEGER' THEN DOIF
       WRITE 'Die Eingabe ' s ' ist keine ganze Zahl'
       EXIT
    ENDIF
    IF SIZE(s) != 'SHORTINTEGER' THEN DOIF
       WRITE 'Die Zahl ' s ' ist zu groß'
       EXIT
    ENDIF
    z <= INTEGER(s)
    IF z < 0 THEN DOIF
       WRITE 'Keine Lösung für negatives z = ' z
       EXIT
    ENDIF
    LOOP a <= 0 TO 181
       q <= a^2
       IF a^2 > z - (2*a + 1) THEN LEAVELOOP
    ENDLOOP
    WRITE q
    


    Ingolf Giese



    Software Reliability - Ursachen der Software-Probleme

    Ursachen der Software-Probleme (1-2)


    Komplexität von

    Programm   > 100 000 Zeilen-Programme üblich
    Daten   Experimente; Wettervorhersage
    Problem   Wachsende Aufgaben; neue Hardware
    Sprachen   Neue Sprachen; mehr Sprachelemente
    Umgebung   Unterprogrammpakete; große Teams

    Der Programmieraufwand, und auch die Schwierigkeit und Fehleranfälligkeit wachsen überproportional mit der Programmgröße

    Veranschaulichung verschiedener Programmgrößen

    1000 Zeilen   15 Blatt Papier
    100 000 Zeilen   15 cm hoher Stapel
    10 Millionen Zeilen   15 m hoher Stapel

    Beispiele (verschiedene Programmiersprachen!)

    TeX 82   14 000 Zeilen
    Handy   200 000 Zeilen
    Hubble Bodensoftware   1 Millionen Zeilen
    Luftraum-Überwachung   2 Millionen Zeilen
    Space Shuttle, auch IIS   3 Millionen Zeilen
    B-2 Stealth Bomber   4 Millionen Zeilen
    Windows 95   10 Millionen Zeilen
    Windows NT 4.0   16 Millionen Zeilen
    Windows 2000   27 Millionen Zeilen
    SDI, auch NMD (Schätzung)   25 - 100 Millionen Zeilen


    Programmieraufwand (kaum sprachabhängig)

    mittlere Programmgröße   50 Zeilen pro Tag
    große Programmgröße   10 - 20 Zeilen pro Tag
    kritische Software   1 - 2 Zeilen pro Tag

    Fehlerhäufigkeit

    Normale Software   25 Fehler pro 1000 Zeilen
    Wichtige Software   2 - 3 Fehler pro 1000 Zeilen
    Medizinische Software   0.2 Fehler pro 1000 Zeilen
    Space Shuttle Software   < 0.1 Fehler pro 1000 Zeilen

    Beispiel

    Space Shuttle Software

    3 Millionen Zeilen   => 300 Fehler
    $ 3000 Millionen Kosten   => $ 1000 pro Zeile
    15 000 Mannjahre

    Tests

    Sehr zeitaufwendig, nie vollständig durchführbar

    25 - 185 Stunden Testzeit für 1000 Zeilen

    Keine Interpolation möglich (diskrete Werte)

    Beweisen nur die Anwesenheit von Fehlern ist beweisbar, nie deren Abwesenheit

    Fehlende Programmteile nicht testbar

    Automatische Programmverifikation nicht für Anforderungen und Design, sondern nur für Algorithmus und für kleinere Programmteile mit sehr hohem Aufwand möglich


    Ingolf Giese



    Software Reliability - Ursachen der Software-Probleme

    Ursachen der Software-Probleme (3-5)


    Verschiedene Zahlwelten

    Reale Welt/MathematikDatenverarbeitung
    Beliebig viele Zahlen Beschränkte Zahlenmenge
      z.B. -32768 bis 32767
      a <= x+y evtl. falsch
    Beliebig genaue Zahlen Wenige Dezimalstellen
      z.B. 10*pi = 31.41591
      Rundungsfehler
    Beliebig große Zahlen Kleine Exponenten
      z.B. 10^78
      (10^-50)/2 = 0
    Dezimalzahlen Dualzahlen
      z.B. Umwandlung notwendig
      (1/5)*5 != 1
    Kommutativ-, AssoziativgesetzAbarbeitungsreihenfolge wichtig
      z.B. (1-1) + 10^-7
      1 - (1-10^-7)
    Eindeutigkeit Fehler in jedem Rechenschritt
      z.B. Aus cos(a) = cos(b)
      folgt nicht a = b

    Ursache:

    Architektur, Speicherplatz- und Laufzeit-Beschränkungen


    Programmiersprachen

    Unnatürliche Denkweisen
    C Feldindizes von 0 bis N-1
    PL/1 Feldabarbeitung: a = a/SUM(a)
    APL Abarbeitung von rechts nach links: 2*3+4 => 14
    Keine einheitlichen Schreibregeln
    FORTRAN x = 1 aber DATA x/1/
    PL/1 IF a=3 ... aber WHILE(a=3) ...
    ISPF FIND X 1 aber FIND Y 1
    Schlechte Lesbarkeit
    APL 4 + 2*i5 gerade Zahlen von 6 bis 14
    viele A(k) für Felder und Funktionen
    Unerwartete Wirkungen
    BASIC PRINT SQRT(4) => 0
    FORTRANCALL UP(1) überschreibt Konstante 1
    C if (a=b==5 && c=d==0) ...
    Zuweisung an c nur, wenn a wahr ist
    Beschränkungen
    FORTRAN (66)A(k+m) nicht erlaubt
    PL/1 Stringindizes nur bis 32767
    Fehlinterpretationen
    JCL//X DD DSN=A, DISP=(NEW,KEEP),


    Randbedingungen:

    Beschränkungen durch
    Speicherplatz MS-DOS: 640 KB
    Laufzeit Programmiertricks
    Erstellungzeit Termindruck: "Bananensoftware"
    Kosten Manpower
    Hardware Zeichensatz, Farben, Auflösung
    Anforderungen Realzeitprogramme: Timing
    Tools (Editor, Compiler, Debugger, System)
    Editor/Compiler Zusammenarbeit
    Compilerfehler Funktionen; Optimierung
    Sprachdesignfehler Falsche Abfragedefinition
    Laufzeitprobleme Indexüberschreitung; Initialisierung
    Debugger Neue Sprache
    Betriebssystem Neue Sprache
    Algorithmus
    Formulierungsfehler a <= b <= c
    Denkfehler (a+b+c)/3 = a statt a=b=c
    Vereinfachungsfehler Linearisierung
    Abbruchfehler
    Auslöschung
    Fehlerfortpflanzung


    Ingolf Giese



    Software Reliability - Ursachen der Software-Probleme

    Ursachen der Software-Probleme (6-7)


    Spezifikation

    Programm behandelt nicht alle Fälle
    Anwender benutzt Programm für andere Zwecke
    Nichtberücksichtigung von Benutzer-Fehlverhalten
    Änderungen während der Programmierphase

    Interface

    Unverständlicher Dialog
    Keine oder unverständliche Fehlermeldungen
    Zu ähnliche Kommandos
    Abkürzungen

    Dokumentation

    Unlesbarkeit der Dokumentation
    Ungenauigkeit
    Textfehler
    Schlechte Strukturierung
    Nichtübereinstimmung mit Programm
    Programm-Kommentare

    Historie

    Veraltete Hardware, Software, Programmiersprachen
    Programme vom Vorgänger vom Vorgänger ...
    Kompatibilitätszwang
    Jede Änderung erzeugt 0.15-0.5 neue Fehler


    Der Mensch als Entwickler/Programmierer

    Ausbildungsqualität
    Begabung
    Mißverstehen der Aufgabe
    Unterschätzung der Aufgabe
    Freak-Verhalten
    Individualistentum
    Kommunikationsprobleme
    Programmierstil
    Überforderung
    Stress, Alkohol
    Faulheit
    Schlamperei
    Unbewußte Sabotage (Angst)
    Bewußte Sabotage
    ...

    Der Mensch als Anwender

    Mißverstehen des Programms
    Fehlbedienung
    Unaufmerksamkeit
    Überforderung
    Unvernunft
    ...


    Ingolf Giese



    Software Reliability - Kuenstliche Intelligenz

    Künstliche Intelligenz (1)


    Maschinelle Nachahmung menschlicher Fähigkeiten


    Vladimir Rencin


    Ingolf Giese



    Software Reliability - Kuenstliche Intelligenz

    Künstliche Intelligenz (2)


    Nachahmung oder Simulation menschlicher Denkweisen


    oder

    Nachahmung von beobachtbarem menschlichen Handeln


    Anwendungsgebiete
    Expertensysteme Wissensverarbeitung
    Sprachübersetzung Technische Dokumentation
    Bildanalyse Intelligente Waffen
    Spiele Schach
    Simulation Politische Vorhersagen
    Neuronale Netze Künstliches Gehirn

    Überwiegend vom Pentagon geförderte Forschung

    Name weckt falsche Erwartungen (wie "Nullwachstum")

    Abhängigmachung von undurchschaubaren Computer- Entscheidungen, die keiner mehr verstehen kann

    Simulation: "Berechnete Verantwortungslosigkeit"

    Zu starke Vereinfachungen erzeugen Scheinphänomene

    Regelbezogene Programmierung: Gefährlich, da Regeln inkonsequent, unvollständig und ungenau

    Forschungen der KI bringen wenig Neues zum Verständnis der menschlichen Intelligenz


    Ingolf Giese



    Software Reliability - Kuenstliche Intelligenz

    SDI (Strategic Defense Initiative)


    "Star Wars"

    Rede von R. Reagan, März 1983

    Technische Probleme weitgehend noch ungelöst
    David L. Parnas (SDI-Software-Berater bis 1985):
    "Software ist die Achillesferse von SDI"

    Anforderungen an die Rechengeschwindigkeit

    200 000 bis 10 000 000 MFlops

    Aufwandsabschätzung

    Bei 100 Millionen Programmzeilen
    und bei 1.5 Zeilen / Tag
    werden etwa 300 000 Mannjahre benötigt
    Dabei sind dann 50 000 Fehler im Programm

    Diese Software ist prinzipiell nicht testbar
    Ihr einziger Einsatz ist nach 30 Minuten beendet

    Zusätzliche Probleme

    Ständiges Anpassen an den aktuellen Stand
    Überlastung des Systems
    Vernetzung/Datenübertragung
    Sabotage kaum verhinderbar

    Einsatz künstlicher Intelligenz wird zwar erwogen,
    kann aber wenig erbringen (wer ist Experte für SDI?)

    NMD (National Missile Defense), 1998 ff.

    Insbesondere: SBL (Space-Based Laser)

    Wird sich kaum von SDI unterscheiden...

    Insgesamt haben die USA bis heute über $ 120 000 Millionen für die Entwicklung von Raketenabwehr ausgegeben. Und dennoch steht bislang kein brauchbares System zur Verfügung.


    Ingolf Giese



    Software Reliability - Zusammenfassung

    Zusammenfassung


    Ihre Vorstellungen vor dem Vortrag (?)

    Datenverarbeitung ist einfach
    Computer machen keine Fehler
    Kleine Fehler stören nicht viel
    Computer = Fortschritt

    Ihre Vorstellungen nach dem Vortrag (?)

    Software ist fast überall (mit zunehmender Tendenz)
    Kleine Fehler können immense Auswirkungen haben
    Auswirkungen von Softwarefehlern werden immer größer
    Software ist unvermeidbar immer falsch
    Fehlermöglichkeit muß akzeptiert werden
    Programme werden größer und undurchschaubarer
    Software ist viel komplexer als Hardware
    Entwicklung ist zu rasant
    Datenverarbeitung kann teuer zu stehen kommen

    Sichere Hardware-Architektur notwendig

    Zuverlässige Programmiersprachen und Umgebungen
    Software-Wünsche auf vernünftiges Maß reduzieren


    Ingolf Giese



    Software Reliability - Literatur

    Literatur (WWW 1-3)


    http://catless.ncl.ac.uk/Risks

    The Risks Digest, Peter G. Neumann (seit 1986: 25000 Berichte)

    http://www.csl.sri.com/users/neumann/illustrative.html

    Illustrative Risks to the Public in the Use of Computer Systems and Related Technology (seit 1976: 3500 Fälle)

    http://www.csl.sri.com/users/neumann/insiderisks.html

    Inside Risks columns, Communications of the ACM (seit 1990)

    http://www.csl.sri.com/users/neumann/risks-new.html

    Computer-Related Risks: New Material (to the Book)

    http://www.rvs.uni-bielefeld.de/publications/abstracts.html

    Peter Ladkin (Uni Bielefeld): Analyse (WBA) von Software-Fehlern

    http://www.rvs.uni-bielefeld.de/publications/Incidents/

    Peter Ladkin: Computer-Related Incidents with Commercial Aircraft

    http://www-courses.cs.uiuc.edu/~cs376/horror.html

    Software Horror Stories

    http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugs.html

    http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html

    T. Huckle: Kleine BUGs, große GAUs - Softwarefehler und ihre Folgen

    http://www.esrin.esa.it/htdocs/tidc/Press/Press96/ariane5rep.html

    ARIANE 5 - Flight 501 Failure, Report by the Inquiry Board

    http://www.uni-mainz.de/~pommeren/DSVorlesung/Grundprobleme/Gefahren.html

    Grundprobleme von Datenschutz und Datensicherheit

    http://wwwipd.ira.uka.de/~prechelt/swt2/node36.html

    Lutz Prechelt (Uni Karlsruhe): Beispiele für Sicherheitsprobleme

    http://www.ima.umn.edu/~arnold/disasters/

    Some disasters attributable to bad numerical computing


    http://standishgroup.com/visitor/chaos.htm

    The Standish Group: Chaos Report

    http://www.newsbytes.com/news/01/165047.html

    Leonard Lee: Glitches of the Week (=> benutze Search für andere Artikel)

    http://dnausers.d-n-a.net/dnetGOjg/Disasters.htm

    Major Airline Disasters

    http://www.wsrcg.com/trenches.htm

    You Call That a System?? I'll See You in Court!!

    http://www.byte.com/art/9509/sec7/art20.htm

    Byte: Notorious Bugs

    http://www.softwareqatest.com/qatfaq1.html

    Some recent major computer system failures caused by software bugs

    http://www.nf.fh-nuernberg.de/pub/veroeffentlichungen/fundsachen/swkrise.htm

    Hopf/Geiger: Software - Krise: Akut oder chronisch?

    http://www.eee.bham.ac.uk/dsvp_gr/roxby/ee4a3/Lecture2/

    Advanced Software Engineering Lecture 2

    http://www.counterpane.com/crypto-gram.html

    Bruce Schneier: Security

    http://www.y2kmistakes.com/biglist.htm

    270 betroffene Web-Sites

    http://www.year2000.com/bugbytes/NFbugbytes.html

    Year 2000 Bug Bytes

    http://www.senate.gov/~y2k/documents/final.pdf

    Y2K Aftermath - Crisis Averted, Final Committee Report

    http://www.usatoday.com/life/cyber/tech/cte233x.htm

    Y2K: It's over, what now?


    http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html

    An Investigation of the Therac-25 Accidents

    http://www.dcs.ed.ac.uk/home/adamd/essays/confirm.html

    Confirm failure

    http://www.heise.de/ct/english/98/19/156/

    Lovisach (c't): What goes up ... The Bug Story

    http://www-pu.informatik.uni-tuebingen.de/users/klaeren/herakles/herakles.html

    Calculemus! Die artifiziellen Paradiese der Informatik

    http://www.businessweek.com/1999/99_49/b3658017.htm

    Business Week: Bad Bug Bites

    http://news.bbc.co.uk/hi/english/uk/newsid_873000/873765.stm

    Air traffic centre plagued by glitches

    http://www.krisennavigator.de/akfo14-d.htm

    Rechenfehler im Pentium-Prozessor von Intel im Sommer 1994

    http://www.spiegel.de/spiegel/0,1518,61594,00.html

    Nirwana der Radkappen

    http://www.flatoday.com/space/explore/stories/1999/050899b.htm

    Faulty software doomed Milstar launch

    http://www.afm.sbu.ac.uk/safety/

    Jonathan Bowen: Safety-Critical Systems

    http://www.info-sec.com/OSsec/OSsec_080498g_j.shtml

    Windows NT Cripples US Navy Cruiser

    http://www.informatik.uni-koeln.de/winfo/prof.mellis/tav/links_inhalt.htm

    Über 400 Links zum Thema "Prüfen und Testen von Software"

    http://www.siliconvalley.com/docs/news/depth/archive/2000/december/nasa120300.htm

    NASA, partners strive to build glitch-free, people-proof computers

    http://www.cnn.com&story=lottery_number@2360696861/winner.html

    CNN - Lottery Winner of the Week: Ingolf Giese


    Ingolf Giese



    Software Reliability - Literatur

    Literatur (1-3)


    Robert L. Glass:
    Software Runaways - Lessons Learned from Massive Software Failure Projects; 1998

    Peter G. Neumann:
    Computer-Related Risks; 1995

    Leonard Lee:
    The Day the Phones Stopped; 1991

    Timm Grams:
    Denkfallen und Programmierfehler; 1990

    Glenford J. Myers:
    Software Reliability; 1976

    W. Wayt Gibbs:
    Software: chronisch mangelhaft, in: Spektrum der Wissenschaft 12; 1994

    Bev Littlewood, Lorenzo Strigini:
    The Risks of Software, in: Scientific American 11; 1992

    Joseph Weizenbaum:
    Es ist wie eine Gier, Interview in: DIE ZEIT 47; 1988

    Rüdiger Valk:
    Der Computer als Herausforderung an die menschliche Rationalität, in: Informatik-Spektrum 10; 1987

    David L. Parnas:
    Software Wars-Ein offener Brief, in: Kursbuch 83; 1986


    W. Schönwandt:
    Denkfallen beim Planen; 1986

    H. Kopetz:
    Software-Zuverlässigkeit; 1976

    John Gall:
    How Systems Work and Especially How They Fail; 1975

    Gerald M. Weinberg:
    The Psychology of Computer Programming; 1971

    M.M. Waldrop:
    Phobos at Mars: A Dramatic View - and Then Failure, in: Science 245; 1989

    M.M. Waldrop:
    Congress Finds Bugs in the Software, in: Science 245; 1989

    M.M. Waldrop:
    The Hubble Space Telescope Compute, in: Science 243; 1989

    K.H. Bläsius, J.H. Siekmann:
    Computergestützte Frühwarn- und Entscheidungssysteme in: Informatik Spektrum 10; 1987

    Nancy G. Leveson:
    Software Safety: Why, What, and How, in: ACM Computing Surveys 18; 1986

    Herbert Lin:
    Software für Raketenabwehr im Weltraum, in: Spektrum der Wissenschaft 2; 1986


    Faye Flam:
    Pop! Goes the Pulsar Planet, in: Science 255; 1992

    E.L. Andrews:
    The Precarious Growth of the Software Empire, in: The New York Times, Juli 91; 1991

    DIE ZEIT:
    Computer Special, ZEIT Magazin 11; 1991

    David L. Parnas, J. van Shouwen, Shu Po Kwan:
    Evaluation of Safety-Critical Software, in: Communications of ACM 33; 1990

    R.P. Laeser, W.I. McLaughlin, D.M. Wolff:
    Fernsteuerung und Fehlerkontrolle von Voyager 2, in: Spektrum der Wissenschaft 1; 1987

    E.J. Joyce:
    The Art of Space Software, in: Datamation 31; 1985

    V.R. Basili, B.T. Perricone:
    Software Errors and Complexity: An Empirical Investigation, in: Communications of ACM 27; 1984

    D. Norman:
    Design Rules Based on Analysis of Human Error, in: Communications of ACM 4; 1983

    Robert L. Glass:
    Persistent Software Errors, in: IEEE Transactions on Software Engineering 7; 1981


    US General Accounting Office:
    Patriot Missile Defense: Software Problem Led to System Failure, GAO/IMTEC-92-26; Februar 1992

    DIE ZEIT:
    Tödlicher Programmabsturz, in: DIE ZEIT 19; 1992

    Nick Kotz:
    Wild Blue Yonder, Money, Politics, and the B-1 Bomber; 1988

    Bibliographisches Institut:
    Duden Informatik; 1988

    Grant Johnson:
    SDI und der Einbruch des Phantastischen, in: Kursbuch 83; 1986

    Bernd Mahr:
    Poker-Phase oder Die Unberechenbarkeit einer Vision, in: Kursbuch 83; 1986

    James J. Horning:
    Kampfführung - Reisebericht von einer zukünftigen Front, in: Kursbuch 83; 1986


    Ingolf Giese



    DSGVO-Hinweis und Impressum