A State-of-the-Art Survey on Software Merging

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]  A. Tarski,et al.  On Closed Elements in Closure Algebras , 1946 .

[2]  H. Rice Classes of recursively enumerable sets and their decision problems , 1953 .

[3]  Marc J. Rochkind,et al.  The source code control system , 1975, IEEE Transactions on Software Engineering.

[4]  Thomas G. Szymanski,et al.  A fast algorithm for computing longest common subsequences , 1977, CACM.

[5]  Stephen S. Yau,et al.  Ripple effect analysis of software maintenance , 1978, COMPSAC.

[6]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[7]  Joseph E. Stoy,et al.  Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory , 1981 .

[8]  David B. Leblang,et al.  Computer-Aided Software Engineering in a distributed workstation environment , 1984, SDE 1.

[9]  Walter F. Tichy,et al.  The string-to-string correction problem with block moves , 1984, TOCS.

[10]  David B. Leblang,et al.  Computer-Aided Software Engineering in a distributed workstation environment , 1984 .

[11]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[12]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[13]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[14]  Steven S. Muchnick,et al.  SunPro: Engineering a Pratical Program Development Environment , 1986, Advanced Programming Environments.

[15]  Gail E. Kaiser,et al.  Infuse: a tool for automatically managing and coordinating source changes in large systems , 1987, CSC '87.

[16]  Walter F. Tichy,et al.  Tools for Software Configuration Management , 1988, SCM.

[17]  David B. Leblang,et al.  Increasing Productivity with a Parallel Configuration Manager , 1988, SCM.

[18]  Dewayne E. Perry The inscape environment , 1989, ICSE '89.

[19]  M. S. Feather Detecting interference when merging specification evolutions , 1989, IWSSD '89.

[20]  Wuu Yang,et al.  Detecting Program Components With Equivalent Behaviors , 1989 .

[21]  Thomas W. Reps,et al.  Illustrating interference in interfering versions of programs , 1989, SCM.

[22]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[23]  Reidar Conradi,et al.  Change oriented versioning in a software engineering database , 1989, SCM.

[24]  Clarence A. Ellis,et al.  Concurrency control in groupware systems , 1989, SIGMOD '89.

[25]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[26]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[27]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[28]  Wuu Yang,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1992, SDE 4.

[29]  Thomas W. Reps,et al.  Algebraic Properties of Program Integration , 1990, Sci. Comput. Program..

[30]  Wuu Yang,et al.  Identifying syntactic differences between two programs , 1991, Softw. Pract. Exp..

[31]  David Lubkin Heterogeneous configuration management with DSEE , 1991, SCM '91.

[32]  Valdis Berzins,et al.  Software merge: Models and methods for combining changes to programs , 1991, J. Syst. Integr..

[33]  Even-André Karlsson,et al.  Change-oriented version descriptions in EPOS , 1991, Softw. Eng. J..

[34]  Bernhard Westfechtel,et al.  Structure-oriented merging of revisions of software documents , 1991, SCM '91.

[35]  David Kaufer,et al.  Flexible Diff-ing in a collaborative writing system , 1992, CSCW '92.

[36]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[37]  Ernst Lippe,et al.  Operation-based merging , 1992 .

[38]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[39]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.

[40]  Thomas Berlage,et al.  A framework for shared applications with a replicated architecture , 1993, UIST '93.

[41]  D. Schefström,et al.  Tool integration: environments and frameworks , 1993 .

[42]  Daniel Jackson,et al.  Semantic Diff: a tool for summarizing the effects of modifications , 1994, Proceedings 1994 International Conference on Software Maintenance.

[43]  Luqi,et al.  Automated merging of software prototypes , 1994, J. Syst. Integr..

[44]  Prasun Dewan,et al.  A flexible object merging framework , 1994, CSCW '94.

[45]  Wuu Yang,et al.  How to merge program texts , 1994, J. Syst. Softw..

[46]  Valdis Berzins,et al.  Software merge: semantics of combining changes to programs , 1994, TOPL.

[47]  David W. Binkley,et al.  Program integration for languages with procedure calls , 1995, TSEM.

[48]  W.R. Bischofberger,et al.  Computer supported cooperative software engineering with Beyond-Sniff , 1995, Proceedings Software Engineering Environments.

[49]  David B. Leblang The CM challenge: configuration management that works , 1995 .

[50]  Jacky Estublier,et al.  The Adele configuration manager , 1995 .

[51]  Jim Buffenbarger,et al.  Syntactic Software Merging , 1995, SCM.

[52]  Kim Mens,et al.  Vrije Universiteit Brussel Faculteit Wetenschappen Reuse Contracts: Managing the Evolution of Reusable Assets Reuse Contracts: Managing the Evolution of Reusable Assets , 2022 .

[53]  Mira Mezini Maintaining the consistency of class libraries during their evolution , 1997, OOPSLA '97.

[54]  W. Keith Edwards,et al.  Flexible conflict detection and management in collaborative applications , 1997, UIST '97.

[55]  Reidar Conradi,et al.  Version models for software configuration management , 1998, CSUR.

[56]  Harvey P. Siy,et al.  Parallel changes in large scale software development: an observational case study , 1998, TSEM.

[57]  Walter F. Tichy,et al.  Delta algorithms: an empirical analysis , 1998, TSEM.

[58]  Chisu Wu,et al.  An efficient version model of software diagrams , 1998, Proceedings 1998 Asia Pacific Software Engineering Conference (Cat. No.98EX240).

[59]  Harvey P. Siy,et al.  Parallel changes in large scale software development: an observational case study , 1998, Proceedings of the 20th International Conference on Software Engineering.

[60]  Ulf Asklund,et al.  Identifying Conflicts During Structural Merge , 1999 .

[61]  Tom Mens,et al.  Conditional Graph Rewriting as a Domain-Independent Formalism for Software Evolution , 1999, AGTIVE.

[62]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[63]  Tom Mens,et al.  A formal foundation for object-oriented software evolution , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[64]  Bernd Bruegge,et al.  Object Oriented Software Engineering, Conquering Complex and Changing Systems , 2002 .

[65]  Valdis Berzins,et al.  On merging software extensions , 1986, Acta Informatica.

[66]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.