Rigorous software testing gets Curiosity off to a good start

NASA’s Jet Propulsion Lab (JPL) has used static code analysis from Coverity to maximise the quality of the code running on the Curiosity rover

NASA’s Jet Propulsion Lab (JPL) used static code analysis from Coverity to maximise the quality of the code running on the Curiosity rover.

Curiosity successfully landed on Mars earlier this month. The developers at JPL used a suite of sophisticated software tools and programming techniques, including Coverity, to improve the quality of the software that controls the flight and onboard functions of Curiosity. With more than two million lines of code, the software team needed to ensure that every software defect was found and fixed before launch.

A defect could mean the difference between success and failure for the $2.5bn NASA mission and impair its ability to assess its findings, so the software development process had to be rigorous and the code thoroughly vetted. JPL used automated code checking tools to test the software for bugs and overly complex coding.

According to Andy Chou, co-founder and chief technology officer at Coverity, static code analysis offers developers one of the earliest ways to detect problems. “Defects can be found when developers still have the code in their head. At NASA JPL, the code analysis tools were also conducted at later stages [in the project] to check again that no flaws had been introduced,” he said.

Static code analysis can also produce "false positives", Chou said – where the tool identifies legitimate code as incorrect. However, he said: “The developers at JPL fixed everything – even when there was a false positive. They understood that if the tool got confused about a piece of code, the code may be too complicated."

Image: NASA/JPL-Caltech



Enjoy the benefits of CW+ membership, learn more and join.

Read more on Software development tools



Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: