www.wikidata.de-de.nina.az
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Unter defensivem Programmieren wird eine Programmierung von Computersystemen verstanden die moglichst viele Voraussetzungen selbst uberpruft bevor der eigentliche Selbstzweck erfullt wird Ein Programmierer ist mit verschiedenen bekannten und unbekannten Aspekten bezuglich Benutzer Eingabe verschiedener Betriebssysteme und Versionen konfrontiert Die so defensiv programmierten Applikationen sind misstrauisch gegenuber allen Eingaben und Voraussetzungen und verhalten sich gegenuber Verstossen robust Durch das Voraussehen moglichst vieler Umstande 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 verlasst sich auf Nachbedingungen die fur die Dienstleistung im Vertrag definiert wurden Bei defensiver Programmierung waren hingegen die Vorbedingungen unklar wahrend die Nachbedingungen von der in Anspruch nehmenden Komponente uberpruft werden mussten Ein System muss sich nicht einem einzigen Konzept verschreiben Grundsatzlich lasst es sich so aufteilen dass Einwirkungen von aussen Benutzereingaben Datenimport API defensiv zu handhaben sind wahrend das bei inneren Ablaufen nicht erforderlich ist Beispiele Bearbeiten nbsp Potenziell unerwartete Benutzereingabe mit der nicht wie geplant umgegangen werden kann und die deshalb bei defensivem Programmieren abgefangen werden mussEin Druckereintrag soll geloscht werden Das defensiv erstellte Programm pruft zuerst ob der anzusprechende Drucker uberhaupt vorhanden ist Das Programm pruft den Ruckgabewert der Loschfunktion Falls wegen fehlender Zugriffsrechte nicht geloscht werden kann versucht das Programm sich die Rechte einzuraumen und probiert das Loschen nochmals Eine Datei soll von einem Verzeichnis in ein anderes Verzeichnis kopiert werden Ein defensives Programm pruft ob das Quellverzeichnis vorhanden und lesbar ist Dann wird gepruft ob das Zielverzeichnis vorhanden und beschreibbar ist Ist es nicht vorhanden so legt das Programm das benotigte 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 verlauft den Erwartungen vollig kontrar siehe Abbildung Ein Programmierer mit Weitblick erkennt solche moglichen Situationen und uberpruft die Benutzereingaben bevor die eigentliche Verarbeitung beginnt Im Beispiel der Abbildung musste das Programm den Prozess abbrechen und dem Benutzer eine Meldung ausgeben dass dieser die Eingaben korrigieren muss Gegenteil des defensiven Programmierens BearbeitenDer Programmierer hat je nach Programmiersprache verschiedene weitere Moglichkeiten des Exception Handlings der Behandlung von Ausnahmen Diese Moglichkeiten werden jedoch nicht mehr unter dem Begriff defensive Programmierung zusammengefasst sondern es geht darum beliebig auftretende nicht vorhersehbare Fehler abzufangen Gerade kontrar zur defensiven Programmierung verhalt 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 absturzt dies allerdings mit unabsehbaren Folgen das heisst das Resultat kann unter Umstanden vollig inkorrekt sein Weblinks Bearbeitenbuildsecurityin us cert gov Abgerufen von https de wikipedia org w index php title Defensives Programmieren amp oldid 219962745