要件定義の進め方

システム開発の大炎上を防ぐために、上流工程(前工程)に位置する「要件定義」について、考えていくブログです。

要件定義書の作り方
PDCAサイクルではなく、PDCサイクルを回そう
あるべきV字モデルについて整理した
スコープを決めてから、QCDの議論をしよう

規模を見積もってから時間を見積もろう

長い間プロジェクトに携わっていると、納期だけが決まっているプロジェクトに出くわすことがある。実現可能性という点には触れられず、納期だけが決まっているのだ。このような場合はたいてい見積が甘く、システム開発は炎上することとなる。今回は、見積のセオリーについて紹介したい。

見積は2種類存在する

見積りというのは2種類存在する。

  • 作業量を見積もる
  • 作業が完了する時期を見積もる

の2つだ。前者の作業量というのは、その作業を1人で行った場合にどのくらいの時間がかかるのかを意味している。例えば、1人で実施して4か月かかる場合は、4か月分の作業量となる。システム開発の業界では、この4か月分の作業量を、4人月と表現したりする。後者の見積は、作業がいつ完了するのかを意味している。作業がいつ完了するかに関しては、前者で見積もった作業量を、何人でこなすのかによって異なる。

規模を見積もらないと、時間を見積もれない

2つの見積で重要なのは、最初に作業量を見積もらなければ、完了時期を見積もれないということだ。作業が完了する時期を決めるには「どのくらいの作業量なのか」という情報と、「何人で作業するのか」という情報が必要だ。何人で作業するのか、というのは、調達の話であり、さほど重要な情報ではない。大切なのは、「どのくらいの作業量なのか」という情報だ。この情報がないと、作業がいつ終わるのかがわからない。作業者を10人集めたとしても、結局の作業量がわからなければ、仕事がいつ終わるのかわからないのだ。

何人でやるのかが決まらないと、時間を見積もれない

したがって、最初に明確化すべきことは、その仕事を一人でやったら何時間かかるのかというところだ。システム開発というのは、要件を決め、設計書を書き、プログラムを書き、テストを実施するもので、必ず、人が作業をすることとなる。仮にそれらを一人でやった場合にどのくらいの時間がかかるのかを明確しなければならない。これらの作業量を明確化することで、初めて、その仕事がいつ終わるのかが推定できるようになる。「どのくらいの作業量なのか?」というのは「規模見積もり」と表現される。「いつ終わるのか」というのは、「時間の見積」と表現される。

これらの規模見積もりと時間の見積の関係を下記図に示す。作業量が4人月であった場合において、1人で作業した場合は、時間の見積は4か月となる。2人で作業した場合は、時間の見積はおおよそ2か月となる。完全に分担が可能な作業の場合は、

時間の見積=規模見積もりした作業量÷作業者数

という式が成り立つ。

f:id:req-definer:20220208224706p:plain

規模の見積もりから時間の見積へ

規模の見積を時間に置き換える作業は、単純であるがおろそかにされがちである。しかしながら、システムの実現性(見積もった作業量が、期間内に入るかどうか)を常に意識するという点で、規模を見積もる作業は極めて重要である。まずは、正しく規模を見積もること、これを意識して仕事をすることで、システム開発の炎上の可能性を少しでも減らすよう、努力してほしいものだ。

結論:納期の話をする前に、まず、規模を見積もろう