忍者ブログ

東からの放浪者

様々なソフトウェア開発を経験してきた視点から、開発、マネジメント、経済などについて書いています。
タイトルは、あるレトロゲームからのオマージュ。

ツイッターアカウントはこちら。

見積もりと不確実性のコーン

マネージャは必ず知っておいてほしい。
けど、開発者にも覚えておいてほしいソフトウェア開発における見積もりの話。

見積もりに大事なのは、技法やデータではなく「心構え」。

まず、はじめに書籍の紹介。


ソフトウェア見積り ~人月の暗黙知を解き明かす~』(スティーブ・マコネル 著)

ソフトウェア開発にたずさわる人には必ず読んでほしい本です。
特に3部構成の第1部「見積りの考え方」だけでも読んでほしいと思います。

今日のこの記事も「私がこの書籍から学んだこと」を私自身の経験を踏まえて
書いたものになっています。

不確実性のコーン

この本に紹介されていた有名なものに、以下のような図があります。

不確実性のコーン

横軸は、プロジェクトの開始から終了までを表した時間軸になります。
上の折れ線グラフの一番左端は、
「プロジェクト開始時点では、見積もりには4倍のばらつきが含まれている」
ということを表しています。

つまり

1年かかると予想したプロジェクトが実際には4年かかる

ということがあっても、まったく不思議ではない、ということを表しています。


マネージャ「見積もり能力のない奴に、見積もらせるからだ」

開発者「要求変更をガンガン入れられると、そうなるよ」

実は、どちらも少し誤解があります。

この不確実性のコーンは、COCOMO II という見積もり手法のデータを元に作られています。
つまり、

  • 要求の変更・追加は入らない
  • 見積もりに必要な情報は揃っている
  • 見積もりの専門家が見積もった

という前提のグラフになっています。
要するに、

これ以上、正確に見積もることは現実的に不可能!(  ̄△ ̄)/-☆

と言っても過言ではないわけです。

実際の不確実性

不確実性のコーンでは、プロジェクト開始時に正確な工数は判断できないので、
見積もりは過大・過小のどちらにもなる可能性がある、とされています。

可能性としては、確かにそうです。
しかし、私は現実のソフトウェア開発で「過大見積もり」には会ったことがありません。

ですので、私は以下のように、上半分のみのグラフにして使用します。

不確実性の収束

過大見積もりが存在しないのかと言えば、可能性はゼロではありませんが、
以前の記事で書いたように、開発者は「実装コスト」のみを見積もってしまう傾向があります。

そして、開発規模が大きいほど、実装コストがプロジェクト全体に占める割合は減ってきます。
どうしても、過小見積もりが発生する可能性の方が高くなってしまいます。

不確実性を収束させるためには

図を見ていると、見積もりのばらつきは時間と共に減少するように見えます”
しかし、スティーブ・マコネル氏は、書籍の中で

不確実性のコーンがひとりでに狭くなると思い込むのはやめよう。
コーンが収束するのは、ばらつきを取り除くための意志決定をしたときだけだ。

と警告しています。

グラフの中の所々に、吹き出しを入れていますが、
「要求を定義する」「設計をする」は、まさに意志決定なわけです。

それらをサボっていると、どうなるか?
私の経験上、こうなります。

収束しない不確実性

いつまで経っても、スケジュールの遅延を繰り返すプロジェクトの出来上がりです。
最終的に、こういうプロジェクトは、以下の二択となります。

  • プロジェクトが中止に追い込まれる
  • 発売してはいけない品質の製品をリリースしてしまう

どちらにせよ、悲惨な結果が待っています。

不確実性のコーンが教えてくれたこと

不確実性のコーンは、見積もりの不確かさだけでなく、
もっと大事なことを教えてくれています。

それは、

ソフトウェア開発とは、要求をコードに落とし込む作業のことではない。
不確実性をひとつひとつ取り除いていく、意思決定のプロセスである。


ということだと思います。

今日のまとめ

  • ソフトウェアの見積もりを正確に行うのは、現実的に不可能
  • 見積もりのばらつきは、ひとりでに収束はしない
    ひとつひとつ、意思決定をして取り除いていく必要がある

そして、気付いている人もいるかもしれませんが、
不確実性のコーンが教えてくれる大事なことが、もう一つあります。

それは、要求を定義した段階で、見積もりのばらつきが ×1.5 まで減る
ということです。

いつか、要求の大切さも記事にしたいと思います(*'-')
記事を気に入っていただけた方は、クリックしていただけると励みになります。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓


PR

コメント

プロフィール

HN:
なかば
性別:
男性
職業:
元ソフトウェアエンジニア
自己紹介:
東京のゲーム会社でゲームプログラマ。
家電メーカーで組み込みエンジニア。
その後、京都に移動して観光を楽しみながら
製品開発、業務改善、QA管理などを経験。
今は東京に戻って暮らしています。

詳細な自己紹介は、こちら

カレンダー

08 2019/09 10
S M T W T F S
1 2 3 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30