いのうえけ〜ん
English 
/ ホームページ / 研究紹介 / 発表論文・技術報告・学位論文 / メンバー / ニュース /

・複数のコードクローンの集約を支援するツール

・コードクローンの集約

コードクローン(Code Clone)とは,プログラム中に存在する形や構造の似た部分のことです.  プログラムにコードクローンがたくさん存在すると,そのプログラムに新機能を付け加えたり,プログラムからバグを取り除いたりすることが困難になります.このようなコードクローンが引き起こす問題への対策として,コードクローンを1つに集約する方法があります.

しかし,銀行や人工衛星で使われているような巨大なプログラムの場合,コードクローンを1つに集約する作業は,簡単ではありません. なぜなら,巨大なプログラムからコードクローンを探し出し,そのコードクローンの特徴に適した方法で集約することは難しいからです.

そこで私達は,コードクローンを集約するソフトウェア開発者を支援するツールを開発しています.

・コードクローンのグループを探し出す

巨大なプログラムの中には,たくさんのコードクローンが存在します.これらコードクローンを1つ1つ集約することは大変です.もっと効率的に作業を進めるには,複数のコードクローンを1つのグループにまとめ,一度に集約する必要があります.

一度に集約できるコードクローンのグループは,類似した機能を表すプログラム間に存在することがあります.下図は,そのようなコードクローンのグループの例です.下図は,機能1と機能2の間に存在する3つのコードクローンを表しています.2つの機能に含まれる長方形は,コード片(プログラムの一部)を表しています.全てのコード片がコードクローンになっており,機能1と機能2はかなり似ていることから,一度に集約するべきです.

これらを踏まえて,プログラムから一度に集約できるコードクローンのグループを探し出すツールを開発しました.

コードクローンのグループの例
コードクローンのグループの例

・適切な集約先の提示

一度に集約できるコードクローンのグループを見つけた後は,プログラムの中のどこにそれらを集約するかが問題となります.

例えば,あるグループは既に存在するファイルに集約すると良いが,もう一方のグループは,新しいファイルを作成し,そのファイルに集約すると良いというように,グループごとに適切な集約先が異なります.しかし,集約先を判断するには,コードクローンだけでなくプログラム全体を考慮する必要があり,簡単に適切な集約先を決定することはできません.

そこで,プログラム全体を分析することにより,グループの特徴を調査し,適切な集約先を開発者に提示する機能をツールに追加しました.

・今後の課題

今後の課題は,主に2つあります. 1つ目は,更に大きなコードクローンのグループを探し,その適切な集約先を提示する方法を考案することです. 2つ目は,適切な集約先を提示するだけでなく,その集約を行うリスクや効果を開発者に提示することです.

このような技術を実現することができれば,より効率的にコードクローンを集約することができると考えられます.


研究紹介に戻る


homeホームページへ © ソフトウェア工学講座 mailお問い合わせはこちらまで