スケジュールが間に合わないと分かったときに、取れる対策はいくつもあるように思えます。
しかし、
前回の記事で、私はすぐに「機能削減」を要求していました。
実は、意外に選択肢は少ないのです。
不可能領域(Impossible Region)
ローレンス・パトナム(Lawrence Putman)とウエア・マイヤーズ(Ware Myers)の
2 名による調査に、以下のようなグラフがあります。
※上記 2 名による著書『初めて学ぶソフトウェアメトリクス
』に掲載されていたグラフを
パワーポイント化したものなので、厳密には正確なグラフではありません。
これは、以下の条件に合う開発プロジェクト 6300 件の
「開発期間と開発工数」の統計結果を表したグラフです。
- プログラム種別:ビジネス向け
- プログラム規模:30KLOC
- プロセス生産性:15.5
プロセス生産性とは、書籍内では「機能量=定数×工数×時間」の定数と定義されていました。
そのプロジェクト(≒開発チーム)の生産性、と考えておけばよいと思います。
ちなみに、この 3 つの要素は、プロジェクト計画を立てる上で非常に重要な前提です。
逆に言えば、3 つのうち、ひとつでも変わってしまった場合、
過去の見積もりデータは使用できなくなる、ということになります。
妥当な開発期間より 25% 以上は短くできない
調査の結果、いくら開発工数を増加(人員追加 or 残業)しても、
スケジュールを短くするのには限界があるということが分かりました。
この領域は
不可能領域と呼ばれています。
(不可能ゾーンと呼ばれる場合もあります。)
妥当な領域より、
開発期間を
25% 以上短くできたプロジェクトは存在しなかったそうです。
スティーブ・マコネル氏の見解

著書『
ソフトウェア見積り ~人月の暗黙知を解き明かす~
』の中で、
いくつかの見積もり手法のデータを用いて、
開発期間と開発工数の関係をグラフ化しています。
その結果、やはり不可能領域は存在し、
「スケジュールの見込み値を 25% 以上短くしてはならない」と警告しています。
本当はまったく短くならない?
以前、職場でこの話をしたところ、
開発者から「25% も縮まるの!?」と逆に驚かれました。
それも、そうだと思います。
なぜなら私の経験上、
ほとんどの開発では、プロジェクト開始時点で、
すでにリリース日が不可能領域に置かれている
からです。
現実の開発プロジェクトの多くは、すでに開発期間を
それ以上縮められない状態にあるわけです。
そして「間に合わない!」と分かったとき、取りうる選択肢は、
以下の 3 つくらいしかないのです。
- 機能を削る
- 品質を削る
- スケジュールを延ばす
なので、
前回の記事で私は、すぐさま (1) を提案したわけです。
(2) はやってはいけませんし、(3) の選択肢も取れなかったためです。
グラフから分かるもうひとつのこと
グラフからは、もうひとつ大事なことが分かります。
それは、
開発期間を 20% 延ばすと開発工数が半分になるということです。
逆に言うと、倍働いてもスケジュールは高々 20% しか縮まりません。
開発期間と欠陥数
そして、ローレンス・パトナムとウエア・マイヤーズの 2 名は、
著書の中で、もうひとつ面白いデータを紹介しています。
このグラフを見ると、
開発期間を 20% 延ばすと欠陥数は半分に減る
ということが分かります。
人間は一定確率でミスをするので、人員増加や残業は
欠陥数増加のリスクを伴います。
マネージャは、これをしっかり覚えておかなくてはいけません。
そして、すでにプロジェクトが不可能領域にいる場合は、
スケジュールは縮まらず、単に品質を落とすだけになります。
今日のまとめ
- 開発期間には不可能領域がある。
それは、妥当な開発期間より、およそ 25% 以上短い領域のことである。
- 開発期間を 20% 延ばすと、開発工数は半減する。
- 開発期間を 20% 延ばすと、欠陥数は半減する。
スケジュールを縮める方法としては、
もうひとつ
「生産性向上のための投資を行う」があります。(
参考記事)
開発規模が大きく、リリース日までにまだ余裕がある場合は、
効果が高いので是非行ってください。
逆に、投資もせずに、開発者の残業を見過ごしているマネージャは、
開発者の健康とモチベーションと作業品質を低下させるだけなのです。
この記事が参考になった!という方は、バナーをクリックしていただけると励みになります。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
