第6章 工数の見積もり
6.2.5 「カスタムモデル」
~ 6.6 「まとめ」
TEF 東海メトリクス勉強会
まとめ担当:なお
6.2.5 カスタムモデル
標準的見積もり手法
手直しできた ら…
直してしまおう!
6.2.5 カスタムモデル
カスタムモデルを得る4つの手順
ステップ1 : コストを分割す る
ステップ2 : コスト仮説を立 てる
ステップ3 : データを集める ステップ4 : データを関連づ ける
6.2.5 カスタムモデル
例 :
• 毎年 600 件程度のフィーチャが求め られ
• 1 5 0件程度を実際に構築
• 大規模カスタムシステム
想定システム
6.2.5 カスタムモデル
例 :
• エキスパート3名がコスト見積もり
• コスト見積もりに全ての時間を費や す
現状 :
エキスパートによる見積もり
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ1: コストの分割
モジュール A, B, C, D に 与える影響をまず検討
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ1: コストの分割
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説 コストに影響しない
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説 (コ スト関数)あるフィーチャの工数(週)=
9 * DB 変更回数+ 7 *インタフェース変更 回数
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説 (コ スト関数)あるフィーチャの工数(週)=
9 * DB 変更回数+ 7 *インタフェース変更 回数
各フィーチャの複 雑度が重要かも
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説 (コ スト関数)あるフィーチャの工数(週)=
9 * DB 変更回数+ 7 *インタフェース変更 回数
0.6 ~ 1.4 の範囲をとる複雑度調整 要因( Complexity Adjust Factor,
CAF )
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ2: コストの仮説 (コ スト関数)あるフィーチャの工数(週)=
CAF *( 14 * DB 変更回数+ 8 *インタフェース 変更回数)
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ3: データを集める• 過去のフィーチャのデータ(エキスパートの見積 もり)
• 実績データ(可能であれば)
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
ステップ4: データを関連づける(モデルの有効性 の評価)相関分析 修正必要? モデルの修正Y 満足 良いモデルの選択
N
6.2.5 カスタムモデル
例 : カスタム見積もりモデルを作
成
• 見積もり時間浪費状態を脱出
• 各フィーチャの見積もり⇒簡単 & 短時間
エキスパー ト
6.2.6 アルゴリズムモデル
回帰分析
実証的に導き出されたモデル
6.2.6 アルゴリズムモデル
• 初期 ・・・ 単純なモデル (手作業でも
利用可能)
• 今日 ・・・ 複雑なモデル (ツールで提
供)
6.2.6 アルゴリズムモデル
回帰分析
特定実証データセット特定環境 アルゴリズムモデル
6.2.6 アルゴリズムモデル
回帰分析
特定実証データセット特定環境 アルゴリズムモデル
環境要因: 重要なコスト誘
因
6.2.6 アルゴリズムモデル
回帰分析
特定実証データセット特定環境 アルゴリズムモデル
複数の手法を用いるのが最
良
6.2.6 アルゴリズムモデル
見積もりの正確
さ
こだわり過ぎ
ない方がよい
テキスト本文中より抜粋
「モデルの正確さは、一般的に開発コストまたはスケジュール実績の
±25 %以内の程度に過ぎない。つまり、開発時間の半分の範囲である。こ れは、見積もりモデルをキャリブレーションした後での話しだ。」
テキスト 参考文献 [20]
6.2.6 アルゴリズムモデル
たいていのプロジェクト
規模を見積もる
工数を見積もる
規模 LOC, FP
スケジュールを見積もる
工数
6.2.6 アルゴリズムモデル
規模
LOC, FP 工数
コスト スケジュール 人員計画 基本的な誘因
6.2.6 アルゴリズムモデル
6.2.6.1 マニュアルモデル
典型 :
工数= A + B *(規模) C
A, B, C : 実証的に求められた定数 規模: LOC, FP
6.2.6 アルゴリズムモデル
6.2.6.1 マニュアルモデル
• 例1
• 例2
• 例3
: 工数= 5.0 *( KLOC ) 0.90
: 工数= 5.5 + 0.75 *
( KLOC)1.25
: 工数= 3.0 *( KLOC ) 1.10
KLOC から工数を見積もるモデルの
例
異なるデータセットにキャリブレーションし
た結果例
テキスト P.149規模要因:
経済性を表してい る
規模が大きくなるにつれ て
生産性が低下する
6.2.6 アルゴリズムモデル
6.2.6.1 マニュアルモデル
• 例1
• 例2
: 工数= 15.00 + 0.0500 * FP
: 工数= 50.50 + 5.0000 * (10-10 )* FP3
FP から工数を予測する3つのモデル式
例
異なるデータセットにキャリブレーションし
た結果例
テキスト P.150規模によらず 生産性が一定
6.2.6 アルゴリズムモデル
6.2.6.1 マニュアルモデル
COCOMO :
COCOMO の成長・発展
:
おそらく、最も有名、一般的、影響力 有り
COCOMO Ⅰ⇒COCOMO Ⅱ⇒COCOMO .2000Ⅱ
COCOMO Ⅰ の基本公式 :
工数= B * LOCC
B と C はプロジェクト分類によって異なる テキスト P.151 図 6.21
6.2.6 アルゴリズムモデル
6.2.6.2 プロジェクトの期間を見
積もる
COCOMO Ⅰ :工数に基づいて開発期間を算出する式も提供
開発期間= B *工数 C
テキスト P.151 図 6.21
他の実証研究の結果:
COCOMO Ⅰ の規則と矛盾せず、同じ構造の式
スケジュールの短縮 :
経験則 ⇒ 圧縮限界およそ 75 % (工数は増 加)
6.2.6 アルゴリズムモデル
6.2.6.3 ツールに基づくモデル
1970 年代~ 1980 年代
:
• FP 法が開発される• 最初の見積もりツール SLIM, Price-S が製品化
• COCOMO モデルが示された
現在 :
• 利用可能な商用見積もりツールが 100 個以上
• 複数のプロジェクト属性を入力
• スケジュール、要員割り当て計画、総見積もり工 数、
見積もりコストを出力
6.2.6 アルゴリズムモデル
6.2.6.3 ツールに基づくモデル
現時点で主要なツール
:
COCOMO, SPR, Checkpointツールの機能総覧 :
テキスト 6章 参考文献 [23] ( 2002
Web
年著)を検索
ソフトウェア 見積もり ツール検索 多くのデモ版、フリーウェ
アいくつかのツールを試してみることをお勧 め
6.2.6 アルゴリズムモデル
6.2.6.3 ツールに基づくモデル
モデルへの入力
性質 範囲 クラ 分類 目標ス
作業パターン etc…
ツールの特徴
仕様、ソースコード、テストケースの規模を求め る論理工程、アクティビティ、タスクレベルでの
見積もり
ツールを試 してみよう
オブジェクト指向技術サポー LOCと FP の変換再利用支援ト
多様な言語サポート 品質と信頼性の予測 リスクと価値の分析 マネジメントツールと連
携 新しいモデルでの見積も
り etc…
6.3 見積もりを組み合わせる
3つ以上の異なる手法を用いて見積
もり
同じ傾向にある手法を選んではいけな
い
次のような組み合わせで、補完的に利用す
る
• トップダウン法とボトムアップ法• エキスパート見積もりと類推法
• エキスパート見積もりとプロキシポイ ント法
• 同じモデル構造に基づくアルゴリズムモデル
• 類似した責務・プロジェクトのエキスパート見積 もり
6.3 見積もりを組み合わせる
3つ以上の 見積もり
• 最良と思うものを選ぶ(非推奨)
• 標準偏差⇒ばらつき⇒平均
• 正規分布に基づいた加重平均
( 1 *最小値+ 4 *平均値+ 1 *最大値)/ 6
• 独自の重みによる加重平均
最終的な見積もり
6.4 見積もりに関する課題
6.4.1 目標 vs 見積もり
見積もり提示要求
目標 or 見積もり
目標と見積も 上層部 りの混同
上層部
目標 見積も
り 調整(対話的)
削減・再利用・差し替え・ etc…
見積もり 6.1 ~ 6.3 章
etc … 見積もりモデルのパラメータばかり
調整あるある ツール 目標
手法 見積もり
調整不足 ⇒ 残業増加 ⇒ デスマーチ
残業が増加するだけ
6.4 見積もりに関する課題
6.4.2 見積もりの限界:なぜ?
見積もり 期待 結果 がっかり
似たシステム
ツール手法
有効データセット
確実性の高い 見積もり
新しいシステム
データセット 新しいアイデア ツール手法
確実性の低い 見積もり
6.4 見積もりに関する課題
6.4.3 見積もりの不確実性
見積もりには固有の確率があ
る無意識に正確( 50 %)な見積もりをし
ている もっと正確に
見積もる
• 見積もりに固有の不確実性を理解し、受け入れ、
管理• 不確実性を受け入れるために、見積もりの言葉遣いを 変更
6.4 見積もりに関する課題
6.4.3 見積もりの不確実性
• 見積もりに固有の不確実性を理解し、受け入れ、 管理「不確実性のコーン」 テキスト 図 6.22 参考文
献 [22]見積もりの正確度の予測値をソフトウェアライフサイクルの工程ご
見積もりのプラクティスとプロセスとに示す
改善 不確実性減少
過大見積もりより過小見積もりをすることの方が 多い
不確実性
分散 既知のリスク 未知の事象
計算は容易 大きさ
リスク管理計画で明 12示章
最小化 確実
エキスパー ト
6.4 見積もりに関する課題
6.4.3 見積もりの不確実性
• 不確実性を受け入れるために、見積もりの言葉遣いを 変更単に「数値」言うだけ
でなく 確立分布に基づいた範囲と見通
し
「 pX 」 例 : 表記
「 p5 」 : 見積もり超過確立 95 %
「見積もり、8人
月」 : 担当がリスクと不確実性を負 う
エキスパー
ト 見積もり幅を割り出してもらう とよい過信する傾向にある
「 p50 の見積もり20人 月」 :現在の肯定(設計工
程)
決めた組織のガイドライ ン
経験的
過去のプロジェクトに基づく確率 分布
経験則 見積もり幅: 18 ~ 24 人
出発点としての経験則 : 月 テキスト P.162 図
6.23
6.4 見積もりに関する課題
6.4.3 見積もりの不確実性
テキスト P.162 および テキスト 6章 参考文献 [26] よ り
120 件のシステムについての結果
1. 見積もりの正確さは対数正規分布に従う
2. 初期の見積もりは、実現可能性が極めて低い目標にすぎない 3. 信頼率 90 %の見積もりは、目標に対して 4 倍の開きがある
4. この性質および不確実性の範囲は、プロジェクトライフサイクルのす べての段階においてほぼ等しい。これは、「不確実性のコーン」とは 一致しない
初期見積もり 目標
過大見積もり
! 調整は?
この結果は驚くようなことではない
(アジャイル方法論 ・ 変化を内包するという考え方を考慮 すれば)
今までの話と矛盾
するのでは? そういう
ことか!
6.4 見積もりに関する課題
6.4.3 見積もりの不確実性
見積もりの不確実性に対処する方法のまと
め
• 見積もり:一つの数値 ⇒ pX 表記
• 見積もりの範囲を指定:確率を伴った区間を用いる
• 「第六感」 何らかの手法を用いる
• アジャイル手法を用いる ⇒ 初期見積もり実現可能性低く
6.5 早期に何度も見積もる
いつ見積もるべき
見積もりにどれだけ工数をかける?
?
プロジェクト 工数 見積もり工数
プロジェクトの目 的 :
オーバーヘッド
顧客に製品を提供するこ と
コスト メリット
見積もり
プロジェクトと開発方法論に依 存
要求と使用が頻繁に変更されるプロジェク ト :おおよその見積もりを素早く効率的に
見積もりが重大決定かつ要高精度なプロジェクト 出す
:見積もりは、意思決定の質に大きな影響を与える
6.5 早期に何度も見積もる
従来型の開発では次の3回は見積もりをすべ き :• 実現可能性の検討段階: マクロな見積もり
• 要求定義工程: 詳細な見積もり
• 設計工程: 精巧な見積もり 見積もりに求める
正確さ 見積もりを行う時点での目的
プロジェクトの 特質
6.6 まとめ
やはり、失望しただろうか
?
銀の弾丸は存在 しない
• さまざまな手法を紹介
• 見積もりを確率として考える必要性
• 過度に楽観的になる人間の弱さ
• 不確実性
• 手法に従えば、これまでよりも良い結果を得られ る
• 手法やツールを使えば定量的に理解できる
• 成果物・スケジュール・設計・期待を適切に調整 できる