Space Exploration Asked by Hobbes on December 4, 2020
The flight control software for the Space Shuttle was developed to the most rigorous standards that exist today. They went to enormous lengths to prevent bugs from ever threatening the mission and/or the crew. The towering cost of the software makes it seem unlikely to me that this process is used routinely for scientific space missions.
For scientific satellites and deep space probes, you have a similar problem (although without the lives-at-stake element): you have one chance at making your observations (e.g. planet flyby missions), there are billions of dollars in hardware at stake (flagship missions) and no chance to repair or recover.
Yet the impression I get is that scientific spacecraft are developed mostly by the science team, i.e. scientists, not e.g. specialists in the development of high-availability software.
Is that impression correct?
And what methods are used to reduce the risk of software failure on science missions?
The reason I’m asking specifically about scientific space missions: commercial missions often take advantage of series production so the cost can be spread, and the amount of new functionality on the average commercial mission is small. These missions can also be insured. Scientific space missions tend to be uninsured one-offs.
No, scientific spacecraft are not developed by scientists on the science team. They may develop their instruments, but not the spacecraft. The spacecraft are developed by professional spacecraft engineers in the government or industry.
The software engineers are trained in software engineering, and in particular in high-reliability, real-time software. There are a set of rules and verification approaches used to develop high-reliability software, and there is extensive software testing both in software testbeds and on the spacecraft hardware.
You can read the JPL C coding standard for an example of such a set of rules. These rules were produced by JPL's Laboratory for Reliable Software, established specifically to improve the reliability of the critical software on one-off scientific missions. It was run by Gerard Holzmann, an expert on the automatic verification of software correctness.
Correct answer by Mark Adler on December 4, 2020
About software testing :
The ESA software (particularly developed by France) used on Ariane was (is?) written in ADA; This language relies a lot on ranges of values. For example, you don't just declare an integer, you must say if they are positive integers, and how high they can go. And an exception is raised when the values reach the lower or higher limit.
It sounds silly, but it allows you to develop an entire mathematical model of software testing and proving.
In other words : You can start heavily testing your software in an automated way, and for what you cannot automatically test, mathematics come to the rescue.
That didn't prevent the bug on Ariane 5, though, which went off-course specifically because of a mistake in allowed values range.
About software corruption:
I don't know what methods they use for dealing with code redundancy errors (caused by strong magnetic fields/radiations/etc.) but I know that's another huge field of research.
Answered by jeancallisti on December 4, 2020
I do want to add that while the spacecraft software is not developed by scientists, it's not uncommon for the scientists to develop (At least in part) post-processing software for the spacecraft that runs on the ground. This software, while important, doesn't require the same level of coding standards as ground software. Still, software engineers will write the more difficult parts of the code, essentially leaving scientists to piece together existing tools to post process the images exactly as is desired.
Answered by PearsonArtPhoto on December 4, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP