2. 実 験 方 法
Fault-Prone モジュール予測へのコードクローン情

対象プロジェクトは，経済産業省の支援を受けて，報の適用
馬場慎太郎†
楠本

2. 1 対象プロジェクト概要真二†（正員）

吉田則裕†（学生員）

井上克郎†（正員）

COSE（注 1）参加企業によって実施されたプローブ情報システムの開発プロジェクトである [5]．このプロジェ

Application of Code Clone Information to Fault-Prone Module
Prediction

クトには以下の特徴がある．

•Shintaro BABA† , Nonmember,

Norihiro YOSHIDA† , Student Member, Shinji KUSUMOTO† ,and Katsuro INOUE† , Members

2 か年度にわたったプロジェクトであり，新規開発を行った 2005 年度版と，保守や改良を行った 2006
年度版のデータが取得可能である．

† 大阪大学大学院情報科学研究科，豊中市•Graduate School of Information Science and Technology,

実装内容別に分類されたコンポーネントが存在

Osaka University, 1–3 Machikaneyama-cho, Toyonaka-shi,する．コンポーネントは一つ以上のファイルの集合で560–8531 Japanあり，すべてのファイルはいずれか一つのコンポーネントに属している．

•
あらまし

フォールト情報はコンポーネントごとに記録さ本論文では，Fault-Prone モジュール予れている．したがって，これらの記録を調べることで，測にコードクローン情報を用いた実験結果について述2005 年度，2006 年度に開発・保守されたモジュール

べる．従来用いられてきた複雑度メトリックスのほかごとのフォールトの有無が把握できる．に，コードクローンに関するメトリックスも説明変数

上記の特徴から，本論文ではコンポーネントをモに加えたロジスティック回帰分析により Fault-Proneジュールとみなす．つまり Fault-Prone か否かの予測モジュールを予測した．その結果，従来手法に比べてはコンポーネントごとに行う．また，2005 年度に開発予測精度が向上することを確認した．

された 40 モジュールの情報から予測モデルを作成し，キーワード Fault-Prone，コードクローン，複雑度メトリックス，ロジスティック回帰

1. ま え が き2006 年度に開発・保守された 32 モジュールに対して適用を行う．なお，これらのモジュールは C/C++で実装されたものである．

高品質なソフトウェア作成のために，早期段階での不具合（フォールト）を含みやすいモジュールの特定が求められており，様々な研究が行われている [1], [3]．
一般的な Fault-Prone モジュールの予測手法では，ソフトウェア保守性を評価するための複雑度メトリック
スの値を説明変数として予測モデルを作成し，予測したいモジュールに適用することが多い．
一方，近年ソフトウェアの保守性に影響を与える要因として，コードクローン（ソースコード中の類似したまたは同一のコード片の集合）が指摘されている．

2. 2 複雑度メトリックス
計測可能な範囲でできるだけ一般的なメトリックスを選定した．具体的には次の五つである．

••

関数ごとのサイクロマチック数••

ファイルごとのコメント率

ファイルごとのコード行数
関数ごとの IFANIN（入力となるパラメータとグローバル変数の数）•

関数ごとの IFANOUT（出力するパラメータとグローバル変数の数）

更に，コードクローンに関するメトリックスと複雑度

また，本データではおよそ 8 割のモジュールがフォー

メトリックスはそれぞれ保守性に関する異なる側面ルトを含んでいるという特徴がある．このような場を評価しているという報告もあるが [2]，筆者らの知合，一つでも複雑なファイルや関数があれば，そこにる限り，コードクローン情報を用いた Fault-Prone モ

フォールトがある可能性が高いと思われる．よって，ジュールの予測手法は提案されていない．

モジュールのメトリックス値は，そのモジュール内のそこで，本論文では複雑度メトリックスに加えてコードクローンに関するメトリックスも説明変数とファイルや関数等ごとの計測値の最大値とした．なお，計測には Understand for C++ [6] を用いた．

したロジスティック回帰分析によって Fault-Prone モ
ジュールの予測を試みた．対象としたのは複数社で共同開発された中規模情報システムである．
電子情報通信学会論文誌 D Vol. J91–D（注 1）：ソフトウェアエンジニアリング技術研究組合（COSE）：COnsortiumfor Software Engineering.

c （社）電子情報通信学会 2008
No. 10 pp. 2559–2561 2559

電子情報通信学会論文誌 2008/10 Vol. J91–D No. 10

2. 3 コードクローンに関するメトリックスはないことが分かる．RNR 値が低いコードクローン

コードクローン分析ツール Gemini を用いてモジューは変数宣言部等に多く存在するが，そのような単純なルごとに以下の二つのメトリックスを計測した．

•NOC（Number Of Clone）

モジュール中のコードクローンとなっているコード片の個数．

•部分ではあまりフォールトが作り込まれないために，このような結果になったと考えられる．

4. む す び
本論文では，コードクローンに関するメトリックスROC（Ratio Of Clone）

ROC =を用いた Fault-Prone モジュールの予測の実験を行った．その結果，RNR メトリックスによってフィルタコードクローンとなっているトークン数（同一組織が作成した）モジュール内のすべてのトークン数

リングを行えば，従来の手法に比べて予測精度が向上することを確認した．

×100(%)
また，コードクローン自身を特徴づけるメトリックスとして RNR（Ratio of Non-Repeated code）がある [4]．RNR は，トークンベースでそのコードクロー今後は多様なプロジェクトに対して適用を試み，プロジェクトの特性がどのように結果に反映されるか確認していきたいと考えている．

ンの非繰返し度を表す．この値が 50 未満の繰返し構造が多いコードクローンは保守性にあまり影響を与えないといわれているため，RNR によるフィルタリングをした方が精度が向上する可能性がある．そこで本論文では，RNR 値 50 以上のコードクローンしかコー表2 実験結果
Table 2 Experimental results.
複雑度メトリックスのみ（従来手法）
実測
NF
F

予測
NF F
26321

再現率：0.875
適合率：0.778

RNR フィルタリングあり
で ROC と NOC を追加
実測
NF
F

予測
NF F
44024再現率：1.000
適合率：0.875

RNR フィルタリングあり
で ROC を追加
実測
NF
F

予測
NF F
26222再現率：0.917
適合率：0.786

RNR フィルタリングあり
で NOC を追加
実測
NF
F

予測
NF F
44024

再現率：1.000
適合率：0.875

RNR フィルタリングなし
で ROC と NOC を追加
実測
NF
F

NF
24F
620

再現率：0.833
適合率：0.769

RNR フィルタリングなし
で ROC を追加
実測
NF
F

予測
NF F
26123

再現率：0.958
適合率：0.793

RNR フィルタリングなし
で NOC を追加
実測
NF
F

予測
NF F
26321

再現率：0.875
適合率：0.778

ドクローンとみなさない，RNR フィルタリングを行う場合と，行わない場合，両方について適用を行った．

3. 実 験 結 果
表 1 は得られた実験結果の凡例である．N1 〜N4には該当するモジュール数が入る．例えば N2 は，予測ではフォールトを含む（F）と判定したが実際には（注 2）フォールトを含まなかった（NF）
モジュール数となる．本論文では結果を評価するための指標として，再現率と適合率を用いるが，それぞれ以下の式で表される．ともに予測精度が高いほど大きな値となる．
再現率 =

N4
N4，適合率 =N3 + N4
N2 + N4

実験結果と再現率，適合率を表 2 に示す．コードクローンに関するメトリックス（注 3）を説明変数に加えることでおおむね予測精度が向上している．しかし予測精度が低下した場合もあり，RNR フィルタリングを行わなかった場合では全体的に精度向上が確認できなかった．このことから，RNR 値が低いコードクローンは，Fault-Prone モジュールの予測に関して有用でTable 1

表 1 実験結果の凡例
Explanatory notes to experimental results.

実測 NF
F2560

予測
NF F
N1 N2
N3 N4

（注 2）：あくまで，2006 年度の開発・保守期間にフォールトが発見されなかったという意味である．
（注 3）：ROC の値は，RNR フィルタリングありの場合，40.4（2005 年度）と 39.7（2006 年度），RNR フィルタリングなしの場合，48.1（2005 年度），46.6（2006 年度）（いずれも平均値）となった．

レター

謝辞 本研究は一部，文部科学省「次世代 IT 基盤構築のための研究開発」（研究開発領域名：ソフトウェ

June 2007.
[3]

tion of object oriented metrics as quality indicators,”

ア構築状況の可視化技術の開発普及）の委託に基づいIEEE Trans. Softw. Eng., vol.22, no.10, pp.751–761,て行われた．また，日本学術振興会科学研究費補助金
基盤研究（A）（課題番号：17200001）の助成を得た．
文[1]

Oct. 1996.
[4]

献

E. Arisholm and L.C. Briand, “Predicting fault-prone
components in a Java legacy system,” Proc. IS-

馬場慎太郎，吉田則裕，楠本真二，井上克郎，“ソフトウェ
ア保守性を評価するメトリクス間の関連分析，” ソフトウェ
ア信頼性研究会第 4 回ワークショップ論文集，pp.101–106,

肥後芳樹，吉田則裕，楠本真二，井上克郎，“産学連携に基づいたコードクローン可視化手法の改良と実装，
” 情処

[5]

学論，vol.48, no.2, pp.811–822, Feb. 2007.
情報処理推進機構ソフトウェア・エンジニアリング・セン[6]

ウェア開発プロジェクトの記録，翔泳社，東京，2007.
http://www.scitools.com/products/understand/

ター：ソフトウェアエンジニアリングの実践—先進ソフト

ESE2006, pp.8–17, Rio de Janeiro, Brazil, Sept. 2006.
[2]

V.R. Basili, L.C. Briand, and W.L. Melo, “A valida-cpp/product.php（平成 20 年 4 月 4 日受付，5 月 29 日再受付）

2561