Measuring Code Quality to Improve Specification Mining
Authors:
- 6 January 2011
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 38 (1) , 175-190
Abstract
Formal specifications can help with program testing, optimization, refactoring, documentation, and, most importantly, debugging and repair. However, they are difficult to write manually, and automatic mining techniques suffer from 90-99 percent false positive rates. To address this problem, we propose to augment a temporal-property miner by incorporating code quality metrics. We measure code quality by extracting additional information from the software engineering process and using information from code that is more likely to be correct, as well as code that is less likely to be correct. When used as a preprocessing step for an existing specification miner, our technique identifies which input is most indicative of correct program behavior, which allows off-the-shelf techniques to learn the same number of specifications using only 45 percent of their original input. As a novel inference technique, our approach has few false positives in practice (63 percent when balancing precision and recall, 3 percent when focused on precision), while still finding useful specifications (e.g., those that find many bugs) on over 1.5 million lines of code.Keywords
This publication has 56 references indexed in Scilit:
- Who are Source Code Contributors and How do they Change?2009
- Static specification mining using automata-based abstractions2007
- A study of the documentation essential to software maintenance2005
- Defect frequency and design patterns: an empirical study of industrial codeIEEE Transactions on Software Engineering, 2004
- An empirical study on object-oriented metrics2003
- Enforcing high-level protocols in low-level software2001
- Bandera2000
- Business objects in corporate information systemsACM Computing Surveys, 1995
- A metrics suite for object oriented designIEEE Transactions on Software Engineering, 1994
- A critique of cyclomatic complexity as a software metricSoftware Engineering Journal, 1988