Skip to main content

Syntactic software merging

  • Conference paper
  • First Online:
Software Configuration Management (SCM 1993, SCM 1995)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. Atria, Inc. ClearCase Concepts Manual, 1992.

    Google Scholar 

  3. Atria, Inc. ClearCase Reference Manual, 1992.

    Google Scholar 

  4. W. Babich. Software Configuration Management. Addison-Wesley, 1986.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. E. Bershoff, V. Henderson, and S. Siegel. Software Configuration Management. Prentice-Hall, 1980.

    Google Scholar 

  8. V. Berzins. On merging software extensions. Acta Informatica, 23:607–619, 1986.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. G. Clemm. The Odin specification language. In Lecture Notes in Computer Science 244. Springer-Verlag, 1986.

    Google Scholar 

  11. G. Clemm. The Odin System. PhD thesis, University of Colorado, Boulder, 1986.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. G. Clemm. Replacing version-control with job-control. In Proceedings of the Second International Workshop on Software Configuration Management, pages 162–169. ACM, 1989.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. S. Dart. Spectrum of functionality in configuration management systems. Technical Report CMU/SEI-90-TR-11, Software Engineering Institute, 1990.

    Google Scholar 

  16. S. Dart, R. Ellison, P. Feiler, and A. Habermann. Software development environments. IEEE Computer, 20(11):18–28, 1987.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. J. Estublier. Configuration management: The notion and the tools. In Proceedings of the International Workshop on Software Version and Configuration Control. IEEE, 1988.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. P. Feiler and R. Medina-Mora. An incremental programming environment. IEEE Transactions on Software Engineering, pages 472–482, September 1981.

    Google Scholar 

  21. C. Fraser and E. Myers. An editor for revision control. ACM Transactions on Programming Languages and Systems, pages 277–295, April 1987.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. A. Habermann and D. Notkin. Gandalf: Software development environments. IEEE Transactions on Software Engineering, 12(12):1117–1127, 1986.

    Google Scholar 

  24. P. Heckel. A technique for isolating difference between files. Communications of the ACM, pages 264–268, April 1978.

    Google Scholar 

  25. S. Horwitz, J. Prins, and T. Reps. Integrating noninterfering versions of programs. ACM Transactions on Programming Languages and Systems, pages 345–387, July 1989.

    Google Scholar 

  26. J. Hunt and T. Szymanski. A fast algorithm for computing longest common subsequences. Communications of the ACM, pages 350–353, May 1977.

    Google Scholar 

  27. C. Jones. Systematic Software Development Using VDM. Prentice-Hall, second edition, 1990.

    Google Scholar 

  28. G. Kaiser, P. Feiler, and S. Popovich. Intelligent assistance for software development and maintenance. IEEE Software, pages 40–49, May 1988.

    Google Scholar 

  29. B. Kernighan and D. Ritchie. The C Programming Language. Prentice-Hall, 1988.

    Google Scholar 

  30. D. Knuth. The WEB System of Structured Documentation.

    Google Scholar 

  31. D. Knuth. Literate programming. Computer Journal, pages 97–111, 1984.

    Google Scholar 

  32. D. Leblang and R. Chase. Computer-aided software engineering in a distributed workstation environment. ACM SIGPLAN Notices, pages 104–112, May 1984.

    Google Scholar 

  33. 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.

    Google Scholar 

  34. D. Leblang and R. Chase. Parallel software configuration management in a network environment. IEEE Software, pages 28–35, November 1987.

    Google Scholar 

  35. 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.

    Google Scholar 

  36. E. Lippe. Operation-based merging. In Proceedings of the Fifth Symposium on Software Development Environments, pages 78–87. ACM, 1992.

    Google Scholar 

  37. D. Lubkin. Heterogeneous configuration management with DSEE. In Proceedings of the Third International Workshop on Software Configuration Management. ACM, 1991.

    Google Scholar 

  38. 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.

    Google Scholar 

  39. 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.

    Google Scholar 

  40. 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.

    Google Scholar 

  41. 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.

    Google Scholar 

  42. Software Maintenance and Development Systems. Aide de Camp. Product Overview, 1992.

    Google Scholar 

  43. 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.

    Google Scholar 

  44. E. Meyers. An O(ND) difference algorithm and its variations. Algorithmica, 1(2):251–266, 1986.

    Google Scholar 

  45. T. Miller. A schema for configuration management. In Proceedings of the Second International Workshop on Software Configuration Management, pages 26–29. ACM, 1989.

    Google Scholar 

  46. W. Miller and E. Meyers. A file comparison program. Software: Practice and Experience, 15(11):1025–1040, November 1985.

    Google Scholar 

  47. 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.

    Google Scholar 

  48. D. Notkin. The Gandalf project. Journal of Systems and Software, pages 91–105, May 1985.

    Google Scholar 

  49. W. Obst. Delta technique and string-to-string correction. In Lecture Notes in Computer Science 289, pages 64–68, Springer-Verlag, 1987.

    Google Scholar 

  50. D. Parnas. Designing software for ease of extension and contraction. IEEE Transactions on Software Engineering, 5(2):128–137, March 1979.

    Google Scholar 

  51. D. Perry. Version control in the Inscape environment. In Proceedings of the Ninth International Conference on Software Engineering, pages 142–149. IEEE, 1987.

    Google Scholar 

  52. J. Plaice and W. Wadge. A new approach to version control. IEEE Transactions on Software Engineering, 19(3):268–276, March 1993.

    Google Scholar 

  53. S. Reiss. Pecan: Program development systems that support multiple views. IEEE Transactions on Software Engineering, 11(3):276–285, March 1985.

    Google Scholar 

  54. 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.

    Google Scholar 

  55. 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.

    Google Scholar 

  56. M. Rochkind. The source code control system. IEEE Transactions on Software Engineering, pages 364–370, December 1975.

    Google Scholar 

  57. 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.

    Google Scholar 

  58. 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.

    Google Scholar 

  59. 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.

    Google Scholar 

  60. R. Stallman. GNU Emacs Manual Free Software Foundation, 6.18 edition, 1987.

    Google Scholar 

  61. 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.

    Google Scholar 

  62. 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.

    Google Scholar 

  63. T. Teitelbaum and T. Reps. The Cornell program synthesizer: A syntax directed programming environment. Communications of the ACM, pages 563–573 September 1981.

    Google Scholar 

  64. W. Teitelman. A tour through Cedar. IEEE Transactions on Software Engineering, 11(3):285–302, March 1985.

    Google Scholar 

  65. W. Teitelman and L. Masinter. The Interlisp programming environment. IEEE Computer, 14(4):25–33, April 1981.

    Google Scholar 

  66. W. Tichy. Software development control based on module interconnection. In Proceedings of the Fourth International Conference on Software Engineering, pages 29–41. IEEE, 1979.

    Google Scholar 

  67. 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.

    Google Scholar 

  68. W. Tichy. The string-to-string correction problem with block moves. ACM Transactions on Computer Systems, pages 309–321, November 1984.

    Google Scholar 

  69. W. Tichy. RCS: A system for version control. Software: Practice and Experience, 15(7):637–654, July 1985.

    Google Scholar 

  70. W. Tichy. Tools for software configuration management. In Proceedings of the International Workshop on Software Version and Configuration Control, pages 1–20. IEEE, 1988.

    Google Scholar 

  71. H. van Vliet. Software Engineering: Principles and Practice. Wiley, 1993.

    Google Scholar 

  72. 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.

    Google Scholar 

  73. 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.

    Google Scholar 

  74. 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.

    Google Scholar 

  75. D. Whitgift. Methods and Tools for Software Configuration Management. Wiley, 1991.

    Google Scholar 

  76. W. Yang. A New Algorithm for Semantics-Based Program Integration. PhD thesis, University of Wisconsin, 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Jacky Estublier

Rights and permissions

Reprints 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

Publish with us

Policies and ethics