The Community for Technology Leaders
RSS Icon
Issue No.09 - Sept. (2013 vol.39)
pp: 1245-1263
Hewijin Christine Jiau , National Cheng Kung University, Tainan
Lee Wei Mar , National Cheng Kung University, Tainan
Jinghong Cox Chen , National Cheng Kung University, Tainan
The redistribution of class responsibilities is a common reengineering practice in object-oriented (OO) software evolution. During the redistribution, developers frequently construct batched refactoring plans for moving multiple methods and fields among various classes. With an objective of carefully maintaining the cohesion and coupling degree of the class design, executing a batched refactoring plan without introducing any objective-violating side effect into the refactored code is essential. However, using most refactoring engines for batched refactoring plan execution introduces coupling-increasing Middle Man bad smell in the final refactored code and therefore makes the refactoring execution suboptimal in achieving the redistribution objective. This work proposes Obey, a methodology for optimal batched refactoring plan execution. Obey analyzes a batched refactoring plan, identifies Middle Man symptoms that cause suboptimal execution, and renovates the plan for optimal execution. We have conducted an empirical study on three open-source software projects to confirm the effectiveness of Obey in a practical context.
optimization, Reengineering, class responsibility redistribution, batched refactoring execution, change impact analysis
Hewijin Christine Jiau, Lee Wei Mar, Jinghong Cox Chen, "OBEY: Optimal Batched Refactoring Plan Execution for Class Responsibility Redistribution", IEEE Transactions on Software Engineering, vol.39, no. 9, pp. 1245-1263, Sept. 2013, doi:10.1109/TSE.2013.19
[1] S.R. Schach, Object-Oriented and Classical Software Engineering, sixth ed. McGraw-Hill, 2004.
[2] B. Bruegge and A.H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns and Java, second ed. Prentice-Hall, 2004.
[3] M. Bowman, L.C. Briand, and Y. Labiche, "Solving the Class Responsibility Assignment Problem in Object-Oriented Analysis with Multi-Objective Genetic Algorithms," IEEE Trans. Software Eng., vol. 36, no. 6, pp. 817-837, Nov./Dec. 2010.
[4] S. Demeyer, S. Ducasse, and O. Nierstrasz, Object-Oriented Reengineering Patterns. Morgan Kaufmann, 2002.
[5] B.D. Bois, S. Demeyer, and J. Verelst, "Refactoring—Improving Coupling and Cohesion of Existing Code," Proc. 11th Working Conf. Reverse Eng., pp. 144-151, 2004.
[6] K. Cassell, P. Andreae, L. Groves, and J. Noble, "Towards Automating Class-Splitting Using Betweenness Clustering," Proc. IEEE/ACM Int'l Conf. Automated Software Eng., pp. 595-599, 2009.
[7] G. Bavota, A.D. Lucia, and R. Oliveto, "Identifying Extract Class Refactoring Opportunities Using Structural and Semantic Cohesion Measures," J. Systems Software, vol. 84, no. 3, pp. 397-414, Mar. 2011.
[8] J. Ratzinger, M. Fischer, and H. Gall, "Improving Evolvability through Refactoring," Proc. Int'l Workshop Mining Software Repositories, pp. 1-5, 2005.
[9] T. Zimmermann, P. Weissgerber, S. Diehl, and A. Zeller, "Mining Version Histories to Guide Software Changes," IEEE Trans. Software Eng., vol. 31, no. 6, pp. 429-445, June 2005.
[10] M.L. Marco D'Ambros and M. Lanza, "Visualizing Co-Change Information with the Evolution Radar," IEEE Trans. Software Eng., vol. 35, no. 6, pp. 720-735, Nov. 2009.
[11] W.F. Opdyke, "Refactoring Object-Oriented Frameworks," PhD dissertation, Univ. of Illinois at Urbana-Champaign, 1992.
[12] M. Fowler, Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
[13] T. Mens and T. Tourwé, "A Survey of Software Refactoring," IEEE Trans. Software Eng., vol. 30, no. 2, pp. 126-139, Feb. 2004.
[14] G.C. Murphy, M. Kersten, and L. Findlater, "How Are Java Software Developers Using the Eclipse IDE?" IEEE Software, vol. 23, no. 4, pp. 76-83, July/Aug. 2006.
[15] "Eclipse," Eclipse Foundation, http:/, 2012.
[16] "IntelliJ IDEA," JetBrains, http://www.jetbrains.comidea/, 2012.
[17] "JDeveloper," Oracle, developer-tools jdev/, 2012.
[18] E. Murphy-Hill, C. Parnin, and A.P. Black, "How We Refactor, and How We Know It," IEEE Trans. Software Eng., vol. 38, no. 1, pp. 5-18, Jan./Feb. 2012.
[19] B. Daniel, D. Dig, K. Garcia, and D. Marinov, "Automated Testing of Refactoring Engines," Proc. Sixth Joint Meeting European Software Eng. Conf. and ACM SIGSOFT Symp. Foundations of Software Eng., pp. 185-194, 2007.
[20] L.W. Mar, J.C. Chen, and H.C. Jiau, Previewing the Effects of Refactoring. VDM Verlag Dr. Müller Aktiengesellschaft & Co. KG, 2008.
[21] H.C. Jiau and J.C. Chen, "Test Code Differencing for Test-Driven Refactoring Automation," ACM SIGSOFT Software Eng. Notes, vol. 34, no. 1, pp. 1-10, Jan. 2009.
[22] I. Moore, "Automatic Inheritance Hierarchy Restructuring and Method Refactoring," Proc. 11th ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Language, and Applications, pp. 235-250, 1996.
[23] F. Tip, A. Kieżun, and D. Bäumer, "Refactoring for Generalization Using Type Constraints," Proc. 18th Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Language, and Applications, pp. 13-26, Oct. 2003.
[24] F. Tip, R.M. Fuhrer, A. Kieżun, M.D. Ernst, I. Balaban, and B.D. Sutter, "Refactoring Using Type Constraints," ACM Trans. Programming Languages Systems, vol. 33, no. 3,article 9, May 2011.
[25] M. Streckenbach and G. Snelting, "Refactoring Class Hierarchies with KABA," Proc. 19th Ann. ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 315-330, Oct. 2004.
[26] M. O'Keeffe and M.O. Cinnéide, "Search-Based Refactoring for Software Maintenance," J. Systems Software, vol. 81, no. 4, pp. 502-516, Apr. 2008.
[27] N. Tsantalis and A. Chatzigeorgiou, "Identification of Move Method Refactoring Opportunities," IEEE Trans. Software Eng., vol. 35, no. 3, pp. 347-367, May 2009.
[28] M. Fokaefs, N. Tsantalis, A. Chatzigeorgiou, and J. Sander, "Decomposing Object-Oriented Class Modules Using an Agglomerative Clustering Technique," Proc. 25th IEEE Int'l Conf. Software Maintenance, pp. 93-101, 2009.
[29] L.W. Mar, J.C. Chen, and H.C. Jiau, "Supporting Cohesion-Based Bad Smell Inspection with CARE," Proc. First Cross-Strait Conf. Software Technology, Mar. 2010.
[30] G. Bavota, R. Oliveto, A.D. Lucia, G. Antoniol, and Y. Gueheneuc, "Playing with Refactoring: Identifying Extract Class Opportunities through Game Theory," Proc. IEEE Int'l Conf. Software Maintenance, 2010.
[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] B.S. Mitchell, "A Heuristic Search Approach to Solving the Software Clustering Problem," PhD dissertation, Drexel Univ., 2002.
[33] 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.
[34] X. Xu, C.-H. Lung, M. Zaman, and A. Srinivasan, "Program Restructuring through Clustering Techniques," Proc. Fourth IEEE Int'l Workshop Source Code Analysis and Manipulation, pp. 75-84, Sept. 2004.
[35] I. Czibula and G. Şerban, "Hierarchical Clustering for Software Systems Restructuring," INFOCOMP J. Computer Science, vol. 6, no. 4, pp. 43-51, Dec. 2007.
[36] G. Şerban and I. Czibula, "Object-Oriented Software Systems Restructuring through Clustering," Proc. Ninth Int'l Conf. Artificial Intelligence and Soft Computing, pp. 693-704, June 2008.
[37] "NetBeans," Oracle, http:/, 2012.
[38] "JBuilder," Embarcadero, productsjbuilder , 2012.
[39] "JCreator," XINOX, http:/, 2012.
[40] "RefactorIt," RefactorIt, refactorit /, 2012.
[41] "Xcode," Apple,, 2012.
[42] "Visual Studio," Microsoft, visualstudio/, 2012.
[43] "ReSharper," JetBrains, http://www.jetbrains.comresharper/, 2012.
[44] "CodeRush," DevExpress, Products/Visual_Studio_Add-in Coding_Assistance/, 2012.
[45] "Visual Assist X," Whole Tomato Software, http:/www., 2012.
[46] "JustCode," Telerik, justcode.aspx , 2012.
[47] T. Mens, G. Taentzer, and O. Runge, "Detecting Structural Refactoring Conflicts Using Critical Pair Analysis," Electronic Notes in Theoretical Computer Science, vol. 127, no. 3, pp. 113-128, Apr. 2005.
[48] T. Mens, G. Taentzer, and O. Runge, "Analysing Refactoring Dependencies Using Graph Transformation," Software and Systems Modeling, vol. 6, no. 3, pp. 269-285, 2007.
[49] L. Lambers, H. Ehrig, and F. Orejas, "Efficient Detection of Conflicts in Graph-Based Model Transformation," Electronic Notes in Theoretical Computer Science, vol. 152, pp. 97-109, Mar. 2006.
[50] H. Liu, G. Li, Z. Ma, and W. Shao, "Scheduling of Conflicting Refactorings to Promote Quality Improvement," Proc. 22nd IEEE/ACM Int'l Conf. Automated Software Eng., pp. 489-492, Nov. 2007.
[51] H. Liu, G. Li, Z. Ma, and W. Shao, "Conflict-Aware Schedule of Software Refactorings," IET Software, vol. 2, no. 5, pp. 446-460, Oct. 2008.
[52] D. Roberts, "Practical Analysis for Refactoring," PhD dissertation, Univ. of Illinois at Urbana-Champaign, 1999.
[53] M.O. Cinnéide and P. Nixon, "A Methodology for the Automated Introduction of Design Patterns," Proc. IEEE Int'l Conf. Software Maintenance, 1999.
[54] M.O. Cinnéide, "Automating the Application of Design Patterns: A Refactoring Approach," PhD dissertation, School of Computer Science and Informatics, Nat'l Univ. of Ireland, 2000.
[55] G. Kniesel and H. Koch, "Static Composition of Refactorings," Science Computer Programming, vol. 52, nos. 1-3, pp. 9-51, Aug. 2004.
[56] M. Schäfer, M. Verbaere, T. Ekman, and O. de Moor, "Stepping Stones over the Refactoring Rubicon: Lightweight Language Extensions to Easily Realise Refactorings," Proc. European Conf. Object-Oriented Programming, pp. 369-393, July 2009.
[57] M. Schäefer and O. de Moor, "Specifying and Implementing Refactorings," Proc. ACM Int'l Conf. Object-Oriented Programming Systems Languages and Applications, pp. 286-301, Oct. 2010.
[58] F. Simon, F. Steinbröckner, and C. Lewerentz, "Metrics Based Refactoring," Proc. Fifth European Conf. Software Maintenance and Reeng., pp. 30-38, Mar. 2001.
[59] R. Marinescu, "Measurement and Quality in Object-Oriented Design," PhD dissertation, "Politehnica" Univ. of Timisoara, 2002.
[60] R. Marinescu, "Detection Strategies: Metrics-Based Rules for Detecting Design Flaws," Proc. IEEE Int'l Conf. Software Maintenance, pp. 350-359, 2004.
[61] M.J. Munro, "Product Metrics for Automatic Identification of 'Bad Smell' Design Problems in Java Source Code," Proc. 11th IEEE Int'l Software Metrics Symp., p. 15, 2005.
[62] N. Moha, Y. Guéhéneuc, L. Duchien, and A.L. Meur, "DECOR: A Method for the Specification and Detection of Code and Design Smells," IEEE Trans. Software Eng., vol. 36, no. 1, pp. 20-36, Jan./Feb. 2010.
[63] N. Moha, Y. Guéhéneuc, A.L. Meur, L. Duchien, and A. Tiberghien, "From a Domain Analysis to the Specification and Detection of Code and Design Smells," Formal Aspects of Computing, vol. 22, pp. 345-361, May 2010.
[64] E. Mealy and P. Strooper, "Evaluating Software Refactoring Tool Support," Proc. Australian Software Eng. Conf., pp. 331-340, 2006.
[65] 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.
[66] L.C. Briand, J.W. Daly, J. Wüst, and K. Germany, "A Unified Framework for Coupling Measurement in Object-Oriented Systems," IEEE Trans. Software Eng., vol. 25, no. 1, pp. 91-121, Jan. 1999.
[67] M. Lanza, R. Marinescu, and S. Ducasse, Object-Oriented Metrics in Practice. Springer-Verlag, 2005.
[68] 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.
[69] B.G. Ryder and F. Tip, "Change Impact Analysis for Object-Oriented Programs," Proc. ACM SIGPLAN-SIGSOFT Workshop Program Analysis for Software Tools and Eng., pp. 46-53, 2001.
[70] X. Ren, O.C. Chesley, and B.G. Ryder, "Identifying Failure Causes in Java Programs: An Application of Change Impact Analysis," IEEE Trans. Software Eng., vol. 32, no. 9, pp. 718-732, Sept. 2006.
[71] "Eclipse Java Development Tools (JDT)," Eclipse Foundation, http://www.eclipse.orgjdt/, 2012.
[72] "HSQLDB," HSQLDB, http:/, 2012.
[73] "JEdit," JEdit, http:/, 2012.
[74] J. Kerievsky, Refactoring to Patterns, fifth ed. Addison Wesley, 2007.
15 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool