Bugs in der STL



  • Was genau bedeutet eigentlich "fehlerfrei"?



  • knivil schrieb:

    Weitere Beispiele: Wie witschaftlich ist es wenn Autohersteller ihre Autos zurueckrufen muessen wegen eines Softwarefehlers?

    Bleib lieber bei deiner Medizin... Bei dem was mir bei Steuergerätsoftware an Code untergekommen ist 😮 . Das war hässlichstes C! Das ist mit Sicherheit nicht fehlerfrei, auch wenn es die Testfälle bestanden hat 😉



  • Schlechte Beispiele als Argumente fuer die Unmoeglichkeit fehlerfreier Software? Lol!

    Gegenbeispiel: Die automatische Steuerkorrketur von Flugzeugen wird in heutigen Maschinen von 3 unabhängigen Firmen implementiert. Der Steuercomputer berechnet dann die Befehle aller 3 Programme in Parallel und führt die Mehrheitsentscheidung aus.

    Ich rede von Software, reiner Software. Einfacher Grund: Dinge bleiben ueberschaubar. Geringe aeussere Einfluesse. Dein Beispiel akzeptiere ich nicht. Auch bei Automobilen konzentriere ich mich auf den Softwareteil. D.h. aber nicht, dass Software davon ausgehen sollte, die Hardware funktioniert fehlerfrei. Das Bewusstsein ueber Hardware sollte sich dennoch in der Software wiederspiegeln.

    Und ohne beweisbare korrektheit hast du keinen Beweis für ein fehlerfreies Programm.

    Es geht mir nicht um Beweisbarkeit. Beweisbarkeit ist auch nicht zwingend Teil des Entwicklungsprozesses. Sicherheit kann auch ohne Beweisbarkeit durch den Entwicklungsprozess gewaehrleistet werden.



  • Die Fehlerfreiheit einer Software zu zeigen erfordert doch Argumentation. Wer also fehlerfreie Software schreiben kann, sollte also zur Argumentation befähigt sein. Also: bitte argumentiere! Bis jetzt lese ich nur heraus, dass Du Fehler in Software finden kannst -> Gegenargumentation. Ich möchte lieber Deine Meinung vertreten sehen, als die Meinung anderer zerstört...



  • Wer es vergessen hat, Ausgangspunkt ist:

    knivil schrieb:

    Kein Programm ist fehlerfrei (wenn man vielleicht einmal von einem Hello World absieht)

    Bullshit!

    Die Fehlerfreiheit einer Software zu zeigen erfordert doch Argumentation.

    Ich moechte nicht die fehlerfreiheit beweisen. Aber fuer dich wiederhole ich mich nochmals: Es gibt viel Literatur ueber Entwicklungsprozesse. Diese sind in den einzelnen Industriezweigen verschieden. Bei mir reichen Disziplin und Unittests gekoppelt and Memoryleak und code coverage tools aus. Letztere sind hilfreich, dienen aber hauptsaechlich dazu, andere zu ueberzeugen. In anderen Bereichen kommen spezielle Sprachen/Tools/Standards zum Einsatz, die Fehler auszuschliessen zu versuchen. Beispiel: LabView oder AutoSar. Konzepte aus diesen Bereichn koennen auch anderswo angewandt werden.



  • definiere Fehlerfrei.



  • ichhoffedasistrichtig schrieb:

    definiere Fehlerfrei.

    Und jetzt gehts los wie in den Glaubensthreads. Ein eher weiches Problem (software) wird versucht mathematisch zu erschlagen, weil keine geeignete Definition gefunden werden kann.

    Ansonsten: fehlerfrei - frei von Fehlern! Lol!



  • Du behauptest, "fehlerfreie" Software produzieren zu können. Fehlerfreiheit ist, wie otze bereits erwähnt hat, empirisch rein prinzipiell nicht beweisbar, bleibt also nur ein formaler Beweis. Wenn du aber "fehlerfrei" nichtmal definieren kannst, dann ist sowohl die Diskussion hier völlig sinnlos, als auch ein formaler Beweis rein prinzipiell nicht möglich...



  • Das etwas Fehlerfrei ist, halte ich für einen "Glauben". Deswegen ja die Glaubensdiskussion.

    Ich kann aber der Meinung / dem festen Glauben haben das meine Entwicklung in dem Rahmen meines aktuellen Wissensstand und der aktuellen Anforderungen von Außen Fehlerfrei ist. Auf Basis dieser Entwicklung entwerfe ich dann meine Klassen. Das Codiere ich dann. Jeder einzelne Schritt muss dann so fehlerfrei umgesetzt werden das auch die anfängliche Entwicklungsarbeit immer noch so "fehlerfrei" repräsentiert wird.

    Für mich nicht machbar. Zumal sich eh alle paar Jahrzehnte alles wieder ändert.



  • dot schrieb:

    Du behauptest, "fehlerfreie" Software produzieren zu können. Fehlerfreiheit ist, wie otze bereits erwähnt hat, empirisch rein prinzipiell nicht beweisbar

    1.) Existenz und Beweisbarkeit sind zwei Paar Schuhe. Nichbeweisbarkeit macht keine Aussage ueber Existenz.
    2.) Die Ausgangslage ist anders, verdrehe bitte nicht die Tatsachen.

    formaler Beweis

    Nun, formalisierte Softwareentwicklungsprozesse sind dazu gedacht, fehlerfrei Software zu produzieren ohne des expliziten Beweises. Auch traegt der Beweis selbst nicht zum Entwicklungsprozess bei. Wenn er moeglich ist, bestaetigt nur, was ich bereits weiss. Fuer mich also nutzlos.

    Jeder einzelne Schritt muss dann so fehlerfrei umgesetzt

    Nein, waehrend des Entwicklungsprozesses koennen Fehler auftreten und korrigiert werden.

    Außen Fehlerfrei ist

    Ist die Unterscheidung zwischen innen und aussen wichtig?



  • Gut, d.h. "fehlerfreiheit" bedeutet für dich also z.B., dass alle Unit Tests fehlerfrei durchlaufen!? In dem Fall hast du natürlich recht, imo ist das aber kein ausreichender Nachweis, auf dessen Basis man behaupten könnte, eine Software sei frei von Bugs. Die Unit Tests selbst, ja sogar die Definitionen der Anforderungen, für die du deine Software entwickelst, können bereits fehlerbehaftet sein...

    knivil schrieb:

    dot schrieb:

    Du behauptest, "fehlerfreie" Software produzieren zu können. Fehlerfreiheit ist, wie otze bereits erwähnt hat, empirisch rein prinzipiell nicht beweisbar

    1.) Existenz und Beweisbarkeit sind zwei Paar Schuhe. Nichbeweisbarkeit macht keine Aussage ueber Existenz.

    Richtig, wie aber willst du in dem Fall Existenz beweisen, ohne zumindest ein existierendes Beispiel zu geben?



  • Selbst rock solide Software wie zB die bash haben riesige Bugfix Listen.

    Fehlerfreie Software ist eine Utopie. Ich habe noch keine einzige gesehen.



  • dot schrieb:

    Gut, d.h. "fehlerfreiheit" bedeutet für dich also z.B., dass alle Unit Tests fehlerfrei durchlaufen!? In dem Fall hast du natürlich recht, imo ist das aber kein ausreichender Nachweis, auf dessen Basis man behaupten könnte, eine Software sei frei von Bugs. Die Unit Tests selbst, ja sogar die Definitionen der Anforderungen, für die du deine Software entwickelst, können selbst bereits fehlerbehaftet sein...

    UnitTests sind notwendig, muessen nicht hinreichend sein. Hoer auf mir Worte in den Mund zu legen. Desweiteren weiss ich was alles fehlerbehaftet sein kann. Genausogut koennen sie fehlerfrei sein. Sie koennen widerspruechlich sein, genausogut koennen sie sich nicht widersprechen.

    Fehlerfreie Software ist eine Utopie. Ich habe noch keine einzige gesehen.

    Und deswegen ist es unmoeglich?

    Ich widerhole meine Frage: Was fehlt euch, um fehlerfrei Software zu produzieren? Vielleicht leichtere Frage: Was fehlt euch, um bessere Software (in Bezug auf Fehlern) zu produzieren?



  • knivil schrieb:

    Ich widerhole meine Frage: Was fehlt euch, um fehlerfrei Software zu produzieren?

    Die Möglichkeit, Fehlerfreiheit formal zu beweisen?

    [url]http://en.wikipedia.org/wiki/Russell's_teapot[/url] ...



  • Die Möglichkeit, Fehlerfreiheit formal zu beweisen?

    Ist nicht Teil des Entwicklungsprozesses, steht maximal ganz am Ende. Ueberprueft nur das Produkt, erzeugt es nicht.





  • Existenz und Nichtexistenz sind unterschiedliche Seiten einer Medallie. Softwareentwicklung ist gluecklicherweise verschieden von von reiner Mathematik. Auch fuer dich als Erinnerung: Diese Diskussion entstand aufgrund der Aussage:

    Kein Programm ist fehlerfrei (wenn man vielleicht einmal von einem Hello World absieht)

    Diese Aussage stammt nicht vom mir.



  • Von dir stammen folgende Aussagen:

    knivil schrieb:

    1.) Module koennen fehlerfrei geplant werden
    2.) Module koennen fehlerfrei implementiert werden.
    3.) Module koennen entkoppelt werden.
    4.) Module koennen fehlerfrei verknuepft werden.

    Das mag an sich nicht unbedingt direkt falsch sein, aber nur weil all diese Dinge möglich sind, heißt das noch lange nicht, dass es auch praktisch möglich ist und fehlerfreie Software tatsächlich existiert. Anyway, ich klink mich mal aus. Ich halt diese Diskussion nichtmehr wirklich für sinnvoll...



  • knivil schrieb:

    Fehlerfreie Software ist eine Utopie. Ich habe noch keine einzige gesehen.

    Und deswegen ist es unmoeglich?

    Nichts ist unmöglich. Aber wie wahrscheinlich ist es?
    Vielleicht erfindet ja noch irgendjemand irgendwann mal eine Möglichkeit. Aber das scheitert ja schon an so simplen Sachen wie das dynamische Ändern der Anforderungen. Dann gibt es unterschiedliche Hardware, da muss man Treiber verwenden die man nicht verifizieren kann weil es zuviel Zeit kosten würde. Etc.

    Das alles macht es halt enorm unwahrscheinlich dass man wirklich Fehlerfreie Software erstellen kann. Selbst die bash ist es nicht und das ist eine ewig alte rock solide Software die unmengen an Usern täglich hat.

    Ich widerhole meine Frage: Was fehlt euch, um fehlerfrei Software zu produzieren? Vielleicht leichtere Frage: Was fehlt euch, um bessere Software (in Bezug auf Fehlern) zu produzieren?

    1. die Beweisbarkeit
    2. Zeit

    Mit unendlich Zeit ist es easy - ich investiere einfach unendlich lange ich Bugsuche - bis ich alle gefunden habe. Da ich nie weiss wann ich den letzten gefunden habe, brauche ich halt unendlich lange. Das ist aber etwas unpraktikabel - deshalb bestimmt man idR einfach einen gewissen Zeitraum in dem man nach Bugs sucht und wenn man dann keine mehr findet, dann sagt man die software ist "Fehlerfrei". Was sie natürlich dennoch nicht ist.



  • @Knivil: Keine einzige Software von Autos, Flugzeugen, Raumfähren und Stationen besitzt 100% fehlerfreie Software. Wie lange bist du in der Branche, eine Femtosekunde? 😃


Anmelden zum Antworten