|
ABSTRACT
This paper presents an empirical study of drivers for software refactoring decisions. We studied the refactoring decisions made by 37 students evaluating ten methods of a purposefully constructed Java program. The decision rationales reported by the evaluators were coded to identify the drivers behind the decisions. The identified drivers were categorized into Structure, Documentation, Visual Representation, and General drivers. The evaluators had conflicting opinions both regarding the internal quality of the methods and refactoring decisions. Complex code problems were detected only by experienced evaluators. Using regression analysis, we looked at the predictive value of drivers explaining the refactoring decisions. The most salient driver leading to a favourable refactoring decision was method size. This study provides information of the refactoring decisions and helps form a basis for creating code problem detectors. By comparing automatic detection and the identified drivers we gained understanding of code problems that are difficult or impossible to detect automatically, for example Poor Algorithm. Issues detected only by experienced developers, and code problems for which the human eye surpasses automatic detection indicate good areas for developer education.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Arnold,R.S., "Software restructuring," Proceedings of the IEEE, vol. 77, no. 4, 1989, pp. 607--617.
|
| |
2
|
William J. Brown , Raphael C. Malveau , Hays W. McCormick, III , Thomas J. Mowbray, AntiPatterns: refactoring software, architectures, and projects in crisis, John Wiley & Sons, Inc., New York, NY, 1998
|
| |
3
|
Fowler,M., Refactoring: Improving the Design of Existing Code, Boston: Addison-Wesley, 2000.
|
| |
4
|
|
| |
5
|
|
| |
6
|
|
| |
7
|
|
| |
8
|
Lehman,M.M., "On Understanding Laws, Evolution, and Conservation in the Large-Program Life Cycle," The Journal of Systems and Software, vol. 1, 1980, pp. 213--221.
|
| |
9
|
Mäntylä,M.V., "An experiment on subjective evolvability evaluation of object-oriented software: explaining factors and interrater agreement," in International Symposium on Empirical Software Engineering, 2005, pp. 277--286.
|
| |
10
|
|
| |
11
|
|
| |
12
|
Miles,M.B. and Huberman,M.A., Qualitative Data Analysis, Thousand Oaks, California, USA: Sage Publications, 1994.
|
| |
13
|
Moilanen,T. and Roponen,S., Kvalitativiisen aineiston analyysi Atlas.ti-ohjelman avulla, Helsinki, Finland: Kuluttajatutkimuskeskus, 1994.
|
| |
14
|
|
| |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
|
| |
19
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.7
Distribution, Maintenance, and Enhancement
Subjects:
Restructuring, reverse engineering, and reengineering
General Terms:
Design,
Experimentation,
Human Factors,
Measurement
Keywords:
code smells,
evolvability,
maintainability,
qualitative analysis,
refactoring
|