Systeme sollen verläßlich (dependable) sein, d. h.
verfügbar
(available) sein, auch in Zukunft zuverlässig (reliable) arbeiten,
katastrophale wirtschaftliche oder Folgen für Leib und Leben
vermeiden (safety), unautorisierte Manipulationen durch Attacken von
innen oder außen verhindern (security). Nicht verläßliche Systeme
können durch fehlerhafte Systemteile oder -zustände (errors)
Ausfälle oder unbeabsichtigtes Verhalten (failures) zeigen.
Fehlerverhinderung (fault prevention), Fehlertoleranz (fault
tolerance), Beseitigung (fault removal) und auch Fehlervorhersage sind
Techniken, um den Fehlerursachen (faults) entgegenzutreten.
Erst ein hohes Maß an Wiederverwendung wird im breiten Anwendungsfeld
die hohen Investitionen für Zuverlässigkeit der Produkte (Systeme
und Komponenten) und deren Nachweis rechtfertigen. Deshalb ist der
Softwareentwicklungs-Prozeß (das Softwareengineering) ebenso wichtig
wie die Prüfung der Verläßlichkeit des Produkts selbst. Für letzteres
werden u.a. Übersetzer und ihre Verläßlichkeit als Beispiel dienen, da
ihre Korrektheit und Zuverlässigkeit im Softwareentwicklungsprozess an
zentraler Stelle Bedeutung hat.
Weitere Literatur wird in der Vorlesung genannt.