warum wird man eigentlich nie eine fehlerfreie komplexe software haben ?
-
Hi,
[quote="volkard]
ich sage nicht, daß jedes hunderttausend-zeilen-programm korrekt sei. nichtmal, daß es ein korrektes zur zeit gibt. ich sage nur, daß keiner beweisen kann, daß es unmöglich sei. und zwar, weil es (wenn auch mit einer für praktische belange viel zu geringen wahrscheilnichkeit) möglich ist.
[/quote]also wenn ich das richtig sehe, behauptest du, es gibt unter umständen fehlerfreie 100000-zeilen programme. das kann ja auch durchaus so sein, keiner wird dir das gegenteil beweisen können, genausowenig aber kannst du zeigen, dass eben dieses programm fehlerfrei ist. testen zeigt niemals die abwesenheit von fehlern, und außer testen hat man ja wohl keine chance. einen beweis führen wie in der mathematik geht nicht, dafür fehlen die grundlagen, wo fängt man an mit dem beweis?! testen ist ja immer endlich, ein beweis muss für alle gelten. das problem ist, würd ich sagen, nicht, das software nicht per se fehlerbehaftet ist, sondern das es einfach nicht möglich ist, das gegenteil zu zeigen.
-
volkard schrieb:
würde deine dumme these richtig sein, daß jedes hunderttausen-zeilen-programm mindestens einen fehler hat, dann hätte doch auch jedes um diesen fehler bereinigte hunderttausenzeilenprogramm mindestens einen fehler. ad infinitum. also hätte jedes hunderttausenzeilenprogramm entweder unendlich viele fehler. ad absurdum. mit dem ausweg, daß es beweisbar unfindbare fehler gibt. das ist aber harter tobak. willste diese these wirklich haben?
Ja ! das würde ich gerne lesen !
Dumme These hin und her: Fehlerhaftigkeit ist nicht beweisbar.
Hinzu kommt ja noch eine weitere latente Fehlerquelle: der Compiler , ist doch auch nur eine Software, und wer sagt mir, dass da alles 100% korrekt läuft.
Aber es wurde hier schon oft gesagt, die Spezifikationen sind IMHO eigentlich der Kern des Problems. Denn allein die Komplexität der zu spezifizierenden Probleme, der Interaktion der Softwarelösung in der umgebenden Organisation, die Komplexität der kognitiven Erfassung der vom Computer verarbeitbaren Information durch den Menschen und ergo damit grundlegenden Umgangs mit Software und die Komplexität des Herstellungsprozesses in vielerlei Hinsicht sind nicht fehlerfrei, bzw. werden immer anders interpretiert durch das Subjekt. Das sind IMHO die wesentlichen Probleme die dazu führen das eine fehlerfreie, also den Anforderungen und Handhabungen 100%ige Software eigentlich nicht möglich ist.
Wie gesagt, ich will jetzt nicht auf die formalen Methoden der Prüfbarkeit der SW auf Fehler eingehen, das sind ja auch nur immer Annäherungen.
Ich bin der meinung,dass keine exakten Vorhersagen über das Verhalten von diskreten Systemen getroffen werden können und es kein Skalierungsargument ghibt dass diese Eigenschaft erfassen kann? Keines, eher die Chaos Theorie, doch auch diese beruht nur auf der Beschreibbarkeit solcher Systeme durch Differentialgleichungen, was aber widerum für Programmsysteme nicht ausreicht.
Eigentlich ein Dilema ..?!Völlig untergegangen sind die Nichtdeterministischen Fehler.
Welche Rolle spielen sie dabei? Axiome fiel als stichwort, aber wie wollen wir diese algorithmischen möglichkeiten in Axiome erfassen und wer überprüft sie auf ihre Richtigkeit. Und gelten diese axiome noch in 10 , 20 , 100 Jahren. Würde das aber nicht Entwicklungen hemmen??Zwischenfazit: eine interessante Diskussion bisher . Danke an Alle
-
Optimizer schrieb:
Mit Volkards Definition
[...] es gibt auch echte abweicheungen von der spec, die selbst bei freundlichster betrachtung einfach als abweichung zu sehen sind
von "harten Fehlern" ist dieses Programm IMHO eindeutig als Fehlerhaft anzusehen, weil es klar die Anforderungen an einer Textverarbeitung nicht erfüllt und diese Funktionalität offensichtlich nicht bietet.
nein, das war nicht mit "hart" gemeint, sondern echt nur sachen wie abstürze.
"Freundlich" ist ein schwammiger Begriff
der begriff ist nicht "hart".
-
mata schrieb:
also wenn ich das richtig sehe, behauptest du, es gibt unter umständen fehlerfreie 100000-zeilen programme. das kann ja auch durchaus so sein, keiner wird dir das gegenteil beweisen können, genausowenig aber kannst du zeigen, dass eben dieses programm fehlerfrei ist.
ok.
damit ist die ursprüngliche frage "warum wird man eigentlich nie eine fehlerfreie komplexe software haben" kaputt, oder?
ich will nicht, daß es als sicher angenommen wird, man könne nie und nimmer fehlerfrei coden.
und für die general-vermutung, ein programm habe auch fehler, hab ich mich ja auch schon ausgesprochen. in allen praktischen belangen ist die ok. man darf es nur nicht als sicher annehmen, sonst kommt man in die teufelsküche.
-
volkard schrieb:
...und für die general-vermutung, ein programm habe auch fehler, hab ich mich ja auch schon ausgesprochen. in allen praktischen belangen ist die ok. man darf es nur nicht als sicher annehmen, sonst kommt man in die teufelsküche.
warum komme ich dann in teufelsküche? weil ich dann die SW in Frage stelle und mich auch. Das tue ich doch ohnhin.
-
Nein, das Problem ist, daß Du mit dieser Aussage schließen kannst, daß jedes 100000-Zeilen-Programm unendlich viele Fehler hat. Mach einen raus, das Programm bleibt ungefähr so lang wie es ist... also hat es einen Fehler etc.
Vielleicht kann man das aber heilen, indem man annimmt, daß man gelegentlich beim bufixen wieder was dazubaut.
Ich kann mir gut vorstellen, daß die Fehlerzahl in großen Softwaresystemen trotz regelmäßigen Bugfixings ab einer bestimmten Stelle konstant bleibt. Einfach weil es so kompliziert ist, daß man Fehler schlecht entfernen kann ohne neue zu machen
-
Oder weil manche Fehler einfach nicht auffallen. AFAIK hat man erst vor einem halben Jahr wieder einen Bug in StarCraft behoben.
Ich war soooooo lurz davor, dieses Spiel wirklich als Paradebeispiel für ein komplexes und trotzdem fehlerfreies Programm zu betrachten. Naja, ein Paradebeispiel ist es ja trotzdem, jetzt ist garantiert kein Fehler mehr drin.
-
Bashar schrieb:
Folgende Implementation meines Textverarbeitungsprogramms ist frei von harten Fehlern:
int main() { }
Sie hat nen Fehler: du hast das return(0) vergessen.
Sogar bei sowas einfachem schon ein Fehler... von nem NOOB...
-
Ja, du NOOB. Das Ding ist nämlich fehlerfrei, weil man return 0 nicht schreiben muss. Echt peinlich, so die Klappe aufzureißen, an deiner Stelle würd ich mich jetzt wegsprengen. ;/
-
LOL
-
Aber fies war es ja schon von dir, Bashar.
-
Na gut, hab' nen Fehler gemacht.
Naja, wie gesagt - noob.
-
Wenn schon heißt es b00n, du lam3r!!!!!!!!11111einseins