330 likes | 427 Views
オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 - Chidamber らのメトリクスを対象として -. 神谷 年洋, 別府 明, 楠本 真二, 井上 克郎(大阪大学大学院基礎工学研究科) 毛利 幸雄 (日本ユニシス株式会社). 構成. 背景 ソフトウェア複雑度メトリクス プログラム開発における再利用 Chidamber らのメトリクス Chidamber らのメトリクスの問題点 仮説 修正版メトリクス 実験 分析 Chidamber らのメトリクス 修正版メトリクス まとめ. 背景. ソフトウェアが大規模・複雑化してきている
E N D
オブジェクト指向プログラムを対象とした複雑度メトリクスの実験的評価- Chidamberらのメトリクスを対象として - 神谷 年洋, 別府 明, 楠本 真二, 井上 克郎(大阪大学大学院基礎工学研究科) 毛利 幸雄 (日本ユニシス株式会社)
構成 背景 ソフトウェア複雑度メトリクス プログラム開発における再利用 Chidamberらのメトリクス Chidamberらのメトリクスの問題点 仮説 修正版メトリクス 実験 分析 Chidamberらのメトリクス 修正版メトリクス まとめ Toshihiro Kamiya, Osaka Univ.
背景 • ソフトウェアが大規模・複雑化してきている • 開発期間の短縮や品質向上が求められている • ソフトウェアの全ライフサイクルにわたる管理 • プロダクトの評価を行う必要がある • 再利用 Toshihiro Kamiya, Osaka Univ.
ソフトウェア複雑度メトリクス • 代表例 • Halstedのメトリクス • McCabeのサイクロマチック数 • Chidamberらのメトリクス* (*) S.R.Chidamber and C.F.Kemerer, “A Metrics Suite for Object-Oriented Design”, IEEE Trans. Software Eng., vol. 20, no. 6, pp.476-493, June 1994 Toshihiro Kamiya, Osaka Univ.
プログラム開発における再利用 • 従来の再利用 • ライブラリの利用 プログラム全体の処理の流れなどの主要な部分は開発者が開発し、ライブラリから必要な部品を持ってきて組み合わせる • オブジェクト指向開発における再利用 • フレームワークの利用 プログラムの主要な部分をフレームワークから取り出し、新たに必要な部分を開発者が開発して、それを組み合わせる Toshihiro Kamiya, Osaka Univ.
アプリケーションフレームワーク • クラスライブラリ • ドメインに特化している • プログラムの基幹となる構造を持つ • プログラムの再利用率が高くなる • 例 • Microsoft Foundation Class • Abstract Windowing Toolkit Toshihiro Kamiya, Osaka Univ.
Chidamberらの6種のメトリクス • オブジェクト指向設計のための複雑度メトリクス • クラスの定義から複雑度を測定する • Basilliらが実験を行ってエラーの予測性能を評価した* (*) V.R.Basilli, L.C.Briand and W.L.Melo: “A Validation of Object-Oriented Design Metrics as Quality Indicators”, IEEE Trans. On Software Eng., vol. 22, no. 10, pp.751-761, 1996. Toshihiro Kamiya, Osaka Univ.
Chidamberらのメトリクス(1) クラスの内部的な複雑度 • LCOM:クラスの凝集度の欠如 あるクラスのメソッドのすべての組み合わせのうち、参照するインスタンス変数に共通のものが無い組み合わせの数から、共通するものがある組み合わせの数を引いたもの。ただし、0より小さい場合は0とする • WMC:クラスの重み付きメソッド数 あるクラスに定義されているすべてのメソッドの複雑度の和。各メソッドがどれも同じくらいの複雑さであると考えられるなら、クラスで定義されているメソッドの数 Toshihiro Kamiya, Osaka Univ.
Chidamberらのメトリクス(2) 継承に関する複雑さ • DIT:継承木内での深さ クラスの派生関係が木であるときは、そのクラスの木の中での深さ • NOC:子クラスの数 そのクラスから直接派生している クラスの数 Toshihiro Kamiya, Osaka Univ.
Chidamberらのメトリクス(3) クラス間の関係についての複雑さ • CBO:クラス間の結合 あるクラスが「結合」しているクラス数。「結合」とは、他のクラスのインスタンス変数やメソッドを参照すること • RFC:クラスに対する反応 あるクラスのメソッドの集合と、各メソッドで呼び出す他のクラスのメソッドの集合の和集合の要素数 Toshihiro Kamiya, Osaka Univ.
CBO,RFCの例 Toshihiro Kamiya, Osaka Univ.
Chidamberらのメトリクスの問題点 • 再利用されたクラスの品質は新規開発のクラスよりも高い* • メトリクスを計測する際に、再利用されたクラスと新規開発のクラスを同等に扱う (*) V.R.Basilli, L.C.Briand and W.L.Melo: “A Validation of Object-Oriented Design Metrics as Quality Indicators”, IEEE Trans. Software Eng., vol. 22, no. 10, pp.751-761, 1996. Toshihiro Kamiya, Osaka Univ.
仮説 • メトリクスを計測する際に、再利用されたクラスの重みを0とおく Toshihiro Kamiya, Osaka Univ.
修正版メトリクス(1) • DITo そのクラスの木の中での深さから、根にいたるまでのパス上にある再利用クラスを引いたもの Toshihiro Kamiya, Osaka Univ.
修正版メトリクス(2) • CBOo あるクラスが結合しているクラス数のうち、新規開発クラスの数 • RFCo あるクラスのメソッドの集合と、各メソッドで呼び出す他の新規開発クラスのメソッドの集合の和集合の要素数 Toshihiro Kamiya, Osaka Univ.
CBOo,RFCoの例 Toshihiro Kamiya, Osaka Univ.
実験 • 実際のオブジェクト指向開発プロセスからデータを収集する • メトリクスデータ • エラー修正時間 • 修正版メトリクスをオリジナルと比較する Toshihiro Kamiya, Osaka Univ.
実験の概要 • 新人研修におけるC++プログラム開発演習からデータを収集した • 6チームが独立に同じ課題を行う • チームは4から5名の開発者から構成される • 課題は酒屋問題を拡張したものである • データベースを用いて在庫管理を行う • 売り上げ予測機能を持つ • パスワードによるオペレータ認証を行う • MFCをフレームワークとして用いる Toshihiro Kamiya, Osaka Univ.
例 開発規模: 約3000行 再利用: 約10000行 Toshihiro Kamiya, Osaka Univ.
データ収集の方法 • メトリクスデータ • 開発者の作業ディレクトリを1時間おきにバックアップする • エラー修正時間データ • 開発者に報告書を提出してもらう • レビュー報告書 • 単体テスト報告書 • 結合テスト報告書 • エラー特定報告書 • エラー修正報告書 Toshihiro Kamiya, Osaka Univ.
分析 • 分析はメンバー単位で行う • 課題は分割され、各メンバーに割り当てられた • メンバー間にまたがるエラーが発見されなかった • 収集されたデータに不備のあった被験者は分析対象から除いた • 19人のデータが分析対象となった Toshihiro Kamiya, Osaka Univ.
データ Toshihiro Kamiya, Osaka Univ.
メトリクスとエラー修正時間の相関 • RFCoはRFCよりも相関が高い • CBOoはCBOよりも相関が低い Toshihiro Kamiya, Osaka Univ.
CBOoとCBO • CBOはインスタンス変数を直接参照する結合も数える • エラーを修正するためにはメソッドの定義も知っていなければならない • 再利用されたクラス==新規開発のクラス Toshihiro Kamiya, Osaka Univ.
RFCoとRFC • RFCはメソッドを介した参照を数える • 再利用されるクラスはインターフェイスだけを知っていればよい • 再利用されたクラス<新規開発のクラス Toshihiro Kamiya, Osaka Univ.
考察 • フレームワークを再利用することは複雑度を増大させない • ただし、インスタンス変数を直接参照するような結合は複雑度を増大させる • 「publicなデータメンバは避けるべきである」という経験則と一致する Toshihiro Kamiya, Osaka Univ.
まとめと課題 • 再利用を考慮してChidamberらのメトリクスを改善できる可能性を示した • Briandらのメトリクス*についても実験してみる • 開発者にメトリクスを提供する開発環境の開発 (*) L.Briand, P.D., and W.M., “An Investigation into Coupling Measures for C++”, Proc. of the 19th ICSE, 1997. Toshihiro Kamiya, Osaka Univ.
再利用クラスの重みを変化させた場合 Toshihiro Kamiya, Osaka Univ.
ただしこのデータは 97年度のもの テスト・エラー特定・エラー修正に要した時間 Toshihiro Kamiya, Osaka Univ.
その他のOO指向メトリクス • Mark Lorenz and J.K., Object-Oriented Software Metrics, Prentice Hall, 1994. • 数多くの基本的なメトリクスが提案されている • L.Briand, P.D., and W.M., “An Investigation into Coupling Measures for C++”, Proc. of the 19th ICSE, 1997. • クラスが「どのように」結合しているかを考慮に入れた18種のメトリクスを提案している Toshihiro Kamiya, Osaka Univ.
Halsted, McCabeのメトリクス • Halstedのメトリクス*1 制御構造や演算子や関数をオペレータ、変数や定数をオペランドとする。オペレータの数とオペランドの数を数えることでプログラムの「大きさ」を測定する • McCabeのサイクロマチック数*2 手続きの複雑さ==制御の基本パス数(分岐の数+1) (*1) Halsted, M.H., Elements of Software Science, Elsevier North-Holland, 1977. (*2) McCabe, T.J., “A complexity measure”, IEEE Trans. Software Eng., vol. SE-2, no. 4, pp.308-320, 1976 Toshihiro Kamiya, Osaka Univ.
メトリクスツールの概要 Toshihiro Kamiya, Osaka Univ.