Advertisement

Syntactic software merging

  • Jim Buffenbarger
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1005)

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.

Keywords

Software Engineer Source File Configuration Management Original File Configuration Control 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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. 2.
    Atria, Inc. ClearCase Concepts Manual, 1992.Google Scholar
  3. 3.
    Atria, Inc. ClearCase Reference Manual, 1992.Google Scholar
  4. 4.
    W. Babich. Software Configuration Management. Addison-Wesley, 1986.Google Scholar
  5. 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. 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. 7.
    E. Bershoff, V. Henderson, and S. Siegel. Software Configuration Management. Prentice-Hall, 1980.Google Scholar
  8. 8.
    V. Berzins. On merging software extensions. Acta Informatica, 23:607–619, 1986.Google Scholar
  9. 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. 10.
    G. Clemm. The Odin specification language. In Lecture Notes in Computer Science 244. Springer-Verlag, 1986.Google Scholar
  11. 11.
    G. Clemm. The Odin System. PhD thesis, University of Colorado, Boulder, 1986.Google Scholar
  12. 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. 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. 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. 15.
    S. Dart. Spectrum of functionality in configuration management systems. Technical Report CMU/SEI-90-TR-11, Software Engineering Institute, 1990.Google Scholar
  16. 16.
    S. Dart, R. Ellison, P. Feiler, and A. Habermann. Software development environments. IEEE Computer, 20(11):18–28, 1987.Google Scholar
  17. 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. 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. 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. 20.
    P. Feiler and R. Medina-Mora. An incremental programming environment. IEEE Transactions on Software Engineering, pages 472–482, September 1981.Google Scholar
  21. 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. 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. 23.
    A. Habermann and D. Notkin. Gandalf: Software development environments. IEEE Transactions on Software Engineering, 12(12):1117–1127, 1986.Google Scholar
  24. 24.
    P. Heckel. A technique for isolating difference between files. Communications of the ACM, pages 264–268, April 1978.Google Scholar
  25. 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. 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. 27.
    C. Jones. Systematic Software Development Using VDM. Prentice-Hall, second edition, 1990.Google Scholar
  28. 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. 29.
    B. Kernighan and D. Ritchie. The C Programming Language. Prentice-Hall, 1988.Google Scholar
  30. 30.
    D. Knuth. The WEB System of Structured Documentation.Google Scholar
  31. 31.
    D. Knuth. Literate programming. Computer Journal, pages 97–111, 1984.Google Scholar
  32. 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. 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. 34.
    D. Leblang and R. Chase. Parallel software configuration management in a network environment. IEEE Software, pages 28–35, November 1987.Google Scholar
  35. 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. 36.
    E. Lippe. Operation-based merging. In Proceedings of the Fifth Symposium on Software Development Environments, pages 78–87. ACM, 1992.Google Scholar
  37. 37.
    D. Lubkin. Heterogeneous configuration management with DSEE. In Proceedings of the Third International Workshop on Software Configuration Management. ACM, 1991.Google Scholar
  38. 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. 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. 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. 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. 42.
    Software Maintenance and Development Systems. Aide de Camp. Product Overview, 1992.Google Scholar
  43. 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. 44.
    E. Meyers. An O(ND) difference algorithm and its variations. Algorithmica, 1(2):251–266, 1986.Google Scholar
  45. 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. 46.
    W. Miller and E. Meyers. A file comparison program. Software: Practice and Experience, 15(11):1025–1040, November 1985.Google Scholar
  47. 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. 48.
    D. Notkin. The Gandalf project. Journal of Systems and Software, pages 91–105, May 1985.Google Scholar
  49. 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. 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. 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. 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. 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. 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. 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. 56.
    M. Rochkind. The source code control system. IEEE Transactions on Software Engineering, pages 364–370, December 1975.Google Scholar
  57. 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. 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. 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. 60.
    R. Stallman. GNU Emacs Manual Free Software Foundation, 6.18 edition, 1987.Google Scholar
  61. 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. 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. 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. 64.
    W. Teitelman. A tour through Cedar. IEEE Transactions on Software Engineering, 11(3):285–302, March 1985.Google Scholar
  65. 65.
    W. Teitelman and L. Masinter. The Interlisp programming environment. IEEE Computer, 14(4):25–33, April 1981.Google Scholar
  66. 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. 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. 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. 69.
    W. Tichy. RCS: A system for version control. Software: Practice and Experience, 15(7):637–654, July 1985.Google Scholar
  70. 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. 71.
    H. van Vliet. Software Engineering: Principles and Practice. Wiley, 1993.Google Scholar
  72. 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. 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. 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. 75.
    D. Whitgift. Methods and Tools for Software Configuration Management. Wiley, 1991.Google Scholar
  76. 76.
    W. Yang. A New Algorithm for Semantics-Based Program Integration. PhD thesis, University of Wisconsin, 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Jim Buffenbarger
    • 1
  1. 1.Boise State UniversityUSA

Personalised recommendations