Defensive Programmierung

Defensive Programmierung

Unter defensivem Programmieren wird eine Programmierung von Computersystemen verstanden, die möglichst viele Voraussetzungen selbst überprüft, bevor der eigentliche Selbstzweck erfüllt wird. Ein Programmierer ist mit verschiedenen bekannten und unbekannten Aspekten bezüglich Benutzer-Eingabe, verschiedener Betriebssysteme und -Versionen konfrontiert. Die so defensiv programmierten Applikationen sind misstrauisch gegenüber allen Eingaben und Voraussetzungen und verhalten sich gegenüber Verstößen robust. Durch das Voraussehen möglichst vieler Umstände laufen sie weiter oder brechen in einem geordneten Prozess ab.

Ein Alternativansatz zur defensiven Programmierung ist Design by contract. Dabei stellt diejenige Komponente, welche die Dienstleistung einer anderen Komponente in Anspruch nimmt, lediglich auf der Basis eines Vertrages eine Reihe von Vorbedingungen sicher und verlässt sich auf Nachbedingungen, die für die Dienstleistung im Vertrag definiert wurden. Bei defensiver Programmierung wären hingegen die Vorbedingungen unklar, während die Nachbedingungen von der in Anspruch nehmenden Komponente überprüft werden müssten.

Beispiele

Falsche Benutzereingabe, welche abgefangen werden muss
  • Ein Druckereintrag soll gelöscht werden. Das defensiv erstellte Programm prüft zuerst, ob der anzusprechende Drucker überhaupt vorhanden ist. Das Programm prüft den Rückgabewert der Löschfunktion. Falls wegen fehlender Zugriffsrechte nicht gelöscht werden kann, versucht das Programm sich die Rechte einzuräumen und probiert das Löschen nochmals.
  • Eine Datei soll von einem Verzeichnis in ein anderes Verzeichnis kopiert werden. Ein defensives Programm prüft, ob das Quellverzeichnis vorhanden und lesbar ist. Dann wird geprüft, ob das Zielverzeichnis vorhanden und beschreibbar ist. Ist es nicht vorhanden, so legt das Programm das benötigte Verzeichnis selbst an und verschafft sich ggf. vorher die dazu erforderlichen Rechte. Letztendlich wird dann die Datei in die verifiziert vorhandenen und erreichbaren Verzeichnisse kopiert.
  • Die Eingabe eines Benutzers verläuft den Erwartungen völlig konträr (siehe Abbildung). Ein Programmierer mit Weitblick erkennt solche möglichen Situationen und überprüft die Benutzereingaben, bevor die eigentliche Verarbeitung beginnt. Im Beispiel der Abbildung müsste das Programm den Prozess abbrechen und dem Benutzer eine Meldung ausgeben, dass dieser die Eingaben korrigieren muss.

Gegenteil des 'defensiven Programmierens'

Der Programmierer hat - je nach Programmiersprache - verschiedene weitere Möglichkeiten des 'Exception Handlings', der Behandlung von Ausnahmen. Diese Möglichkeiten werden jedoch nicht mehr unter dem Begriff 'defensive Programmierung' zusammengefasst sondern es geht darum, beliebig auftretende, nicht vorhersehbare Fehler abzufangen. Gerade konträr zur 'defensiven Programmierung' verhält sich beispielsweise die in Visual Basic beliebte Anweisung 'On Error Resume Next' (umgangssprachlich aus unbekannter Quelle auch OERNy genannt, auf Deutsch 'mach einfach weiter'). Der Vorteil dabei ist, dass die Applikation nicht abstürzt, dies allerdings mit unabsehbaren Folgen, das heißt das Resultat kann unter Umständen völlig inkorrekt sein.

Weblinks

https://buildsecurityin.us-cert.gov/daisy/bsi/articles/knowledge/sdlc/326.html


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Defensives Programmieren — Unter defensivem Programmieren wird eine Programmierung von Computersystemen verstanden, die möglichst viele Voraussetzungen selbst überprüft, bevor der eigentliche Selbstzweck erfüllt wird. Ein Programmierer ist mit verschiedenen bekannten und… …   Deutsch Wikipedia

  • IntarS — Entwickler seat 1 Software GmbH und freiwillige Entwickler Betriebssystem Windows, Linux Kategorie Unternehmenssoftware Lizenz GPL Deutschsprachig …   Deutsch Wikipedia

  • Anti-Pattern — (deutsch: Antimuster) bezeichnet in der Softwareentwicklung einen häufig anzutreffenden schlechten Lösungsansatz für ein bestimmtes Problem. Es bildet damit das Gegenstück zu den Mustern (Entwurfsmuster, Analysemuster, Architekturmuster...),… …   Deutsch Wikipedia

  • Anti-pattern — (deutsch: Antimuster) bezeichnet in der Softwareentwicklung einen häufig anzutreffenden schlechten Lösungsansatz für ein bestimmtes Problem. Es bildet damit das Gegenstück zu den Mustern (Entwurfsmuster, Analysemuster, Architekturmuster...),… …   Deutsch Wikipedia

  • Antimuster — Anti Pattern (deutsch: Antimuster) bezeichnet in der Softwareentwicklung einen häufig anzutreffenden schlechten Lösungsansatz für ein bestimmtes Problem. Es bildet damit das Gegenstück zu den Mustern (Entwurfsmuster, Analysemuster,… …   Deutsch Wikipedia

  • Antipattern — Anti Pattern (deutsch: Antimuster) bezeichnet in der Softwareentwicklung einen häufig anzutreffenden schlechten Lösungsansatz für ein bestimmtes Problem. Es bildet damit das Gegenstück zu den Mustern (Entwurfsmuster, Analysemuster,… …   Deutsch Wikipedia

  • Negativmuster — Anti Pattern (deutsch: Antimuster) bezeichnet in der Softwareentwicklung einen häufig anzutreffenden schlechten Lösungsansatz für ein bestimmtes Problem. Es bildet damit das Gegenstück zu den Mustern (Entwurfsmuster, Analysemuster,… …   Deutsch Wikipedia

  • Informationsguerilla — Kommunikationsguerilla (auch Informationsguerilla, Medienguerilla) ist eine Form des Aktivismus (bzw. eine Gruppe oder Bewegung, die sich dieser Form bedient), bei der gezielt Information bzw. Desinformation eingesetzt wird, um Ziele zu erreichen …   Deutsch Wikipedia

  • Medienguerilla — Kommunikationsguerilla (auch Informationsguerilla, Medienguerilla) ist eine Form des Aktivismus (bzw. eine Gruppe oder Bewegung, die sich dieser Form bedient), bei der gezielt Information bzw. Desinformation eingesetzt wird, um Ziele zu erreichen …   Deutsch Wikipedia

  • Medienterrorismus — Kommunikationsguerilla (auch Informationsguerilla, Medienguerilla) ist eine Form des Aktivismus (bzw. eine Gruppe oder Bewegung, die sich dieser Form bedient), bei der gezielt Information bzw. Desinformation eingesetzt wird, um Ziele zu erreichen …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”