Detection and Evolution Analysis of Code Clones for Efficient Management of Large-scale Software Systems

(邦訳:大規模ソフトウェアの保守効率化のためのコードクローン検出・進化分析)
 
崔 恩瀞
大阪大学大学院国際公共政策研究科 助教

[背景]派生開発の普及により類似プロダクトが増加
[問題]類似プロダクト群に含まれるコードクローンの管理が困難
[貢献]類似プロダクト群に適したコードクローン管理手法の解明


 近年,ソフトウェアを開発するときに,既存のソフトウェアを流用し,新たなソフトウェアを開発する派生開発が主流になっている.その結果,類似プロダクトが増加している.これらの類似プロダクトを保守するためには多くの作業や時間が必要である.この問題を解決するために,本論文では,ソフトウェア保守における代表的な問題の1つであるコードクローン(ソースコード中に存在する同一または類似した部分を持つコード片)に着目している.

 一般的に,コードクローンの存在はソフトウェアの保守を困難にするといわれている.たとえば,あるクローンセット(互いに類似したコードクローンの集合)内に一貫して変更されてないコードクローンが存在する場合,開発者はそれらのコードクローンを識別し,一貫した変更を行う必要がある.類似プロダクトからコードクローンの検出や管理を支援するために,本論文では,コードクローンが大規模システムで直面している2つの大きな問題を設定し解決した.1番目の問題は「どのような(プログラムの要素を変換する)正規化手法を用いると大規模システムでのコードクローン検出を高速に行えるか」であり,2番目は「(1つのクローンセット内のコードクローンを1つの単位にまとめる)クローンリファクタリングを支援するツールには,どのような機能が必要か」である.

 1番目の問題を解決するために,本論文では入力ソースコードに異なる正規化(空白の除外,識別子の正規化等)を適用し,コードクローンを検出する6種類の手法を提案・評価している.まず入力ソースコードに各正規化を適用した後に,それらのファイルを同値類に分ける.その後,各同値クラスから1つのファイルを選択し,選択されたファイルの集合に対してコードクローン検出ツールCCFinderを適用してコードクローンを検出する.評価実験では,3つのオープンソースソフトウェアに対して,提案手法とCCFinderのみを使ってコードクローンを検出する方法を適用した.その結果,CCFinderのみを使ってコードクローンを検出する方法より提案手法の方が約2倍早く検出できることがわかった.また,提案手法の中では,入力ファイルに何の正規化を適用せずに,完全一致ファイルに基づいてコードクローンを検出する手法が,より早くコードクローンを検出できることが分かった.

 2番目の問題を解決するため,本論文は,オープンソースソフトウェアの開発中に実施されたコードクローンのリファクタリングを識別し,それが実施されたコードクローンの特徴を調査した.その結果,「メソッドオブジェクトによるメソッドの置き換え」パターンが最も多く使われたことが明らかになった.また,トークン列の長さが異なるコードクローンがリファクタリングの対象になることも分かった.この調査結果に基づいて,リファクタリング支援ツールの提案も行っている.
 

 

 (2015年6月15日受付)
取得年月日:2015年3月
学位種別:博士(情報科学)
大学:大阪大学



推薦文
:(ソフトウェア工学研究会)


本研究では,ソースコードの保守作業を妨げるコードクローンを大規模プロダクト群から高速検出する手法を提案するともに,コードクローンの対処方法を提案している.スマートフォンOSの派生開発プロダクト群を実験対象にするなど,現実的な課題設定を行い,しかも実証実験に基づく議論を展開している点を高く評価できる.


著者からの一言


博士課程在籍中,尊敬できる国内外の研究者の方々にめぐりあい,優秀な同期や先輩,後輩たちに刺激を受けながら研究を進めることができました.また,博士号取得ができたのは,指導教員をはじめ,共著者の方々や家族,友人の温かい支援のおかげであり,非常に感謝しております.初めて自分が書いた論文が出版された時の感動を忘れず,これからもソフトウェアの保守性を向上させる研究に専念し,社会に貢献できるように頑張りたいと思います.