Design and Implementation of a Fine-Grained Software Inspection Tool
P. Anderson, T. Reps, and T. Teitelbaum
Although software inspection has led to improvements in software
quality, many software systems continue to be deployed with
unacceptable numbers of errors, even when software inspection is part
of the development process. The difficulty of manually verifying that
the software under inspection conforms to the rules is partly to
blame. We describe the design and implementation of a tool designed to
help alleviate this problem. The tool provides mechanisms for
fine-grained inspection of software by exposing the results of
sophisticated whole-program static analysis to the inspector. The tool
computes many static-semantic representations of the program,
including an accurate call graph and dependence graph. A whole-program
pointer analysis is used to make sure that the representation is
precise with respect to aliases induced by pointer usage. Views on the
dependence graph and related representations are supported. Queries on
the dependence graph allow an inspector to answer detailed questions
about the semantics of the program. Facilities for openness and
extensibility permit the tool to be integrated with many software
development processes. The main challenge of the approach is to
provide facilities to navigate and manage the enormous complexity of
the dependence graph.
(Click here to access the paper:
paper, via IEEE Explore.)
GrammaTech, Inc.