Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Fehlerfreie Software

Definition

Eine Software wird als fehlerfrei angesehen, wenn sie sowohl die Anforderungen erfüllt als auch frei von technischen Fehlern ist.

Erfüllung der Anforderungen

Anforderungen an Software werden von einem oder mehreren Auftraggebern gestellt und können als Textdokument, in tabellarischer Form oder als fachliches Modell (UML oder DSL bzw. Domain Specific Language festgelegt werden. Um die Erfüllung dieser Anforderungen zu beweisen, muss die in den Anforderungen enthaltene Logik mit der in der Software realisierten Logik verglichen werden. Das ist nicht immer möglich, weil es beim Vergleich von logischen Formulierungen unentscheidbare Fälle geben kann. Dieses kann seine Ursache in der Mehrdeutigkeit der benutzen Sprachen oder in der Existenz von ungenannten Forderungen haben. Auch ist ist die Metasprache der Anforderungen eine andere als die Metasprache der Programme, was den Vergleich erschwert.

Vermeidung von technischen Fehlern

Dazu gibt es prinzipiell 2 Wege:

  statische Analysen

Programme in prozeduralen Sprachen (siehe prozedurale Programmierung ) können technische Fehler enthalten, die nur bei bestimmten Eingaben oder zu bestimmten Zeiten auftreten. Diese sind zum Beispiel Indexüberläufe, Divisionen durch Null, fehlende Initialisierungen und viele weitere Unstimmigkeiten der prozeduralen Programmierung. Wenn es gelänge, alle technisch möglichen Fehler zu bestimmen und man ein vollständiges Verfahren zur statischen Analyse hätte, könnte man eine Software zumindest technisch verifizieren , d.h. beweisen, dass keine technischen Fehler in ihr enthalten sind. Prozedurale Programmierung ist nicht völlig vermeidbar, weil Maschinensprachen heute zustandsorientiert sind und die Grundlage aller Softwarearchitekturen bilden. Auch objektorientierte Programmierung ist auf der Methodenebene prozedural.

methodische Ansätze

Durch neuere Methoden wie logische oder funktionale Programmierung oder modellgesteuerte Entwicklung (Model Driven Development) lässt sich vielleicht die Entstehung von Fehlern von vornherein vermeiden. Diese Methoden sind aber in der Praxis noch nicht ausreichend bewährt und werden auf der Ebene darunter durch prozedurale Logik implementiert, was einer Verlagerung und Reduzierung des Problems gleichkommt.

Vorhersage

Vermutlich werden sich der empirische Ansatz, der gemachte Fehler zu finden versucht, und der methodische Ansatz, der Fehler von vornherein ausschließen soll, bis 2015 in der Mitte treffen. Vielleicht wird auch eines Tages das babylonische Sprachgewirr durch ein formales Esperanto verdrängt werden.

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik