Die Macht der 10: Regeln für die Entwicklung sicherheitskritischen Codes
Erscheinungsbild
Die Macht der 10 Regeln wurden 2006 von Gerard J. Holzmann vom NASA/JPL Labor für verlässliche Software entwickelt,[1] um bestimmte C-Codierungspraktiken zu eliminieren, die eine Überprüfung oder statische Analyse des Codes erschweren. Diese Regeln sind eine Ergänzung zu den MISRA C-Richtlinien und wurden in die umfassenderen JPL-Codierungsstandards aufgenommen.[2]
Regeln
[Bearbeiten | Quelltext bearbeiten]Die zehn Regeln lauten:[1]
- Vermeiden Sie komplexe Ablaufkonstrukte, wie goto und Rekursion.
- Alle Schleifen müssen feste Begrenzungen haben. Dies verhindert unkontrollierbaren Code.
- Vermeiden Sie die Zuweisung von Heap-Speicher nach der Initialisierung.
- Beschränken Sie Funktionen auf eine einzige Druckseite.
- Verwenden Sie mindestens zwei runtime assertions pro Funktion.
- Beschränken Sie den Umfang der Daten auf das kleinstmögliche Maß.
- Den Rückgabewert aller Funktionen, die nicht void sind, überprüfen oder auf void setzen, um anzuzeigen, dass der Rückgabewert unbrauchbar ist.
- Verwenden Sie den Präprozessor nur für Header-Dateien und einfache Makros.
- Beschränken Sie die Verwendung von Zeigern auf eine einzige Dereferenzierung und verwenden Sie keine Funktionszeiger.
- Kompilieren Sie mit allen möglichen aktiven Warnungen; alle Warnungen sollten dann vor der Freigabe der Software behoben werden.
Beispiel
[Bearbeiten | Quelltext bearbeiten]In der NASA-Studie über die Firmware der elektronischen Drosselklappensteuerung von Toyota wurden mindestens 243 Verstöße gegen diese Regeln festgestellt.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Literatur
[Bearbeiten | Quelltext bearbeiten]- G.J. Holzmann: The Power of 10: Rules for Developing Safety-Critical Code. In: IEEE Computer. Band 39, Nr. 6, 19. Juni 2006, S. 95–99, doi:10.1109/MC.2006.212 (englisch).
Weblinks
[Bearbeiten | Quelltext bearbeiten]- NASA Technical Standards System Software Assurance and Software Safety Standard
- Open Source Satellite: How do you make software that is reliable enough for space missions?
Belege
[Bearbeiten | Quelltext bearbeiten]- 1 2 Gerard J. Holzmann: The Power of 10: Rules for Developing Safety-Critical Code. (PDF) In: https://web.eecs.umich.edu/~imarkov/10rules.pdf. NASA/JPL Laboratory for Reliable Software, Juni 2006, abgerufen am 16. Mai 2025 (englisch).
- ↑ Jet Propulsion Laboratory: JPL Institutional Coding Standard for the C Programming Language. (PDF) In: https://web.archive.org/web/20111015064908/http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf. © 2009 California Institute of Technology, 3. März 2009, abgerufen am 16. Mai 2025 (englisch).