CoBRA研究会
熟練者の「勘」を見える化するCoBRA法
2012年4月20日
先進ソリューションセンター
塩田 英雄
1.見積り根拠の「見える化」
2.CoBRA法の概要
3.CoBRAモデルの構築方法
4.CoBRAモデルの応用
2.CoBRA法の概要
3.CoBRAモデルの構築方法
4.CoBRAモデルの応用
1.1 見積り根拠の「見える化」の重要性
見積り根拠が「見えない」ことによる問題
ユーザ(発注者)
• 金額(工数)の妥当性が
分からない。
• 危険性(予算不足・過剰)
が分からない。
• 無理な値下げによる品
質低下。
• 根拠のある価格交渉が
できない。
ベンダ(受注者)
• 見積りの妥当性を説明
できない。
• 予算が厳しいことを納得
してもらえない。
• 予算に合わせて工数をコ
ントロールできない。
見積り根拠の「見える化」 = コスト構造の「見える化」 が重要
1.2 見積り根拠の「見える化」の課題
規模だけでは工数を説明できない。
工数の「ブレ」を説明できる手段が必
要。
見積り熟練者の優れたノウハウの
共有は難しい。
形式知化し、検証する手法が必要。
規模
工数
× × × × × × × × × × × × × × × × ×規模がほぼ同じでも、かかる工数に
違い
10人月でしょ!
なんで・・・?
見積り熟練者
(経験20年)
担当者
(経験5年)
RFP
1.3 「見える化」の具体的な解決策 ~CoBRA法~
1.組織固有のコスト変動要因をモデル化
CoBRA法の5つの特徴
2.コスト変動要因に、熟練者の優れた「勘」「経験」を反映
4.予算超過リスクの定量評価を実現
5.プロセス改善のポイントを把握
3.工数のコントロールを実現
2.CoBRA法の概要
3.CoBRAモデルの構築方法
4.CoBRAモデルの応用
2.1 CoBRA法のコンセプト ~「勘」「経験」を見える化する
優れた「勘」「経験」は、見積りに活用すべき
ベテランの見積りは妥当なことが多い
将来の見通しについては「勘」「経験」に頼らざ
るを得ない
「勘」「経験」のみの見積りには問題が・・・
「勘」「経験」を有するベテラン以外は使えない
(ノウハウ共有が困難)
見積り結果の正しさを説明することが難しい
(説明力の不足)
解決策: 「形式知化し、実績データで検証」
モデル化により、優れたノウハウを共有
「勘」「経験」の正しさを「
実績データ
」で検証
新しい
科学的な
「KKD」
勘
(K)
データ
(D)
経験
(K)
2.2 CoBRA法における工数見積りの考え方
工
数
α×規模
CO
×
×
×
× ×
×
×
×
×
×
×
×
×
×
×
×
×
「規模がほぼ同じでも、かかる工数に違いがある。」
⇒ 現実の工数を、ベースの生産性αと、そこからの
オーバーヘッド(CO)により説明
実績データ
に照らして、変動要因と
その定量化を検証し、
α
を計算
2.3 CoBRA法の工数見積り式
工数 =
α
×
規模
× (
1 + Σ
CO
i
)
過去プロジェクト
規模
工数
PJ-1
10.3KLOC
9.2人月
PJ-2
8.8KLOC
7.5人月
PJ-3
21.3KLOC 18.7人月
PJ-4
42.5KLOC 52.1人月
PJ-5
5.2KLOC
6.3人月
PJ-6
22.3KLOC 18.2人月
・・・・・・・
・・・・・
・・・・
コスト変動要因のオーバヘッドを考慮
経験豊富なPL等の
熟練者の知見
を
基に、変動要因とその影響を定量化
確率
影響度(%)
C氏
B氏
A氏
補完
2.4 CoBRA法の位置づけ
見積り手法
データ駆動型
• COCOMO
• OSR®
• CART
• ANOVA
過去のプロジェクト
データに基づく
経験ベース型
• 専門家による見積り
• 見積りミーティング
• デルファイ法
基本的に熟練者の経験
のみを利用
ハイブリッド型
• アナロジー利用
過去のプロジェクトデータと
熟練者の経験を利用
3名程度の熟練者と10個程度の
実績データから見積りモデル構築
• CoBRA法
2.5 工数見積りの手順
工数見積りの手順
①規模の推定
②変動要因の
影響度の評価
③見積りの実行
見積もる対象のプロジェクトの開発量
(規模)を想定
各変動要因の影響度を評価
(0~3の4段階)
見積りを実行し、結果を確認
(ツールを使用)
工数 = α × 規模 × ( 1 + ΣCOi )
①
②
③
2.6 ツールでの見積り手順 ①想定規模の入力
① 想定規模
を入力
2.6 ツールでの見積り手順 ②変動要因レベルの入力
② 変動要因
のレベルを
入力
① 想定規模
を入力
2.6 ツールでの見積り手順 ③見積りの実行と結果の確認
見積り結果
予算超過確率
感度分析
③ 見積り実行
② 変動要因
のレベルを
入力
2.7 CoBRAツール (IPA/SEC提供)
簡易ツール
CoBRA法の体験版
IPA/SECのホームページにログイン後に、所定のURLから使用
http://sec.ipa.go.jp/tool/cobra/
2007年度の実証実験の集約データを参考値として搭載
Webブラウザがあれば利用可能
統合ツール
CoBRA法のフル機能版
Excelアプリケーション
IPA/SECのホームページからダウンロードして利用
一から
独自の見積りモデルを作成
100 200 300 400 500 600 20% 30% 40% 50% 60% 70% 80% 90% 100% 度数 予算超過 確 率 見積り工数分布 及び 予算超過確率 6.7% 8.3% 10.6% 11.6% 16.2% 16.4% 17.8% 25.2% 29.5% 関係者の数 顧客の参画度合い 開発期間の厳しさ チームの経験・知識 信頼性要求のレベル システムの複雑さ 業務の複雑さ 要求変更の発生想定時期 見積り時の要求内容の曖昧さ 変動要因の寄与度 0.2 0.4 0.6 0.8 1.0 工数 予算超過 確率 960 1420 880 1260 660 見積値(中央値) 0.1
2.8 CoBRAモデルの利用シーン
コストマネジメント
リスクマネジメント
プロセス改善
プロジェクトマネージャ
PMO、品質管理部門
24.6 19.4 16.8 15.5 9.8 0.0 10.0 20.0 30.0 40.0 要求変更の度合い 見積り時の要求内容の曖昧さ 業務の複雑さ 信頼性要求のレベル システムの複雑性 [%]工数見積り
予算超過リスクの評価
影響度の高い要因の対策と解消
2.9 CoBRA法の歩み
1997年、独フラウンホーファ財団実験的ソフトウェア工学研究所(IESE)により発表
国内実証実験 (2007年8月~2008年3月)
8社でCoBRAモデルの構築
金融・保険、製造、情報提供の3分野
複数の規模メトリクス(ソースコード行数、ファンクションポイント、画面数)によるモデル構築
CoBRA研究会発足 (2009年5月)
CoBRAモデル構築経験のある企業による自主的な研究会
9組織 (2011年7月現在)
(株)アイネス、(株)NTTデータセキスイシステムズ、沖電気工業(株)、人事院(CIO補佐官)、
大同生命(株)、日新情報システム開発(株)、(株)日立製作所、(株)三菱総合研究所、三菱電機(株)
※50音順
ガイド発刊
CoBRA法入門 -「勘」を見える化する見積り手法 (2011年4月、オーム社)
支援ツールの無料公開 (2010年3月)
(独)情報処理推進機構 ソフトウェア・エンジニアリング・センター
「CoBRA法に基づく見積り支援ツール」 (
http://sec.ipa.go.jp/tool/cobra/
)
1.見積り根拠の「見える化」
2.CoBRA法の概要
3.CoBRAモデルの構築方法
3.1 CoBRAモデルの構築手順
CoBRAモデルの構築手順
①変動要因の抽出・定義
②実績データの収集
③モデルの構築
熟練者
2、3名
の協力の下に、変動要因
を抽出・定義し、工数への影響度を設定
過去プロジェクト
10件程度
について、
規模と工数の実績データを収集し、各
変動要因のレベルを設定
支援ツール
を用いて見積りモデルを
構築し、見積り精度を確認
工数 = α × 規模 × ( 1 + ΣCOi )
②
①
④見積り精度の改善
モデルを見直し、見積り精度を改善
初期モデル
改善モデル
3.2 【手順1】変動要因の抽出・定義 ①変動要因の洗い出し
熟練者2、3名の協力を得て、自組織に特有の変動要因をブレーンストーミン
グにより抽出
抽出例
(簡易法)
変動要因のサンプルから、自組織に当てはまるものを選ぶ
工数
関係者の
協力度合い
(CO1)
要件の不安定性
(CO8)
要件管理の
確実さ(CO7)
既存システム
の整備状況
(CO10)
ソフトの複雑さ
(CO9)
開発期間の
制約(CO6)
信頼性要求の
レベル(CO5)
性能要求の
レベル(CO3)
ユーザビリティ要求
のレベル(CO2)
チームの
知識・経験
(CO4)
3.2 【手順1】変動要因の抽出・定義 ②変動要因の定義
熟練者2、3名の協力を得て、
ブレーンストーミング
により定義を取りまとめ
定義例
(簡易法)
定義のサンプルから、自組織に当てはまるものを選ぶ
IPA/SECの変動要因セット(19種)
CO
変動要因
定義
レベル3
レベル2
レベル1
レベル0
CO1
関係者の協力度
合い
関係者が回答期限
を守る度合い
5%未満
5%以上50%
未満
50%以上
100%未満
100%
CO2
ユーザビリティ要
求
利用者の特性
IT未経験者
(一般)
IT経験者
(一般)
組織内不特定 特定メンバ
CO3
性能の要求レベ
ル
応答時間
例外なく反応時
間1秒以内
50%の確率で
1秒以内
例外なく3秒以
内
50%の確率で
3秒以内
CO4
チームの知識・経
験
社内ランクによる割
合
標準メンバが40%
未満
標準メンバが40
~60%未満
標準メンバが60
~80%未満
標準メンバが
80%以上
・・
・・・・・・・
・・・・・
・・・・
・・・・
・・・・
・・・・
工数への影響大
影響なし
3.2 【手順1】変動要因の抽出・定義 ③工数への影響度の評価
熟練者に対するアンケート、インタビューにより影響度を収集
【例】 CO1:関係者の協力度合い
最低
もっとも可能性のある
最大
関係者の協力がほとんど得られない場合(レベ
ル3の場合)、工数は何%増えますか?
15%
30%
60%
60%
30%
15%
Aさんの回答
50%
20%
Bさんの回答
110%
40%
75%
Cさんの回答
複数名に回答
3点の幅をもって確認
レベル3の場合の影響度を確認
他の変動要因についても、同様に設定
三角分布と呼ぶ
確
率
確
率
確
率
確
率
3.2 【手順2】実績データの収集
規模、工数の実績データを6~10件用意
規模、工数の単位は、プロジェクト間で統一されていれば、何を使用しても
良い。
各変動要因の工数への影響度を4段階(0~3)で評価
レベル0: 工数に無影響
レベル3: 工数に最も強く影響
レベル1、2: その中間段階の影響
番
号
プロジェクト
名称
規模
[KSLOC]
工数
[人月]
CO1 CO2 CO3 CO4 CO5 CO6
・・・
1 プロジェクト1
10.3
9.2
0
1
1
1
1
1 ・・・
2 プロジェクト2
8.8
7.5
1
2
2
3
3
1 ・・・
3 プロジェクト3
21.3
18.7
0
1
1
0
1
1 ・・・
4 プロジェクト4
42.5
52.1
0
2
1
1
2
2 ・・・
5 プロジェクト5
5.2
6.3
0
1
0
0
1
1 ・・・
6 プロジェクト6
22.3
18.2
1
1
1
1
2
2 ・・・
<例>
3.2 【手順3】モデルの構築 ①ΣCOの計算 (1/2)
ΣCOi の計算手順
各変動要因のレベルを 0~3 の4段階で評価
各変動要因について、COiを計算 (右図)
複数の三角分布から1つをランダムに選択
選んだ三角分布を、レベルに応じて変更
変更後の三角分布から、1点のコスト増加割合
をランダムに選び、COi とする。
COiを全変動要因について合計し、ΣCOi を
得る。
変動要因
CO1
CO2
CO3
CO4
CO5
・・・
レベル
1
0
2
1
3
② 値を1/3倍 (レベルが1なので)
① ランダムに1つを選択
<CO1の例>
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
660 700 740 790 830 870 910 960 10
00
10
40
10
80
11
20
11
70
12
10
12
50
12
90
13
40
13
80
14
20
見積工数
超過確率
0
50
100
150
200
250
300
350
400
450
120 130 140 150 160 170 180 190 200 210 220 230 (%)
コストオーバヘッド (
ΣCOi)
3.2 【手順3】モデルの構築 ①ΣCOの計算 (2/2)
以上を多数回(例えば5,000回)実施し、ΣCOiの分布を得る。
多数回計算することで、分布が安定
計算は専用ツールで実施
分布の中央値をΣCOi として採用
得られた分布の
中央値を採用
ツールで実施
3.2 【手順3】モデルの構築 ②αの計算
過去のプロジェクト・データを使って回帰分析し、αを計算
回帰分析
PJ実績
規模
工数
ΣCOi (%)
規模×(1+ΣCOi)
PJ-1
10.3KLOC
9.2人月
46.3
15.1
PJ-2
8.8KLOC
7.5人月
75.0
15.4
PJ-3
21.3KLOC 18.7人月
39.0
29.6
PJ-4
42.5KLOC 52.1人月
71.2
72.8
PJ-5
5.2KLOC
6.3人月
30.9
6.8
PJ-6
22.3KLOC 18.2人月
59.0
35.5
・・・
・・・
・・・
・・・
・・・
ツールで実施
相対誤差(%)
22.8% 56.7% 31.9% 29.7% 41.1% 6.3% 53.5% 8.1% 18.8% 3.1% 25.4%0.0%
10.0%
20.0%
30.0%
40.0%
50.0%
60.0%
70.0%
80.0%
1
2
3
4
5
6
7
8
9
10
11
相対誤差(%)
8.9% 23.9% 10.3% 18.0% 17.9% 17.4% 25.5% 13.3% 4.6% 6.1% 19.2%0.0%
10.0%
20.0%
30.0%
40.0%
50.0%
60.0%
70.0%
80.0%
1
2
3
4
5
6
7
8
9
10
11
PJ別の見積り誤差率
3.2 【手順4】見積り精度の改善
見積り精度(見積り誤差の程度)の確認
MMRE: 見積り誤差率の平均値
Pred.25: 見積り誤差率が25%以内のプロジェクトの割合
初期モデルの見積り精度:
MMREが30~40%
見積り誤差の原因
変動要因の見落とし
実績データの計測ミス
変動要因のレベルの評定ミス
(⇒ レベルの定義が曖昧)
・・・
モデルの見直しを繰り返し、見積り精度を向上
見積り精度の向上以外の効果
自組織の
コスト構造に対する理解が深まる
気付かなかった特徴に対する「気付き」
3.3 CoBRAモデル構築のスケジュール例
2ヶ月で構築する場合の例
実施内容
1, 2週
3, 4週
5, 6週
7, 8週
変動要因の抽出と定義
変動要因の影響度の収集
プロジェクト情報の収集
初期モデル構築と改良点の
分析
モデルパメータの見直し
見直し結果の評価
主要なマイルストーン
▲
キックオフ
▲
改善モデル
完成
▲
初期モデル
完成
1.見積り根拠の「見える化」
2.CoBRA法の概要
3.CoBRAモデルの構築方法
0
100
200
300
400
500
600
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
49 50 52 53 54 56 58 59 61 62 64 65 67 68 70 72
度数
予算超過確率
見積り工数 [人月]
工数を指定して、その工数を超過する確率を計算
予算超過確率を指定して、見積り工数を逆算
(予算超過確率20% ⇒ 62人月で見積もる)
4.1 予算超過リスクの分析
見積り工数: 59人月
6.3%
6.7%
8.3%
10.6%
11.6%
16.2%
16.4%
17.8%
25.2%
29.5%
0.0%
10.0%
20.0%
30.0%
40.0%
プロジェクトマネージャの経験・知識
関係者の数
顧客の参画度合い
開発期間の厳しさ
チームの経験・知識
信頼性要求のレベル
システムの複雑さ
業務の複雑さ
要求変更の発生想定時期
見積り時の要求内容の曖昧さ
変動要因の寄与度
4.2 工数のコントロール (影響度の高い要因の確認)
感度分析により、影響度の高い要因を把握
例では、「見積り時の要求内容の曖昧さ」、「要求変更の発生想定時期」の影響度が高い
見積り時の要求内容の曖昧さ: レベル「2」
要求変更の発生想定時期: レベル「2」
影響度の高い要因について、軽減策を検討
例えば、顧客とのQ&Aを通じて 「見積り時の要求内容の曖昧さ」 の軽減を図る
0 100 200 300 400 500 600 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% 49 50 52 53 54 56 58 59 61 62 64 65 67 68 70 72 度数 予算超過確率 見積り工数 [人月]