More than 2 million lines of software code drove NASA’s successful Rover Curiosity landing on Mars. And, for the last two years, every single line was analyzed and scrubbed by static analysis products from Coverity, Grammatech, Semmle, and Uno.
Engineers at NASA’s Jet Propulsion Laboratory used all of the aforementioned products plus a GCC compiler and a homegrown tool to comb through the software, looking for errors or possible errors.
One of the tricky things about checking all that code — most written in C — is that sometimes it’s hard to know what to look for. “If you put software through three code reviews you’ll find stuff, and then if you put it through a fourth review, you’ll find something else. All these products all have their own strengths,’ said Gerard Holzmann, chief scientist for the JPL Lab for Reliable Software.
Ben Cichy, chief software engineer at JPL, said these programs check for thinks like array overloads, which can corrupt system memory and lead to all sorts of hard-to-foresee results.\
The fact that space agency used a full suite of analysis tools illustrates just how important the $ 2.5 billion Mars project was to the agency. NASA tends to use a redundant “belt and braces approach” said Chris Adlard, Coverity’s senior manager, worldwide customer advocacy. Apparently, given the mission’s success, all that work did the trick.
Feature image courtesy of NASA/JPL-Caltech