スライド タイトルなし

ソフトウェアを取り巻く環境の変化が
メトリクスに及ぼす影響について
大阪大学
神谷年洋
構成
1.メトリクスによる予測の実用化について
2.再利用とメトリクス
3.開発プロセスの変化とメトリクス
4.ソフトウェアの進化・発展とメトリクス
プロセスメトリクス収集ツール
再利用を考慮したC&Kメトリクスの適用
1
メトリクスとは
• 開発プロセスやプロダクトを計測するモノサシ
• 主に開発管理に使われる
メトリクス
(代 表 例 )
工数
エラー数
ファンクシ ョンポ イント
(IF P U G )
複 雑 度 メ ト リ ク ス
(M c C a b e の サ イ ク ロ
マチック数 )
計測対象
値 (単 位 )
使用目的
開発プロセス
プロダクト
仕様書
工 数 (人 月 )
エ ラ ー 数 (個 )
機能量
進捗管理
品質管理
コスト予 測
プロダクト
複雑度
品質予測
2
1.メトリクスによる予測の実用化
について
メトリクスによる予測や検定には統計データが
必要
• 実例:2つのソフトウェア開発組織から,30人
以上の技術者,2000以上のクラス
• R. Chidamber and C. Kemerer: A Metrics Suite
for OO Design, IEEE Trans. on Software eng.,
vol. 20, No. 6, 1994, pp. 476-493.
• 少数のサンプルでは,予測や検定は統計的
に困難になる
→粒度を下げてサンプル数を増やす?
3
メトリクスデータが存在しない
• メトリクスデータそのものが社外秘
• 収集は基本的に被験者の報告ベースなので,
データ収集そのものにコストがかかる
• メトリクスデータがプロセス管理以外の目的
に用いられる→バイアスがかかる
4
対策
教育現場で実験を行う
• 実験条件を設定可能
– 被験者の能力の判定基準が存在する
– 複数の同一のプロダクトを開発する
• 被験者自身にメトリクスデータを収集する動
機が存在する
– パーソナルソフトウェアプロセス(PSP)
• W. S. Humphrey: A Discipline for Software Engineering,
Addison-Wesley(1995).
5
メトリクスデータ収集ツールを作成[1]
• 記入を容易にする
– ガイド機能,DB機能
• 集計を容易にする
• 被験者に対するフィードバック
– PSPからの要請
6
2.再利用とメトリクス
大規模な再利用の影響
• 新規開発されるプロダクトの量を見積もること
が困難になる
– アプリケーションフレームワークの場合,ドメイン
の適合度が再利用度に影響する
– FPは新規開発と修正を区別するが,部品を修正
して再利用すると?
– 再利用されるプロダクトは新規開発の部分より高
品質であることが多い
7
• 再利用部品のドキュメンテーションがどの程
度提供されるのか
–
–
–
–
–
オープンソース?
オープンデザイン?
オープン仕様書?
オープンテストデータ,オープンサンプル?
オープンエラー追跡データ?
8
対策
再利用部分と新規開発部分とを区別するメトリ
クスを提案[2]
• 再利用部分は新規開発部分よりも品質が高
いことを考慮してメトリクスを計測する
– →エラー発生予測精度向上
9
部分的なドキュメンテーションからメトリクスを計
測する試み[研究中]
• インターフェイスだけ公開する場合
• +設計も公開する場合
• ソースコードを公開する場合
エラー予測精度の違いを分析
10
3.開発プロセスの変化とメトリク
ス
メトリクスは中間プロダクトを計測することで開
発コストや品質を予測する
要求分析
設計
コーディング
テスト
開発コスト予測
エラー発生予測
• スパイラル開発では,中間プロダクトが何度
も生成される
11
対策
• プロダクトメトリクスにも動的な概念を導入す
る?
• メトリクスを細かい粒度で計測,運用する方法
の検討?
12
4.ソフトウェアの進化・発展とメト
リクス
進化・発展により,ソフトウェアが運用に入って
からも,修正が続く
• 進化・発展の度合い(状態)を計測するメトリク
スの必要性?
• 中谷多哉子, 玉井哲雄, 友枝敦,酒匂寛, : オブ
ジェクト指向によるシステムの進化を表わすメトリ
クスの検討, ソフトウェアシンポジウム'96論文集,
1996, pp.52-62.
13
• システムの進化・発展を予測するメトリクス?
– 発展のためのコストや
– 発展したときの品質を予測
14
まとめ
(メトリクスの実用化を視野に入れて)
• データの積み上げのための枠組み
• 運用手法の確立
– 開発プロセスの影響,プロダクトの影響
– Computer Added Measurement?
• 新たな問題領域に対応する
15
プロセスメトリクス収集ツール[1]
主な機能
(1)プロセスメトリクスの収集
– 工数やエラー数といったプロセスメトリクスを半自
動的に収集する
→今までの手作業による収集よりも信頼性が向上
– プロダクト,欠陥,フォールトの依存関係を利用す
ることでデータの一貫性を保証する
(2)文書化支援/フィードバック
– 収集したデータを整理して表示したり,HTML文書
にする
17
収集するデータ
レビュー
テスト
レビュー開始
(レビューされるクラス)
テスト開始
(テストケース)
フォールト発見
(フォールトの内容)
欠陥発見
(欠陥の内容)
レビュー終了
テスト終了
フォールト修正
欠陥のフォールト特定
修正開始
(フォールトID)
特定開始
(欠陥ID)
修正終了
(修正内容)
特定終了
(フォールトが存在するクラス)
(フォールトの内容)
18
データ入力画面
– テスト・プロダクト・エラーの依存関係に基づいた
ガイドを行う
19
データ表示画面
– プロダクトやテストごとにエラーを分類
20
ツールの構成
Efer
エンジン
DB
・状態遷移を
管理する
・制約条件と
依存関係に
基づいて
データを
生成する
作業データ
入力部
実作業データ入力
プロセスの
状態データ
ウィンドウ出力
出力部
C++で実装
1万5千行
程度
作業データ,
プロセスの
状態データ
ログビュー
プロダクトビュー
HTML出力
テストケースビュー
21
ツールの評価
• 被験者にアンケート
– ログビューを見ることで,進捗状況を理解しやす
かった
– 今までの所用時間が記録されているので,作業
の見通しが立て易かった
– 同じようなエラーがあった場合,今まででの記録
があるので修正の手助けになった
– 手作業で記録していたが,ツールを用いることで
入力の時間が短縮された
22
再利用を考慮したC&Kメトリクスの
適用[2]
ChidamberとKemererの複雑
度メトリクス
• ソフトウェアの複雑さを計測する
– エラー発生予測
• オブジェクト指向設計仕様書を計測対象とす
る
– クラスが他のクラスを参照する数が多いほど複雑
である(CBO,RFC)
– クラスの親クラスや子クラスが多いほど複雑であ
る(DIT, NOC)
– クラス内部の複雑度(LCOM, WMC)
24
再利用の影響
• 再利用されたクラスは新規開発のクラスより
も高品質である
– エラーが少ない
– 開発期間中に修正されない
– ドキュメンテーションが存在する
→ 仮説:再利用されたクラスを参照しても複雑
度は増大しない
• 新規開発クラスに対する参照と,再利用クラ
スに対する参照を区別する
25
メトリクスの修正
• CBO
計測対象のクラスが結合しているクラスの数
• CBON
計測対象のクラスが結合している新規開発クラス数
• CBOR
計測対象のクラスが結合している再利用クラス数
26
実験
• 新人研修におけるC++プログラム開発演習
からデータを収集
• 6チームが独立に拡張酒屋問題を開発する
– チームは4から5名の開発者から構成される
– データベースを用いて,売り上げ予測等を行う
– MFCをフレームワークとして用いる
• 19人のデータが分析対象となった
27
75
38
58
14
41
13
40
32
16
58
52
50
16
90
55
67
24
24
15
73
47
46
16
47
14
47
49
13
62
52
59
13
88
55
57
11
47
13
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
17
10
14
6
10
6
10
14
6
16
12
16
6
20
12
16
6
10
6
30
13
18
8
14
8
15
18
9
22
17
19
9
34
17
20
10
13
9
31
17
19
9
17
9
17
24
8
24
19
22
8
35
20
24
10
16
5
44
21
39
5
24
4
23
8
8
34
33
28
8
55
35
43
14
8
10
7
2
5
0
2
2
3
7
0
5
8
8
1
4
3
1
1
3
1
修正時間
(分)
エラー個数
8
3
3
0
3
0
2
0
0
2
1
1
0
3
3
3
0
0
0
RFCR
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
RFCN
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CBOR
DITR
DITN
LCOM
RFC
CBO
38
16
21
8
17
8
17
18
9
24
18
20
9
37
20
23
10
13
9
CBON
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
NOCR
17
10
14
6
10
6
10
14
6
16
12
16
6
20
12
16
6
10
6
NOCN
33
19
22
7
19
8
19
20
8
25
21
24
8
38
22
26
11
17
8
NOC
6
3
4
2
3
2
3
4
9
4
3
4
2
6
3
4
2
3
2
DIT
クラス数
t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t11
t12
t13
t14
t15
t16
t17
t18
t19
WMC
開発者
メトリクスデータ
1124
50
315
0
390
114
21
891
0
530
576
1005
60
850
154
94
90
75
25
28
評価
…N は新規開発部分との結合のみを数えるメトリクス
…R は再利用部分との結合のみを数えるメトリクス
メトリクス
エラー個数
との相関
修正時間 と
の相関
CBO
CBON
CBOR
RFC
RFCN
RFCR
0.579
0.340
0.610
0.543
0.653
0.453
**有意水準 1%
*有意水準 5%
**
**
*
**
0.744
0.470
0.774
0.632
0.772
0.523
**
**
**
**
*
29