忍者ブログ

東からの放浪者

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

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

開発期間の不可能領域

スケジュールが間に合わないと分かったときに、取れる対策はいくつもあるように思えます。
しかし、前回の記事で、私はすぐに「機能削減」を要求していました。

実は、意外に選択肢は少ないのです。

不可能領域(Impossible Region)

ローレンス・パトナム(Lawrence Putman)とウエア・マイヤーズ(Ware Myers)の
2 名による調査に、以下のようなグラフがあります。

※上記 2 名による著書『初めて学ぶソフトウェアメトリクス』に掲載されていたグラフを
 パワーポイント化したものなので、厳密には正確なグラフではありません。

開発期間と開発工数の関係 

これは、以下の条件に合う開発プロジェクト 6300 件の
「開発期間と開発工数」の統計結果を表したグラフです。

  • プログラム種別:ビジネス向け
  • プログラム規模:30KLOC
  • プロセス生産性:15.5

プロセス生産性とは、書籍内では「機能量=定数×工数×時間」の定数と定義されていました。
そのプロジェクト(≒開発チーム)の生産性、と考えておけばよいと思います。

ちなみに、この 3 つの要素は、プロジェクト計画を立てる上で非常に重要な前提です。
逆に言えば、3 つのうち、ひとつでも変わってしまった場合、
過去の見積もりデータは使用できなくなる、ということになります。


妥当な開発期間より 25% 以上は短くできない

調査の結果、いくら開発工数を増加(人員追加 or 残業)しても、
スケジュールを短くするのには限界があるということが分かりました。

この領域は不可能領域と呼ばれています。
(不可能ゾーンと呼ばれる場合もあります。)

不可能領域 

妥当な領域より、
開発期間を 25% 以上短くできたプロジェクトは存在しなかったそうです。


スティーブ・マコネル氏の見解



著書『ソフトウェア見積り ~人月の暗黙知を解き明かす~』の中で、
いくつかの見積もり手法のデータを用いて、
開発期間と開発工数の関係をグラフ化しています。

その結果、やはり不可能領域は存在し、
「スケジュールの見込み値を 25% 以上短くしてはならない」と警告しています。

本当はまったく短くならない?

以前、職場でこの話をしたところ、
開発者から「25% も縮まるの!?」と逆に驚かれました。

それも、そうだと思います。
なぜなら私の経験上、

ほとんどの開発では、プロジェクト開始時点で、
すでにリリース日が不可能領域に置かれている

からです。
現実の開発プロジェクトの多くは、すでに開発期間を
それ以上縮められない状態にあるわけです。

そして「間に合わない!」と分かったとき、取りうる選択肢は、
以下の 3 つくらいしかないのです。

  1. 機能を削る
  2. 品質を削る
  3. スケジュールを延ばす

なので、前回の記事で私は、すぐさま (1) を提案したわけです。
(2) はやってはいけませんし、(3) の選択肢も取れなかったためです。

グラフから分かるもうひとつのこと

グラフからは、もうひとつ大事なことが分かります。
それは、開発期間を 20% 延ばすと開発工数が半分になるということです。

開発期間の延長と開発工数 

逆に言うと、倍働いてもスケジュールは高々 20% しか縮まりません。

開発期間と欠陥数

そして、ローレンス・パトナムとウエア・マイヤーズの 2 名は、
著書の中で、もうひとつ面白いデータを紹介しています。

開発日数の延長と欠陥比率

このグラフを見ると、開発期間を 20% 延ばすと欠陥数は半分に減る
ということが分かります。

人間は一定確率でミスをするので、人員増加や残業は欠陥数増加のリスクを伴います。
マネージャは、これをしっかり覚えておかなくてはいけません。

そして、すでにプロジェクトが不可能領域にいる場合は、
スケジュールは縮まらず、単に品質を落とすだけになります。

今日のまとめ

  • 開発期間には不可能領域がある。
    それは、妥当な開発期間より、およそ 25% 以上短い領域のことである。
  • 開発期間を 20% 延ばすと、開発工数は半減する。
  • 開発期間を 20% 延ばすと、欠陥数は半減する。

スケジュールを縮める方法としては、
もうひとつ「生産性向上のための投資を行う」があります。(参考記事

開発規模が大きく、リリース日までにまだ余裕がある場合は、
効果が高いので是非行ってください。

逆に、投資もせずに、開発者の残業を見過ごしているマネージャは、
開発者の健康とモチベーションと作業品質を低下させるだけなのです。
この記事が参考になった!という方は、バナーをクリックしていただけると励みになります。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓


PR

コメント

プロフィール

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

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

ブログ紹介

管理人(なかば)の個人ブログです。

もともと、以前の職場で投稿していた社内ブログの延長で書き始めました。
エンジニア仲間に向けの雑な口調はそのままにしていますが、その辺は気にせず読んでもらえると嬉しいです(*'-')

カレンダー

06 2020/07 08
S M T W T F S
1 2 3 4
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 31