PowerPoint Presentation - Software Engineering Laboratory
Download
Report
Transcript PowerPoint Presentation - Software Engineering Laboratory
ソフトウェア保守性を評価する
メトリクス間の関連分析
大阪大学 大学院 情報科学研究科
馬場慎太郎,吉田則裕,楠本真二,井上克郎
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
1
目次
研究背景
保守性を評価するメトリクス
評価実験
目的・対象プロジェクト概要
計測方法
結果・考察
まとめ
今後の課題
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
2
研究の背景
ソフトウェアにおける保守性への関心拡大
長期間に渡って使用されるソフトウェアでは,保守に
要するコストが増大してきている
新規開発(?)でも既存ソフトウェアを母体とした開発が
多い
従来の保守性の評価
複雑度メトリクス
コードクローンに関するメトリクス
これらの関係は不明
それぞれの保守性評価結果にどのような関係が
あるのかを確認する必要性
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
3
ソフトウェアの保守性
保守性:修正のしやすさに関する能力
誤りの訂正
データ環境や処理環境の変化への適合
機能やユーザビリティの改善
保守性評価のためのメトリクス
複雑度メトリクス
サイクロマチック数
Halsteadのメトリクス
CKメトリクス
インターフェイス複雑度
コードクローンに関するメトリクス
ROC
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
4
複雑度メトリクス-サイクロマチック数
McCabeが提案したメトリクス*
プログラム制御の流れに着目
ソースコードの分岐の数+1がメトリクス値
値が大きいと保守性低下
テストケースを作成する手間増大
変更作業がしにくい
* R. Yokomori, M. Noro, K. Inoue: "Evaluation of Source Code Updates in Software Development Based on Component Rank",
The Proceedings of 13th Asia Pacific Software Engineering Conference (APSEC2006), pp.327-334 (2006).
早瀬,松下,楠本,井上,小林,吉野:“影響波及解析を利用した保守作業の
労力見積りに用いるメトリクスの提案", 電子情報通信学会論文誌D(印刷中).
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
5
複雑度メトリクス-Halsteadのメトリクス
オペレータとオペランドの種類数・出現数から
規模やバグ数,開発時間を予測
オペレータの種類数n1,出現数N1
オペランドの種類数n2,出現数N2
規模=(N1+N2)log(n1+n2)
保守における障害密度との関係の分析が
行われている**
** 高橋"C言語ソフトウェア保守工程におけるHalsteadのソフトウェアサイエンス計測と障害密度との関係の分析",
電子情報通信学会論文誌J82-D-I(8)pp.1017-1034,1999
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
6
複雑度メトリクス-CKメトリクス
ChidamberとKemererらの提案した,オブジェ
クト指向ソフトウェアに対する代表的メトリクス
クラスの複雑さを,内部複雑度,継承,結合
の3つの観点,6つのメトリクスから評価
全てのメトリクスに対し,値が大きいと複雑な
クラスであり,好ましくない
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
7
複雑度メトリクス-インターフェイス複雑度
関数に関するインターフェイスの複雑度を
評価するメトリクス
計測ツールも存在
インターフェイスを複雑にする要因の和を
計測
関数中にある引数の数
“return”の数
値が大きいと複雑である
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
8
コードクローン
ソースコード中に含まれる同一または類似したコード片の対
または集合.
(コピー&ペーストプログラミング,実行パフォーマンス向上,偶
然等で作り込まれる)
コードクローンはソフトウェア保守性を低下させる
コードクローンが存在するコード片に対して修正を行う場合,その全て
のクローンについて修正を行うかどうかの検討をしなければならない
クローンペア
クローンセット
クローンペア
クローンペア
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
9
コードクローンに関するメトリクス:ROC
対象プログラムにおけるコードクローンが占める割
合を示す
字句解析後のトークンをベースとする
ROCを計測する範囲内の全トークン数をAll,その範
囲内でコードクローンになっているトークン数をClone
とすると
ROC=Clone÷All×100(%)
例:全部で200トークンから成り,そのうち50トークン
がコードクローンになっているファイル
ROC=50÷200×100=25(%)
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
10
評価実験の目的
複雑度メトリクスとコードクローンに関するメト
リクスの関連調査
サイクロマチック数
インターフェイス複雑度
ROC
総合複雑度
対象プロジェクトに対し各メトリクスを適用し,
保守性の評価結果の相関を検定
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
11
対象プロジェクト概要
ソフトウェアエンジニアリング技術研究組合(COSE)
参加企業によって実施のプローブ情報システム
実質7社で共同開発
17年度,18年度と2ヵ年度に渡って開発
本研究では17年度の最終段階のプログラムを対象
ほぼC/C++で記述
規模は約10万行(ヘッダファイル除く)
73コンポーネント,約400ファイルから構成
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
12
計測方法-複雑度
市販ツールRSMを使用
1. 各コンポーネントごとにサイクロマチック数,
インターフェイス複雑度,総合複雑度を計測
2. 計測値を行数(空行やコメントのみの行は
除く)で割って正規化
メトリクス値は行数が多いほど大きくなる
正規化した値が複雑度,保守性を評価して
いると判断
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
13
計測方法-コードクローン
コードクローン分析ツールGeminiを使用
会社内に閉じたコードクローンのみを検出
仮に会社間にコードクローンが存在しても,独立し
て開発しているため保守性に影響なし
各コンポーネントごとにROCを計測
その値によって保守性を評価
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
14
Gemini出力例
X社
Y社
水平・垂直方向に
ソースコードを出現順
に配置
コードクローンとなっ
ている箇所に点を描
画
線は会社の区切り線
X社
Y社
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
15
実験結果(1/3)
サイクロマ
チック数
順位
インターフェイス
複雑度
順位
A社
10.77
1
14.22
7
24.98
3
15.5
1
B社
14.72
3
10.37
6
25.09
4
20.57
2
C社
16.53
5
9.13
4
25.66
5
39.2
5
D社
18.84
7
9.93
5
28.77
7
22
3
E社
15.41
4
9.06
3
24.47
2
49.13
6
F社
13.68
2
7.99
1
21.66
1
39
4
G社
17.86
6
8.80
2
26.65
6
66.67
7
総合複雑度
順位
ROC
順位
各社におけるコンポーネントごとのメトリクス値の
平均値と順位
メトリクス値が低いほど高い保守性を表す
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
16
実験結果(2/3)
総合複雑度 vs ROC
相関係数
0.1071
危険率5%の有意点
0.786
相関の有無
無
総合複雑度(サイクロマチック数+インターフェイス
複雑度)とROC間のSpearmanの順位相関係数を検
定
結果,相関なし
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
17
実験結果(3/3)
相関係数
サイクロマチック数
vs ROC
インターフェイス複雑度
vs ROC
インターフェイス複雑度
vsサイクロマチック数
0.5357
-0.7857
-0.2143
0.786
0.786
0.786
無
無
無
危険率5%の有意点
相関の有無
メトリクス同士の相関を同様に検定
いずれも相関なし
複雑度のメトリクス同士でも相関なし
異なる側面を評価している
インターフェイス複雑度とROC間の相関は負に近い
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
18
考察
各メトリクス間に相関なし
異なる側面から保守性を評価するため,結果も異なる
より正確な保守性評価のために,いくつかのメトリクスを
組み合わせることが有用と考えられる
インターフェイス複雑度とROCの間に負の相関が
ある可能性
複雑な関数が多いプログラム
インターフェイス
複雑度は高い
2007/6/8
ROCは低い
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
19
まとめ
複雑度メトリクスとコードクローンに関するメト
リクスによる保守性の評価結果の関連調査
対象は複数社で共同開発の中規模システム
その結果,2者の間に相関はなく,また複雑度
メトリクス同士の組み合わせでも相関がな
かった
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
20
今後の課題
18年度のプログラムに対する分析
17年度と同じ結果になるか
年度間の変化
2ヵ年度に渡って開発を行ったプロジェクト
保守性の変化の原因分析
2007/6/8
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
21
進行中の年度間分析(1/2)
A~Gが会社を表す
総合複雑度とROCの関
総合複雑度とROCの年度間変化
80
70
昨年度
17年度
今年度
18年度
60
A社
B社
C社
D社
E社
F社
G社
ROC
50
40
17年度
18年度
30
20
係を表している
右上にいくほど好ましく
ない
矢印が長いほど年度間
で大きな違い
分析例
10
0
20
22
2007/6/8
24
26
28
総合複雑度
30
32
ROCは年度間変化が大
きな会社とほとんどない
会社がある
G社やD社は2メトリクス
間にトレードオフの関係
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
22
進行中の年度間分析(2/2)
A~Gが会社を表す
複雑度に関する2メトリ
インターフェイス複雑度とサイクロマチック数の年度間変化
21
20
昨年度
17年度
サイクロマチック数
19
今年度
18年度
A社
B社
C社
D社
E社
F社
G社
18
17
16
15
14
13
クスの関係を表してい
る
右上にいくほど好ましく
ない
矢印が長いほど年度間
で大きな違い
分析例
12
11
6
8
10
12
インターフェイス複雑度
2007/6/8
14
16
左下と右上を結ぶ矢印
が多い
一方のメトリクス値が
増減すると,他方も同
様に増減する傾向
ソフトウェア信頼性研究会ワークショップ
Software Design Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
23