資格道場 › レッスン一覧 › プロジェクトマネジメント
プロジェクトマネジメント・3/5・16分

工数を見積もり、要員数と期間を計算する

ゴール

プログラム本数・生産性・工数比率・標準作業日数などから工数を見積もり、必要な要員数・開発期間・要員追加による短縮期間を計算できるようになる。工数と期間の近似式(べき乗根)にも数値を入れて解けるようになる。

工数の見積りは、PM が「何人で何か月かかるか」を決める出発点です。科目Aでは形を変えて繰り返し出題されます。多くは『工数=要員数×期間』という1本の式で解け(標準タスク法と近似式は別の計算)、解き方を覚えれば安定して取れる得点源です。

このレッスンで稽古する(用語チェック・過去問)

結論:単位をそろえて、掛けるか割るか

このレッスンの計算の多くは 工数=要員数×期間 という1本の式で解けます。分からない1つを、残りの2つから掛け算か割り算で出すだけです。

ただし例外が2つあります。標準タスク法は「標準作業日数×画面数の合計+レビュー、そこに管理の割合を上乗せ」、近似式は「期間=2.5×工数^(1/3)」というべき乗根の計算です。どちらもこの式は使いません。

求めるもの 式
工数 要員数 × 期間
要員数 工数 ÷ 期間(割り切れなければ切り上げ)
期間 工数 ÷ 要員数

工数・人日・人月:まず単位を押さえる

工数は作業の総量で、「何人が何日働けば終わるか」を掛け算した値です。単位は人日(1人が1日でこなす量)か人月(1人が1か月でこなす量)を使います。

たとえば引越しの荷造りが「10人日」なら、1人で10日、2人なら5日、5人なら2日で終わります。量(工数)は同じでも、人を増やせば期間が縮むというのがこの単元の考え方です。実際の現場では人を増やすほど打合せが増えて比例しませんが、試験では問題文の条件どおり比例として計算します。

用語 何を表すか 単位の例
工数 作業の総量 人日・人月
期間 カレンダー上でかかる長さ 日・か月
要員数 同時に働く人数 人
生産性 1人が単位時間にこなす量 本/人日、kステップ/人日

人日と人月を換算するときは、問題文の「1か月当たり20日」などの条件を必ず使います。条件が書いてあるのに換算を飛ばすのが、よくある失点です。

量(面積)はどれも同じ10人日1人10日で終わる2人5日人を増やすと短く5人2日縦=人数 横=日数 面積=工数
同じ10人日でも、人数(縦)を増やすと日数(横)が縮む。面積が工数。

【最頻出】本数×1本当たり工数 → 総工数 → 要員数

出題が最も多い型です(本試験系3回・免除8回)。手順は ①種類ごとに「本数×1本当たり工数」を足す → ②ほかの作業の倍率を反映する → ③期間で割る の3段です。

②が勝負どころです。「設計・テストにはコーディングの8倍の工数が掛かる」なら、総工数はコーディングの 1+8=9倍 で、8倍ではありません。コーディング自体の工数を足し忘れないことです。

③で割り切れないときは切り上げます。「少なくとも何人」と聞かれるのは、足りない人数では期間内に終わらないからです。

生産性(1日に何本直せるか)が与えられる型もあります。そのときは「対象の本数 ÷ 1人当たりの処理量」で工数を出し、人日と人月の換算を忘れないようにします。

総工数=コーディングの9倍1コーディング設計・テスト=8倍1+8=9倍8倍で計算 ✗9倍で計算 ○÷期間 → 割り切れなければ切り上げ
「設計・テストはコーディングの8倍」なら、コーディング自体の1を足して総工数は9倍。

工程ごとに要員数が違うときは、工程ごとに割って足す

ウォータフォールモデル(設計→製造→テストと、工程を順番に進める開発の進め方)では、前の工程が終わってから次が始まります。だから全体の期間は工程ごとの期間の合計です。

手順は ①全体工数×工数比率で工程ごとの工数を出す → ②工程ごとの要員数で割る → ③足す です。全体工数を最大の要員数や平均の要員数でまとめて割ると、要員の少ない工程が長引く分を見落として間違えます。

全体の期間=工程ごとの期間の合計縦=要員数 横=期間 面積=工数テストは人が少なく長引く設計製造テスト設計の期間製造の期間テストの期間3つを足したものが全体の期間
ウォータフォールでは工程が順番に進むので、工程ごとに「工数÷要員数」で期間を出して足す。

要員を増やすと何日・何か月縮むか:生産性と並行作業に注意

要員追加の問題は、追加前と追加後の期間を両方出して差を取るのが基本です。差がつくのは次の3点です。

  • 生産性が違う人がいる:初級者の生産性が上級者の半分なら、初級者2人を上級者1人分として数えます。
  • 実績の生産性を使う:予定では0.5でも実際の進み具合が遅いなら、残りの作業は実績の生産性で計算します。「追加要員の生産性は現在の要員と同じ」なら、追加要員にも実績値を使います。
  • 2人で同時にできない作業がある:手伝いが来ても、その時点で並行して進められる作業が無ければ短縮になりません。

最後の型はアローダイアグラム(作業の順番と日数を矢印でつないだ図)を読みます。平成25年度秋期の問題の図は次のとおりです(破線はダミー作業=順序だけを表す、日数0の作業)。

flowchart LR
  S(("開始")) -->|"A 3日"| N1(("1"))
  S -->|"B 1日"| N2(("2"))
  N1 -.->|"ダミー"| N2
  N2 -->|"C 1日"| N3(("3"))
  N3 -->|"D 3日"| N4(("4"))
  N3 -->|"E 4日"| N5(("終了"))
  N4 -.->|"ダミー"| N5

A と B、D と E は並行できますが、C は1本道です。手伝いが役に立つのは並行できる作業があるときだけ、と考えて1日ずつ数えます。

標準タスク法:表を引いて足し、レビューを足し、管理を上乗せ

標準タスク法は、作業を細かいタスク(画面1枚の作成など)に分け、タスクごとの標準作業日数(過去の実績から決めた目安の日数)を積み上げて見積もる方法です。計算順は ①区分ごとに標準作業日数×画面数を合計 → ②レビュー工数を足す → ③管理工数(割合)を上乗せ です。

管理が「レビューを含めた作業工数の20%」なら、②まで足した値に1.2を掛けます。何に割合を掛けるかを問題文で確認するのがポイントです。

見積り手法 何を数えるか
標準タスク法 作業(タスク)ごとの標準工数を積み上げる
ファンクションポイント法 入出力・ファイルなど機能の数と複雑さを点数化する
COCOMO などの計算式モデル プログラム規模などを式に入れて工数・期間を出す

工数から期間を出す近似式:べき乗根を落ち着いて計算

「期間=2.5×工数^(1/3)」のような式が出たら、工数の1/3乗=立方根(3回掛けるとその数になる数)を求めて2.5を掛けるだけです。1/3を掛けたり3で割ったりするのは誤りです。16×16×16=4,096 のように、きりのいい数を3回掛けて逆算すると速く確かめられます。

1/3乗=3回掛けるとその数になる数16×16×16=4,0964,096 の1/3乗(立方根)=16×1/3 や ÷3 は誤り ✗立方根に2.5を掛ける ○
工数の1/3乗は「3回掛けるとその数になる数」。16×16×16=4,096 なので 4,096 の1/3乗は16。
例題 1

プログラム本数から必要な要員数を出す

システムを構成するプログラムの本数とプログラム 1 本当たりのコーディング所要工数が表のとおりであるとき,システムを 95 日間で開発するには少なくとも何人の要員が必要か。ここで,システムの開発にはコーディングのほかに,設計及びテストの作業が必要であり,それらの作業にはコーディング所要工数の 8 倍の工数が掛かるものとする。
プログラムの本数プログラム 1 本当たりのコーディング所要工数(人日)
入力処理201
出力処理103
計算処理59

ア 8
イ 9
ウ 12
エ 13

出典:平成31年度 春期 基本情報技術者試験 午前 問54

解き方と答えを見る
  1. 種類ごとのコーディング工数:入力 20本×1人日=20人日、出力 10本×3人日=30人日、計算 5本×9人日=45人日
  2. コーディング工数の合計:20+30+45=95人日
  3. 設計・テストはコーディングの8倍:95×8=760人日
  4. 総工数:95+760=855人日(=95×9)
  5. 要員数:855人日÷95日=9人

答え:9人(イ)

例題 2

生産性から修正工数(人月)を出す

システム変更に際して,保有する3,000本のプログラムのうちで修正対象となるプログラムは全体の30%であることが分かった。修正に必要な工数は何人月になるか。ここで,1日に1人のプログラマが修正できるプログラム本数は0.25本とする。プログラマは1か月当たり20日間作業するものとする。

ア 11.25
イ 180
ウ 225
エ 600

出典:基本情報技術者試験 科目A免除 修了試験 201101 実施分 問54

解き方と答えを見る
  1. 修正対象の本数:3,000本×30%=900本
  2. 1人が1か月で直せる本数:0.25本/人日×20日=5本/人月
  3. 工数:900本÷5本/人月=180人月

答え:180人月(イ)

例題 3

工数比率と工程ごとの要員数から期間を出す

ある会社におけるウォータフォールモデルによるシステム開発の標準では,開発工程ごとの工数比率を表1のとおりに配分することになっている。全体工数が40人月と見積もられるシステム開発に対し,表2に示す開発要員数を割り当てることになった。このシステム開発に要する期間は何か月になるか。
表1
開発工程工数比率
基本設計10%
詳細設計20%
コーディング・単体テスト30%
結合テスト30%
総合テスト10%
表2
開発工程開発要員数
基本設計2
詳細設計4
コーディング・単体テスト6
結合テスト2
総合テスト2

ア 2.5
イ 6.7
ウ 12
エ 14

出典:基本情報技術者試験 科目A免除 修了試験 20260125 実施分 問41

解き方と答えを見る
  1. 工程ごとの工数:40×10%=4、40×20%=8、40×30%=12、40×30%=12、40×10%=4(人月)
  2. 工程ごとの期間=工数÷要員数:4÷2=2、8÷4=2、12÷6=2、12÷2=6、4÷2=2(か月)
  3. 工程は重ならないので合計:2+2+2+6+2=14か月

答え:14か月(エ)

例題 4

上級技術者を1人追加したときの短縮期間

あるシステムの設計から結合テストまでの作業について,開発工程ごとの見積工数を表 1 に,開発工程ごとの上級技術者と初級技術者の要員割当てを表 2 に示す。上級技術者は,初級技術者に比べて,プログラム作成・単体テストにおいて 2 倍の生産性を有する。表 1 の見積工数は,上級技術者の生産性を基に算出している。 全ての開発工程に対して,上級技術者を 1 人追加して割り当てると,この作業に要する期間は何か月短縮できるか。ここで,開発工程の期間は重複させないものとし,要員全員が 1 か月当たり 1 人月の工数を投入するものとする。
表 1:
開発工程見積工数(人月)
設計6
プログラム作成・単体テスト12
結合テスト12
合計30
表 2(要員割当て(人)):
開発工程上級技術者初級技術者
設計20
プログラム作成・単体テスト22
結合テスト20

ア 1
イ 2
ウ 3
エ 4

出典:基本情報技術者試験 科目A免除 修了試験 20210124 実施分 問54

解き方と答えを見る
  1. プログラム作成・単体テストでは初級者の生産性が上級者の半分なので、初級2人=上級1人分
  2. 追加前:設計 6÷2=3か月、プログラム作成 12÷(2+2×0.5)=12÷3=4か月、結合テスト 12÷2=6か月、合計13か月
  3. 上級1人追加後:設計 6÷3=2か月、プログラム作成 12÷(3+2×0.5)=12÷4=3か月、結合テスト 12÷3=4か月、合計9か月
  4. 短縮:13-9=4か月

答え:4か月短縮(エ)

例題 5

遅れているときに追加する要員数

10人が0.5kステップ/人日の生産性で作業するとき,30日間を要するプログラミング作業がある。10日目が終了した時点で作業が終了したステップ数は,10人の合計で30kステップであった。予定の30日間でプログラミングを完了するためには,少なくとも何名の要員を追加すればよいか。ここで,追加する要員の生産性は,現在の要員と同じとする。

ア 2
イ 7
ウ 10
エ 20

出典:基本情報技術者試験 科目A免除 修了試験 20171210 実施分 問54

解き方と答えを見る
  1. 全体の作業量:0.5kステップ/人日×10人×30日=150kステップ
  2. 残りの作業量:150-30=120kステップを、残り20日で終える
  3. 実績の生産性:30kステップ÷(10人×10日)=0.3kステップ/人日(予定の0.5より低い)
  4. 1日に必要な量:120÷20=6kステップ/日
  5. 必要な人数:6÷0.3=20人、追加は20-10=10人

答え:10人(ウ)

例題 6

手伝いが入ったときに最大何日縮むか

図は作業 A〜E で構成されるプロジェクトのアローダイアグラムである。全ての作業を 1 人で実施する予定だったが,2 日目から 6 日目までの 5 日間は,別の 1 人が手伝うことになった。手伝いがない場合と比較し,開始から終了までの日数は最大で何日短くなるか。ここで,一つの作業を 2 人で同時には行えないが,他者から引き継ぐことはできる。また,引継ぎによる作業日数の増加はないものとする。
アローダイアグラム(左から右へ)。結合点を ○ で表す。 開始点 → 作業A(3日)→ 結合点1 開始点 → 作業B(1日)→ 結合点2 結合点1 ⇢(ダミー作業・破線)→ 結合点2 結合点2 → 作業C(1日)→ 結合点3 結合点3 → 作業D(3日)→ 結合点4 結合点3 → 作業E(4日)→ 結合点5 結合点4 ⇢(ダミー作業・破線)→ 結合点5 凡例:○ ─作業/日数→ ○,- - - ->:ダミー作業

ア 3
イ 4
ウ 5
エ 6

出典:平成25年度 秋期 基本情報技術者試験 午前 問53

解き方と答えを見る
  1. 1人で全部やると:3+1+1+3+4=12日
  2. 1日目:本人がAを始める(手伝いはまだいない)
  3. 2〜3日目:本人がAを続けて3日目に終える。手伝いは2日目にBを終える(3日目は並行できる作業が無い)
  4. 4日目:Cは1本道で2人同時にできないので本人がCを行う(手伝いは空き)
  5. 5〜6日目:本人がE、手伝いがDを進める(Dは残り1日、Eは残り2日)
  6. 7日目以降は1人:D 1日+E 2日=3日で、9日目に終了
  7. 短縮:12-9=3日(手伝いが役立ったのはB 1日+D 2日の3日分)

答え:3日(ア)

例題 7

標準タスク法で画面作成の工数を見積もる

全部で 100 画面から構成されるシステムの画面作成作業において,規模が小かつ複雑度が単純な画面が 30,中規模かつ普通の画面が 40,大規模かつ普通の画面が 20,大規模かつ複雑な画面が 10 である場合の工数を,表の標準作業日数を用いて標準タスク法で見積もると何人日になるか。ここで,全部の画面のレビューに 5 人日を要し,作業の管理にレビューを含めた作業工数の 20%を要するものとする。
〔画面当たりの標準作業日数〕 単位 人日
規模\複雑度単純普通複雑
小0.40.60.8
中0.60.91.0
大0.81.01.2

ア 80
イ 85
ウ 101
エ 102

出典:平成25年度 秋期 基本情報技術者試験 午前 問54

解き方と答えを見る
  1. 小・単純:0.4×30=12人日
  2. 中・普通:0.9×40=36人日
  3. 大・普通:1.0×20=20人日
  4. 大・複雑:1.2×10=12人日
  5. 作業工数:12+36+20+12=80人日
  6. レビューを足す:80+5=85人日
  7. 管理20%を上乗せ:85×1.2=102人日

答え:102人日(エ)

例題 8

近似式で工数から期間を出す

システム開発において,工数(人月)と期間(月)の関係が次の近似式で示されるとき,工数が 4,096 人月のときの期間は何か月か。 期間 = 2.5 × 工数^(1/3)
期間 = 2.5 × 工数^(1/3)(工数の 1/3 乗)

ア 16
イ 40
ウ 64
エ 160

出典:平成30年度 春期 基本情報技術者試験 午前 問53

解き方と答えを見る
  1. 4,096の1/3乗(立方根)を求める:16×16=256、256×16=4,096 なので16
  2. 期間=2.5×16=40か月

答え:40か月(イ)

要点(試験直前に読む)

  • 多くは「工数=要員数×期間」。要員数が割り切れなければ切り上げる(標準タスク法と近似式は別の計算)
  • 「ほかの作業はコーディングのN倍」なら、総工数はコーディングの(N+1)倍
  • 工程が重ならないなら、工程ごとに「工数÷要員数」を出して足す
  • 生産性が違う人は換算する(初級2人=上級1人など)。遅れているときの残り作業は実績の生産性で計算する
  • 標準タスク法:表×個数の合計 → レビューを足す → 管理の割合を掛ける
  • 近似式の1/3乗は立方根。選択肢から3回掛けて逆算する

ひっかけ

  • 「設計・テストは8倍」で8倍だけ使うと 760÷95=8人(ア)になる。コーディング分を足して9倍にする
  • 全体工数をピーク要員6人で割ると 40÷6≒6.7か月(イ)になる。工程ごとに割って足す
  • 遅れの問題で予定の生産性0.5を使うと12人必要、追加2人(ア)になる。実績の0.3で計算する
  • 標準タスク法でレビューや管理を足し忘れると80(ア)や85(イ)になる。問題文の条件を全部使ったか確認する
  • 手伝い期間5日をそのまま短縮日数と考える(ウ)、短縮後の期間を答える、1/3乗を÷3にする、はどれも誤り。何を聞かれているかを最後に読み直す

用語(17)

工数 こうすう
作業の総量を、人数×時間(人日・人月)で表したもの。
⚠ 期間と混同しやすい。工数は作業量、期間はカレンダー上の長さで、工数÷要員数=期間。
人日 にんにち
1人が1日でこなす作業量を1とする工数の単位。
⚠ 人月との換算は問題文の「1か月当たり◯日」を使う(例:20日なら20人日=1人月)。
人月 にんげつ
1人が1か月でこなす作業量を1とする工数の単位。
⚠ 人日と取り違えると桁がずれる。答えの単位を必ず確認する。
要員数 よういんすう
作業に同時に割り当てる人数。
⚠ 工数÷期間で求め、「少なくとも何人」なら端数は切り上げる。
生産性 せいさんせい
1人が単位時間にこなせる作業量(本/人日、kステップ/人日など)。
⚠ 予定の生産性と実績の生産性。進捗が遅れているときの残り作業は実績の値で計算する。
ステップ(kステップ) ステップ(キロステップ)
プログラムの規模を行数で数える単位で、kステップは1,000ステップ。
標準タスク法 ひょうじゅんタスクほう
作業をタスクに分け、タスクごとの標準作業日数を積み上げて工数を見積もる方法。
⚠ ファンクションポイント法は機能の数と複雑さを点数化する方法。積み上げる対象が「作業」か「機能」かで見分ける。
標準作業日数 ひょうじゅんさぎょうにっすう
過去の実績などから決めた、タスク1単位当たりの目安の工数。
管理工数 かんりこうすう
進捗管理など、作業そのものを管理するために掛かる工数。
⚠ 割合で与えられたら、何に掛けるか(レビューを含むか)を問題文で確認する。
ファンクションポイント法 ファンクションポイントほう(Function Point)
入出力やファイルなどの機能の数と複雑さを点数化し、システムの規模を見積もる方法。
⚠ 標準タスク法は作業の積み上げ。FP法は利用者から見た機能の量を数える。
COCOMO COnstructive COst MOdel(ココモ)
プログラム規模などを計算式に入れて、工数や期間を見積もるモデル。
⚠ 式で計算する点が、表を引いて積み上げる標準タスク法と違う。
工数比率 こうすうひりつ
全体工数を工程ごとに配分する割合。
ウォータフォールモデル ウォータフォールモデル(waterfall model)
設計・製造・テストなどの工程を、前の工程が終わってから順番に進める開発モデル。
⚠ 工程が重ならないので、全体の期間は工程ごとの期間の合計になる。
アローダイアグラム アローダイアグラム(arrow diagram)
作業を矢印、作業の区切りを結合点で表し、作業の順序と日数を示す図。
⚠ ガントチャートは横棒で日程を示す表。順序関係を矢印で表すのがアローダイアグラム。
ダミー作業 ダミーさぎょう
アローダイアグラムで順序関係だけを表す、日数0の作業(破線の矢印)。
クリティカルパス クリティカルパス(critical path)
開始から終了までの経路のうち最も時間が掛かる経路で、ここが遅れると全体が遅れる。
⚠ 要員追加の問題では、クリティカルパスの長さがそのまま答えになるとは限らない。
立方根 りっぽうこん
3回掛けるとその数になる数で、1/3乗と同じ。
⚠ 1/3を掛ける(÷3)こととは別物。4,096の立方根は16で、4,096÷3ではない。

このレッスンの過去問

このレッスンで稽古する