Bundesamt für Sicherheit in der Informationstechnik

M 6.164 Notfallvorsorge bei der Software-Entwicklung

Verantwortlich für Initiierung: Leiter Entwicklung

Verantwortlich für Umsetzung: Entwickler, Fachabteilung

In der Regel wird Software, die über eine einfachen Komponente hinaus geht, mit Hilfe von komplexen Werkzeugen entwickelt. Darüber hinaus sind eine Vielzahl von Projekt- und Systeminformationen mit der Entwicklung verbunden, so dass der Verlust auch eines kleinen Teils dieser recht komplexen Struktur zu erheblichen Schäden bis hin zum Verlust des aktuellen Entwicklungsstandes führen kann.

Aus diesem Grund ist eine gut strukturierte Verwaltung und Datensicherung aller Dokumente, Werkzeuge und Komponenten, die bei der Software-Entwicklung eingesetzt werden, notwendig. Dies bedeutet, dass ein detailliertes Datensicherungs- und Wiederherstellungskonzept für die Software-Entwicklung definiert werden muss. Dies muss neben dem Programmcode mindestens folgende Elemente berücksichtigen:

  • Anforderungskatalog und Software-Spezifikationsdokumente
  • Dokumentation der System-Architektur, Schnittstellendefinitionen
  • Entwicklungsumgebung, Compiler, Bibliotheken
  • Konfigurationsmanagementsystem
  • Testdaten, -ergebnisse und -dokumentation
  • Frühere Versionen

Das Datensicherungs- und Wiederherstellungskonzept muss getestet werden (siehe M 6.41 Übungen zur Datenrekonstruktion ). Die Ergebnisse der Tests sind zu dokumentieren. Auch gegen den Ausfall der Entwicklungs- bzw. Testsysteme sollten adäquate Notfallvorsorgemaßnahmen getroffen werden.

Zur Software-Entwicklung gehören nicht nur Dokumente, Programme und Systeme, sondern auch menschliches Know-How. Wenn Wissen, das für die Entwicklung, Pflege und Wartung oder Weiterentwicklung einer Anwendung notwendig ist, in einer Person konzentriert ist, dann kann diese starke Abhängigkeit zu sehr schwerwiegenden Problemen führen. Um solche Notfälle zu vermeiden, sollte auf folgende Punkte geachtet werden:

  • Eine gute Strukturierung der gesamten Software-Entwicklung ist unabdingbar: Oft wird für ein Entwicklungsproblem die schnelle einer gut strukturierten und dokumentierten Lösung vorgezogen. Der Nachteil ist, dass dadurch Zusammenhänge in der Software nur von den Entwicklern verstanden werden. Wenn diese nicht mehr verfügbar sind, ist jegliche Weiterentwicklung der Software sehr aufwendig bis unmöglich.
  • Das Wissen über die Software-Entwicklung sollte innerhalb eines Entwicklungsteams ausreichend kommuniziert werden, so dass jeder unter Umständen die Aufgabe eines Anderen übernehmen kann. Dies verhindert eine Abhängigkeit einzelnen Personen und macht die Entwicklung auch flexibler, da in Zeitnot Aufgaben besser verteilt werden können.
  • Die Software-Entwicklung muss so dokumentiert sein, dass ein Experte in diesem Gebiet mit Hilfe der Dokumentation sie nachvollziehen kann und die Software weiterentwickeln kann. Notwendig dafür sind die Dokumente und Vorgehensweisen, die durch das Qualitätsmanagement und das Änderungs- und Konfigurationsmanagement gefordert werden. Im Rahmen der Notfallvorsorge sollte überprüft werden, ob diese Vorgehensweisen und Richtlinien eingehalten wurden und ob die damit verbundenen Dokumentationen aktuell und vollständig sind.

Nach Abschluss der Entwicklung sollte eine Kopie des Quellcodes, der Entwicklungsdokumentation sowie eine Beschreibung der Entwicklungsumgebung an einem sicheren Ort hinterlegt werden, so dass bei auftretenden Problemen die Korrektheit und Manipulationsfreiheit der entwickelten Software jederzeit nachgewiesen werden kann.

Wenn die Software-Entwicklung in Auftrag gegeben wurde, sollte überlegt werden, ob eine Vereinbarung mit dem Auftragnehmer zur Code-Hinterlegung notwendig ist. Informationen dazu sind in M 6.137 Treuhänderische Hinterlegung (Escrow) zu finden.

Prüffragen:

  • Ist ein Datensicherungs- und Wiederherstellungskonzept für die Software-Entwicklung erstellt worden?

  • Ist die Rekonstruktion von Daten schon einmal getestet worden?

Stand: 15. EL Stand 2016