開発規模と工数の見積り
開発規模・生産性・工数の関係をつかみ、ファンクションポイント法の定義問題と、工数・総工数・要員数・期間を求める計算問題を自力で解けるようになる。
見積りの計算問題は、掛け算・割り算と「何に何%を掛けるか」の読み取りだけで解けるので、確実に取れる得点源です。実務でも「この案件は何人で何か月か」を説明する基本の考え方になります。
このレッスンで稽古する(用語チェック・過去問)結論:工数=規模÷生産性。ここからすべてが始まる
見積りの公式はひとつだけです。工数=開発規模÷生産性。規模から工数を出すには、生産性(1人が一定期間にこなせる量)が必ず要ります。
- 開発規模:作るものの大きさ。ファンクションポイント(FP)、プログラムの行数、画面数などで表す
- 生産性:1人月あたりにこなせる規模。例「1人月で10FP」
- 工数:仕事の量。単位は人月(1人が1か月働く量)や人日(1人が1日働く量)
たとえば引越しの段ボールが100箱(規模)あって、1人が1日20箱運べる(生産性)なら、作業量は5人日(工数)です。何日で終わるか(期間)や何人呼ぶか(要員数)は、工数が決まったあとで決めます。
全体の流れ(この順で計算する)
試験の計算問題は、次の流れのどこかを切り取って出題されます。
flowchart LR
A["開発規模(FP・画面数)"] --> B["÷生産性 または ×1件あたり工数"]
B --> C["開発工数"]
C --> D["+レビュー・導入・教育など"]
D --> E["+管理工数(合計の○%)"]
E --> F["総工数"]
F --> G["工程ごとに配分"]
G --> H["要員数=工数÷期間"]
工数=要員数×期間なので、要員数=工数÷期間、期間=工数÷要員数と、どの向きにも変形できます。
ファンクションポイント法とは(最頻出)
ファンクションポイント法(FP法)は、ソフトウェアの機能の数を数えて点数化し、複雑さで補正して規模を見積もる方法です。行数ではなく、利用者から見た機能(入力画面、帳票、保存するデータなど)で測るのが特徴です。
数える機能は5種類あります。
| 種類 | ざっくり言うと |
|---|---|
| 外部入力 | 外からデータを受け取る機能(登録画面など) |
| 外部出力 | 加工した結果を外へ出す機能(帳票など) |
| 外部照会 | 入力に応じてそのまま検索結果を返す機能 |
| 内部論理ファイル | そのシステム自身が持ち、更新するデータ |
| 外部インタフェースファイル | 他システムが持ち、参照だけするデータ |
計算は FP値=Σ(個数×重み付け係数)×補正係数 です。補正前の合計を未調整FPと呼びます。
押さえるべき点は、FP法が出すのは規模であって、工数や工期そのものではないことです。工数は、そのFP値を生産性で割って出します。
見積り手法の見分け方(選択肢はこの4つ)
FP法の定義問題では、他の見積り手法の説明が誤りの選択肢に並びます。キーワードで見分けます。
| 手法 | 何を使うか | 選択肢の決め手となる言葉 |
|---|---|---|
| ファンクションポイント法 | 入出力・ファイル数などの機能の数と複雑さ | 「入出力データ数やファイル数」「複雑さで調整」→規模を出す |
| 類推見積法 | 過去の似たシステムの実績 | 「過去の類似」「相違点を調べ」 |
| 標準タスク法(WBS積上げ) | 作業を細かく分け、基準値を当てて合計 | 「単位作業項目まで分解」「基準値」「積算」 |
| COCOMO | 規模(行数)を式に入れる | 「規模が分かっていることを前提」に「工数と工期」を出す |
| プログラムステップ法 | プログラムの行数(ステップ数) | 「ステップ数を積算」 |
FP法は規模を求める側、COCOMOは規模を入力にする側です。ここを逆に覚えないようにしましょう。
計算問題の型は4つ
- FP値を出す:個数×係数の合計に補正係数を掛ける(掛け忘れ注意)
- FPから総工数:FP÷生産性→開発工数。付帯作業を足し、管理○%を上乗せする
- 画面数から総工数:画面数×1画面あたり工数を合計(標準タスク法)。レビューを足し、管理○%を上乗せする
- 工程別の配分:工程ごとの工数÷その工程の期間=要員数。または工数÷要員数=期間
2と3で差がつくのは、管理○%を何に掛けるかです。問題文に「レビューを含めた」「開発と導入・教育を合わせた」とあれば、足し終わった合計に掛けます。
ピーク要員数は「工数最大の工程」とは限らない
要員数は工数÷期間です。工数が一番大きい工程でも、期間が長ければ1か月あたりの人数は少なくなります。
倉庫の荷物でたとえると、量が一番多い日より「量のわりに締切が短い日」のほうが人手が要ります。全工程について割り算をして、最大のものを選びましょう。
試験での問われ方
- 定義問題(FP法):4つの選択肢から「機能の数+複雑さの補正で規模」を選ぶ。類推法・標準タスク法・COCOMO・ステップ法が誤りの選択肢になる
- 前提を問う問題:規模から工数を出すのに必要なのは生産性。期間・要員数・工程配分比率は工数を出したあとに使う
- 計算問題:誤りの選択肢は「補正係数を掛け忘れた値」「管理工数を一部にしか掛けなかった値」「全体の数字で割った値」で作られる。途中の値がそのまま選択肢にあっても、すぐに選ばない
FP値を求める(補正係数を忘れない)
| ユーザファンクションタイプ | 個数 | 重み付け係数 |
|---|---|---|
| 外部入力 | 1 | 4 |
| 外部出力 | 2 | 5 |
| 内部論理ファイル | 1 | 10 |
ア 18
イ 24
ウ 30
エ 32
解き方と答えを見る
- 個数×重み付け係数を機能ごとに出す:外部入力 1×4=4、外部出力 2×5=10、内部論理ファイル 1×10=10
- 合計して未調整FPを出す:4+10+10=24
- 補正係数を掛ける:24×0.75=18
答え:ア:18(24は補正係数を掛け忘れた値)
FPから総工数を求める(管理○%を何に掛けるか)
ア 51
イ 60
ウ 65
エ 66
解き方と答えを見る
- 開発工数=規模÷生産性=500FP÷10FP/人月=50人月
- 導入・教育を足す:50+10=60人月
- 管理工数は「開発と導入・教育を合わせた工数」の10%:60×0.1=6人月
- 全工数=60+6=66人月
答え:エ:66人月(60は管理を忘れた値、65は管理10%を開発50にだけ掛けた値)
画面数と1画面あたり工数から総工数を求める
| 規模\複雑度 | 単純 | 普通 | 複雑 |
|---|---|---|---|
| 小 | 0.4 | 0.6 | 0.8 |
| 中 | 0.6 | 0.9 | 1.0 |
| 大 | 0.8 | 1.0 | 1.2 |
ア 80
イ 85
ウ 101
エ 102
解き方と答えを見る
- 区分ごとに画面数×1画面あたり工数:小・単純 30×0.4=12、中・普通 40×0.9=36、大・普通 20×1.0=20、大・複雑 10×1.2=12
- 作成工数を合計:12+36+20+12=80人日
- レビューと修正を足す:80+5=85人日
- 管理工数はレビュー込みの85の20%:85×0.2=17人日
- 総工数=85+17=102人日
答え:エ:102人日(85は管理を忘れた値、101は管理20%を作成工数80にだけ掛けた値:80×1.2+5)
工数配分と期間配分からピーク要員数を求める
| 項目\工程名 | 要件定義 | 設計 | 開発・テスト | システムテスト |
|---|---|---|---|---|
| 工数配分(%) | 16 | 33 | 42 | 9 |
| 期間配分(%) | 20 | 30 | 40 | 10 |
ア 18
イ 20
ウ 21
エ 22
解き方と答えを見る
- 工程ごとの工数=200人月×工数配分:要件定義 32、設計 66、開発・テスト 84、システムテスト 18(人月)
- 工程ごとの期間=10か月×期間配分:要件定義 2、設計 3、開発・テスト 4、システムテスト 1(か月)
- 要員数=工数÷期間:要件定義 32÷2=16人、設計 66÷3=22人、開発・テスト 84÷4=21人、システムテスト 18÷1=18人
- 最大は設計の22人
答え:エ:22人(工数が最大の開発・テストは21人でピークではない)
工数比率と要員数から開発期間を求める
| 開発工程 | 工数比率 |
|---|---|
| 基本設計 | 10% |
| 詳細設計 | 20% |
| コーディング・単体テスト | 30% |
| 結合テスト | 30% |
| 総合テスト | 10% |
| 開発工程 | 開発要員数 |
|---|---|
| 基本設計 | 2 |
| 詳細設計 | 4 |
| コーディング・単体テスト | 6 |
| 結合テスト | 2 |
| 総合テスト | 2 |
ア 2.5
イ 6.7
ウ 12
エ 14
出典:基本情報技術者試験 科目A免除 修了試験 20240728 実施分 問41
解き方と答えを見る
- 工程ごとの工数=40人月×工数比率:基本設計 4、詳細設計 8、コーディング・単体テスト 12、結合テスト 12、総合テスト 4(人月)
- 期間=工数÷要員数:基本設計 4÷2=2、詳細設計 8÷4=2、コーディング・単体テスト 12÷6=2、結合テスト 12÷2=6、総合テスト 4÷2=2(か月)
- 工程は順に進むので期間を合計:2+2+2+6+2=14か月
答え:エ:14か月(全体工数40を要員数6で割った6.7は誤り)
特定工程に必要な要員数を求める
| 工程 | 工数比率(%) | 期間比率(%) |
|---|---|---|
| 仕様設計 | 35 | 50 |
| プログラム作成 | 45 | 25 |
| テスト | 20 | 25 |
ア 7
イ 8
ウ 10
エ 18
出典:基本情報技術者試験 科目A免除 修了試験 20140727 実施分 問53
解き方と答えを見る
- プログラム作成の工数=120人月×45%=54人月
- プログラム作成の期間=12か月×25%=3か月
- 必要要員数=54÷3=18名
答え:エ:18名(全体の120÷12=10は工程ごとの比率を無視した値)
要点(試験直前に読む)
- 工数=規模÷生産性。規模から工数を出すのに必要な情報は「生産性」。
- FP法=入出力・照会・ファイルの数×重み、複雑さで補正して「規模」を出す方法。類推・標準タスク・COCOMO・ステップ法の説明は誤り。
- FP値=Σ(個数×重み付け係数)×補正係数。補正係数を最後に必ず掛ける。
- 総工数は「作成工数→付帯作業を足す→その合計に管理○%を上乗せ」の順で出す。
- 要員数=工数÷期間、期間=工数÷要員数。工程ごとに計算し、ピークは全工程の割り算の最大で決める。
ひっかけ
- 補正係数の掛け忘れ(FP問題の24)→ 合計を出したら最後に補正係数を掛けたか確かめる。
- 管理○%を一部にしか掛けない(65や101)→ 問題文の「〜を含めた」「〜を合わせた」の範囲を読み、足し終えた合計に掛ける。
- 工数が最大の工程をピーク要員と思い込む → 工程ごとに工数÷期間を計算して比べる。
- 全体工数を特定の要員数(最大の6など)や全体期間で割らせる → 工程ごとに工数÷要員数(または工数÷期間)を出し、期間なら合計する。
- FP法の説明に「規模が分かっている前提で工数と工期」(COCOMO)や「過去の類似」(類推法)を混ぜる → FP法は機能の数で「規模」を出す方法、と覚える。
用語(16)
仕事の量を「人数×期間」で表したもので、人月や人日で数える。
⚠ 期間(何か月かかるか)と混同しやすい。工数=要員数×期間で、10人月は「10人で1か月」でも「2人で5か月」でもよい。
1人が1か月働いたときの作業量の単位。
⚠ 人日は1人が1日働く量。問題ごとにどちらの単位か確かめる。
作るソフトウェアの大きさで、FP値・行数・画面数などで表す。
⚠ 工数とは別物。規模を生産性で割ると工数になる。
1人が単位期間あたりにこなせる規模で、例えば「1人月あたり10FP」のように表す。
⚠ 規模から工数を出すのに必要なのは生産性。開発期間・要員数・工程配分比率は工数を出したあとに使う。
利用者から見た機能(入出力・照会・ファイル)の数と複雑さから点数を出し、補正してソフトウェアの規模を見積もる方法。
⚠ 類推見積法(過去の類似実績)、標準タスク法(作業分解して積算)、COCOMO(規模を前提に工数と工期を出す)と区別する。FP法が出すのは規模。
機能ごとの個数×重み付け係数を合計した、補正前のFP値。
⚠ 最終的なFP値はこれに補正係数を掛けた値。掛け忘れが定番のひっかけ。
システム全体の複雑さや特性に応じて未調整FPに掛ける調整用の倍率。
⚠ 重み付け係数は機能1個ごとの点数、補正係数は最後に全体へ掛ける倍率。
システムの外からデータを受け取って処理する機能。
⚠ 外部照会は入力に応じて検索結果を加工せずに返す機能。
計算や加工をした結果を、帳票や画面としてシステムの外へ出す機能。
⚠ 外部照会は加工せずにそのまま返す。加工があれば外部出力。
入力をきっかけに、保存データを加工せずに取り出して返す機能。
⚠ 外部出力との違いは、計算などの加工をするかどうか。
見積り対象のシステム自身が持ち、更新するデータのまとまり。
⚠ 外部インタフェースファイルは他システムが持ち、参照だけするデータ。
他のシステムが管理していて、対象システムは参照だけするデータのまとまり。
⚠ 自分で更新するなら内部論理ファイル。
過去の似たシステムの実績を基に、違う部分を調整して規模や工数を見積もる方法。
⚠ 選択肢で「過去の類似」「相違点」とあればこれ。FP法ではない。
作業を単位作業まで分解し、それぞれに基準の工数を当てて積み上げる見積り方法。
⚠ 「単位作業項目まで分解」「基準値の積算」とあればこれ。画面数×1画面あたり工数の計算もこの考え方。
開発規模(行数)が分かっていることを前提に、式で工数と工期を見積もる方法。
⚠ FP法は規模を求める方法、COCOMOは規模を入力にして工数・工期を求める方法。
作るプログラムの行数(ステップ数)を積算して開発規模を見積もる方法。
⚠ 選択肢で「ステップ数を積算」とあればこれ。FP法は行数ではなく機能の数で測る。
このレッスンの過去問
- 工数見積りに必要な情報(規模と生産性)平成21年度 春期 基本情報技術者試験 午前 問52
- ファンクションポイント法の定義令和元年度 秋期 基本情報技術者試験 午前 問53
- ファンクションポイント法による工数見積り計算平成30年度 秋期 基本情報技術者試験 午前 問54
- 画面数と複雑度別工数からの総工数見積り計算平成29年度 秋期 基本情報技術者試験 午前 問52
- 工程別の工数配分・期間配分からのピーク要員数計算平成28年度 秋期 基本情報技術者試験 午前 問54