Abstract
Software merging is the process of combining multiple existing versions of a source file, to produce a new version. Typically, the goal is for the new version to implement some kind of union of the features implemented by the existing versions. A variety of merge tools are available, but software merging is still a tedious process, and mistakes are easy to make. This paper describes the fundamentals of merging, surveys the known methods of software merging, including a method based on programming-language syntax, and discusses a set of tools that perform syntactic merging.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
E. Adams, W. Gramlich, S. Muchnick, and S. Tirfing. SunPro: Engineering a practical program development environment. In Lecture Notes in Computer Science 244. Springer-Verlag, 1986.
Atria, Inc. ClearCase Concepts Manual, 1992.
Atria, Inc. ClearCase Reference Manual, 1992.
W. Babich. Software Configuration Management. Addison-Wesley, 1986.
N. Belkhathir and J. Estublier. Protection and cooperation in a software engineering environment. In Lecture Notes in Computer Science 244, pages 221–229. Springer-Verlag, 1986.
N. Belkhathir and J. Estublier. Experience with a database of programs. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 84–91. ACM, 1987.
E. Bershoff, V. Henderson, and S. Siegel. Software Configuration Management. Prentice-Hall, 1980.
V. Berzins. On merging software extensions. Acta Informatica, 23:607–619, 1986.
G. Boudier, F. Gallo, R. Minot, and I. Thomas. An overview of PCTE and PCTE+. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 248–257. ACM, 1988.
G. Clemm. The Odin specification language. In Lecture Notes in Computer Science 244. Springer-Verlag, 1986.
G. Clemm. The Odin System. PhD thesis, University of Colorado, Boulder, 1986.
G. Clemm. The Workshop system: A practical knowledge-based software environment. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 55–64. ACM, 1988.
G. Clemm. Replacing version-control with job-control. In Proceedings of the Second International Workshop on Software Configuration Management, pages 162–169. ACM, 1989.
E. Cohen, D. Soni, R. Gluecker, W. Hasling, R. Schwanke, and M. Wagner. Version management in Gypsy. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 201–215. ACM, 1988.
S. Dart. Spectrum of functionality in configuration management systems. Technical Report CMU/SEI-90-TR-11, Software Engineering Institute, 1990.
S. Dart, R. Ellison, P. Feiler, and A. Habermann. Software development environments. IEEE Computer, 20(11):18–28, 1987.
V. Donzeau-Gouge, G. Huet, G. Kahn, and B. Lang. Programming environments based on structured editors: The MENTOR experience. In Interactive Programming Environments, pages 128–140. McGraw-Hill, 1984.
J. Estublier. Configuration management: The notion and the tools. In Proceedings of the International Workshop on Software Version and Configuration Control. IEEE, 1988.
J. Estublier. A configuration manager: The Adele database of programs. In Workshop on Software Engineering Environments for Programming-in-the-Large, pages 1402–147, 1988.
P. Feiler and R. Medina-Mora. An incremental programming environment. IEEE Transactions on Software Engineering, pages 472–482, September 1981.
C. Fraser and E. Myers. An editor for revision control. ACM Transactions on Programming Languages and Systems, pages 277–295, April 1987.
W. Gentleman, S. MacKay, D. Stewart, and M. Wein. Commercial realtime software needs different configuration management. In Proceedings of the Second International Workshop on Software Configuration Management, pages 152–161. ACM, 1989.
A. Habermann and D. Notkin. Gandalf: Software development environments. IEEE Transactions on Software Engineering, 12(12):1117–1127, 1986.
P. Heckel. A technique for isolating difference between files. Communications of the ACM, pages 264–268, April 1978.
S. Horwitz, J. Prins, and T. Reps. Integrating noninterfering versions of programs. ACM Transactions on Programming Languages and Systems, pages 345–387, July 1989.
J. Hunt and T. Szymanski. A fast algorithm for computing longest common subsequences. Communications of the ACM, pages 350–353, May 1977.
C. Jones. Systematic Software Development Using VDM. Prentice-Hall, second edition, 1990.
G. Kaiser, P. Feiler, and S. Popovich. Intelligent assistance for software development and maintenance. IEEE Software, pages 40–49, May 1988.
B. Kernighan and D. Ritchie. The C Programming Language. Prentice-Hall, 1988.
D. Knuth. The WEB System of Structured Documentation.
D. Knuth. Literate programming. Computer Journal, pages 97–111, 1984.
D. Leblang and R. Chase. Computer-aided software engineering in a distributed workstation environment. ACM SIGPLAN Notices, pages 104–112, May 1984.
D. Leblang and R. Chase. The Domain software engineering environment for largescale software development efforts. In Proceedings of the First International Conference on Computer Workstations. IEEE, 1985.
D. Leblang and R. Chase. Parallel software configuration management in a network environment. IEEE Software, pages 28–35, November 1987.
A. Lie, R. Conradi, T. Didriksen, E. Karlsson, S. Hallsteinsen, and P. Holager. Change oriented versioning in a software engineering database. In Proceedings of the Second International Workshop on Software Configuration Management, pages 56–65. ACM, 1989.
E. Lippe. Operation-based merging. In Proceedings of the Fifth Symposium on Software Development Environments, pages 78–87. ACM, 1992.
D. Lubkin. Heterogeneous configuration management with DSEE. In Proceedings of the Third International Workshop on Software Configuration Management. ACM, 1991.
B. Mack-Crane and A. Pal. Conflict management in a source version management system. In Proceedings of the Second International Workshop on Software Configuration Management, pages 149–151. ACM, 1989.
A. Mahler and A. Lampen. An integrated toolset for engineering software configurations. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 191–200. ACM, 1988.
A. Mahler and A. Lampen. Shape: A software configuration management tool. In Proceedings of the International Workshop on Software Version and Configuration Control, pages 228–243. IEEE, 1988.
A. Mahler and A. Lampen. Integrating configuration management into a generic environment. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 229–237. ACM, 1990.
Software Maintenance and Development Systems. Aide de Camp. Product Overview, 1992.
K. Marzullo and D. Wiebe. Jasmine: A software system modeling facility. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 121–130. ACM, 1986.
E. Meyers. An O(ND) difference algorithm and its variations. Algorithmica, 1(2):251–266, 1986.
T. Miller. A schema for configuration management. In Proceedings of the Second International Workshop on Software Configuration Management, pages 26–29. ACM, 1989.
W. Miller and E. Meyers. A file comparison program. Software: Practice and Experience, 15(11):1025–1040, November 1985.
K. Narayanaswamy. A text-based representation for program variants. In Proceedings of the Second International Workshop on Software Configuration Management, pages 30–37. ACM, 1989.
D. Notkin. The Gandalf project. Journal of Systems and Software, pages 91–105, May 1985.
W. Obst. Delta technique and string-to-string correction. In Lecture Notes in Computer Science 289, pages 64–68, Springer-Verlag, 1987.
D. Parnas. Designing software for ease of extension and contraction. IEEE Transactions on Software Engineering, 5(2):128–137, March 1979.
D. Perry. Version control in the Inscape environment. In Proceedings of the Ninth International Conference on Software Engineering, pages 142–149. IEEE, 1987.
J. Plaice and W. Wadge. A new approach to version control. IEEE Transactions on Software Engineering, 19(3):268–276, March 1993.
S. Reiss. Pecan: Program development systems that support multiple views. IEEE Transactions on Software Engineering, 11(3):276–285, March 1985.
T. Reps and T. Bricker. Illustrating interference in interfering versions of programs. In Proceedings of the Second International Workshop on Software Configuration Management, pages 46–55. ACM, 1989.
T. Reps, S. Horwitz, and J. Prins. Support for integrating program variants in an environment for programming in the large. In Proceedings of the International Workshop on Software Version and Configuration Control, pages 197–216. IEEE, 1988.
M. Rochkind. The source code control system. IEEE Transactions on Software Engineering, pages 364–370, December 1975.
G. Ross. Integral C: A practical environment for C programming. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 42–48. ACM, 1986.
R. Schwanke and G. Kaiser. Living with inconsistency in large systems. In Proceedings of the International Workshop on Software Version and Configuration Control. IEEE, 1988.
I. Simmonds. Configuration management in the PACT software engineering environment. In Proceedings of the Second International Workshop on Software Configuration Management, pages 118–121. ACM, 1989.
R. Stallman. GNU Emacs Manual Free Software Foundation, 6.18 edition, 1987.
D. Swinehart, P. Zollweger, R. Beach, and R. Hagman. A structural view of the Cedar programming environment. ACM Transactions on Programming Languages and Systems, October 1986.
R. Taylor, F. Belz, L. Clarke, L. Osterweil, R. Selby, J. Wileden, A. Wolff, and M. Young. Foundations for the Arcadia environment architecture. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments, pages 1–13. ACM, 1988.
T. Teitelbaum and T. Reps. The Cornell program synthesizer: A syntax directed programming environment. Communications of the ACM, pages 563–573 September 1981.
W. Teitelman. A tour through Cedar. IEEE Transactions on Software Engineering, 11(3):285–302, March 1985.
W. Teitelman and L. Masinter. The Interlisp programming environment. IEEE Computer, 14(4):25–33, April 1981.
W. Tichy. Software development control based on module interconnection. In Proceedings of the Fourth International Conference on Software Engineering, pages 29–41. IEEE, 1979.
W. Tichy. Design, implementation, and evaluation of a revision control system. In Proceedings of the Sixth International Conference on Software Engineering, pages 58–67. IEEE, 1982.
W. Tichy. The string-to-string correction problem with block moves. ACM Transactions on Computer Systems, pages 309–321, November 1984.
W. Tichy. RCS: A system for version control. Software: Practice and Experience, 15(7):637–654, July 1985.
W. Tichy. Tools for software configuration management. In Proceedings of the International Workshop on Software Version and Configuration Control, pages 1–20. IEEE, 1988.
H. van Vliet. Software Engineering: Principles and Practice. Wiley, 1993.
W. Waite, V. Heuring, and U. Kastens. Configuration control in compiler construction. In Proceedings of the International Workshop on Software Version and Configuration Control, pages 228–243. IEEE, 1988.
B. Westfechtel. Revision control in an integrated software development environment. In Proceedings of the Second International Workshop on Software Configuration Management, pages 96–105. ACM, 1989.
B. Westfechtel. Structure-oriented merging of revisions of software documents. In Proceedings of the Third International Workshop on Software Configuration Management, pages 68–79. ACM, 1991.
D. Whitgift. Methods and Tools for Software Configuration Management. Wiley, 1991.
W. Yang. A New Algorithm for Semantics-Based Program Integration. PhD thesis, University of Wisconsin, 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Buffenbarger, J. (1995). Syntactic software merging. In: Estublier, J. (eds) Software Configuration Management. SCM SCM 1993 1995. Lecture Notes in Computer Science, vol 1005. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-60578-9_14
Download citation
DOI: https://doi.org/10.1007/3-540-60578-9_14
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-60578-2
Online ISBN: 978-3-540-47768-6
eBook Packages: Springer Book Archive