We describe a certification approach for software development that has been adopted at the Jet Propulsion Laboratory. JPL develops robotic spacecraft for the exploration of the solar system.
The flight software that controls these spacecraft is considered to be mission critical. We argue that the goal of a software certification process cannot be the development of “perfect” software, i.e., software that can be formally proven to be correct under all imaginable and unimaginable circumstances.
More realistically, the goal is to guarantee a software development process that is conducted by knowledgeable engineers, who follow generally accepted procedures to control known risks, while meeting agreed upon standards of workmanship.
We target three specific issues that must be addressed in such a certification procedure: the coding process, the code that is developed, and the skills of the coders. The coding process is driven by standards.
The code is mechanically checked against the standards with the help of state-of- the-art static source code analyzers. The coders, finally, are certified in on-site training courses that include formal exams.
To read this external content in full, download the paper from the author archives at the Jet Propulsion Laboratory.