オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価...

33
オオオオオオオオオオオオオオオオオ オオオオオオオオオオオオオオオオオ オオオオオオオオオオオオオオオオ オオオオオオオオオオオオオオオオ - - Chidamber Chidamber オオオオオオオオオオオオオ オオオオオオオオオオオオオ - - 神神 神神 , 神神 神 , 神神 神神 , 神神 神神 ( 神神 神神神神神神神神神神神神 ) 神神 神神 ( 神神神神神神神神神神 )

Upload: mahina

Post on 11-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 - Chidamber らのメトリクスを対象として -. 神谷 年洋, 別府 明, 楠本 真二, 井上 克郎(大阪大学大学院基礎工学研究科) 毛利 幸雄 (日本ユニシス株式会社). 構成. 背景 ソフトウェア複雑度メトリクス プログラム開発における再利用 Chidamber らのメトリクス Chidamber らのメトリクスの問題点 仮説 修正版メトリクス 実験 分析 Chidamber らのメトリクス 修正版メトリクス まとめ. 背景. ソフトウェアが大規模・複雑化してきている - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

オブジェクト指向プログラムを対象オブジェクト指向プログラムを対象とと

した複雑度メトリクスの実験的評価した複雑度メトリクスの実験的評価- - ChidamberChidamber らのメトリクスを対象らのメトリクスを対象

として として --

神谷 年洋 , 別府 明 , 楠本 真二 , 井上 克郎 ( 大阪大学大学院基礎工学研究科 )毛利 幸雄( 日本ユニシス株式会社 )

Page 2: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 2

構成構成背景

ソフトウェア複雑度メトリクスプログラム開発における再利用

Chidamber らのメトリクスChidamber らのメトリクスの問題点

仮説修正版メトリクス実験分析

Chidamber らのメトリクス修正版メトリクス

まとめ

Page 3: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 3

背景背景 ソフトウェアが大規模・複雑化してきてい

る 開発期間の短縮や品質向上が求められてい

ソフトウェアの全ライフサイクルにわたる管理– プロダクトの評価を行う必要がある

再利用

Page 4: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

複雑であるほど・エラーが含まれている可能性が高くなる・保守が困難になる

Page 5: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 5プログラム開発における再利プログラム開発における再利用用 従来の再利用

– ライブラリの利用プログラム全体の処理の流れなどの主要な部分は開発者が開発し、ライブラリから必要な部品を持ってきて組み合わせる

オブジェクト指向開発における再利用– フレームワークの利用

プログラムの主要な部分をフレームワークから取り出し、新たに必要な部分を開発者が開発して、それを組み合わせる

Page 6: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 6アプリケーションフレームアプリケーションフレームワークワーク クラスライブラリ ドメインに特化している プログラムの基幹となる構造を持つ

プログラムの再利用率が高くなる

例– Microsoft Foundation Class– Abstract Windowing Toolkit

Page 7: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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.

Page 8: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 8ChidamberChidamber らのメトリクスらのメトリクス(1)(1)クラスの内部的な複雑度 LCOM :クラスの凝集度の欠如

あるクラスのメソッドのすべての組み合わせのうち、参照するインスタンス変数に共通のものが無い組み合わせの数から、共通するものがある組み合わせの数を引いたもの。ただし、 0 より小さい場合は 0 とする

WMC :クラスの重み付きメソッド数あるクラスに定義されているすべてのメソッドの複雑度の和。各メソッドがどれも同じくらいの複雑さであると考えられるなら、クラスで定義されているメソッドの数

Page 9: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 9ChidamberChidamber らのメトリクスらのメトリクス(2)(2)継承に関する複雑さ DIT :継承木内での深さ

クラスの派生関係が木であるときは、そのクラスの木の中での深さ

NOC :子クラスの数そのクラスから直接派生しているクラスの数 DIT

NOC

DIT = 4NOC = 3

Page 10: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 10ChidamberChidamber らのメトリクスらのメトリクス(3)(3)クラス間の関係についての複雑さ CBO :クラス間の結合

あるクラスが「結合」しているクラス数。「結合」とは、他のクラスのインスタンス変数やメソッドを参照すること

RFC :クラスに対する反応あるクラスのメソッドの集合と、各メソッドで呼び出す他のクラスのメソッドの集合の和集合の要素数

Page 11: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

Page 12: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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.

Page 13: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 13

仮説仮説

メトリクスを計測する際に、再利用されたクラスの重みを 0 とおく

仮説:再利用されたクラスとの結合は複雑度を増大させない

Page 14: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 14

修正版メトリクス修正版メトリクス (1)(1) DITo

そのクラスの木の中での深さから、根にいたるまでのパス上にある再利用クラスを引いたもの

DITo

フレームワーク

DITo = 1

Page 15: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 15

修正版メトリクス修正版メトリクス (2)(2) CBOo

あるクラスが結合しているクラス数のうち、新規開発クラスの数

RFCoあるクラスのメソッドの集合と、各メソッドで呼び出す他の新規開発クラスのメソッドの集合の和集合の要素数

フレームワーク

Page 16: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

Page 17: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 17

実験実験

実際のオブジェクト指向開発プロセスからデータを収集する– メトリクスデータ– エラー修正時間

修正版メトリクスをオリジナルと比較する

目的:再利用を考慮して修正したメトリクスを評価する

Page 18: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 18

実験の概要実験の概要 新人研修における C++ プログラム開発演習からデータを収集した

6 チームが独立に同じ課題を行う– チームは 4から 5名の開発者から構成される

課題は酒屋問題を拡張したものである– データベースを用いて在庫管理を行う– 売り上げ予測機能を持つ– パスワードによるオペレータ認証を行う

MFC をフレームワークとして用いる

Page 19: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

Page 20: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 20

データ収集の方法データ収集の方法 メトリクスデータ

– 開発者の作業ディレクトリを 1時間おきにバックアップする

エラー修正時間データ– 開発者に報告書を提出してもらう

• レビュー報告書•単体テスト報告書• 結合テスト報告書• エラー特定報告書• エラー修正報告書

Page 21: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 21

分析分析 分析はメンバー単位で行う

– 課題は分割され、各メンバーに割り当てられた

– メンバー間にまたがるエラーが発見されなかった

収集されたデータに不備のあった被験者は分析対象から除いた

19 人のデータが分析対象となった

Page 22: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

データデータ

Page 23: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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%で検定

Page 24: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 24

CBOoCBOo とと CBOCBO

CBO はインスタンス変数を直接参照する結合も数える

エラーを修正するためにはメソッドの定義も知っていなければならない

再利用されたクラス==新規開発のクラス再利用されたクラス 新規開発のクラス

インターフェイス

メソッドの定義

Page 25: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 25

RFCoRFCo とと RFCRFC

RFC はメソッドを介した参照を数える 再利用されるクラスはインターフェイスだけ

を知っていればよい 再利用されたクラス<新規開発のクラス

再利用されたクラス 新規開発のクラス

インターフェイス

メソッドの定義

Page 26: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 26

考察考察 フレームワークを再利用することは複雑

度を増大させない ただし、インスタンス変数を直接参照す

るような結合は複雑度を増大させる

「 public なデータメンバは避けるべきである」という経験則と一致する

Page 27: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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.

Page 28: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

Page 29: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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年度のもの

Page 30: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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種のメトリクスを提案している

Page 31: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

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

Page 32: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 32

メトリクスツールの概要メトリクスツールの概要

▲・・・・■・・・・▼・・・・

ソースコード履歴

メトリクスツール

開発者

ソースコード構造視覚化

ソースコード履歴管理

メトリクスによる分析

作業データ

作業履歴

Page 33: オブジェクト指向プログラムを対象と した複雑度メトリクスの実験的評価 -  Chidamber らのメトリクスを対象として -

1997/12/10 Toshihiro Kamiya, Osaka Univ.

# 33