Refactoring Effect Estimation Based on Complexity Metrics

Refactoring is a set of operations to improve maintainability or understandability or other attributes of a software system without changing the external behavior of it, and it is getting much attention recently. However it is difficult to perform appropriate refactorings since the impact of refactoring should justify the cost. Therefore, before a refactoring is really performed, the effect and the cost of it should be estimated. The estimation makes it possible for us to adequately assess whether each refactoring should be performed or not. This paper shows that it is difficult for developers to perform appropriate refactorings, and proposes a method estimating refactoring effect. The method has been implemented as a software tool, and a case study was conducted with it. The result of the case study showed that the estimation of the tool helped a developer of the target software system to perform an appropriate refactoring.

[1]  Stephan Diehl,et al.  Identifying Refactorings from Source-Code Changes , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[2]  Takeo Imai,et al.  A quantitative evaluation of maintainability enhancement by refactoring , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[3]  Doo-Hwan Bae,et al.  An automated refactoring approach to design pattern-based program transformations in Java programs , 2002, Ninth Asia-Pacific Software Engineering Conference, 2002..

[4]  Ladan Tahvildari,et al.  Journal of Software Maintenance and Evolution: Research and Practice Improving Design Quality Using Meta-pattern Transformations: a Metric-based Approach , 2022 .

[5]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[6]  Katsuhisa Maruyama An Accurate and Convenient Undo Mechanism for Refactorings , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[7]  Mel Ó Cinnéide Automated refactoring to introduce design patterns , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[8]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[9]  Martin Hitz,et al.  Measuring coupling and cohesion in object-oriented systems , 1995 .

[10]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[11]  Ellis Horowitz,et al.  Software Cost Estimation with COCOMO II , 2000 .

[12]  Adrian Trifu,et al.  Towards Automated Restructuring of Object Oriented Systems , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[13]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[14]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[15]  Eleni Stroulia,et al.  Assessing the maintainability benefits of design restructuring using dependency analysis , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).

[16]  Robert M. Hierons,et al.  The Effectiveness of Refactoring, Based on a Compatibility Testing Taxonomy and a Dependency Graph , 2006, Testing: Academic & Industrial Conference - Practice And Research Techniques (TAIC PART'06).

[17]  Arie van Deursen,et al.  The Video Store Revisited – Thoughts on Refactoring and Testing , 2002 .