Erich Ganspoeck wrote:
>
> August Hörandl wrote:
>
> > ist doch eine gute Ausrede: "der Computer macht das falsch" - nur
> > leider machen Computer keine Fehler
>
> Na ja. Da gab es einmal einen Pentium, der machte bei einigen Befehlen
> tatsächlich Fehler. Auf die ist der Normalverbraucher gar nicht
> gekommen, sondern erst ein Spezialist, dem manches Ergebnis nicht
> gefiel.

der pentium machte keinen fehler - die maske war falsch; da aber das niemand bei intel "ausprobiert" (im sinn von testen) hat ...

warum zerstört zb. bmw jährlich mehrere 100 schöne autos um die sicherheit zu testen ? wenn es nicht geht wird es schon jemand merken und eine fehler melden ...

> > nur die Programmierer die auch nur Menschen sind
>
> Genau. So habe ich es auch im Prinzip gemeint.
>
> > kann
> > man fehlerfreie Programme sehr wohl schreiben bzw. die Fehler im
> > Griff haben. Und Tests vor der Ausführung durchführen.
>
> Da muss ich jetzt deutlich widersprechen. Wir sind uns wohl einig,
> dass ich nicht vom berühmten Programm sprach, das "Hello World" am
> Bildschirm produziert. Große Applikationen mit Tausenden Befehlszeilen
> enthalten Fehler, glauben Sie mir das.

ich glaube es gerne - nur welches naturgesetzt bestimmt das ?

> (Ich hoffe, dass sich in diesem Forum auch Experten melden und die
> üblichen Fehlerraten angeben.)

ich fühle mich als experte - ich habe bei der fa. alcatel 5 jahre software für eisenbahnstellwerke programmiert; da muss man beweisen das man keine fehler hat, sonst darf man nicht einmal einschalten (und eisenbahnstellwerke sind sicherheitstechnisch in der gleichen klasse wie atomkraftwerke, viel sicherer als flugzeuge)

ist immer eine frage des aufwands

http://www.fastcompany.com/online/06/writestuff.html
# But how much work the software does is not what makes it remarkable. What makes # it remarkable is how well the software works. This software never crashes. It
# never needs to be re-booted. This software is bug-free. It is perfect, as # perfect as human beings have achieved. Consider these stats : the last three
# versions of the program -- each 420,000 lines long-had just one error each. The
# last 11 versions of this software had a total of 17 errors. Commercial programs
# of equivalent complexity would have 5,000 errors.

ok - so ein Aufwand wie die nasa treiben wenige; aber der faktor 5000 sollte einem zu denken geben; und unter diesem vorwand kann eine firma 100*5000 so viele fehler machen - ist halt pech ;-) das kann es wohl nicht sein

und es kann nur niemand nachweisen - welcher programmierer weiss schon wie viele fehler er macht -- software engineering ist ein märchen

> > Oder wie funktionieren Autopiloten, Steuerungen von Atomkraftwerken
> > sonst ?
>
> Soviel ich weiß, haben moderne Flugzeuge drei unabhängige Systeme, die
> ihre Ergebnisse ständig miteinander vergleichen und nach
> Majoritätsentscheidungen agieren.Über die Sicherheit von
> Atomkraftwerksteuerungen wage ich keine Aussage.

das ist ein punkt - aber wenn die drei systeme viele fehler haben, dann stellt sich die zwei fragen:

- wie stellt man sicher das nicht 2 gleichzeitig einen blödsinn machen ? die
dafür wichtige nebenbedingung: alle 3 systeme müssen fast fehlerfrei
sein

- und wenn sich jetzt einer irrt - was dann ? den bösen ausschalten -dann
hat man nur noch zwei, und beim nächsten fehler ein ganz grosses
problem (darum hat das shuttle teilweise 5 systeme - weil ein space shuttle
so schwer stoppen und dann neu zu starten ist ;-))

Anmerkung:
genau so etwas habe ich programmiert - und ich bin stolz darauf, das es von mir software gibt die zig fach eingesetzt ist und seit über 5 jahren keine neue version erfordert hat -- und wenn sie aus salzburg mit dem zug ausgefahren sind, dann haben sie sie auch schon einmal "benutzt"

> >Oder eine Beispiel für ein "normales" Programm: Tex - seit1995 wurde
> >kein
> Fehler >gefunden
>
> OK, das freut mich natürlich. Aber um jetzt zu zeigen, wie ich das
> meine: wenn Sie beispielsweise die Taste F10, S und Entf gleichzeitig
> drücken, läuft dann das Programm in jeder Situation fehlerfrei weiter?
> Wenn mitten in einer Eingabe der Strom ausfällt, läuft dann das
> Programm fehlerfrei nach Wiedereinschalten

das ist jetzt an den haaren herbeigezogen - aber eisenbahnstellwerke müssen auch dann noch reagieren und die züge zum stehen bringen -- wenn es gefordert wird kann man so etwas auch realisieren

> weiter? Und was ist, wenn Sie die Tasten 4 und Pos1 gleichzeitig
> drücken, wenn .... Wollen Sie wirklich versuchen, alle möglichen
> Tastenkombinationen an allen möglichen Programmstellen auszutesten?
> Und das sind nur die äußeren

1) nächster prizipieller fehler: mit einem test kann man nur fehler nachweisen,
niemals aber die fehlerfreiheit da man nie "alle" varianten testen kann

2) gute programmier rechnen mit jeder dummheit des benutzers - es muss nur eine sinnvolle behandlung aller "jetzt nicht zu drückenden" tasten geben, dann ist selbst das testbar

> Einflussmöglichkeiten. Das meine ich, wenn ich sage, dass niemand
> sicher sagen kann, dass ein Programm fehlerfrei läuft.

"meine" eisenbahnstellwerke werden auch mit compilerfehlern, kippenden bits (bei 30 jahre laufzeit kommt so etwas vor) etc. fertig - und da gibt es leute die
unterschreiben und haften dafür

> > Es gibt keine Testfälle (ein oder mehrere Eingabefiles und
> > kontrollierte Ausgabedatein dazu) die automatisch bei jeder Version
> > durchlaufen werden. Wobei diese Testfälle auch alle Sonderfälle und
> > Fehler der vorigen Versionen umfassen
>
> Ich verstehe leider nicht ganz, was Sie hier meinten. Vielleicht passt
> aber das
> folgende:
> Nach welchen Gesichtspunkten legen Sie diese Testprogramme an? Nach welcher
> statistischen Wahrscheinlichkeit können Sie dann festlegen, dass das gesamte
> Programm mit allen Sonderregelungen (unser Gehaltsprogramm beispielsweise muss
> angesichts der tausenden verschiedenen Fallmöglichkeiten so ein Ungetüm sein)
> fehlerfrei läuft?

mit der argumentation beweisen sie das es so ein programm nicht geben kann - und das ist sicher falsch

dann muss man entweder besser entwurfsverfahren verwenden oder vielleicht schon bei der erstellung der anforderungen auf die "berechenbarkeit" achten

bei den stellwerken hat die alcatel der oebb fehler in den anforderungen nachgewiesen indem das "fertige" programm verweigert hat - bis zu einem gewissen grad sind auch anforderungen testbar

was ich aber meine:
ein eingabe file - mit vielen sonderfällen - die ausgabe des programms wird kontrolliert. gemeldete bugs werden zum file als weitere sonderfälle dazugefügt. bei der nächsten programmänderung wird das eingabefile nachmals verwendet und die ausgabe wieder verglichen - das wäre ein minimaler ansatz

wenn eine neue version bei dingen, die frühere versionen konnten, probleme haben, dann ist das ein "testproblem"

> Trotzdem bleibe ich optimistisch, dass alle Programme, die ich
> verwende, bei meinen Anwendungen keine Fehler machen. Beim
> Gehaltsprogramm bin ich allerdings gezwungen, dies zu glauben. Das
> macht mich schon nervös.

sie verlassen sich so oft am tag darauf das programme keine fehler
machen: vom
aufzug, über die ampel, die steuerung der strassenbahn/u-bahn/eisenbahn ...

mfg
August Hörandl

--
August Hörandl august.hoerandl@gmx.at
Linux. It is now safe to turn on your computer.
--
Diese Liste wird vom Computer Communications Club (http://www.ccc.at) betrieben. Um sich aus der Liste austragen zu lassen, senden Sie ein e-mail an majordomo@ccc.at mit dem Befehl "unsubscribe lehrerforum" im Nachrichtentext.