
Good software needs to detect and handle errors. Unfortunately, current techniques for handling errors in code are ad hoc and incomplete at best; error-handling is under-planned and under-tested. Too often, this leads to unexpected errors in software under development or deployed in the field; these errors are costly to diagnose and repair.
In previous work, we have determined that many of the errors that cost the most time and money are those at the boundaries between components. To address these problems, we are developing two tools.
One tool is a format extractor that recovers the structure of messages directly from the source code of the program that reads or writes those messages. The other tool is a message-aware flaw finder that uses the known structure of messages to identify flaws in how those messages are created or processed. Both tool designs focus on analyzing the data flowing between communicating components-the dataflow that was of greatest concern to the engineers we spoke with. The resulting tools will identify inter-component problems statically, reducing the need for expensive test-bench diagnosis of integration flaws.
The proposed tools will identify inter-component problems statically, reducing the need for expensive test-bench diagnosis of integration flaws. Since integration flaws are a significant source of software development cost and delay, the proposed tools should have significant value to enterprises building large systems. Large software systems employing this technology will be less expensive to develop, more likely to be ready on time, and of higher quality.
Keywords: static analysis, software faults, message-passing, software analysis, input/output formats, software component compatibility