This Article 
 Bibliographic References 
 Add to: 
A State-of-the-Art Survey on Software Merging
May 2002 (vol. 28 no. 5)
pp. 449-462

Software merging is an essential aspect of the maintenance and evolution of large-scale software systems. This paper provides a comprehensive survey and analysis of available merge approaches. Over the years, a wide variety of different merge techniques has been proposed. While initial techniques were purely based on textual merging, more powerful approaches also take the syntax and semantics of the software into account. There is a tendency towards operation-based merging because of its increased expressiveness. Another tendency is to try to define merge techniques that are as general, accurate, scalable, and customizable as possible, so that they can be used in any phase in the software life-cycle and detect as many conflicts as possible. After comparing the possible merge techniques, we suggest a number of important open problems and future research directions.

[1] E. Adams, W. Gramlich, S.S. Muchnick, and S. Tirfing, “SunPro: Engineering a Practical Program Development Environment,” Proc. Int'l Workshop Advanced Programming Environments, pp. 86-96, 1986.
[2] U. Asklund, “Identifying Conflicts During Structural Merge,” Proc. Nordic Workshop Programming Environment Research, pp. 231-242, 1994.
[3] T. Berlage and A. Genau, “A Framework for Shared Applications with Replicated Architectures,” Proc. Conf. User Interface Systems and Technology, Nov. 1993.
[4] B. Berliner, “CVS II: Parallelizing Software Development,” Proc. The Advanced Computing Systems Professional and Technical Association (USENIX) Conf., pp. 22-26, 1990.
[5] V. Berzins, “On Merging Software Extensions,” Acta Informatica, vol. 23, pp. 607-619, 1986.
[6] V. Berzins, “Software Merge Models and Methods,” Int'l J. System Integration, vol. 1, no. 2, pp. 121-141, Aug. 1991.
[7] V. Berzins, “Software Merge: Semantics of Combining Changes to Programs,” ACM Trans. Programming Languages and Systems, vol. 16, no. 6, pp. 1875-1903, 1994.
[8] D. Binkley, S. Horwitz, and T. Reps, ”Program Integration for Language with Procedure Calls,” ACM Trans. Software Eng. and Methodology, vol. 4, no. 1, pp. 3–35, Jan. 1995
[9] W.R. Bischofberger, T. Kofler, K.-U. Mätzel, and B. Schäffer, “Computer Supported Cooperative Software Engineering with Beyond-Sniff,” UBILAB Technical Report 94.9.1, 1994.
[10] J. Buffenbarger, “Syntactic Software Merging,” Software Configuration Management: Selected Papers SCM-4 and SCM-5, J. Estublier, ed., pp. 153-172, 1995.
[11] B. Bruegge and A.H. Dutoit, Object-Oriented Software Engineering—Conquering Complex and Changing Systems. Prentice Hall, 2000.
[12] R. Conradi and B. Westfechtel, "Version Models for Software Configuration Management," ACM Computing Surveys, vol. 30, no. 2, 1998, p. 233.
[13] D. Dampier, Luqi, and V. Berzins, “Automated Merging of Software Prototypes,” Int'l J. System Integration, vol. 4, no. 1, pp. 33-49, 1994.
[14] W.K. Edwards, “Flexible Conflict Detection and Management in Collaborative Applications,” Proc. Symp. User Interface Software and Technology, 1997.
[15] C.A. Ellis and S.J. Gibbs, "Concurrency Control in Groupware Systems," Proc. ACM SIGMOD Conf. Management of Data, ACM Press, New York, 1989, pp. 399-407.
[16] J. Estublier and R. Casallas, “The Adele Configuration Manager,” Configuration Management: Trends in Software, pp. 135-154, 1994.
[17] M.S. Feather, “Detecting Interference when Merging Specification Evolutions,” Proc. Fifth Int'l Workshop Software Specification and Design, pp. 169-176, 1989.
[18] M. Fowler, Refactoring: Improving the Design of Existing Programs, Addison-Wesley, 1999.
[19] M.R. Garey and D.S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness.New York: W.H. Freeman, 1979.
[20] J.E. Grass, “Cdiff: A Syntax Directed Diff for C++ Programs,” Proc. The Advanced Computing Systems Professional and Technical Association (USENIX) Conf. C++, pp. 181-193, 1992.
[21] W. G. Griswold,“Program Restructuring as an Aid to Software Maintenance,”Ph.D. dissertation, Univ. Washington, Dep. Comput. Sci. Eng., Tech. Rep. 91-08-04, Aug. 1991.
[22] B. Gulla, E.-A. Karlsson, and D. Yeh, “Change-Oriented Version Descriptions in EPOS,” Software Eng. J., vol. 6, no. 6, pp. 378-386, 1991.
[23] S. Horwitz, “Identifying the Semantic and Textual Differences Between Two Versions of a Program,“ Proc. SIGPLAN '90 Conf. Programming Language Design and Implementation, pp. 234-244, 1990.
[24] S. Horwitz, J. Prins, and T. Reps, ”Integrating Noninterfering Versions of Programs,” ACM Trans. Programming Languages and Systems, vol. 11, no. 3, pp. 345–387, July 1989.
[25] S. Horwitz, T. Reps, and D. Binkley, “Interprocedural Slicing Using Dependence Graphs,” Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 35-46, 1989.
[26] S. Horwitz and T. Reps, The Use of Program Dependence Graphs in Software Engineering Proc. 14th Int'l Conf. Software Eng., pp. 392-411, May 1992.
[27] J.W. Hunt and M.D. McIllroy, “An Algorithm for Differential File Comparison,” Technical Report 41, AT&T Bell Laboratories Inc., 1976.
[28] 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.
[29] J.J. Hunt, K.-P. Vo, and W.F. Tichy, “Delta Algorithms: An Empirical Analysis,” ACM Trans. Software Eng. and Methodology, vol. 7, no. 2, pp. 192–214, Apr. 1998.
[30] IBM, The System Object Model (SOM) and the Component Object Model (COM): A Comparison of Technologies from a Developer's Perspective, White Paper, IBM Co., 1994.
[31] D. Jackson and D.A. Ladd, “Semantic Diff: A Tool for Summarizing the Effects of Modifications,” Int'l Conf. Software Maintenance, 1994.
[32] D.B. Leblang, “The CM Challenge: Configuration Management that Works,” Configuration Management: Trends in Software, pp. 1-38, 1994.
[33] D.B. Leblang and R.P. Chase, “Computer-Aided Software Engineering in a Distributed Workstation Environment,” Proc. SIGPLAN/SIGSOFT Software Eng. Symp. Practical Software Development Environments, ACM SIGPLAN Notices, vol. 19, no. 5, pp. 104-112, 1984.
[34] D.B. Leblang, R.P. Chase, and H. Spilke, “Increasing Productivity with a Parallel Configuration Manager,” Proc. Int'l Workshop Software Version and Configuration Control, pp. 21-38, 1988.
[35] 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, ACM SIGSOFT Software Eng. Notes, vol. 14, no. 7, pp. 56-65, 1989.
[36] E. Lippe and V. van Oosterom,“Operation-based merging,”inProc. SIGSOFT '92 Fifth Symp. Software Develop. Environ.,Dec. 1992, pp. 78–87.
[37] D. Lubkin, “Heterogeneous Configuration Management with DSEE,” Proc. Third Int'l Workshop Software Configuration Management, pp. 153-160, 1991.
[38] J.C.C. McKinsey and A. Tarski, “On Closed Elements in Closure Algebras,” Annals Math, vol. 47, no. 1, pp. 122-162, Jan. 1946.
[39] T. Mens, “A Formal Foundation for Object-Oriented Software Evolution,” PhD Thesis, Dept. Computer Science, Vrije Univ. Brussel, Belgium, 1999.
[40] T. Mens, “Conditional Graph Rewriting as a Domain-Independent Formalism for Software Evolution,” Proc. Int'l Agtive '99 Conf., 2000.
[41] M. Mezini, “Maintaining the Consistency of Class Libraries During their Evolution,” Proc. Object-Oriented Programming Systems, Languages, and Applications, (OOPSLA '97), ACM SIGPLAN Notices, vol. 32, no. 10, pp. 1-21, 1997.
[42] T. Mikkelsen and S. Pherigo, Practical Software Configuration Management. Hewlett-Packard Professional Books, 1997.
[43] J.P. Munson and P. Dewan, "A Flexible Object Merging Framework," Proc. ACM Conf. Computer Supported Cooperative Work, ACM Press, New York, 1994, p. 242.
[44] C.M. Neuwirth, R. Chandok, D.S. Kaufer, P. Erion, J.H. Morris, and D. Miller, “Flexible Diff-ing in a Collaborative Writing System,” Proc. ACM Conf. Computer Supported Cooperative Work, pp. 147-154, Oct. 1992.
[45] W.F. Opdyke, “Refactoring Object-Oriented Frameworks,” doctoral dissertation, Technical Report UIUC-DCS-R-92-1759, Univ. of Illinois at Urbana-Champaign, 1992.
[46] K.J. Ottenstein and L.M. Ottenstein, ”The Program Dependence Graph in a Software Development Environment,” ACM SIGPLAN Notices, vol. 19, no. 5, pp. 177–184, May 1984.
[47] D.E. Perry and G.E. Kaiser, “Infuse: A Tool for Automatically Managing and Coordinating Source Changes in Large Systems,” Proc. ACM Computer Science Conf., pp. 292-299, Feb. 1987.
[48] D.E. Perry, "The Inscape Environment," Int'l Conf. Software Eng. 1989.
[49] D.E. Perry, H.P. Siy, and L.G. Votta, “Parallel Changes in Large Scale Software Development: An Observational Case Study,” Proc. Int'l Conf. Software Eng. (ICSE '98), pp. 251-260, 1998.
[50] T. Reps, “Algebraic Properties of Program Integration,” Science of Computer Programming, vol. 17, pp. 139-215, 1991.
[51] T. Reps and T. Bricker, “Illustrating Interference in Interfering Versions of Programs,” ACM Software Eng. Notes, vol. 17, no. 7, pp. 46-55, 1989.
[52] J. Rho and C. Wu, “An Efficient Version Model of Software Diagrams,” Proc. Fifth Asia-Pacific Conf. Software Eng., pp. 236-243, 1998.
[53] H.G. Rice, “Classes of Recursively Enumerable Sets and their Decision Problems,” Trans. Am. Math. Soc., vol. 89, pp. 25-59, 1953.
[54] C. Rich and R. Waters, The Programmer's Apprentice. ACM Press, 1990.
[55] M.J. Rochkind, “The Source Code Control System,” IEEE Trans. Software Eng., vol. 1, no. 4, pp. 364-370, 1975.
[56] D. Schefstöm and G. van den Broek, Tool Integration Environments and Frameworks, John Wiley&Sons, 1993.
[57] P. Steyaert, C. Lucas, K. Mens, and T. D'Hondt, ”Reuse Contracts: Managing the Evolution of Reusable Assets,” Proc. Conf. Object-Oriented Programming Systems, Languages, and Applications, pp. 268–285, Oct. 1996.
[58] J. Stoy, Denotational Semantics, the Scott-Strachey Approach to Programming Language Theory, MIT Press, 1977.
[59] W.F. Tichy, “The String-to-String Correction Problem with Block Moves,” ACM Trans. Comput. Syst., vol. 2, no. 4, pp. 309-321, 1984.
[60] W. Tichy, "RCS—A System for Version Control," Software-Practice&Experience, July 1985, pp. 637-654.
[61] W.F. Tichy, “Tools for Software Configuration Management,” Proc. Int'l Workshop Software Version and Configuration Control, pp. 1-20, 1988.
[62] M. Weiser, “Program Slicing,” IEEE Trans. Software Eng., vol. 10, no. 4 pp. 352-357, July 1984.
[63] B. Westfechtel, “Structure-Oriented Merging of Revisions of Software Documents,” Proc. Third Int'l Workshop Software Configuration Management, pp. 68-79, 1991.
[64] W. Yang, S. Horwitz, and T. Reps, “Detecting Program Components with Equivalent Behaviors,” Technical Report 840, Dept. Computer Sciences, Univ. of Wisconsin Apr. 1989.
[65] W. Yang, S. Horwitz, and T. Reps, “A Program Integration Algorithm that Accommodates Semantics-Preserving Transformations,” ACM Trans. Software Eng. and Methodology, vol. 1, no. 3, pp. 310-354, July 1992.
[66] W. Yang, "Identifying Syntactic Differences Between Two Programs," Software—Practice and Experience, vol. 21, no. 7, pp. 739-755, July 1991.
[67] W. Yang, “How to Merge Program Texts,” J. Systems and Software, vol. 27, no. 2, pp. 129-135, 1994.
[68] S.S. Yau, J.S. Collofello, and T.M. MacGregor, "Ripple Effect Analysis of Software Maintenance," in Proc. IEEE COMPSAC, CS Press, Los Alamitos, Calif., 1978, pp. 60-65.

Index Terms:
software merging, large-scale software development, merge conflicts, conflict detection, conflict resolution
T. Mens, "A State-of-the-Art Survey on Software Merging," IEEE Transactions on Software Engineering, vol. 28, no. 5, pp. 449-462, May 2002, doi:10.1109/TSE.2002.1000449
Usage of this product signifies your acceptance of the Terms of Use.