ソフトウェア保守性を評価する メトリクス間の関連分析 大阪大学 大学院 情報科学研究科 馬場慎太郎,吉田則裕,楠本真二,井上克郎 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
© Copyright 2024 ExpyDoc