One of the biggest challenges facing software developers is producing high quality, defect-free code in ever-shrinking market windows. One aspect of this challenge is ensuring that the software is property tested and inspected for defects. To date, however, there have been a number of limitations to these software quality processes: they often miss dangerous defects on infrequently executed paths--these defects include null pointer dereferences, memory leaks, out-of-bounds array accesses, and uninitialized variables. Such defects usually cause the application or system to crash, or they cause data corruption. The cost of failure particularly for embedded systems can be quite high since the software often controls safety-critical equipment. Financial applications, particularly Internet applications, have a similarly high reliability requirement. In addition, in Internet applications, any defect that allows a user to crash the application or produce invalid data also presents a security vulnerability.
Formal source code inspections have long been a recognized approach to finding these kinds of defects, in addition to providing an overall quality assessment. However, the resource requirement (in terms of training, time and cost) is usually prohibitive. Tool vendors have attempted to address this issue with automation, and today there are many source code inspection tools available. Most of these tools focus on overall code quality and provide metrics for assessing quality. However, their ability to identify true defects is limited, both in terms of the number of false positives produced, and the complexity of defects that can be detected.
Recently, a new approach to inspection has emerged, automated software inspection services. These approaches use recently developed software analysis technologies including value lattices, computation analysis graphs, and theorem provers toinspect source code for specific classes of dangerous defects. These approaches can eliminate most of the false positives that characterize pattern-oriented methods, and can detect much more subtle defects than lint-like tools whose context is limited to a single function.
In this session, we look at these different software inspection solutions and provide scenarios for when each should be used, how they operate, and what results can be expected. We also compare software inspection solutions with traditional testing, and identify the strengths and costs associated with each.
Scott Trappe is President and Chief Operating Officer for Reasoning Inc., which provides the InstantQA automated software inspection service. With more than 20 years of experience developing and marketing software development tools and services behind him, he has contributed numerous articles on the subject to software development publications and hosted presentations at industry-related events. Mr. Trappe joined Reasoning from Intrinsa, where he held a dual role of Vice President of Engineering and Marketing. Intrinsa successfully developed and marketed an automated source code inspection product similar to InstantQA. Intrinsa was acquired by Microsoft in 1999. Prior to Intrinsa, Mr. Trappe held a variety of marketing and engineering management positions with Netopia; Operations Control Systems and Tektronix. He holds an MBA from the Haas School of Business at the University of California, Berkeley and a BS in Computer Science from the University of Arizona.