Zum Inhalt springen

Die Macht der 10: Regeln für die Entwicklung sicherheitskritischen Codes

aus Wikipedia, der freien Enzyklopädie

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]

Die zehn Regeln lauten:[1]

  1. Vermeiden Sie komplexe Ablaufkonstrukte, wie goto und Rekursion.
  2. Alle Schleifen müssen feste Begrenzungen haben. Dies verhindert unkontrollierbaren Code.
  3. Vermeiden Sie die Zuweisung von Heap-Speicher nach der Initialisierung.
  4. Beschränken Sie Funktionen auf eine einzige Druckseite.
  5. Verwenden Sie mindestens zwei runtime assertions pro Funktion.
  6. Beschränken Sie den Umfang der Daten auf das kleinstmögliche Maß.
  7. Den Rückgabewert aller Funktionen, die nicht void sind, überprüfen oder auf void setzen, um anzuzeigen, dass der Rückgabewert unbrauchbar ist.
  8. Verwenden Sie den Präprozessor nur für Header-Dateien und einfache Makros.
  9. Beschränken Sie die Verwendung von Zeigern auf eine einzige Dereferenzierung und verwenden Sie keine Funktionszeiger.
  10. Kompilieren Sie mit allen möglichen aktiven Warnungen; alle Warnungen sollten dann vor der Freigabe der Software behoben werden.

In der NASA-Studie über die Firmware der elektronischen Drosselklappensteuerung von Toyota wurden mindestens 243 Verstöße gegen diese Regeln festgestellt.

  • 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).
  1. 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).
  2. 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).