Final Proximity Space Systems

Let’s Talk Space

06ECSS and NASA guidelines for space software

What the paperwork Buys.

The standards ECSS and NASA set for flight software: what they require, how criticality drives cost, and where the two families differ.

T minus 00:08:00   THE FRAMEWORK

Two families of standards

Flight software is written against a standard, and which standard decides a surprising amount about schedule and cost. In Europe that is ECSS; in the United States, the NASA procedural requirements. They agree on the essentials and differ in structure.

ECSS in Europe

  • ECSS-E-ST-40C covers software engineering: the process, from requirements through to acceptance
  • ECSS-Q-ST-80C covers software product assurance: quality, criticality categories, verification evidence
  • ECSS-E-ST-10-02C covers verification, including the system the software sits in
  • Criticality A to D, where A is catastrophic
  • Explicitly tailorable: a small mission negotiates which requirements apply

NASA in the United States

  • NPR 7150.2 sets the software engineering requirements and is the top-level document
  • NASA-STD-8739.8 covers software assurance and software safety
  • NASA-GB-8719.13 is the software safety guidebook
  • Classes A to F, A being human-rated or high-value
  • Requirements mapped per class in a matrix, rather than tailored by negotiation

T minus 00:04:00   WHAT THEY ACTUALLY DEMAND

What the paperwork is for

Traceability, in both directions. Every requirement reaches code and a test; every piece of code traces back to a requirement. Code that traces to nothing is as much a finding as a requirement that was never implemented.

Structural coverage. At the highest criticality it is not enough that tests pass. You must show which branches and conditions were exercised, and account for any that were not.

Coding standards with justified deviations. Usually a MISRA-style subset. Dynamic allocation after initialisation, recursion and unbounded loops are the usual casualties.

Independence. At high criticality, verification is done by people who did not write the code, and assurance reports outside the project chain. The point is not distrust of the developer but the fact that the person who misread a requirement while writing the code will misread it the same way while testing it. Independence is what stops a shared assumption from being verified against itself.

Failure analysis. FMEA and fault trees that include the software, not just the hardware it commands. The interesting cases are rarely the software faulting outright. They are the software behaving exactly as specified while a sensor lies to it, a timing assumption stops holding, or two components each do the right thing and the combination does not.

The cost driver is criticality, not size. The same algorithm at Category A and Category D can differ by an order of magnitude in effort, entirely in evidence rather than code. This is why establishing criticality early matters more than almost any other early decision.

T minus 00:01:00   IF YOU ARE STARTING

Where new teams lose time

T minus 00:00:20   SOURCES

Where this comes from

ECSS-E-ST-40C, Space engineering: Software. ECSS Secretariat, ESA-ESTEC, 6 March 2009. Superseded by Rev.1, 30 April 2025.

ECSS-Q-ST-80C Rev.1, Space product assurance: Software product assurance. ECSS Secretariat, ESA-ESTEC, 15 February 2017.

ECSS-E-ST-10-02C Rev.1, Space engineering: Verification. ECSS Secretariat, ESA-ESTEC, 1 February 2018.

NPR 7150.2D, NASA Software Engineering Requirements. NASA, effective 8 March 2022.

NASA-STD-8739.8B, Software Assurance and Software Safety Standard. NASA Office of Safety and Mission Assurance.

NASA Software Engineering Handbook is the working guidance behind NPR 7150.2, requirement by requirement.

MISRA C:2012, Guidelines for the Use of the C Language in Critical Systems. MISRA, 2013.

All nine topics
PreviousAnalysing failures in rendezvous and docking NextVerification and validation in space systems