/ ホーム / 研究紹介 / 研究業績 / メンバー / ニュース / アクセス / |
コードクローン(Code Clone)とは,プログラム中に存在する形や構造の似た部分のことです. プログラムにコードクローンがたくさん存在すると,そのプログラムに新機能を付け加えたり,プログラムからバグを取り除いたりすることが困難になります.このようなコードクローンが引き起こす問題への対策として,コードクローンを1つに集約する方法があります.
しかし,銀行や人工衛星で使われているような巨大なプログラムの場合,コードクローンを1つに集約する作業は,簡単ではありません. なぜなら,巨大なプログラムからコードクローンを探し出し,そのコードクローンの特徴に適した方法で集約することは難しいからです.
そこで私達は,コードクローンを集約するソフトウェア開発者を支援するツールを開発しています.
巨大なプログラムの中には,たくさんのコードクローンが存在します.これらコードクローンを1つ1つ集約することは大変です.もっと効率的に作業を進めるには,複数のコードクローンを1つのグループにまとめ,一度に集約する必要があります.
一度に集約できるコードクローンのグループは,類似した機能を表すプログラム間に存在することがあります.下図は,そのようなコードクローンのグループの例です.下図は,機能1と機能2の間に存在する3つのコードクローンを表しています.2つの機能に含まれる長方形は,コード片(プログラムの一部)を表しています.全てのコード片がコードクローンになっており,機能1と機能2はかなり似ていることから,一度に集約するべきです.
これらを踏まえて,プログラムから一度に集約できるコードクローンのグループを探し出すツールを開発しました.
一度に集約できるコードクローンのグループを見つけた後は,プログラムの中のどこにそれらを集約するかが問題となります.
例えば,あるグループは既に存在するファイルに集約すると良いが,もう一方のグループは,新しいファイルを作成し,そのファイルに集約すると良いというように,グループごとに適切な集約先が異なります.しかし,集約先を判断するには,コードクローンだけでなくプログラム全体を考慮する必要があり,簡単に適切な集約先を決定することはできません.
そこで,プログラム全体を分析することにより,グループの特徴を調査し,適切な集約先を開発者に提示する機能をツールに追加しました.
今後の課題は,主に2つあります. 1つ目は,更に大きなコードクローンのグループを探し,その適切な集約先を提示する方法を考案することです. 2つ目は,適切な集約先を提示するだけでなく,その集約を行うリスクや効果を開発者に提示することです.
このような技術を実現することができれば,より効率的にコードクローンを集約することができると考えられます.
ホームへ |
© ソフトウェア工学講座 higo-www[at]cs.ist.osaka-u.ac.jp ([at] を @ に置き換えてください) |