An Evaluation of Two Bug Pattern Tools for Java

Automated static analysis is a promising technique to detect defects in software. However, although considerable effort has been spent for developing sophisticated detection possibilities, the effectiveness and efficiency has not been treated in equal detail. This paper presents the results of two industrial case studies in which two tools based on bug patterns for Java are applied and evaluated. First, the economic implications of the tools are analysed. It is estimated that only 3-4 potential field defects need to be detected for the tools to be cost-efficient. Second, the capabilities of detecting field defects are investigated. No field defects have been found that could have been detected by the tools. Third, the identification of fault-prone classes based on the results of such tools is investigated and found to be possible. Finally, methodological consequences are derived from the results and experiences in order to improve the use of bug pattern tools in practice.

[1]  Jan Jürjens,et al.  Comparing Bug Finding Tools with Reviews and Tests , 2005, TestCom.

[2]  Tilman Seifert,et al.  Tool Support for Continuous Quality Assessment , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

[3]  David Hovemeyer Simple and Effective Static Analysis to Find Bugs , 2005 .

[4]  Jean-Francois Girard,et al.  An Activity-Based Quality Model for Maintainability , 2007, 2007 IEEE International Conference on Software Maintenance.

[5]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[6]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[7]  Martin Fowler. Refactoring Improving the Design of Existing Code , 1999 .

[8]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[9]  Dawson R. Engler,et al.  How to write system-specific, static checkers in metal , 2002, PASTE '02.

[10]  Eric Allen Bug Patterns in Java , 2002 .

[11]  Standard Glossary of Software Engineering Terminology , 1990 .

[12]  Daniel Ratiu,et al.  A Unified Meta-Model for Concept-Based Reverse Engineering , 2006 .

[13]  Jeffrey S. Foster,et al.  A comparison of bug finding tools for Java , 2004, 15th International Symposium on Software Reliability Engineering.

[14]  J. David Morgenthaler,et al.  Evaluating static analysis defect warnings on production software , 2007, PASTE '07.

[15]  N. Nagappan,et al.  Static analysis tools as early indicators of pre-release defect density , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[16]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[17]  Edith Schonberg,et al.  SABER: smart analysis based error reduction , 2004, ISSTA '04.

[18]  Stefan Wagner A model and sensitivity analysis of the quality economics of defect-detection techniques , 2006, ISSTA '06.

[19]  Stefan Wagner,et al.  A literature survey of the quality economics of defect-detection techniques , 2006, ISESE '06.

[20]  Laurie A. Williams,et al.  On the value of static analysis for fault detection in software , 2006, IEEE Transactions on Software Engineering.