SDM公開講座「現代ソフトウエアエンジニアリングの俯瞰図」
の第10回
ソフトウェア開発見積もりの課題と解決方法
~見積もり手法の歴史とCoBRA法~
を聞いてきたのでメモメモ
1.見積もりにおける課題
・プロジェクトマネジメントにおける見積もりの位置づけ
みつもり→プロジェクトマネジメントの中核
・プロジェクトにおける大きな課題のひとつ
プロジェクトを大失敗させる原因は2つある
ひとつ波つもりミスだ
楽観的な見積もり
早期の見積もり
目標と見積もりの混同
一度決まったら修正されない
時間の余裕がないことが多い
もうひとつは仕様未凍結
見積もりミスにつながる
→無理なプロジェクト
ロバートグラス
「ソフトウェア開発55の真実と10のうそ」
・見積もりもスを引き起こす原因
ケーパージョーンズ
1.要求が完全に決定される前に正式な見積もりが求められる
2.見積もり修正されない
3.ツール使われない
4.きゃリブレーションできない
5.保守的→挑戦的に
・見積もりの国内の実践状況
ベンダ企業
属人的な方法が減少している一方、類推的な方法が残る
ユーザー企業
相見積もり→ベンダの見積もりに依存
・見積もりにおける課題(1)
見積もり根拠が明確になっていない(規模、工数、工期)
→KKDできまる
見積もりに必要な情報がはっきりしない
見積もり方法もその場限り
生産性に影響を及ぼす要因が多種多様(工数)
→プロジェクト状況の影響
→影響要員がわかっていても、定量化が難しい
・実績プロジェクトデータ
ばらついている
・見積もりにおける課題(2)
過去データの欠落、制度の確保
分析が難しい
見積もり実施者の傾向
ほとんどのコスト見積もりは低すぎる傾向がある(DeMarco-Glassの法則)
・見積もりにおける課題(3)
部分的な情報からの見積もり(規模)
→細部が決まっていない状況で見積もりを行う場合が多い
(予算決めなど早い段階)
→部分的な情報から推論するしかない
実際とブレが出ることは避けられない
4倍から4分の1
・見積もりにおける課題(4)
決めたことが変わっていく(規模)
開発当初の想定機能は、一般に肯定が進むに従って膨張する
→見えていなかった要件が見えてくる
→最初の要件とぶれる
2.見積もり手法の歴史と蓄積
・見積もり手法に関する大きな流れ
60年代 ソフトウェア開発の黎明期
70年代 見積もりも出る提案の時期
80年代 見積もりモデルの成熟期
90年代 ツールの成熟、機械学習の応用
2000年代 熟練者の知識活用の再確認
・ソフトウェアにおける見積もりに関する歴史と蓄積
1958ノードン(Curve Fitting for a Model of Applied Resarch and development scheduling"
ネルソン 1966
6つの工程に分類
nelson-jonesの法則
多くの要素が開発生産性に影響
・その2
1970年代は見積もりモデル提案の時期
工数の期間の関係
プットナム SLIMモデル→演繹的に導く
ファンクションポイント
1970年代のモデルにおける課題
重視する要素に違い
・その3
80年代COCOMOモデル ベームによって開発
(TRWにいたとき)
パラメトリック手法→バジル メタモデルの数値化
一方、主要な結論として、ある環境で構築されたモデルは
そのままでは他の環境での精度はよくない
→キャリブレーションを行う必要がある
・その4
90年代における機械学習方法の適用(データマイニング)
データに語らせる
機械学習アルゴリズム
ニューラルネットワーク
CART
基本的にパターンに分類して見積もりを行う
90年代後半から2000年代:熟練者の判断
主観的な見積もり
熟練者の治験を活用した定量化(CoBRA Braiandら1998)
3.見積もり根拠の見える化
・見積もりの見える化とモニタリングとコントロール(解決方法)
対策1:見積もりモデルの確立
→再現性の確保
対策2:見積もりの妥当性の確保
→想定したものをインプット
前提を変えたシミュレーション
対策3:モニタリングとコントロールと再見積もり
対策4:目標と見積もりの峻別
→すべての出発点は見積もりモデル
・見積もり根拠の見える化の重要性
見積もり根拠の見える化=コスト構造の見える化が重要
・見える化の課題
工数のぶれをどう説明するか
・具体的な解決策CoBRA
・5つの特徴
1.組織固有のコスト変動要因をモデル化
2.コスト変動要因に、熟練者の優れた「かんと経験」
3.工数のコンとルールを実現
4.予算超過リスクの定量評価を実現
5.プロセス改善のポイントを把握
4.CoBRA法の概要
・CoBRA法のコンセプト「勘」と「経験」を見える化する
「勘」と「経験」は問題→「形式知化」
・CoBRA法における工数見積もりの考えから
規模が同じでもかかる工数に違い
ベースの生産性αとそこからのオーバーヘッド(CO:コストオーバーヘッド)
熟練者の考え方:オーバーヘッドに使う
→実績データに照らし合わせてαを計算
見積もり手法
経験ベース型
データ駆動
ハイブリッド=CoBRA法
・工数見積もりの手順
1.機微の推定
2.変動要因の影響度を評価→レベル
3.見積もりの実行→ツールを使用
・ツールでの見積もり手法
想定規模の入力
変動要因の入力
見積もりの実行と結果の確認
見積もり結果と感度分析
・CoBRAツール
IPA/SECから
簡易ツール
統合ツール
・利用シーン
コストマネジメント
リスクマネジメント
プロセス改善
・IESE(いえぜ)でできた
IPA
本が出た
CoBRA法入門
5.CoBRAモデルの構築方法
・構築手順
(1)変動要因の抽出、定義
変動要因を聞き出す/確認
(2)実績データの収集
(3)モデルの構築
→誤差が出てくる
(4)見積もり精度の改善
・【手順1】変動要因の洗い出し
アンケートで吸い上げて、ブレスト
関係者の協力度合い・・・
いっぱい要員が出てくるので、こまる
→しぼりこみ
要因が独立していることが重要
4段階の定義
まずレベル0とレベル3をきめ、間を決める
どの組織でも似たようなものが出てくる
定量化
レベル0、レベル3のとき、どれだけ工数がかかりますか?
→三角分布
・【手順2】実測データの収集
書く変動要因の工数への影響度を4段階で評価
・【手順3】計算:ツールがやってくれる
→さんかく分布のところ
→αのところ
・【手順4】見積もり制度の改善
MMRE 見積もり誤差率の平均値
Pred25:見積もり誤差率が25%以内のプロジェクトの割合
→分散を見ている
・初期モデルの見積もり制度:MMREが30~40%
見積もり誤差の原因を探る
6.CoBRAモデルの応用
・工数のコントロール
→影響度のコントロール
・COが高いものを重点的に
・いつも高い要員をチェック
7.事例紹介
・IPA/SECとIESEの共同研究 沖電気
・「CoBRA法入門」の本にかかれている事例
・IPAジャーナルで日本IBM(No26)
・三菱電機など(SECセミナー)
の第10回
ソフトウェア開発見積もりの課題と解決方法
~見積もり手法の歴史とCoBRA法~
を聞いてきたのでメモメモ
1.見積もりにおける課題
・プロジェクトマネジメントにおける見積もりの位置づけ
みつもり→プロジェクトマネジメントの中核
・プロジェクトにおける大きな課題のひとつ
プロジェクトを大失敗させる原因は2つある
ひとつ波つもりミスだ
楽観的な見積もり
早期の見積もり
目標と見積もりの混同
一度決まったら修正されない
時間の余裕がないことが多い
もうひとつは仕様未凍結
見積もりミスにつながる
→無理なプロジェクト
ロバートグラス
「ソフトウェア開発55の真実と10のうそ」
・見積もりもスを引き起こす原因
ケーパージョーンズ
1.要求が完全に決定される前に正式な見積もりが求められる
2.見積もり修正されない
3.ツール使われない
4.きゃリブレーションできない
5.保守的→挑戦的に
・見積もりの国内の実践状況
ベンダ企業
属人的な方法が減少している一方、類推的な方法が残る
ユーザー企業
相見積もり→ベンダの見積もりに依存
・見積もりにおける課題(1)
見積もり根拠が明確になっていない(規模、工数、工期)
→KKDできまる
見積もりに必要な情報がはっきりしない
見積もり方法もその場限り
生産性に影響を及ぼす要因が多種多様(工数)
→プロジェクト状況の影響
→影響要員がわかっていても、定量化が難しい
・実績プロジェクトデータ
ばらついている
・見積もりにおける課題(2)
過去データの欠落、制度の確保
分析が難しい
見積もり実施者の傾向
ほとんどのコスト見積もりは低すぎる傾向がある(DeMarco-Glassの法則)
・見積もりにおける課題(3)
部分的な情報からの見積もり(規模)
→細部が決まっていない状況で見積もりを行う場合が多い
(予算決めなど早い段階)
→部分的な情報から推論するしかない
実際とブレが出ることは避けられない
4倍から4分の1
・見積もりにおける課題(4)
決めたことが変わっていく(規模)
開発当初の想定機能は、一般に肯定が進むに従って膨張する
→見えていなかった要件が見えてくる
→最初の要件とぶれる
2.見積もり手法の歴史と蓄積
・見積もり手法に関する大きな流れ
60年代 ソフトウェア開発の黎明期
70年代 見積もりも出る提案の時期
80年代 見積もりモデルの成熟期
90年代 ツールの成熟、機械学習の応用
2000年代 熟練者の知識活用の再確認
・ソフトウェアにおける見積もりに関する歴史と蓄積
1958ノードン(Curve Fitting for a Model of Applied Resarch and development scheduling"
ネルソン 1966
6つの工程に分類
nelson-jonesの法則
多くの要素が開発生産性に影響
・その2
1970年代は見積もりモデル提案の時期
工数の期間の関係
プットナム SLIMモデル→演繹的に導く
ファンクションポイント
1970年代のモデルにおける課題
重視する要素に違い
・その3
80年代COCOMOモデル ベームによって開発
(TRWにいたとき)
パラメトリック手法→バジル メタモデルの数値化
一方、主要な結論として、ある環境で構築されたモデルは
そのままでは他の環境での精度はよくない
→キャリブレーションを行う必要がある
・その4
90年代における機械学習方法の適用(データマイニング)
データに語らせる
機械学習アルゴリズム
ニューラルネットワーク
CART
基本的にパターンに分類して見積もりを行う
90年代後半から2000年代:熟練者の判断
主観的な見積もり
熟練者の治験を活用した定量化(CoBRA Braiandら1998)
3.見積もり根拠の見える化
・見積もりの見える化とモニタリングとコントロール(解決方法)
対策1:見積もりモデルの確立
→再現性の確保
対策2:見積もりの妥当性の確保
→想定したものをインプット
前提を変えたシミュレーション
対策3:モニタリングとコントロールと再見積もり
対策4:目標と見積もりの峻別
→すべての出発点は見積もりモデル
・見積もり根拠の見える化の重要性
見積もり根拠の見える化=コスト構造の見える化が重要
・見える化の課題
工数のぶれをどう説明するか
・具体的な解決策CoBRA
・5つの特徴
1.組織固有のコスト変動要因をモデル化
2.コスト変動要因に、熟練者の優れた「かんと経験」
3.工数のコンとルールを実現
4.予算超過リスクの定量評価を実現
5.プロセス改善のポイントを把握
4.CoBRA法の概要
・CoBRA法のコンセプト「勘」と「経験」を見える化する
「勘」と「経験」は問題→「形式知化」
・CoBRA法における工数見積もりの考えから
規模が同じでもかかる工数に違い
ベースの生産性αとそこからのオーバーヘッド(CO:コストオーバーヘッド)
熟練者の考え方:オーバーヘッドに使う
→実績データに照らし合わせてαを計算
見積もり手法
経験ベース型
データ駆動
ハイブリッド=CoBRA法
・工数見積もりの手順
1.機微の推定
2.変動要因の影響度を評価→レベル
3.見積もりの実行→ツールを使用
・ツールでの見積もり手法
想定規模の入力
変動要因の入力
見積もりの実行と結果の確認
見積もり結果と感度分析
・CoBRAツール
IPA/SECから
簡易ツール
統合ツール
・利用シーン
コストマネジメント
リスクマネジメント
プロセス改善
・IESE(いえぜ)でできた
IPA
本が出た
CoBRA法入門
5.CoBRAモデルの構築方法
・構築手順
(1)変動要因の抽出、定義
変動要因を聞き出す/確認
(2)実績データの収集
(3)モデルの構築
→誤差が出てくる
(4)見積もり精度の改善
・【手順1】変動要因の洗い出し
アンケートで吸い上げて、ブレスト
関係者の協力度合い・・・
いっぱい要員が出てくるので、こまる
→しぼりこみ
要因が独立していることが重要
4段階の定義
まずレベル0とレベル3をきめ、間を決める
どの組織でも似たようなものが出てくる
定量化
レベル0、レベル3のとき、どれだけ工数がかかりますか?
→三角分布
・【手順2】実測データの収集
書く変動要因の工数への影響度を4段階で評価
・【手順3】計算:ツールがやってくれる
→さんかく分布のところ
→αのところ
・【手順4】見積もり制度の改善
MMRE 見積もり誤差率の平均値
Pred25:見積もり誤差率が25%以内のプロジェクトの割合
→分散を見ている
・初期モデルの見積もり制度:MMREが30~40%
見積もり誤差の原因を探る
6.CoBRAモデルの応用
・工数のコントロール
→影響度のコントロール
・COが高いものを重点的に
・いつも高い要員をチェック
7.事例紹介
・IPA/SECとIESEの共同研究 沖電気
・「CoBRA法入門」の本にかかれている事例
・IPAジャーナルで日本IBM(No26)
・三菱電機など(SECセミナー)