Sicherheitsanforderungen versus agile Entwicklung?
ISO 26262 stellt zahlreiche Detailforderungen an Arbeitsweisen, Werkzeuge und Methoden der Entwicklung. Auf diesem Weg sollen systematische Fehler vermieden werden. So müssen
Werkzeuge, beispielsweise Code-Generatoren, qualifiziert,
Codier-Richtlinien, die zum Beispiel implizite Typkonversionen verbieten, eingesetzt und
die Software durch geeignete Verfahren, wie etwa Datenflussanalysen, verifiziert
werden.
Keiner der genannten Punkte widerspricht direkt einem agilen Vorgehen. Das Problem besteht darin, die Umsetzung dieser Detailanforderungen sicherzustellen (Bild 2).
Aus ISO 26262 ergeben sich außerdem zusätzliche Produkte und Dokumente, die entstehen und gepflegt werden müssen, zum Beispiel
eine Gefahrenanalyse zur Abschätzung des Produktrisikos,
ein funktionales Sicherheitskonzept, um Risiken zu vermeiden oder wenigstens zu reduzieren,
Analysen wie FMEA oder FTA, um das Gesamtkonzept abzusichern.
Keines dieser notwendigen Ergebnisse wird explizit von agilen Methoden angesprochen. Scheinbar widersprechen diese sogar dem Grundsatz „working software over comprehensive documentation“. In der Praxis ist das allerdings nur ein Schein-Widerspruch: Die Dokumente lassen sich ohne weiteres über das „Product Backlog“ sowie durch Spezifikation in der „Definition of Done“ von der Entwicklung einfordern. In sicherheitskritischen Projekten müssen die Sicherheitsanforderungen und -architekturen frühzeitig definiert werden. Daher ist es erforderlich, die notwendigen Iterationen innerhalb des Projekt-Lebenszyklus anders zu planen. Im klassischen V-Modell sollte die Entwicklung der Anforderungen und der Architektur abgeschlossen sein, bevor mit Umsetzung und Test begonnen wird. Die agilen Vorgehensweisen hingegen propagieren ein inkrementell iteratives Vorgehen. Als Konsequenz daraus fällt es schwer, bei sicherheitskritischen Projekten ein „Continuous Delivery“ bzw. ein „Responding to Change“ umzusetzen.