The Community for Technology Leaders
RSS Icon
Issue No.03 - May/June (2008 vol.34)
pp: 321-335
Danny Dig , University of Illinois at Urbana-Champaign, Urbana
Kashif Manzoor , University of Illinois at Urbana-Champaign, Urbana
Ralph E. Johnson , University of Illinois at Urbana-Champaign, Urbana
Tien N. Nguyen , Iowa State University, Ames
Current text based Software Configuration Management (SCM) systems have trouble with refactorings. Refactorings result in global changes which lead to merge conflicts. A refactoring-aware SCM system reduces merge conflicts. This paper describes MolhadoRef, a refactoring-aware SCM system and the merge algorithm at its core. MolhadoRef records change operations (refactorings and edits) used to produce one version, and replays them when merging versions. Since refactorings are change operations with well defined semantics, MolhadoRef treats them intelligently. A case study and a controlled experiment show that MolhadoRef automatically solves more merge conflicts than CVS while resulting in fewer merge errors.
Configuration Management, Restructuring, reverse engineering, and reengineering, Version control
Danny Dig, Kashif Manzoor, Ralph E. Johnson, Tien N. Nguyen, "Effective Software Merging in the Presence of Object-Oriented Refactorings", IEEE Transactions on Software Engineering, vol.34, no. 3, pp. 321-335, May/June 2008, doi:10.1109/TSE.2008.29
[1] D. Dig, K. Manzoor, R. Johnson, and T.N. Nguyen, “Refactoring-Aware Configuration Management for Object-Oriented Programs,” Proc. 29th Int'l Conf. Software Eng., pp. 427-436, 2007.
[2] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring: Improving the Design of Existing Code. Adison-Wesley, 1999.
[3] S. Berczuk, Software Configuration Management Patterns: Effective Teamwork, Practical Integration, private conversations with SCM consultant, Steve Berczuk, author, Addison-Wesley, 2002.
[4] D. Dig and R. Johnson, “How Do APIs Evolve? A Story of Refactoring,” J. Software Maintenance and Evolution, vol. 18, no. 2, pp. 87-103, 2006.
[5] E. Lippe and N. van Oosterom, “Operation-Based Merging,” Proc. Fifth Symp. Software Development Environments, pp. 78-87, 1992.
[6] Eclipse Foundation, http:/, 2008.
[7] T.N. Nguyen, E.V. Munson, J.T. Boyland, and C. Thao, “An Infrastructure for Development of Object-Oriented, Multi-Level Configuration Management Services,” Proc. 27th Int'l Conf. Software Eng., pp. 215-224, 2005.
[8] W. Miller and E.W. Myers, “A File Comparison Program,” Software, Practice and Experience, vol. 15, no. 11, pp. 1025-1040, 1985.
[9] S. Demeyer, F.V. Rysselberghe, T. Gîrba, J. Ratzinger, R. Marinescu, T. Mens, B.D. Bois, D. Janssens, S. Ducasse, M. Lanza, M. Rieger, H. Gall, and M. El-Ramly, “The LAN-Simulation: A Refactoring Teaching Example,” Proc. Int'l Workshop Principles of Software Evolution, pp. 123-134, 2005.
[10] D. Dig, T. Nguyen, and R. Johnson, “Refactoring-Aware Software Configuration Management,” Technical Report UIUCDCS-R-2006-2710, Univ. of Illinois Urbana-Champaign, Apr. 2006.
[11] What's New in Eclipse 3.2 (JDT), org.eclipse.jdt.doc.user/whatsNew jdt_whats new.html, 2008.
[12] D. Dig, C. Comertoglu, D. Marinov, and R. Johnson, “Automatic Detection of Refactorings in Evolving Components,” Proc. 20th European Conf. Object-Oriented Programming, pp. 404-428, netfiles. , 2006.
[13] T. Mens, “A State-of-the-Art Survey on Software Merging,” IEEE Trans. Software Eng., vol. 28, no. 5, pp. 449-462, May 2002.
[14] D. Dig, K. Manzoor, R. Johnson, and T. Nguyen, “Refactoring-Aware Configuration Management System for Object-Oriented Programs,” Technical Report UIUCDCS-R-2006-2770, Univ. of Illinois Urbana-Champaign, Sept. 2006.
[15] T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein, Introduction to Algorithms, second ed., pp. 549-552. MIT Press and McGraw-Hill Books, 2001.
[16] G. Kniesel and H. Koch, “Static Composition of Refactorings,” Science of Computer Programming, vol. 52, nos. 1-3, pp. 9-51, 2004.
[17] MolhadoRef Web page, Ref , 2004.
[18] R. Conradi and B. Westfechtel, “Version Models for Software Configuration Management,” ACM Computing Surveys, vol. 30, no. 2, pp. 232-282, 1998.
[19] CM Yellow Pages, http:/, 2008.
[20] T. Morse, “CVS,” Linux J., vol. 1996, no. 21es, p. 3, 1996.
[21] “Subversion,” http:/, 2008.
[22] B. Magnusson and U. Asklund, “Fine-Grained Revision Control of Configurations in COOP/Orm,” Proc. Sixth Software Configuration Management Workshop, pp. 31-48, 1996.
[23] M.C. Chu-Carroll, J. Wright, and D. Shields, “Supporting Aggregation in Fine Grained Software Configuration Management,” Proc. Foundations of Software Eng., pp. 99-108, 2002.
[24] Y.-J. Lin and S.P. Reiss, “Configuration Management with Logical Structures,” Proc. 18th Int'l Conf. Software Eng., pp. 298-307, 1996.
[25] B. Westfetchtel, “Structure-Oriented Merging of Revisions of Software Documents,” Proc. Third Int'l Workshop Software Configuration Management, pp. 68-79, 1991.
[26] U. Asklund, L. Bendix, H. Christensen, and B. Magnusson, “The Unified Extensional Versioning Model,” Proc. Ninth Software Configuration Management Workshop, pp. 100-122, 1999.
[27] D. Ohst, M. Welle, and U. Kelter, “Differences between Versions of UML Diagrams,” Proc. Foundations of Software Eng., pp. 227-236, 2003.
[28] “Darcs SCM,” http:/, 2008.
[29] U. Asklund, “Identifying Conflicts during Structural Merge,” Proc. Nordic Workshop Programming Environment Research, pp. 231-242, 1994.
[30] J.E. Grass, “CDIFF: A Syntax Directed Differencer for C++ Programs,” Proc. Usenix C++ Conf., pp. 181-194, 1992.
[31] W. Yang, “How to Merge Program Texts,” The J. Systems and Software, vol. 27, no. 2, pp. 129-135, 1994.
[32] T. Mens, “A Formal Foundation for Object-Oriented Software Evolution,” PhD dissertation, Vrije Univ. Brussels, 1999.
[33] J. Rho and C. Wu, “An Efficient Version Model of Software Diagrams,” Proc. Fifth Asia Pacific Software Eng. Conf., pp. 236-243, 1998.
[34] V. Berzins, “Software Merge: Semantics of Combining Changes to Programs,” ACM Trans. Programming Languages and Systems, vol. 16, no. 6, pp. 1875-1903, 1994.
[35] J.W. Hunt and T.G. Szymanski, “A Fast Algorithm for Computing Longest Common Subsequences,” Comm. ACM, vol. 20, no. 5, pp.350-353, 1977.
[36] W. Yang, S. Horwitz, and T. Reps, “A Program Integration Algorithm that Accommodates Semantics-Preserving Transformations,” ACM Trans. Software Eng. Methodology, vol. 1, no. 3, pp. 310-354, 1992.
[37] W. Edwards, “Flexible Conflict Detection and Management in Collaborative Applications,” Proc. 10th Ann. ACM Symp. User Interface Software and Technology, pp. 139-148, 1997.
[38] A. Lie, R. Conradi, T.M. Didriksen, and E.-A. Karlsson, “Change Oriented Versioning in a Software Engineering Database,” Proc. Second Int'l Workshop Software Configuration Management, pp. 56-65, 1989.
[39] H. Shen and C. Sun, “A Complete Textual Merging Algorithm for Software Configuration Management Systems,” Proc. 28th Ann. Int'l Computer Software and Applications Conf., pp. 293-298, 2004.
[40] T. Berlage and A. Genau, “A Framework for Shared Applications with a Replicated Architecture,” Proc. Sixth ACM Symp. User Interface Software and Technology, pp. 249-257, 1993.
[41] T. Ekman and U. Asklund, “Refactoring-Aware Versioning in Eclipse,” Electronic Notes in Theoretical Computer Science, vol. 107, pp. 57-69, 2004.
3 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool