Dr. Martin Warnke
20.12.1999
Themen:
Ein Fehler liegt vor, wenn das Computersystem nicht tut, was es soll.
Woran mißt man dies? Wie wird genau festgelegt, "was ein Computer tun soll"?
Was ein Computer tatsächlich tut, sollte durch das Programm und die zur Ausführung beteiligte Hardware festgelegt sein. Es ergeben sich also folgende Fehlerszenarien:
1. Das Programm schreibt andere als eigentlich intendierte oder vernünftigerweise erwartete Funktionen vor, weil
- die Absicht nicht korrekt umgesetzt wurde (Spezifikations- oder Programmierfehler)
- jemand das System manipuliert hat (Viren, Hacking, Sabotage).
2. Die Hardware ist fehlerhaft, weil
- sie defekt oder beschädigt ist oder
- weil sie nicht korrekt gefertigt wurde (Entwurfsfehler).
Aus dem Bereich der Hardwarefehler stammt der Begriff des "Bug": des Fehlers ganz allgemein. Abgeleitet sind "Debuggung": Fehlersuche, gelegentlich mit Hilfe spezieller Software, der "Debugger".
Aber: der "Bug" war eine Motte, die 1945 im Mark I unter General Grace Hopper Elektrik-Probleme verursachte:
Ein "Bug" ist also eigentlich ein Defekt, wird aber seitdem als Begriff hauptsächlich für Software-Fehler verwendet.
Fehlerhafter Hardware-Entwurf bedeutet, daß bestimmte Funktionen auf einem Chip, etwa dem Prozessor, fehlerhaft in Hardware implementiert wurden.
So wurde 1994 etwa der Pentium-Bug berüchtigt, weil er Rechenungenauigkeiten bei Fließkomma-Divisionen in unüblichem Maße produzierte, Intel aber zunächst den Fehler leugnete oder schönreden wollte. Schließlich wurden die Chips ausgetauscht.
Immer gibt es Fehler bei Rechenvorgängen in allen handlesüblichen Computern, die Rundungsfehler, die aufteten, wenn eine Zahl zum Zwecke der Speicherung auf die vorgesehene Zahl digitaler Speicherstellen zurechtgestutzt wird.
Etwa:
Die Zahl 1/5 oder dezimal 0,2 hat folgende Darstellung im Binärsystem:
1:101=0,001100011000110001100011000..., es entsteht also ein periodischer Binärbruch mit der Periode 00011.
Bricht man die Zahlstarstellung also irgendwo ab, macht man einen Rundungsfehler, denn man läßt ja signifikante Stellen unter den Tisch fallen. Dann wird es plötzlich wichtig, in welcher Reihenfolge Operationen durchgeführt werden:
Der Prozeß der Softweareentwicklung ist im Rahmen dieser Vorlesung beschrieben worden.->
Es war von verschiedenen Sprach- und Abstraktionsebenen die Rede, die folgendes Faktum implizieren:
Die Sprachebene der Tatbestände, die als Software implementiert werden sollen, ist mit der Sprachebene der Software selbst unvereinbar. Diese Tatbestände lassen sich nämlich typischerweise nicht mathematisch-formalsprachlich ausdrücken. Hinweis darauf sind die vielen Dokumente, die im Prozeß der Systementwicklung entstehen (Pflichtenheft, Entwurfsspezifikation, Programmtext), die versuchen, diese Kluft zwischen verschiedenen Ebenen zu überbrücken.
Grund dafür ist der Umstand, daß Arbeitsprozesse, um die es ja meist geht, soziale Prozesse sind, die sich eben nicht präzise und unzweideutig formelhaft ausdrücken lassen, sondern oft während des aktuellen Prozesses ausgehandelt werden müssen.
Also muß man einerseits Computerfunktionen intendieren, sie andererseits formalsprachlich im Rechner implementieren. Hierbei entstehen Brüche und Bedeutungsverschiebungen. Immer, wenn wir nicht verstehen, welche Eingaben von uns verlangt werden, liegt ein solcher Spezifikationsfehler vor.
Berühmt geworden ist der Fehler, der die Mariner-Sonde an der Venus vorbei fliegen ließ.
Statt
DO 3 I=1,3
wurde geschrieben
DO 3 I=1.3
Ein Komma wurde also mit einem Punkt verwechselt, mit der Folge, daß statt der Zählschleife, die Variable I von 1 bis 3 heraufzuzählen, die Initialisierung einer Variablen DO3I mit dem Wert 1.3 erfolgte. In der von Menschen verwendeten Schriftsprache sind Leerstellen signifikant, in FORTRAN nicht, in ersterer bleibt der Sinn bei Verwechslung von Punkt mit Komma weitestgehend erhalten, in letzterer nicht.
Ein anderer berühmter Fehler ist der Y2K-Bug. Er besteht darin, daß sehr oft Jahreszahlen nicht vier- sondern nur zweistellig kodiert und gespeichert wurden, implizit die Entwickler also davon ausgegangen sind, daß das Jahrhundert die Nummer 19 hat.
Ein großes Problem entsteht nun beim Übergang zum Jahr 2000. Die implizite Annahme von oben führt dann zu fehlerhaften Resultaten: 00 wird dann in den Programmen als 1900 interpretiert, auch wenn vom Menschen "2000" gemeint war.
Der Fehler kann auf verschiedenen Ebenen auftreten:
- hardwareseitig, weil die Systemuhren nur zwei Jahresstellen verarbeiten,
- betriebssystemseitig, weil dieses nur zwei Stellen kennt oder
- seitens der Anwendungsprogramme, weil diese nur zwei Stellen berücksichtigen.
Besonders problematisch sind die in Geräte eingebetteten Chips, von denen oft nicht bekannt sind, wie sie Zeitangaben verarbeiten. Hier ist das Problem, daß man die Systeme nicht testen kann wie Computer, sie können also irgendwann versagen, etwas, weil sie sich aufgrund einer falschen Jahreszahl-Interpretation abschalten.
Hier zwei bezeichende Meldungen aus einem Forum über Computer-Risiken:
15. August 1999
Y2K upgrade went 'horribly wrong', admits utility giant
"Edelson, Doneel" <doneeledelson@aciins.com>
Thu, 12 Aug 1999 16:55:51 -0400
London Electricity has admitted its Y2K upgrade for 400,000 prepayment customers (costing 2 million pounds) went ``horribly wrong'', leaving 2000 customers without power and light for days, and another 2000 having ``difficulties''. The process of providing new Rechargeable Powerkeys to customers was in progress, but for a fourth of the clients the payment credit did not get transferred or their meters were corrupted. A similar upgrade in Sussex was done at the same time, which compounded the problems. [Source: Mike Simons, *Computer Weekly News*, 12 August 1999; PGN-ed]
19. Juni 1999
Y2K test sends sewage flowing in Los Angeles
Henry Baker <hbaker@netcom.com>
Fri, 18 Jun 1999 06:45:45 -0700
A supposedly routine test of LA's Y2K readiness of the emergency preparedness system at the San Fernando Valley sanitation plant caused about 4 million gallons of raw sewage to be dumped into the Sepulveda Dam area. A gate to a major sewer pipe closed without warning because of a programming error. [Source: article by Miguel Bustillo, Karima A. Haynes, Patrick Mcgreevy, http://www.latimes.com/HOME/NEWS/FRONT/t000054865.html, *L.A. Times*, 18 Jun 1999; PGN-ed]
Die E-Mail eines deutschen RZ-Leiters drückt Besorgtheit folgendermaßen aus:
"Liebe Kollegen,
in einer von der Bundesregierung initiierten Arbeitsgruppe, der ich angehoere, haben wir mit Energieversorgern die Y2k-Problematik diskutiert. Und zwar wird es zum Jahreswechsel nach deren Einschätzung mit hoher Wahrscheinlichkeit zu einem oder mehreren kurzen, 10 Minuten dauernden, oder wenigen, langen Stromausfällen kommen.
Die großen Stromversorger trauen offensichtlich selbst der zertifizierten Y2K-Sicherheit ihrer Kraftwerke nicht und haben Notfallprogramme erstellt, da das deutsche Stromnetz einen gleichzeitigen Ausfall mehrerer (insb. ost-europäischer) Anlagen nicht verkraften kann. Zusätzliche Zusammenbrüche werden befürchtet da eine Anzahl Großverbraucher vor Mitternacht vom Netz und danach wieder ans Netz gehen werden, was zu Instabilitäten und Überspannungen führen kann.
Da die Server des hiesigen Universitätsrechenzentrums durch eine unterbrechungsfreie Stromversorgung nur für maximal 10 Minuten abgesichert sind, diskutieren wir z.Zt., um Schaden durch ungeplantes Abschalten zu vermeiden, die Server des URZ, der UB und einiger Institute/Kliniken vom 31.12.99, 18.00 Uhr bis 1.1.2000, 6.00 Uhr abzuschalten.
Mich wuerde es interessieren, ob sich jemand aus unserem Kreis mit ähnlichen Überlegungen befaßt.
Mit freundlichen Grüßen"
Hier findet sich ein aufschlußreicher Artikel zum Thema.
Minister Müller ist allerdings ganz gelassen. Er sagt:
"MÜLLER: Die deutsche Stromversorgung ist umfänglich vorbereitet. Es passiert zu 100,0 Prozent an diesem Tag nichts, was nicht auch an anderen Tagen durch eine ganz normale Panne geschehen könnte. Vor partiellen Ausfällen ist man nie gefeit."
Prof. Dr. Brunnstein hat eine informative Webpage aufgelegt, die auch detaillierte Angaben zur Y2K-Festigkeit von Betriebssystemen und Anwendungssoftware enthält.
Faustregel: Windows und DOS bis Windows 95 sind nicht Y2K-fest, das Macintosh-OS war es schon immer.
Auf derselben Seite liegen Informationen zum Thema Computerviren.
Computerviren sind Programme, deren Funktion es ist, eine Kopie von sich selbst anderen Programmen anzuhängen und diese Wirts-Programme so zu modifizieren, daß diese wiederum, wenn gestartet, für die Weiterverbreitung des Virus sorgen.
Typischerweise gelangt ein solches "infiziertes" Programm von außen in ein Rechnersystem: über das Internet oder per Datenträger. Startet man das Programm, kopiert es den Virus in das Betriebssystem, das dann für weitere Verbreitung, also Infektion bisher noch nicht betroffener Programme, sorgt.
Viren können harmlos sein, also vielleicht nur ihre eigene Verbreitung verursachen, aber auch Systemabstürze, Datenverlust, das Lahmlegen ganzer Firmennetze verursachen.
Nähere Informationen über Windows-Viren findet man wieder bei Prof. Brunnstein.
Können E-Mails Viren enthalten?
Ja und nein.
Nein, weil E-Mails typischerweise keine Programme sind, also auch nicht für die Verbreitung von Viren eingesetzt werden können, mithin nicht "infiziert" werden können, nicht "ansteckend" sein können.
Ja, weil manche Software-Firmen die Unterscheidung zwischen Daten und Programmen aufheben, nämlich durch den Programmtyp "Makro".
Ein Makro ist eine Sequenz von Anweisungen an das Anwendungsprogramm in einem Dokument, die üblicherweise zur Automatisierung von Prozessen durch das Anwendungsprogramm verwendet wird: Formatierung, Ausdruck, Versandt des Dokuments per E-Mail, Löschen überflüssiger Kopien von der Platte, u.s.w.
Erhält man also solch ein Dokument per Mail und öffnet es mit seinem Anwendungsprogramm, können Programme ablaufen, die Virus-Charakter tragen. Sind die E-Mail-Programme selbst Makro-Programmierbar, sind E-Mail-Makro-Viren Tür und Tor geöffnet. So geschehen mit dem "Melissa"-Virus, der in diesem Jahr mehreren Unternehmen schweren Schadsen zugefügt hat.
Allerdings setzen diese Viren voraus, daß die Mails mit bestimmten Programmen geöffnet werden. Betroffen sind in allererster Linie die Produkte von Microsoft. Bitte schauen Sie in der Brunnstein-Page nach detaillierten Informationen.
Gegen Computer-Virus-Befall schützt man sich durch:
- Safer Computing, indem keine Programme startet, ohne sie vorher auf Viren überprüft zu haben, also
- Virenschutz-Programme installiert, die das für einen tun.
- Gegen Makroviren schützt man sich zusätzlich, indem man das automatische Ausführen von Makros in den Anwendungen selbst abschaltet.
Kostenlose Virenschutz-Programme findet man auf unserer Service-Seite für Studierende.