Weblog Startseite Twitter Tweets von @intervista_ag

Kategorie

Bug-freier Code ist (k)ein Traum

In der Computer-Zeitung Nr. 45 ist der obige Titel zu finden (allerdings ohne die Klammern). In dem Artikel geht es um die Fortschritte, die der geschätzte Tony Hoare bei der automatisierten Prüfung von Programmen auf Fehlerfreiheit sieht, konkret um die Verifying Compiler. Diese erkennen die Verletzung von Assertions im Programmcode nicht erst zur Laufzeit, sondern bereits vorher, d.h. beim Compilieren.
Bug-freier Code, fehlerhaftes System
Meine Begeisterung über diese Fortschritte hält sich dennoch ein wenig in Grenzen – beruht das ganze Konzept doch auf einer – in der Regel unausgesprochenen – Annahme, die oft nicht zu halten ist. Nämlich der, dass man bei der Softwareentwicklung tatsächlich in der Lage ist, die Assertions so zu formulieren, dass jedes Fehlverhalten ausgeschlossen wird.  Selbst wenn wir annehmen, dass mit der Sprache für die Assertions alle erdenklichen Anforderungen grundsätzlich formulierbar sind (das Halteproblem ignoriere ich hier einmal), so stellt sich doch die Frage, ob der normalsterbliche Entwickler tatsächlich alle diese Anforderungen kennt und lückenlos formulieren kann. Es mag Ausnahmen geben wie z.B. Steuergeräte mit scharf definiertem Sollverhalten – dort sind diese Verfahren auch wertvoll. Bei den meisten Systemen jedoch, insbesondere denen mit Benutzerinteraktion,  gibt es gelegentlich Anforderungen, die einem trotz sorgfältiger Anforderungsanalyse „durch die Lappen gehen“ – und dann auch nicht in Assertions übersetzt werden können. Code wird von Menschen geschrieben, die Fehler machen – das Gleiche gilt für Assertions (und andere formale Spezifikationen).
Und dann gibt es bei den gängigen Systemen noch ganz handfeste praktische bzw. wirtschaftliche Probleme. Wir könnten den selbstgeschriebenen Code mit Assertions versehen – was gerade bei einem großen, gewachsenen System (also dem Normalfall) keiner machen geschweige denn bezahlen will. Aber die ganzen genutzten Libraries, Frameworks, das Betriebssystem und letztlich sogar der Prozessor (ich sage nur „Pentium FDIV Bug„) müssten bereits ab Werk fehlerfrei sein (lesen Sie mal hier, speziell Punkt 17).
Viel lässt sich bereits erreichen, wenn man einfach solide arbeitet und nicht nur programmiert – Anforderungsanalyse, Modellierung, Spezifikation, Test!

Hinterlasse ein Kommentar: