Selecting Refactorings: An Option Based Approach

Refactoring, aims to improve the design of existing code to cope with foreseen software architecture evolution. The selection of the optimum refactoring strategy can be a daunting task involving the identification of refactoring candidates, the determination of which refactorings to apply and the assessment of the refactoring impact on software product quality characteristics. As such, the benefits from refactorings are measured from the quality advancements achieved through the application of state of the art structural quality assessments on refactored code. Perceiving refactoring trough the lens of value creation, the optimum strategy should be the one that maximizes the endurance of the architecture in future imposed changes. We argue that an alternative measurement and examination of the refactoring success is possible, one, that focuses on the balance between effort spent and anticipated cost minimization. In this arena, traditional, quality evaluation methods fall short in examining the financial implications of uncertainties imposed by the frequent updates/modifications and by the dynamics of the XP programming. In this paper we apply simple Real Options Analysis techniques and we perceive the selection of the optimum refactoring strategy as an option capable of generating value (cost minimization) upon adoption. Doing so, we link the endurance of the refactored architecture to its true monetary value. To get an estimation of the expected cost that is needed to apply the considered refactorings and to the effect of applying them, in the cost of future adoptions we conducted a case study. The results of the case study suggest that every refactoring can be associated with different benefit levels during system extension.

[1]  Maya Daneva,et al.  Using measurements to support real-option thinking in agile software development , 2008, APOS '08.

[2]  B. Kitchenham,et al.  Case Studies for Method and Tool Evaluation , 1995, IEEE Softw..

[3]  Eric Yu,et al.  Software refactoring guided by multiple soft-goals , 2003 .

[4]  Serge Demeyer,et al.  Maintainability versus Performance: What's the Effect of Introducing Polymorphism ? , 2003 .

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

[6]  Raed Shatnawi,et al.  An Empirical Assessment of Refactoring Impact on Software Quality Using a Hierarchical Quality Model , 2011 .

[7]  Barry Boehm,et al.  Software economics: a roadmap , 2000, ICSE '00.

[8]  Tyson R. Browning,et al.  Designing systems for adaptability by means of architecture options , 2008 .

[9]  Jeff Sutherland,et al.  Manifesto for Agile Software Development , 2013 .

[10]  Markus Pizka,et al.  Straightening Spaghetti-Code with Refactoring? , 2004, Software Engineering Research and Practice.

[11]  Witold Pedrycz,et al.  A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team , 2008, CEE-SET.

[12]  Harald C. Gall,et al.  Improving evolvability through refactoring , 2005, ACM SIGSOFT Softw. Eng. Notes.

[13]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[14]  Leon Moonen,et al.  Java quality assurance by detecting code smells , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[15]  Dave Astels,et al.  Test Driven Development: A Practical Guide , 2003 .

[16]  H. Erdogmus Valuation of Learning Options in Software Development Under Private and Market Risk , 2002 .

[17]  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 .

[18]  Claus Lewerentz,et al.  Metrics Based Refactoring , 2001, CSMR.

[19]  Maya Daneva,et al.  Complementing Measurements and Real Options Concepts to Support Inter-iteration Decision-Making in Agile Projects , 2008, 2008 34th Euromicro Conference Software Engineering and Advanced Applications.

[20]  Mohammad Alshayeb,et al.  Empirical investigation of refactoring effect on software quality , 2009, Inf. Softw. Technol..

[21]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[22]  Bart Du Bois,et al.  Describing the impact of refactoring on internal program quality , 2003 .

[23]  R. Neufville,et al.  Identification of Real Options “ in ” Projects , 2006 .

[24]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[25]  Jan Verelst,et al.  Refactoring - improving coupling and cohesion of existing code , 2004, 11th Working Conference on Reverse Engineering.

[26]  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).

[27]  T. Copeland Real Options: A Practitioner's Guide , 2001 .

[28]  Eleni Stroulia,et al.  Digging the Development Dust for Refactorings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

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

[30]  Mary Shaw,et al.  In Search of a Unified Theory for Early Predictive Design Evaluation for Software , 2005 .

[31]  Eleni Stroulia,et al.  Metrics of Refactoring-based Development: An Experience Report , 2001, OOIS.