オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価...
DESCRIPTION
オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 - Chidamber らのメトリクスを対象として -. 神谷 年洋, 別府 明, 楠本 真二, 井上 克郎(大阪大学大学院基礎工学研究科) 毛利 幸雄 (日本ユニシス株式会社). 構成. 背景 ソフトウェア複雑度メトリクス プログラム開発における再利用 Chidamber らのメトリクス Chidamber らのメトリクスの問題点 仮説 修正版メトリクス 実験 分析 Chidamber らのメトリクス 修正版メトリクス まとめ. 背景. ソフトウェアが大規模・複雑化してきている - PowerPoint PPT PresentationTRANSCRIPT
オブジェクト指向プログラムを対象オブジェクト指向プログラムを対象とと
した複雑度メトリクスの実験的評価した複雑度メトリクスの実験的評価- - ChidamberChidamber らのメトリクスを対象らのメトリクスを対象
として として --
神谷 年洋 , 別府 明 , 楠本 真二 , 井上 克郎 ( 大阪大学大学院基礎工学研究科 )毛利 幸雄( 日本ユニシス株式会社 )
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 2
構成構成背景
ソフトウェア複雑度メトリクスプログラム開発における再利用
Chidamber らのメトリクスChidamber らのメトリクスの問題点
仮説修正版メトリクス実験分析
Chidamber らのメトリクス修正版メトリクス
まとめ
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 3
背景背景 ソフトウェアが大規模・複雑化してきてい
る 開発期間の短縮や品質向上が求められてい
る
ソフトウェアの全ライフサイクルにわたる管理– プロダクトの評価を行う必要がある
再利用
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 4ソフトウェア複雑度メトリクソフトウェア複雑度メトリクスス
代表例– 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
複雑であるほど・エラーが含まれている可能性が高くなる・保守が困難になる
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 5プログラム開発における再利プログラム開発における再利用用 従来の再利用
– ライブラリの利用プログラム全体の処理の流れなどの主要な部分は開発者が開発し、ライブラリから必要な部品を持ってきて組み合わせる
オブジェクト指向開発における再利用– フレームワークの利用
プログラムの主要な部分をフレームワークから取り出し、新たに必要な部分を開発者が開発して、それを組み合わせる
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 6アプリケーションフレームアプリケーションフレームワークワーク クラスライブラリ ドメインに特化している プログラムの基幹となる構造を持つ
プログラムの再利用率が高くなる
例– Microsoft Foundation Class– Abstract Windowing Toolkit
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 7ChidamberChidamber らのらの 66 種のメト種のメトリクスリクス オブジェクト指向設計のための複雑度メ
トリクス クラスの定義から複雑度を測定する
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.
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 8ChidamberChidamber らのメトリクスらのメトリクス(1)(1)クラスの内部的な複雑度 LCOM :クラスの凝集度の欠如
あるクラスのメソッドのすべての組み合わせのうち、参照するインスタンス変数に共通のものが無い組み合わせの数から、共通するものがある組み合わせの数を引いたもの。ただし、 0 より小さい場合は 0 とする
WMC :クラスの重み付きメソッド数あるクラスに定義されているすべてのメソッドの複雑度の和。各メソッドがどれも同じくらいの複雑さであると考えられるなら、クラスで定義されているメソッドの数
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 9ChidamberChidamber らのメトリクスらのメトリクス(2)(2)継承に関する複雑さ DIT :継承木内での深さ
クラスの派生関係が木であるときは、そのクラスの木の中での深さ
NOC :子クラスの数そのクラスから直接派生しているクラスの数 DIT
NOC
DIT = 4NOC = 3
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 10ChidamberChidamber らのメトリクスらのメトリクス(3)(3)クラス間の関係についての複雑さ CBO :クラス間の結合
あるクラスが「結合」しているクラス数。「結合」とは、他のクラスのインスタンス変数やメソッドを参照すること
RFC :クラスに対する反応あるクラスのメソッドの集合と、各メソッドで呼び出す他のクラスのメソッドの集合の和集合の要素数
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 11
CBO,RFCCBO,RFC の例の例
Windowdraw()move()
place 2
BoundedWindowmove()setBoundary()
boundary
RectgetOrigin()getCorner()setOrigin()setCorner()operator=()...
BoundaryRectbound()...
void move(Rect newPlace){ Rect boundedPlace = boundary. bound(newPlace); Window:: move(boundedPlace);}
Pointx:integery:integer
void setBoundary(Rect newBoundary){ boundary = newBoundary; move(place);}
CBO = 3RFC = 5
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 12ChidamberChidamber らのメトリクスのらのメトリクスの問題点問題点 再利用されたクラスの品質は新規開発の
クラスよりも高い *
メトリクスを計測する際に、再利用されたクラスと新規開発のクラスを同等に扱う
(*) 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.
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 13
仮説仮説
メトリクスを計測する際に、再利用されたクラスの重みを 0 とおく
仮説:再利用されたクラスとの結合は複雑度を増大させない
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 14
修正版メトリクス修正版メトリクス (1)(1) DITo
そのクラスの木の中での深さから、根にいたるまでのパス上にある再利用クラスを引いたもの
DITo
フレームワーク
DITo = 1
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 15
修正版メトリクス修正版メトリクス (2)(2) CBOo
あるクラスが結合しているクラス数のうち、新規開発クラスの数
RFCoあるクラスのメソッドの集合と、各メソッドで呼び出す他の新規開発クラスのメソッドの集合の和集合の要素数
フレームワーク
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 16
CBOo,RFCoCBOo,RFCo の例の例
Windowdraw()move()
place 2
BoundedWindowmove()setBoundary()
boundary
RectgetOrigin()getCorner()setOrigin()setCorner()operator=()...
BoundaryRectbound()...
void move(Rect newPlace){ Rect boundedPlace = boundary. bound(newPlace); Window:: move(boundedPlace);}
Pointx:integery:integer
void setBoundary(Rect newBoundary){ boundary = newBoundary; move(place);}
CBO = 3RFC = 5
CBOo = 1RFCo = 3
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 17
実験実験
実際のオブジェクト指向開発プロセスからデータを収集する– メトリクスデータ– エラー修正時間
修正版メトリクスをオリジナルと比較する
目的:再利用を考慮して修正したメトリクスを評価する
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 18
実験の概要実験の概要 新人研修における C++ プログラム開発演習からデータを収集した
6 チームが独立に同じ課題を行う– チームは 4から 5名の開発者から構成される
課題は酒屋問題を拡張したものである– データベースを用いて在庫管理を行う– 売り上げ予測機能を持つ– パスワードによるオペレータ認証を行う
MFC をフレームワークとして用いる
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 19
例例開発規模 : 約 3000 行再利用: 約 10000 行
CPasswdDlgCYosokuDlg
CYosokuSetCPasswdSetKionSet
CObject
CRecordset CCmdTarget
CGoukeiSetCBunsekiSet
CWnd
CFrameWnd
CMDIChildWnd CMDIFrameWnd
CChildFrame CMainFrame
CDialog
CAboutDlg
CView
CScrollView
CHattyuView
CBunsekiView
CDocument CWinThread
CYosokuDocCHattyuDoc
CBunsekiDoc CWinApp
CSotuenApp
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 20
データ収集の方法データ収集の方法 メトリクスデータ
– 開発者の作業ディレクトリを 1時間おきにバックアップする
エラー修正時間データ– 開発者に報告書を提出してもらう
• レビュー報告書•単体テスト報告書• 結合テスト報告書• エラー特定報告書• エラー修正報告書
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 21
分析分析 分析はメンバー単位で行う
– 課題は分割され、各メンバーに割り当てられた
– メンバー間にまたがるエラーが発見されなかった
収集されたデータに不備のあった被験者は分析対象から除いた
19 人のデータが分析対象となった
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 22
開発者 LCOM WMC RFCo(RFC) CBOo(CBO) DIT Ec Et(分)
T1 73 33 31 (75) 8 (38) 17 7 1124T2 47 19 7 (38) 3 (16) 10 2 50
T3 46 22 9 (58) 3 (21) 14 5 315T4 16 7 9 (14) 0 ( 8) 6 0 0
T5 47 19 17 (41) 3 (17) 10 2 390
T6 14 8 9 (13) 0 ( 8) 6 2 114T7 47 19 17 (40) 2 (17) 10 3 21
T8 49 20 24 (32) 0 (18) 14 7 891T9 13 8 8 (16) 0 ( 9) 6 0 0
T10 62 25 2 (58) 0 (24) 16 5 530
T11 52 21 19 (52) 1 (18) 12 8 576T12 59 24 22 (50) 1 (20) 16 8 1005
T13 13 8 8 (16) 0 ( 9) 6 1 60
T14 88 38 35 (90) 3 (37) 20 4 850T15 55 22 20 (55) 3 (20) 12 3 154
T16 57 26 24 (67) 3 (23) 16 1 94T17 11 11 10 (24) 0 (10) 6 1 90
T18 47 17 16 (24) 0 (13) 10 3 75
T19 13 8 5 (15) 0 ( 9) 6 1 25
データデータ
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 23メトリクスとエラー修正時間のメトリクスとエラー修正時間の相関相関
RFCo は RFC よりも相関が高い CBOo は CBO よりも相関が低い
WMC RFCo(RFC)
CBOo(CBO)
LCOM DIT
Et(分) 0.72 0.77(0.63)
0.47(0.74)
0.7 0.77
有意水準 5%で検定
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 24
CBOoCBOo とと CBOCBO
CBO はインスタンス変数を直接参照する結合も数える
エラーを修正するためにはメソッドの定義も知っていなければならない
再利用されたクラス==新規開発のクラス再利用されたクラス 新規開発のクラス
インターフェイス
メソッドの定義
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 25
RFCoRFCo とと RFCRFC
RFC はメソッドを介した参照を数える 再利用されるクラスはインターフェイスだけ
を知っていればよい 再利用されたクラス<新規開発のクラス
再利用されたクラス 新規開発のクラス
インターフェイス
メソッドの定義
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 26
考察考察 フレームワークを再利用することは複雑
度を増大させない ただし、インスタンス変数を直接参照す
るような結合は複雑度を増大させる
「 public なデータメンバは避けるべきである」という経験則と一致する
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 27
まとめと課題まとめと課題 再利用を考慮して Chidamber らのメトリ
クスを改善できる可能性を示した
Briand らのメトリクス*についても実験してみる
開発者にメトリクスを提供する開発環境の開発
(*) L.Briand, P.D., and W.M., “An Investigation into Coupling Measures for C++”, Proc. of the 19th ICSE, 1997.
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 28再利用クラスの重みを変化さ再利用クラスの重みを変化させた場合せた場合
0.3
0.4
0.5
0.6
0.7
0.8
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
W
相関 CBOw
RFCw
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 29
テスト 特定 修正a07 334 100 98
a10 26 134 0
a14 117 0 7
a18 21 6 3
b02 1 77 0
b06 61 17 51
c01 37 5 34
c02 114 18 1
c03 149 14 242
c06 151 69 250
c08 5 0 0
c15 59 0 0
c16 108 3 28
c19 17 107 3
d01 130 137 69
d03 10 1 1
d10 34 0 22
d16 22 28 0
1396 716 809
テスト・エラー特定・エラーテスト・エラー特定・エラー修正に要した時間修正に要した時間
ただしこのデータは97年度のもの
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 30
その他のその他の OOOO 指向メトリクス指向メトリクス 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種のメトリクスを提案している
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 31HalstedHalsted, , McCabeMcCabe のメトリのメトリクスクス 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
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 32
メトリクスツールの概要メトリクスツールの概要
▲・・・・■・・・・▼・・・・
ソースコード履歴
メトリクスツール
開発者
ソースコード構造視覚化
ソースコード履歴管理
メトリクスによる分析
作業データ
作業履歴
1997/12/10 Toshihiro Kamiya, Osaka Univ.
# 33