コードクローン自動検出によるソフトウェア保守作業支援環境

山科 隆伸(0751134)


コードクローンとは,ソースコード中の重複したコード列のことである.コードクローンを含むコードに変更を加えた場合には,他の全てのコードクローンにも同様に変更を行う必要がある場合が多い.この際に,変更し忘れや見逃しが生じた場合は,欠陥が混入し,品質を低下させる.そのためソフトウェア保守開発では,コードクローンを認識して保守を行うことが重要である.コードクローンを認識して保守を行うためには保守コストが増大するため,保守作業に対する何らかの支援が望まれる.しかし,我々の知る限りではコードクローンを意識した保守作業を支援する手法や環境は開発されていない.また,実際の保守開発現場においてコードクローンの存在を意識して保守作業が行われているのかでさえ,明らかにされていない.本研究では,まず,企業の保守作業を行う開発者を観察した.その結果,彼らの多くは,コードクローンの存在をあまり意識せずに保守作業を行っていることがわかった.そこで,次に保守作業の際に,コードクローンの修正を支援するツールSHINOBIを設計,実装した.これは,自動的にコードクローンを検出し修正中のコードと関係が強い順にランキングして表示を行う.これにより,開発者はコードクローンの存在を常に意識しながら,コード編集作業を進めることができる.このため,コードクローンを認識して保守を行う際の保守コストを軽減する.最後に実装したツールを実際の大規模開発プロジェクトの編集履歴データを利用し,評価を行ったところ,ツールを利用することによる実行時間へのオーバヘッドが小さく,コードクローン検出の性能が高いことが確認できた.