To err is human, but don't worry about it. NASA has an app for that.
It's called IKOS and it's actually much more sophisticated than a mobile device app. In fact, it's a fully developed program that finds errors in the logic of software that is still under development.
IKOS is short for Inference Kernel for Open Static Analyzers, and though that sounds like cryptic computer speak, the results of what it does are really quite remarkable. "It's basically a bug finder," said Jessica Nowinski, a project manager within NASA's Aviation Safety Program at Ames Research Center in California. "It looks for particular types of errors in software code and highlights them to the programmer."
What makes IKOS especially unique is that it is so good at what it does, and that can help save time and money in writing and testing software that will be key to helping design safer, more fuel-efficient airliners, advanced avionics or more efficient air traffic control systems.
The key feature that sets IKOS apart from other commercially available error checking software is the number of false positives that are picked up. With IKOS that number is less than 5 percent.
"When software developers were trying those other tools, they were giving up quickly because they were overwhelmed by the number of false positives, which was giving them more work. IKOS is much more effective," said Guillaume Brat, a NASA senior scientist at Ames.
NASA's software experts began work on IKOS during the 2011 fiscal year, completed it about a year later and in December 2013 released it to industry and the public.
Although IKOS is intended for aviation-related applications that use embedded systems, it is capable of analyzing C, so it has the potential for more widespread use as C continues to be the most popular computer language in use today. Here's how IKOS works:
Usually a software developer compiles and runs the code to check for errors. This can be time-consuming and often results in finding a number of bugs that go beyond just the logic – or "if-then" statements – buried in the code.
Debugging the resulting errors can take even longer as programmers hunt for where they made a mistake, re-write the code and then repeat the process again.
With IKOS, all the software engineer has to do is tell the computer to load the code into IKOS and run the program. IKOS then finds all the logic statements, analyzes the code, and produces an on-screen report that highlights the results of its scan.
Logic code highlighted in green is free of errors, yellow code shows there might be an error and red code indicates a "positive" find of an error.
The software developer can then go into the code, fix the problems and re-run it through IKOS – a process that takes much less time than the traditional method of debugging. In fact, the current version of IKOS can process 250,000 lines of code on a current model desktop computer in about five minutes.
Brat said the theory behind what makes IKOS tick isn't so revolutionary, just smarter in the way it is executed.
"We rely on a theory that is called abstract interpretation. It is not a huge advance in theoretical research. It is a big advance in the way the theory is used in practice -- a big improvement in engineering," Brat said. "It's using known techniques but is using them in a more clever way to be able to scale and be precise at the same time."
NASA's interest in developing IKOS stems from changes in requirements to include this type of safety assurance as part of the certification process for new aviation-related software or improved air traffic control-related software.
IKOS is one tool to verify and validate that a new piece of software is ready to be certified for use.
So far the software has been downloaded more than 230 times, which for the type of program it is and the way it is intended to be used is an encouraging start, Brat said.
"We're working with our industry partners to get it more widely adopted, but for now we just want more people to know it's available and it's free," Nowinski said.
For more information, visit www.nasa.gov.