TY - JOUR
T1 - Scalable and scope-bounded software verification in Varvel
AU - Ivančić, Franjo
AU - Balakrishnan, Gogul
AU - Gupta, Aarti
AU - Sankaranarayanan, Sriram
AU - Maeda, Naoto
AU - Imoto, Takashi
AU - Pothengil, Rakesh
AU - Hussain, Mustafa
N1 - Publisher Copyright:
© 2014, Springer Science+Business Media New York.
PY - 2015/12/26
Y1 - 2015/12/26
N2 - Software model checking and static analysis have matured over the last decade, enabling their use in automated software verification. However, lack of scalability makes these tools hard to apply in industry practice. Furthermore, approximations in the models of program and environment lead to a profusion of false alarms. This paper proposes DC2, a verification framework using scope-bounding to address the issue of scalability, while retaining enough precision to avoid false alarms in practice. DC2 splits the analysis problem into manageable parts, relying on a combination of three automated techniques: (a) techniques to infer useful specifications for functions in the form of pre- and post-conditions; (b) stub inference techniques that infer abstractions to replace function calls beyond the verification scope; and (c) automatic refinement of pre- and post-conditions using counterexamples that are deemed to be false alarms by a user. The techniques enable DC2 to perform iterative reasoning over the calling environment of functions, to find non-trivial bugs and fewer false alarms. Based on the DC2 framework, we have developed a software model checking tool for C/C++ programs called Varvel, which has been in industrial use at NEC for a number of years. In addition to DC2, we describe other scalability and usability improvements in Varvel that have enabled its successful application on numerous large software projects. These include model simplifications, support for witness understanding to improve debugging assistance, and handling of C++ programs. We present experimental evaluations that demonstrate the effectiveness of DC2 and report on the usage of Varvel in NEC.
AB - Software model checking and static analysis have matured over the last decade, enabling their use in automated software verification. However, lack of scalability makes these tools hard to apply in industry practice. Furthermore, approximations in the models of program and environment lead to a profusion of false alarms. This paper proposes DC2, a verification framework using scope-bounding to address the issue of scalability, while retaining enough precision to avoid false alarms in practice. DC2 splits the analysis problem into manageable parts, relying on a combination of three automated techniques: (a) techniques to infer useful specifications for functions in the form of pre- and post-conditions; (b) stub inference techniques that infer abstractions to replace function calls beyond the verification scope; and (c) automatic refinement of pre- and post-conditions using counterexamples that are deemed to be false alarms by a user. The techniques enable DC2 to perform iterative reasoning over the calling environment of functions, to find non-trivial bugs and fewer false alarms. Based on the DC2 framework, we have developed a software model checking tool for C/C++ programs called Varvel, which has been in industrial use at NEC for a number of years. In addition to DC2, we describe other scalability and usability improvements in Varvel that have enabled its successful application on numerous large software projects. These include model simplifications, support for witness understanding to improve debugging assistance, and handling of C++ programs. We present experimental evaluations that demonstrate the effectiveness of DC2 and report on the usage of Varvel in NEC.
KW - Abstract interpretation
KW - Bug detection
KW - Program analysis
KW - Scope bounding
KW - Software model checking
KW - Witness presentation
UR - http://www.scopus.com/inward/record.url?scp=84942374619&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84942374619&partnerID=8YFLogxK
U2 - 10.1007/s10515-014-0164-0
DO - 10.1007/s10515-014-0164-0
M3 - Article
AN - SCOPUS:84942374619
SN - 0928-8910
VL - 22
SP - 517
EP - 559
JO - Automated Software Engineering
JF - Automated Software Engineering
IS - 4
ER -