The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.03 - May/June (2009 vol.35)
pp: 347-367
Nikolaos Tsantalis , University of Macedonia, Thessaloniki
Alexander Chatzigeorgiou , University of Macedonia, Thessaloniki
ABSTRACT
Placement of attributes/methods within classes in an object-oriented system is usually guided by conceptual criteria and aided by appropriate metrics. Moving state and behavior between classes can help reduce coupling and increase cohesion, but it is nontrivial to identify where such refactorings should be applied. In this paper, we propose a methodology for the identification of Move Method refactoring opportunities that constitute a way for solving many common Feature Envy bad smells. An algorithm that employs the notion of distance between system entities (attributes/methods) and classes extracts a list of behavior-preserving refactorings based on the examination of a set of preconditions. In practice, a software system may exhibit such problems in many different places. Therefore, our approach measures the effect of all refactoring suggestions based on a novel Entity Placement metric that quantifies how well entities have been placed in system classes. The proposed methodology can be regarded as a semi-automatic approach since the designer will eventually decide whether a suggested refactoring should be applied or not based on conceptual or other design quality criteria. The evaluation of the proposed approach has been performed considering qualitative, metric, conceptual, and efficiency aspects of the suggested refactorings in a number of open-source projects.
INDEX TERMS
Move Method refactoring, Feature Envy, object-oriented design, Jaccard distance, design quality.
CITATION
Nikolaos Tsantalis, Alexander Chatzigeorgiou, "Identification of Move Method Refactoring Opportunities", IEEE Transactions on Software Engineering, vol.35, no. 3, pp. 347-367, May/June 2009, doi:10.1109/TSE.2009.1
REFERENCES
[1] “Bad Smell Identification for Software Refactoring,” http:/www.jdeodorant.org, 2007.
[2] J. Bansiya and C.G. Davis, “A Hierarchical Model for Object-Oriented Design Quality Assessment,” IEEE Trans. Software Eng., vol. 28, no. 1, pp. 4-17, Jan. 2002.
[3] V.R. Basili, L.C. Briand, and W.L. Melo, “A Validation of Object-Oriented Design Metrics as Quality Indicators,” IEEE Trans. Software Eng., vol. 22, no. 10, pp. 751-761, Oct. 1996.
[4] A.B. Binkley and S.R. Schach, “Validation of the Coupling Dependency Metric as a Predictor of Runtime Failures and Maintenance Measures,” Proc. 20th Int'l Conf. Software Eng., pp.452-455, 1998.
[5] L.C. Briand, J.W. Daly, and J. Wust, “A Unified Framework for Cohesion Measurement in Object-Oriented Systems,” Empirical Software Eng., vol. 3, no. 1, pp. 65-117, 1998.
[6] L.C. Briand, J.W. Daly, and J.K. Wust, “A Unified Framework for Coupling Measurement in Object-Oriented Systems,” IEEE Trans. Software Eng., vol. 25, no. 1, pp. 91-121, Jan./Feb. 1999.
[7] L.C. Briand, J. Wust, S.V. Ikonomovski, and H. Lounis, “Investigating Quality Factors in Object-Oriented Designs: An Industrial Case Study,” Proc. 21st Int'l Conf. Software Eng., pp. 345-354, 1999.
[8] L.C. Briand, J. Wust, and H. Lounis, “Using Coupling Measurement for Impact Analysis in Object-Oriented Systems,” Proc. Int'l Conf. Software Maintenance, pp. 475-482, 1999.
[9] L.C. Briand and J. Wust, “Modeling Development Effort in Object-Oriented Systems Using Design Properties,” IEEE Trans. Software Eng., vol. 27, no. 11, pp. 963-986, Nov. 2001.
[10] F. Brito e Abreu, “The MOOD Metrics Set,” Proc. Ninth European Conf. Object-Oriented Programming Workshop Metrics, Aug. 1995.
[11] F. Brito e Abreu and W. Melo, “Evaluating the Impact of Object-Oriented Design on Software Quality,” Proc. Third Int'l Software Metrics Symp., pp. 90-99, 1996.
[12] M.A. Chaumun, H. Kabaili, R.K. Keller, F. Lustman, and G. Saint-Denis, “Design Properties and Object-Oriented Software Changeability,” Proc. Fourth European Conf. Software Maintenance and Reeng., pp. 45-54, 2000.
[13] S.R. Chidamber and C.F. Kemerer, “A Metrics Suite for Object Oriented Design,” IEEE Trans. Software Eng., vol. 20, no. 6, pp. 476-493, June 1994.
[14] S.R. Chidamber, D.P. Darcy, and C.F. Kemerer, “Managerial Use of Metrics for Object-Oriented Software: An Exploratory Analysis,” IEEE Trans. Software Eng., vol. 24, no. 8, pp. 629-639, Aug. 1998.
[15] B. Du Bois, S. Demeyer, and J. Verelst, “Refactoring—Improving Coupling and Cohesion of Existing Code,” Proc. 11th Working Conf. Reverse Eng. pp. 144-151, Nov. 2004.
[16] M. Fokaefs, N. Tsantalis, and A. Chatzigeorgiou, “JDeodorant: Identification and Removal of Feature Envy Bad Smells,” Proc. 23rd Int'l Conf. Software Maintenance, pp. 519-520, Oct. 2007.
[17] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring: Improving the Design of Existing Code. Addison Wesley, 1999.
[18] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, 1995.
[19] C. Ghezzi, M. Jazayeri, and D. Mandrioli, Fundamentals of Software Engineering, second ed. Prentice Hall, 2003.
[20] M. Hitz and B. Montazeri, “Measuring Coupling and Cohesion in Object-Oriented Systems,” Proc. Int'l Symp. Applied Corporate Computing, Oct. 1995.
[21] Y. Kataoka, T. Imai, H. Andou, and T. Fukaya, “A Quantitative Evaluation of Maintainability Enhancement by Refactoring,” Proc. 18th IEEE Int'l Conf. Software Maintenance, pp. 576-585, Oct. 2002.
[22] M. O'Keeffe and M. O'Cinneide, “Search-Based Software Maintenance,” Proc. 10th European Conf. Software Maintenance and Reeng., pp. 249-260, Mar. 2006.
[23] W. Li and S. Henry, “Object-Oriented Metrics that Predict Maintainability,” J. Systems and Software, vol. 23, no. 2, pp. 111-122, 1993.
[24] O. Maqbool and H.A. Babri, “Hierarchical Clustering for Software Architecture Recovery,” IEEE Trans. Software Eng., vol. 33, no. 11, pp. 759-780, Nov. 2007.
[25] R.C. Martin, Agile Software Development: Principles, Patterns and Practices. Prentice Hall, 2003.
[26] T. Mens and T. Tourwé, “A Survey of Software Refactoring,” IEEE Trans. Software Eng., vol. 30, no. 2, pp. 126-139, Feb. 2004.
[27] B.S. Mitchell and S. Mancoridis, “On the Automatic Modularization of Software Systems Using the Bunch Tool,” IEEE Trans. Software Eng., vol. 32, no. 3, pp. 193-208, Mar. 2006.
[28] W.F. Opdyke, “Refactoring Object-Oriented Frameworks,” PhD dissertation, Univ. of Illinois at Urbana-Champaign, 1992.
[29] I. Refanidis and A. Alexiadis, “SelfPlanner: An Intelligent Web-Based Calendar Application,” Proc. 17th Int'l Conf. Automated Planning and Scheduling Systems, Sept. 2007.
[30] A.J. Riel, Object-Oriented Design Heuristics. Addison-Wesley, 1996.
[31] O. Seng, J. Stammel, and D. Burkhart, “Search-Based Determination of Refactorings for Improving the Class Structure of Object-Oriented Systems,” Proc. Eighth Ann. Conf. Genetic and Evolutionary Computation, pp. 1909-1916, 2006.
[32] F. Simon, F. Steinbrückner, and C. Lewerentz, “Metrics Based Refactoring,” Proc. Fifth European Conf. Software Maintenance and Reeng., pp. 30-38, Mar. 2001.
[33] L. Tahvildari and K. Kontogiannis, “A Metric-Based Approach to Enhance Design Quality through Meta-Pattern Transformations,” Proc. Seventh European Conf. Software Maintenance and Reeng., pp.183-192, Mar. 2003.
20 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool