ついに登場! 究極の見積もり技法(その4:最短開発期間の算出):山浦恒央の“くみこみ”な話(41)(1/2 ページ)
「ソフトウェア技術者の最高の能力は、見積もりだ!」――今回は筆者お手製のExcelシートの計算式を使い、“開発エンジニアを何千人・何万人投入したとしても、「この期間」よりも絶対に短く開発することはできない”というSLIMのトレードマーク「最短開発期間」の計算方法を解説する。
「見積もり」は、ソフトウェア開発における大きなテーマであり、ソフトウェア工学における最重要課題の1つでもあります。
今回お届けしている“見積もり・シリーズ”では、「見積もりの目的(正確に見積もるだけでは不十分)」「見積もりの具体的な方法(精度を上げるため、少なくとも、2つ以上の方法で見積もる必要がある)」「見積もりの応用(見積もり値に合わせる制御と再見積もり)」「見積もりの調整(状況に応じて開発量とスケジュールを再見積もりしなければならない)」について、具体的に解説していきます。
見積もり技法は「類推法」「積み上げ法」「パラメトリックス法」の3つに分類することができます。これまでパラメトリックス法の1つとして、「SLIM(Software Life Cycle Management)」を取り上げ、「工数(コスト)」「開発期間(月)」「機能総量(規模)」「(プロセス)生産性」の4つの関係を分析できるよう、マイクロソフトの表計算ソフト「Excel」の計算式を使った算出方法を解説しました(第39回参照のこと)。これにより、例えば機能総量が20%増えたり、開発期間が18カ月から14カ月に短縮した場合、スケジュールや人月にどのような影響を及ぼすのかを簡単に計算することができます。
今回も筆者お手製のExcelシートの計算式を使い、“開発エンジニアを何千人・何万人投入したとしても、『この期間』よりも絶対に短く開発することはできない”という「最短開発期間」の計算方法を解説します。開発規模(例えば、ソースコードのステップ数)が予測できていれば、ほんのわずかの時間で最短開発期間を算出できます。
SLIMと最短開発期間
――ここに、200m2の木造平屋建て住宅を建築してほしい人(注文主)がいるとします。そして、この規模の住宅を建築する場合、大工さん10人で8カ月かかると仮定します。
着工前のある日、注文主から突然こんなことを言われました。
金に糸目は付けない。いくら掛かってもいいから、1日でも早く完成させてほしい!
大工さんの数を増やし、最新鋭の機械を投入し、24時間体制で頑張れば、2カ月短縮して6カ月で完成するかもしれませんが、例えば「3日で完成させる」のはさすがに不可能でしょう。では、この「8カ月」の建築期間はどこまで短くすることができるのでしょうか?
これのソフトウェア版が、SLIMにおける最短開発期間であり、他の見積もり技法にないSLIMの非常にユニークな概念です。
最短開発期間の計算式
数式1に最短開発期間の計算式を示します(最短開発時間の出力結果の単位は月です)。一見、複雑な形をしていますが、基本的には、開発対象となるプログラムの規模(ソースコードのステップ数)と、プロセス生産性だけで算出できます。
組織構築率 | -1 | 0 | 1 | 4 | 5 |
---|---|---|---|---|---|
人月係数 | 2 | 4 | 8 | 64 | 128 |
数式1 最短開発期間の計算式 |
(1)プログラムサイズ
これは通常のLOC(Lines of Code)であり、ソースコードの行数です。ソースコード行数の見積もり方法については、本コラムの中でも幾つか解説していますので、そちらを参照してください。
(2)プロセス生産性
これも、第39回「ついに登場! 究極の見積もり技法(その2:実践編)」で、「ソフトウェア開発関係式」を解説したときのものと同じです。
例えば、通常の生産性(古典的な生産性?)は、“1100LOC/人月”のように表現し、プロジェクトの期間や人数に関係なく一定の値をとりますが、プロセス生産性の場合は、SLIM特有の考え方であり、「プロジェクト全体の生産性」を表します。
そのため、“プロジェクトの期間や人数に影響を受けます”。算出法は第39回のように3通りあり、過去の統計データを基に計算します。もし、過去の統計データがなかったり、よく分からない場合は、取りあえず、平均値である「13」を使ってください。
(3)人月係数
“プロセス生産性”と聞くと、その詳細までは分からなくともその意味は何となく想像がつくと思います。しかし、“人月係数”から具体的なイメージを描ける人はほとんどいないでしょう。
このように、怪しくて意味不明のパラメータは、SLIMのように大量のデータから法則性を導き出して数式で表現する場合の“つじつま合わせ変数(いろいろなシワ寄せをまとめて吸収するための変数)”であることがほとんどです。ただ、そうは言っても、実際に大きな声で「この変数は、つじつま合わせですよ!!」とはいえないので、人月係数のような不思議な名前を付けるわけです。
もし、人月係数が、「開発人月」「プログラム規模」「開発期間」「プロジェクトの人数」「品質」のように、非常に重要なパラメータに関連するものであるならば、絶対に(無理やり?)、そちらに包含していたはずです。なので、この類いの変数は、さほど重要な値ではないと言えます。
数式1からも分かるように、SLIMでは、人月係数は“組織構築率で決まる値”と定義しています。人月係数だけでも、読者の皆さんの頭の中は「?」なのに、さらに、組織構築率が出現して、ますます「?」状態でしょう。大抵の場合、この段階で「訳が分からない……」と投げ出してしまう人が多いのですが、それではもったいないと思います。そこで、思い切って「この意味不明の変数は、さほど重要ではなく、無視しても大勢に影響はない」と考えてしまってください。
SLIMでは、組織構築率を“プロジェクトにエンジニアを割り当てる速度。大人数を掛けて急いで開発する場合は高くなり、少人数でゆっくり開発する組織では低くなる”と定義しています。この定義を聞いても正直よく分かりませんが、“急いで開発するプロジェクトほど大きくなる”ということなので、最短開発期間の計算では、最大値(通常は5)を使えばよいことにします。後ほど紹介するExcelの計算式では、あらかじめ、組織構築率を「5」、人月係数を「128」として計算します。
最短開発期間の具体的な算出手順
最短開発期間の数式から導き出せる値としては、以下の3つがあります。
- プログラムサイズとプロセス生産性から、最短開発期間そのものを求める
- プログラムサイズとプロセス生産性から、最短開発期間でのコストを求める
- プロセス生産性と開発期間(最短開発期間)から、この期間で開発可能なプログラムサイズを求める
以降、Excelの計算式を使い、それぞれの具体的な算出法を解説します(Excelファイル「slim2.xls」のダウンロードはこちらから)(注)。
関連キーワード
デスマーチ | 組み込み開発 | 組み込み開発プロセス改善 | 組み込み開発の混沌から抜け出そう | 現場の声からプロセス改善を深掘りする | 山浦恒央の“くみこみ”な話 | バグ | 開発プロセス | ソフトウェアテスト | システム開発
Copyright © ITmedia, Inc. All Rights Reserved.