工数を見積もり、要員数と期間を計算する
プログラム本数・生産性・工数比率・標準作業日数などから工数を見積もり、必要な要員数・開発期間・要員追加による短縮期間を計算できるようになる。工数と期間の近似式(べき乗根)にも数値を入れて解けるようになる。
工数の見積りは、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日」などの条件を必ず使います。条件が書いてあるのに換算を飛ばすのが、よくある失点です。
【最頻出】本数×1本当たり工数 → 総工数 → 要員数
出題が最も多い型です(本試験系3回・免除8回)。手順は ①種類ごとに「本数×1本当たり工数」を足す → ②ほかの作業の倍率を反映する → ③期間で割る の3段です。
②が勝負どころです。「設計・テストにはコーディングの8倍の工数が掛かる」なら、総工数はコーディングの 1+8=9倍 で、8倍ではありません。コーディング自体の工数を足し忘れないことです。
③で割り切れないときは切り上げます。「少なくとも何人」と聞かれるのは、足りない人数では期間内に終わらないからです。
生産性(1日に何本直せるか)が与えられる型もあります。そのときは「対象の本数 ÷ 1人当たりの処理量」で工数を出し、人日と人月の換算を忘れないようにします。
工程ごとに要員数が違うときは、工程ごとに割って足す
ウォータフォールモデル(設計→製造→テストと、工程を順番に進める開発の進め方)では、前の工程が終わってから次が始まります。だから全体の期間は工程ごとの期間の合計です。
手順は ①全体工数×工数比率で工程ごとの工数を出す → ②工程ごとの要員数で割る → ③足す です。全体工数を最大の要員数や平均の要員数でまとめて割ると、要員の少ない工程が長引く分を見落として間違えます。
要員を増やすと何日・何か月縮むか:生産性と並行作業に注意
要員追加の問題は、追加前と追加後の期間を両方出して差を取るのが基本です。差がつくのは次の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 本当たりのコーディング所要工数(人日) | |
|---|---|---|
| 入力処理 | 20 | 1 |
| 出力処理 | 10 | 3 |
| 計算処理 | 5 | 9 |
ア 8
イ 9
ウ 12
エ 13
解き方と答えを見る
- 種類ごとのコーディング工数:入力 20本×1人日=20人日、出力 10本×3人日=30人日、計算 5本×9人日=45人日
- コーディング工数の合計:20+30+45=95人日
- 設計・テストはコーディングの8倍:95×8=760人日
- 総工数:95+760=855人日(=95×9)
- 要員数:855人日÷95日=9人
答え:9人(イ)
生産性から修正工数(人月)を出す
ア 11.25
イ 180
ウ 225
エ 600
出典:基本情報技術者試験 科目A免除 修了試験 201101 実施分 問54
解き方と答えを見る
- 修正対象の本数:3,000本×30%=900本
- 1人が1か月で直せる本数:0.25本/人日×20日=5本/人月
- 工数:900本÷5本/人月=180人月
答え:180人月(イ)
工数比率と工程ごとの要員数から期間を出す
| 開発工程 | 工数比率 |
|---|---|
| 基本設計 | 10% |
| 詳細設計 | 20% |
| コーディング・単体テスト | 30% |
| 結合テスト | 30% |
| 総合テスト | 10% |
| 開発工程 | 開発要員数 |
|---|---|
| 基本設計 | 2 |
| 詳細設計 | 4 |
| コーディング・単体テスト | 6 |
| 結合テスト | 2 |
| 総合テスト | 2 |
ア 2.5
イ 6.7
ウ 12
エ 14
出典:基本情報技術者試験 科目A免除 修了試験 20260125 実施分 問41
解き方と答えを見る
- 工程ごとの工数:40×10%=4、40×20%=8、40×30%=12、40×30%=12、40×10%=4(人月)
- 工程ごとの期間=工数÷要員数:4÷2=2、8÷4=2、12÷6=2、12÷2=6、4÷2=2(か月)
- 工程は重ならないので合計:2+2+2+6+2=14か月
答え:14か月(エ)
上級技術者を1人追加したときの短縮期間
| 開発工程 | 見積工数(人月) |
|---|---|
| 設計 | 6 |
| プログラム作成・単体テスト | 12 |
| 結合テスト | 12 |
| 合計 | 30 |
| 開発工程 | 上級技術者 | 初級技術者 |
|---|---|---|
| 設計 | 2 | 0 |
| プログラム作成・単体テスト | 2 | 2 |
| 結合テスト | 2 | 0 |
ア 1
イ 2
ウ 3
エ 4
出典:基本情報技術者試験 科目A免除 修了試験 20210124 実施分 問54
解き方と答えを見る
- プログラム作成・単体テストでは初級者の生産性が上級者の半分なので、初級2人=上級1人分
- 追加前:設計 6÷2=3か月、プログラム作成 12÷(2+2×0.5)=12÷3=4か月、結合テスト 12÷2=6か月、合計13か月
- 上級1人追加後:設計 6÷3=2か月、プログラム作成 12÷(3+2×0.5)=12÷4=3か月、結合テスト 12÷3=4か月、合計9か月
- 短縮:13-9=4か月
答え:4か月短縮(エ)
遅れているときに追加する要員数
ア 2
イ 7
ウ 10
エ 20
出典:基本情報技術者試験 科目A免除 修了試験 20171210 実施分 問54
解き方と答えを見る
- 全体の作業量:0.5kステップ/人日×10人×30日=150kステップ
- 残りの作業量:150-30=120kステップを、残り20日で終える
- 実績の生産性:30kステップ÷(10人×10日)=0.3kステップ/人日(予定の0.5より低い)
- 1日に必要な量:120÷20=6kステップ/日
- 必要な人数:6÷0.3=20人、追加は20-10=10人
答え:10人(ウ)
手伝いが入ったときに最大何日縮むか
ア 3
イ 4
ウ 5
エ 6
解き方と答えを見る
- 1人で全部やると:3+1+1+3+4=12日
- 1日目:本人がAを始める(手伝いはまだいない)
- 2〜3日目:本人がAを続けて3日目に終える。手伝いは2日目にBを終える(3日目は並行できる作業が無い)
- 4日目:Cは1本道で2人同時にできないので本人がCを行う(手伝いは空き)
- 5〜6日目:本人がE、手伝いがDを進める(Dは残り1日、Eは残り2日)
- 7日目以降は1人:D 1日+E 2日=3日で、9日目に終了
- 短縮:12-9=3日(手伝いが役立ったのはB 1日+D 2日の3日分)
答え:3日(ア)
標準タスク法で画面作成の工数を見積もる
| 規模\複雑度 | 単純 | 普通 | 複雑 |
|---|---|---|---|
| 小 | 0.4 | 0.6 | 0.8 |
| 中 | 0.6 | 0.9 | 1.0 |
| 大 | 0.8 | 1.0 | 1.2 |
ア 80
イ 85
ウ 101
エ 102
解き方と答えを見る
- 小・単純:0.4×30=12人日
- 中・普通:0.9×40=36人日
- 大・普通:1.0×20=20人日
- 大・複雑:1.2×10=12人日
- 作業工数:12+36+20+12=80人日
- レビューを足す:80+5=85人日
- 管理20%を上乗せ:85×1.2=102人日
答え:102人日(エ)
近似式で工数から期間を出す
ア 16
イ 40
ウ 64
エ 160
解き方と答えを見る
- 4,096の1/3乗(立方根)を求める:16×16=256、256×16=4,096 なので16
- 期間=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ステップは1,000ステップ。
作業をタスクに分け、タスクごとの標準作業日数を積み上げて工数を見積もる方法。
⚠ ファンクションポイント法は機能の数と複雑さを点数化する方法。積み上げる対象が「作業」か「機能」かで見分ける。
過去の実績などから決めた、タスク1単位当たりの目安の工数。
進捗管理など、作業そのものを管理するために掛かる工数。
⚠ 割合で与えられたら、何に掛けるか(レビューを含むか)を問題文で確認する。
入出力やファイルなどの機能の数と複雑さを点数化し、システムの規模を見積もる方法。
⚠ 標準タスク法は作業の積み上げ。FP法は利用者から見た機能の量を数える。
プログラム規模などを計算式に入れて、工数や期間を見積もるモデル。
⚠ 式で計算する点が、表を引いて積み上げる標準タスク法と違う。
全体工数を工程ごとに配分する割合。
設計・製造・テストなどの工程を、前の工程が終わってから順番に進める開発モデル。
⚠ 工程が重ならないので、全体の期間は工程ごとの期間の合計になる。
作業を矢印、作業の区切りを結合点で表し、作業の順序と日数を示す図。
⚠ ガントチャートは横棒で日程を示す表。順序関係を矢印で表すのがアローダイアグラム。
アローダイアグラムで順序関係だけを表す、日数0の作業(破線の矢印)。
開始から終了までの経路のうち最も時間が掛かる経路で、ここが遅れると全体が遅れる。
⚠ 要員追加の問題では、クリティカルパスの長さがそのまま答えになるとは限らない。
3回掛けるとその数になる数で、1/3乗と同じ。
⚠ 1/3を掛ける(÷3)こととは別物。4,096の立方根は16で、4,096÷3ではない。
このレッスンの過去問
- 標準タスク法による工数見積り計算平成25年度 秋期 基本情報技術者試験 午前 問54
- 工数と期間の近似式の計算(べき乗根)平成30年度 春期 基本情報技術者試験 午前 問53
- プログラム本数と工数からの要員数計算平成31年度 春期 基本情報技術者試験 午前 問54
- 工程別工数比率と要員数からの開発期間計算基本情報技術者試験 科目A免除 修了試験 20260125 実施分 問41
- 要員追加による作業日数短縮の計算平成25年度 秋期 基本情報技術者試験 午前 問53