ソフトウェア見積り―人月の暗黙知を解き明かす

ソフトウェア見積り―人月の暗黙知を解き明かす

ソフトウェア見積り―人月の暗黙知を解き明かす

不確実性と背中合わせになった見積もりは、ソフトウェア見積り作成者にとっては日常茶飯事だ。本書は、こうした環境をいかに生き抜くべきかについて、書かれています。
 

「見積り」の定義とは、ソフトウェア開発においては、プロジェクトにかかる期間やコストを予測することです。しかし、実際の見積りは、実現したいビジネス上の目標(ターゲット)と、定義された機能を、特定の品質レベルを確保しながら期日までに納品する(コミットメント)ということの間の相互作用です。
要望あるいは、命令されたターゲットが達成可能なものとは限らないし、コミットメントについても、見積りよりも挑戦的であったり、保守的であったりもする。「見積り」「ターゲット」「コミットメント」はそれぞれ異なるものであると認識しよう。

ソフトウェア開発において、規模が大きくなればなるほど、見積りの精度は一層難しくなります。工数が直線的にスケールアップするのではなく、指数関数的にスケールアップするからです。
 
見積りは、判断ではなくデータから判断した方が良さそうです。振り返ってみても、自分だけで判断した見積りは、大抵失敗しています。(自分だけで完了できるもの以外)
個人の判断には、独断や楽観的観測などのバイアスがかかるため、正確性に欠けます。それよりも、過去の実績に基づいたデータを土台として詳細な見積りを計算した方が、より正確で、説得力もあることでしょう。
 
今のところ、ソフトウェア開発においては、「銀の弾丸」は、どの工程においても自分が知る限りなく、必要な情報を愚直に集めれるだけ集めて、過去のデータや実績などを考慮して、制約付き、限定付きでもいいので、工数を算出していくしかないようです。その場合も、ツールやデータなどを駆使することは必須でしょう。