「このシステム、いくらで・何か月でできますか?」――開発の現場で最初に答えを求められるのが見積りです。勘や気合いではなく、根拠のある数字で出すための手法が用意されています。この記事ではLOC法・FP法・COCOMO・類推見積り・WBSによる積算を、具体的な数字つきで整理します。
LOC法とファンクションポイント法
見積もりってさ、ベテランが腕組みして『うーん、3か月!』みたいに勘で出すもんだと思ってた。
ふふ、現場でもそういう場面はあるけれど、それだと当たり外れが大きいでしょう?
だから根拠のある計算方法がいくつもあるのよ。
代表的なのが、LOC法とファンクションポイント法ね。
ロック法…?
お料理のコトコト煮込むやつとは違いますよねぇ?
ふふ、それはコトコトですね。
LOCは『行数』のことです。
プログラムが何行になりそうかを予想して、『1行あたり何分かかる』を掛けて工数を出すんですよ。
シンプルなのが長所ですが、弱点もあって、同じ機能でもプログラム言語によって行数が大きく変わるんです。
たとえばJavaで100行かかる処理が、Pythonなら20行で書けることもあります。
え、同じことをするのに行数が5倍も違うのぉ?
それじゃ見積もりがブレちゃいますねぇ…
そこなのよ。
LOC法は『作る前は正確な行数が読みにくい』『言語に左右される』のが弱点。
そこで登場するのがFP法。
こちらは行数ではなく、画面・帳票・データの入出力といった『機能の数と複雑さ』で測るの。
だから使う言語が変わっても見積もりがブレにくいのよ。
補足すると、FP法で数えるのは大きく5種類です。
外部入力、外部出力、外部照会、内部論理ファイル、外部インタフェースファイル。
これらを数えて複雑度で重みづけし、合計したのがファンクションポイントです。
なるほど、行数じゃなくて『機能を何個作るか』で数えるんだ。
ユーザー目線っぽくて分かりやすいじゃん。
鋭いわね。
FP法は『利用者から見える機能』で測るから、発注側にも説明しやすいの。
簡単な例で感覚をつかみましょう。
検索機能が3個・登録機能が2個・帳票が1個あって、複雑度の重みを足したら合計60FPになったとするわね。
1FP作るのに0.5人日かかるチームなら、工数は60×0.5で30人日、と見積もれるのよ。
わぁ、機能の数からちゃんとお仕事の量が出ましたぁ。
COCOMOによる工数・期間の算出
あとさ、COCOMOってのも聞いたことある。
あれは何が違うの?
COCOMOはBoehm(ベーム)博士が提唱したモデルで、『これくらいの規模(=何千行)になりそう』という予想を入力にして、そこへ難易度やチームの能力といった要因を掛け合わせ、工数や開発期間を計算式で導き出します。
LOCやFPで出した規模を、もう一歩進めて工数に変換する道具、と捉えると整理しやすいですね。
類推見積りとWBSによる積算
見積りは1つの方法に頼らないのが大事よ。
ほかにもよく使うのが2つ。
1つは類推見積り。
『前に似たのを3か月で作ったから今回も3か月くらい』と、過去の実績から推測するの。
早いけれど、似た事例がないと精度が落ちるわ。
それ、まさにベテランの『うーん、3か月!』のやつじゃん!
勘っぽく見えて、実は過去の経験が根拠なんだね。
ふふ、いいところに気づいたわね。
もう1つがWBSを使った積算見積り。
名前は難しそうだけど中身は素朴で、やることを『大きなかたまり→中くらい→細かい作業』へとどんどん分解した一覧表のことなの。
たとえば文化祭の準備を『装飾』『出し物』『広報』に分け、装飾をさらに『買い出し』『工作』に分ける――あの分け方と同じよ。
そして細かく分けた一つひとつの作業に『これは2人日』『これは0.5人日』と工数を見積もり、末端から足し上げて全体を出します。
これがボトムアップ見積りの代表例ですね。
細かく見るぶん精度は高いのですが、作業を洗い出す手間がかかります。
人月と人月の神話
ところで工数って『人日』とか『人月』で言うよね。
あの『人月』ってどう読むの?
『にんげつ』と読むのよ。
人月は『1人が1か月でこなす仕事量』を1と数える単位。
だから100人月の仕事は、10人なら10か月、という計算になるわ。
じゃあ100人月なら、100人集めれば1か月で終わるじゃん!
天才かも、あたし。
そう単純にいかないのが落とし穴なんです。
人を増やすほど連絡や打ち合わせの手間――コミュニケーションコストが膨らんで、かえって遅くなることがあります。
これを指摘した有名な言葉が人月の神話ですね。
あらぁ…人手は多ければいいってものじゃないんですねぇ。
お料理も、台所に人が多すぎるとぶつかっちゃいますもんねぇ。
うまいたとえね、まさにそれよ。
最後に整理するわね。
規模を測るのがLOC法(行数・言語に弱い)とFP法(機能の数・言語に強い)。
その規模から工数を導くのがCOCOMO。
手早く出すなら過去実績の類推見積り、じっくり正確にならWBSで積み上げるボトムアップ。
そして工数の単位は人月で、人月の神話に注意――この骨組みを押さえれば見積りは怖くないわ。
確認クイズ
ソフトウェアの規模を、画面や帳票などの機能の数と複雑度から算出する見積り手法はどれか。
- LOC法
- ファンクションポイント法
- 類推見積り
- COCOMO
こたえを見る
正解: 2. ファンクションポイント法
正解はファンクションポイント法(FP法)。外部入力・外部出力・外部照会・内部論理ファイル・外部インタフェースファイルの数と複雑度から規模を算出し、プログラム言語に依存しない点が特徴です。LOC法はコードの行数で測るため言語に左右されます。類推見積りは過去の類似プロジェクトの実績から推測する方法、COCOMOは規模から工数や期間を計算するモデルで、いずれも『機能の数と複雑度から規模を出す』手法ではありません。