Using origin analysis to detect merging and splitting of source code entities

被引:126
作者
Godfrey, MW [1 ]
Zou, LJ [1 ]
机构
[1] Univ Waterloo, Sch Comp Sci, Waterloo, ON N2L 3G1, Canada
关键词
software evolution; origin analysis; restructuring; reverse engineering; reengineering;
D O I
10.1109/TSE.2005.28
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Merging and splitting source code entities is a common activity during the lifespan of a software system; as developers rethink the essential structure of a system or plan for a new evolutionary direction, so must they be able to reorganize the design artifacts at various abstraction levels as seems appropriate. However, while the raw effects of such changes may be plainly evident in the new artifacts, the original context of the design changes is often lost. That is, it may be obvious which characters of which files have changed, but it may not be obvious where or why moving, renaming, merging, and/or splitting of design elements has occurred. In this paper, we discuss how we have extended origin analysis [1], [2] to aid in the detection of merging and splitting of files and functions in procedural code; in particular, we show how reasoning about how call relationships have changed can aid a developer in locating where merges and splits have occurred, thereby helping to recover some information about the context of the design change. We also describe a case study of these techniques ( as implemented in the Beagle tool) using the PostgreSQL database system as the subject.
引用
收藏
页码:166 / 181
页数:16
相关论文
共 24 条
  • [1] Analyzing cloning evolution in the Linux kernel
    Antoniol, G
    Villano, U
    Merlo, E
    Di Penta, M
    [J]. INFORMATION AND SOFTWARE TECHNOLOGY, 2002, 44 (13) : 755 - 765
  • [2] BAKER BS, 1995, SECOND WORKING CONFERENCE ON REVERSE ENGINEERING, PROCEEDINGS, P86, DOI 10.1109/WCRE.1995.514697
  • [3] Church K.W., 1993, J COMPUT GRAPH STAT, V2, P153, DOI [10.2307/1390697, DOI 10.2307/1390697, DOI 10.1080/10618600.1993.10474605, 10.1080/10618600.1993, DOI 10.1080/10618600.1993]
  • [4] Version models for software configuration management
    Conradi, R
    Westfechtel, B
    [J]. ACM COMPUTING SURVEYS, 1998, 30 (02) : 232 - 282
  • [5] Ducasse S., 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). `Software Maintenance for Business Change' (Cat. No.99CB36360), P109, DOI 10.1109/ICSM.1999.792593
  • [6] Fowler M., 2018, Refactoring: improving the design of existing code, V2nd
  • [7] Gamma Erich., 1994, DESIGN PATTERNS
  • [8] A framework for understanding conceptual changes in evolving source code
    Gold, N
    Mohan, A
    [J]. INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, PROCEEDINGS, 2003, : 431 - 439
  • [9] Extensible language-aware merging
    Hunt, JJ
    Tichy, WF
    [J]. INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, PROCEEDINGS, 2002, : 511 - 520
  • [10] Architecture recovery of dynamically linked applications: A case study
    Ivkovic, I
    Godfrey, MW
    [J]. 10TH INTERNATIONAL WORKSHOP ON PROGRAM COMPREHENSION, PROCEEDINGS, 2002, : 178 - 184