Die vorliegende Ausarbeitung stellt das Konzept der Assertions vor. Assertions stellen eine Umsetzung des Design-by-Contract-Prinzips dar
und ermöglichen eine Überwachung von Code zur Laufzeit. Im folgenden sollen, ausgehend von David S. Rosenblums Paper “Toward a Method of Programming with Assertions” sowohl das Konzept der Assertions, als auch das Prinzip von Design-By-Contract vorgestellt werden. (Ergänzt wird dieser Text durch eine weitere Ausarbeitung im Rahmen des o.g. Seminars. Titel: Assertions in Java )
Inhaltsverzeichnis
1 Einleitung
2 Vorüberlegungen
2.1 Fehlerquellen
2.2 Fehlererkennung
3 Design-By-Contract
3.1 Grundprinzip
3.2 EIFFEL
3.3 Aspekte von Design-By-Contract
3.4 Vorteile von Design-By-Contract
4 Assertions
4.1 Einsatz von Assertions
4.2 APP, Ein Präpozessor für C
4.3 Assertions und Exceptions
4.4 Vorteile/Probleme
5 Zusammenfassung
Zielsetzung & Themen
Die vorliegende Arbeit untersucht das Konzept der Assertions als methodische Umsetzung des Design-by-Contract-Prinzips zur Überwachung von Software zur Laufzeit. Ziel ist es, ausgehend von wissenschaftlichen Grundlagen, die Funktionsweise, den praktischen Einsatz sowie die Vor- und Nachteile dieser Technik für die moderne Softwareentwicklung aufzuzeigen.
- Grundlagen der Fehlerentstehung und Fehlererkennung in Softwaresystemen
- Einführung in das Prinzip "Design-By-Contract" und die Programmiersprache EIFFEL
- Anwendung von Assertions zur Absicherung kritischer Code-Passagen
- Vorstellung von Werkzeugen wie dem Präprozessor APP für die Sprache C
- Vergleich von Assertions und Exceptions sowie deren Grenzen und Auswirkungen auf das System
Auszug aus dem Buch
3.1 Grundprinzip
Design-By-Contract ist eine Client-Server Betrachtungsweise der Zusammenarbeit von Objekten. Dabei existieren Anbieter und Nutzer, wobei hier Funktionalität zur Verfügung gestellt, bzw. genutzt wird. Im Fall einer Interaktion werden - ähnlich einem realen Vertrag - für Nutzer und Anbieter Pflichten und Rechte vereinbart. Erfüllt der Nutzer die Auflagen des Anbieters, so ist die angebotene Leistung garantiert, umgekehrt gilt, dass die Nichterfüllung der Obligationen zum Verlust der Garantie führt.
Design-By-Contract wurde in zeitlicher und gedanklicher Nähe mit EIFFEL entwickelt.
Zusammenfassung der Kapitel
1 Einleitung: Diese Einleitung führt in das Konzept der Assertions ein und positioniert die Arbeit im Kontext des Design-by-Contract-Prinzips sowie der Literatur von David S. Rosenblum.
2 Vorüberlegungen: Es werden die Ursachen für Softwarefehler beleuchtet und Methoden zur Fehlererkennung, wie Modulares Design oder Testen, erläutert.
3 Design-By-Contract: Dieses Kapitel definiert das Client-Server-Prinzip des Design-By-Contract und stellt dessen Aspekte sowie Vorteile für die Robustheit von Software dar.
4 Assertions: Der Hauptteil beschreibt den praktischen Einsatz von Assertions, die Funktionsweise des C-Präprozessors APP und diskutiert die Abgrenzung zu Exceptions.
5 Zusammenfassung: Hier werden die Ergebnisse resümiert und die Bedeutung von Assertions für die Softwarequalität im Kontext von Hoares Vision eines verifizierenden Compilers bewertet.
Schlüsselwörter
Assertions, Design-by-Contract, Softwarequalität, Laufzeitüberwachung, Programmverifikation, APP Präprozessor, Fehlererkennung, Precondition, Postcondition, Klasseninvariante, Software-Test, Debugging, Imperative Programmierung, Eiffel, Fehlerbehandlung
Häufig gestellte Fragen
Was ist das grundlegende Ziel dieser Arbeit?
Die Arbeit untersucht, wie Assertions als Werkzeug eingesetzt werden können, um die Zuverlässigkeit und Korrektheit von Softwaresystemen durch Laufzeitüberprüfungen zu steigern.
Welches sind die zentralen Themenfelder?
Die Schwerpunkte liegen auf den Prinzipien des Design-by-Contract, der Anwendung formaler Zusicherungen im Quellcode und dem methodischen Vergleich mit anderen Fehlerbehandlungskonzepten.
Was ist die Forschungsfrage der Arbeit?
Die Arbeit analysiert, wie durch die explizite Formulierung von Verträgen zwischen Programmkomponenten und deren Überprüfung mittels Assertions eine systematische Steigerung der Softwarequalität erreicht werden kann.
Welche wissenschaftliche Methode wird primär verwendet?
Es handelt sich um eine Literaturanalyse, die theoretische Konzepte (insb. Rosenblum) mit praktischen Implementierungsbeispielen für die Sprache C verknüpft.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil konzentriert sich auf die technische Umsetzung von Assertions, die Vorstellung des APP-Präprozessors und die Differenzierung zwischen Assertions und Exceptions.
Was charakterisiert die in der Arbeit genannten Schlüsselwörter?
Die Schlüsselwörter spiegeln die Schnittmenge zwischen objektorientiertem Design, formalen Spezifikationsmethoden und praktischen Qualitätssicherungstechniken im Software-Engineering wider.
Was ist der spezifische Unterschied zwischen einer Precondition und einer Postcondition?
Eine Precondition ist eine Bedingung, die vom Aufrufer vor Ausführung eines Dienstes erfüllt sein muss, während eine Postcondition eine Zusicherung ist, die nach Abschluss des Dienstes garantiert wird.
Warum sollte man laut der Arbeit Assertions nicht für alle Fehlerfälle nutzen?
Assertions dienen der Testphase und der Überprüfung von Annahmen über den korrekten Programmzustand; sie sind kein Ersatz für die Behandlung von erwarteten Ausnahmesituationen (Exceptions) in der Release-Version einer Software.
- Quote paper
- Martin Czygan (Author), 2005, Konzept der Assertions und Prinzip von Design-by-Contract in einer kurzen Darstellung (Stand 2005), Munich, GRIN Verlag, https://www.grin.com/document/126910