Abstract
The search for techniques to improve software quality and achieve robust, reliable, and maintainable software is ongoing. Refactoring, an approach that improves the internal structure of software without affecting its external behavior, is one method that aims to achieve better quality. Refactoring to patterns is another. The goal of this paper is to investigate whether refactoring to patterns improves software quality. This is done empirically by examining the metric values of external quality attributes for different software systems before and after refactoring to patterns is applied. We found no consistent improvement trends in the software quality attributes. This is because each refactoring to patterns technique has a particular purpose and effect, and hence affects software quality attributes differently.
Article PDF
Similar content being viewed by others
Avoid common mistakes on your manuscript.
References
Opdyke, W.: Refactoring: A Program Restructuring Aid in Designing Object-Oriented Application Frameworks. PhD Thesis, Univ. of Illinois at Urbana-Champaign (1992)
Wake W.: Refactoring Workbook. Addison-Wesley, Reading (2003)
Fowler M., Beck K., Brant J., Opdyke W., Roberts D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading (1999)
Gamma E., Helm R., Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading (1994)
Kerievsky, J.: Refactoring to patterns. In: Addison-Wesley Signature Series. Addison-Wesley, Reading (2004)
Standard 1061-1992 for a Software Quality Metrics Methodology (1992)
ISO/IEC9126, 9126 Standard, Information technology—Software product evaluation—Quality characteristics and Guidelines for Their Use (1991)
Pressman R.: Software Engineering: A Practitioner’s Approach, 6th edn. McGraw-Hill, NY (2005)
Alshayeb, M.; Li, W.; Graves, S.: An Empirical Study of Refactoring, New Design, and Error-fix efforts in extreme programming. In: Proceedings of the 5th World Multiconference on Systemics, Cybernetics and Informatics (SCI 2001), Orlando, FL (2001)
Mens T., Tourwe T.: A Survey of Software Refactoring. IEEE Trans. Softw. Eng. 30, 126–139 (2004)
Coad P.: Object-oriented patterns. Commun. ACM 35, 152–159 (1992)
Coad P., North D., Mayfield M.: Object Models: Patterns, Strategies, and Applications. Prentice-Hall, Englewood Cliffs (1995)
Schmid H.: Creating applications from components: a manufacturing framework design. IEEE Softw. 13, 67–75 (1996)
Pree, W.: Meta patterns: a means for capturing the essentials of reusable object-oriented design. In: Proceedings of the European Conference of Object Oriented Programming, ECOOP’94, Bologna, Italy, pp. 150–162 July, 1994
Pree W.: Design Patterns for Object-Oriented Software Development. Addison-Wesley, Reading (1995)
Pree, W.: Framework Patterns: SIGS Books & Multimedia (1996)
Buschmann F., Meunier R., Rohnert H., Sommerlad P., Stal M.: Pattern-Oriented Software Architecture: A Pattern System. Addison-Wesley, Reading (1996)
Muraki, T.; Saeki, M.: Metrics for applying GOF design patterns in refactoring processes. In: Proceedings of the 4th International Workshop on Principles of Software Evolution, Sept. 2001
Cinneide, M.: Automated refactoring to introduce design patterns. In: Proceedings of the International Conference on Software Engineering, June 2000
Usha, K.; Poonguzhali, N.; Kavitha, E.: A quantitative approach for evaluating the effectiveness of refactoring in software development process. In: International Conference on Methods and Models in Computer Science, pp. 1–7 (2009)
Tsantalis, N.; Chatzigeorgiou, A.: Identification of extract method refactoring opportunities. In: European Conference on Software Maintenance and Reengineering, pp. 119–128 (2009)
Tsantalis N., Chatzigeorgiou A.: Identification of Move Method Refactoring Opportunities. IEEE Trans. Softw. Eng. 36, 347–367 (2009)
Geppert, B.; Mockus, A.; Robler, F.: Refactoring for changeability: a way to go. In: Proceedings of 11th IEEE International Software Metrics Symposium (METRICS’05) (2005)
Wilking D., Khan U., Kowalewski S.: An empirical evaluation of refactoring. e. Inf. Softw. Eng. J. 1, 27–42 (2007)
Bois, B.; Demeyer, S.; Verelst, J.: Does the “Refactor to Understand” Reverse Engineering Pattern Improve Program Comprehension? In: Proceedings of the 9th European Conference on Software Maintenance and Reengineering (CSMR’05), pp. 334–343 (2005)
Alshayeb M.: Empirical Investigation of Refactoring Effect on Software Quality. Inf. Softw. Technol. J. 51, 1319–1326 (2009)
Bois, B.D.; Mens, T.: Describing the impact of refactoring on internal program quality. In: International Workshop on Evolution of Large-Scale Industrial Software Applications (ELISA), Sept. 2003
Kataoka, Y.; Imai, T.; Andou, H.; Fukaya, T.: A quantitative evaluation of maintainability enhancement by refactoring. In: Proceedings of the IEEE International Conference on Software Maintenance (2002)
Stroggylos, K.; Spinellis, D.: Refactoring—does it improve software quality? In: Proceedings of the 5th International Workshop on Software Quality (WoSQ’07: ICSE Workshops), pp. 10–16 (2007)
Moser, R.; Sillitti, A.; Abrahamsson, P.; Succi, G.: Does refactoring improve reusability? In: 9th International Conference on Software Reuse (ICSR’06), pp. 287–297 (2006)
Reddy, K.N.; Rao, A.A.: A quantitative evaluation of software quality enhancement by refactoring using dependency oriented complexity metrics. In: Proceedings of the Second International Conference on Emerging Trends in Engineering and Technology, pp. 1011–1018 (2009)
Higo, Y.; Matsumoto, Y.; Kusumoto, S.; Inoue, K.: Refactoring effect estimation based on complexity metrics. In: 19th Australian Conference on Software Engineering, pp. 219–228 (2008)
Masuda, G.; Sakamoto, N.; Ushijima, K.: Redesigning of an Existing Software using Design Patterns. In: Proceedings of the International Symposium on Principles of Software Evolution, pp. 165–169, Nov. 2000
Bois, B.; Demeyer, S.; Verelst, J.: Refactoring—improving coupling and cohesion of existing code. In: Proceedings of the 11th Working Conference on Reverse Engineering (WCRE’04), pp. 144–151 (2004)
Dandashi, F.: A Method for Assessing the Reusability of Object-Oriented Code Using a Validated Set of Automated Measurements. In: Proceedings of the ACM Symposium on Applied Computing, pp. 997–1003 (2002)
Bruntink M., Deursen A.: An empirical study into class testability. J. Syst. Softw. 79, 1219–1232 (2006)
IEEE, Std. 610.12—IEEE Standard Glossary of Software Engineering Terminology: The Institute of Electrical and Electronics Engineers (1991)
Metamata. Metamata Metrics Tool. http://www.metamata.com
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Alshayeb, M. The Impact of Refactoring to Patterns on Software Quality Attributes. Arab J Sci Eng 36, 1241–1251 (2011). https://doi.org/10.1007/s13369-011-0111-3
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s13369-011-0111-3