コードの編集履歴を用いたプログラム変更の検出

Bibliographic Information

Other Title
  • Detecting Program Changes from Code Change History

Search this article

Abstract

ソフトウェア開発時のプログラム変更情報を検出し保守者に提示することで,保守者によるプログラムの変更過程の理解を促進できる.このため,ソースコードの2つの版から行差分を抽出する手法が提案されている.しかしながら,単一の差分情報に目的の異なる複数の変更が混ざり合っている場合,これらの手法では変更を適切に分離できない.このため,保守者は混ざり合った変更を人手で分離し,個々の変更内容を推測しなくてはならず,その負担は大きい.本論文では,統合開発環境により記録される編集操作履歴を用いることで,個々のプログラム変更を自動検出する手法を提案する.この手法では,編集操作履歴から過去におけるソースコードのさまざまな時点のスナップショットを復元することで,コード片レベルではなくプログラム要素レベルの変更を検出する.さらに,検出された変更を開発者や保守者の方針に応じて集約する仕組みを導入することで,開発者や保守者は集約されたプログラム変更を見ることができる.提案手法を実装したツールを用いた評価実験により,時間的あるいは空間的に集約されたプログラム変更が開発者や保守者のプログラム理解活動を支援できることを示した.

Detecting program changes has been a major activity since it helps maintainers to figure out the evolution of the changed program. For this, several approaches based on line-based differencing have been proposed, which extract differences between two versions of the source code. Unfortunately, these approaches cannot untangle multiple changes for different tasks when they are intermingled with each other in a single difference. Therefore, the maintainers have to untangle them by hand. This task is troublesome and time-consuming. This paper proposes a novel mechanism that automatically detects individual changes of program elements not code fragments by using edit operation history of source code. The edit operations are recorded in an integrated development environment and are used for restoration of various snapshots of source code existing in the past. The mechanism also provides the developers and the maintainers to a chance to select their preferable configuration of aggregation of program changes. Experimental results with a tool implementing the detection mechanism show that the temporally or spatially aggregated program changes facilitate developers' or maintainers' comprehension of program evolution.

Journal

Related Projects

See more

Details 詳細情報について

Report a problem

Back to top