実際に出題された基本情報技術者試験の工数のテーマに関する過去問と解くポイント、解説をしていきます。
工数に関するテーマからの出題は、大きく下記2パターンです。
- 開発工数(人月)を求める問題
- 開発工数から必要な要員を求める問題
文章や、提示される表をきちんと読み取り計算すれば解くことができます!
これから、上記の2つの問題と、その解法をこれから順番に詳しく解説していきます。
1.開発工数(人月)を求める問題
下記、平成26年春期の問題です。
ある新規システムの開発規模を見積もったところ,500FP(ファンクションポイント)であった。このシステムを構築するプロジェクトには,開発工数の他にシステムの導入や開発者教育の工数が10人月必要である。また,プロジェクト管理に,開発と導入・教育を合わせた工数の10%を要する。このプロジェクトに要する全工数は何人月か。ここで,開発の生産性は1人月当たり10FPとする。
ア.51
イ.60
ウ.65
エ.66
出典:基本情報技術者試験 平成26年春期 問54
答えはエ
まずは「工数」とは何かを解説します。
既に理解している方は読み飛ばしてくださいね。
そもそも「工数」とは?
「工数」とは、作業を完了させるために必要とされる仕事量のことで、以下の式で求められます。
人数 × 時間
例えば、ある作業を行うのに、10人で6ヶ月かかるとすれば工数は、、、
10 × 6 = 60人月
単位は「人月」で表します。
では、問題の解説をやっていきます。
解説
プロジェクトに要する「全工数は何人月か」を求める問題です。
まず問題文を整理します。
- 新規システムの開発規模は、500FP(ファンクションポイント)。
- システムの導入や開発者教育の工数が10人月必要。
- プロジェクト管理に,開発と導入・教育を合わせた工数の10%を要する。
- 開発の生産性は1人月当たり10FP。
問題にある全工数とは以下3つ
- システムの開発
- システムの導入や開発者教育
- プロジェクト管理
上記3つの工数(人月)をそれぞれ求め、合算すれば全工数(人月)が求められます。
では、はじめに「システム開発」の工数を求めてみましょう。
1.「システム開発」の工数を求める
「システム開発」は500FPとなっているため、単位を「人月」に換算しないといけません。
FP(ファンクションポイント)とは、プログラムの開発規模を見積もる技法のこと。
まずは、FP(ファンクションポイント)について理解しておきましょう!
詳しくは以下リンクにて解説しています。
では「システム開発」の500FPを「人月」に換算します。
問題文より「開発の生産性は1人月当たり10FP」であることから、以下計算式でシステム開発の「人月」が求められます。
システム開発 = 500FP ÷ 10FP/人月 =50人月
となります。
あとは、上記で求めた「システム開発」(50人月)に「システムの導入や開発者教育」や「プロジェクト管理」の人月を加算するだけです。
2.「システムの導入や開発者教育」の工数
「システムの導入や開発者教育」については、問題文に既に提示されています。
「システムの導入や開発者教育」は10人月
3.「プロジェクト管理」の工数を求める
「プロジェクト管理」については、問題文より
「プロジェクト管理に,開発と導入・教育を合わせた工数の10%を要する...」とあることから、前述した以下結果をもとに求められます。
- 「1.システム開発」は50人月
- 「2.システムの導入や開発者教育」は10人月
よって、
50人月 + 10人月 = 60人月
その10%が「プロジェクト管理」ですから、
「プロジェクト管理」の工数は6人月
プロジェクトに要する全工数は、
「システム開発」+「システムの導入や開発者教育」+「プロジェクト管理」を足した、66人月となります。
問題を解くポイントとして、
- まずは問題を整理し各作業を洗い出すこと。
- そして各々の工数(人月)を求めること。
- 「工数」とは、作業を完了させるために必要とされる仕事量(人月)のことで、人数 × 時間で求められます。
この問題のように、FPで記載されている場合はきちんと(人月)に変換することも必要です。
今回は、開発工数(人月)を求める問題をみてきました。
では次節、開発工数から必要な要員(人数)を求める問題をみていきましょう!
2.開発工数から必要な要員を求める問題
以下、平成31年春期の問題です。
システムを構成するプログラムの本数とプログラム1本当りのコーディング所要工数が表のとおりであるとき,システムを95日間で開発するには少なくとも何人の要員が必要か。ここで,システムの開発にはコーディングのほかに,設計及びテストの作業が必要であり,それらの作業にはコーディング所要工数の8倍の工数が掛かるものとする。
プログラムの本数 プログラム1本あたりのコーディグ所要工数(人日) 入力処理 20 1 出力処理 10 3 計算処理 5 9 ア.8
イ.9
ウ.12
エ.13
出典:基本情報技術者試験 平成31年春期 問54
答えはイ。
解説します。
解説
問題を整理します。
- あるシステムを95日間で開発したい。
- システムを構成する作業内容(プログラムの本数や工数)が表にて提示されている。
- 少なくとも何人の開発要員が必要か。
作業内容(プログラムの本数や1本あたりの工数)は以下の通り。
入力処理(20本) | 1人日/本 |
出力処理(10本) | 3人日/本 |
計算処理(5本) | 9人日/本 |
設計及びテスト | コーディング所要工数の8倍 |
これらをもとに、システム開発に必要な開発要員を求めようというもの。
求め方は簡単で以下のとおりです。
- 各々の作業工数を求める。
- それぞれの作業工数を合算する。
- 求めた作業工数の合計を95(日間)で割ってあげる
そうすることで、システム開発に必要な開発要員が求められます。
では、最初に各々の作業工数を求めてみましょう。
1.各々の作業工数を求める
まずは、以下の作業についての工数を求めてみましょう。
- 入力処理:20本
- 出力処理:10本
- 計算処理:5本
- 設計及びテスト
■入力処理の工数
プログラム数は20本、工数は1人日ですから、
20本 × 1人日 = 20人日
■出力処理の工数
10本 × 3人日 = 30人日
■計算処理の工数
5本 × 9人日 = 45人日
■設計及びテストの工数
問題文より「コーディング所要工数の8倍の工数...」がかかることから、まずコーディング所要工数を求めます。
コーディング所要工数
= 入力処理 + 出力処理 + 計算処理
=20人日 + 30人日 + 45人日
= 95人日
コーディング所要工数は95人日となり、その8倍は、
95人日 × 8 = 760人日
ですから、設計及びテストの工数は 760人日となります。
では全工数を合算しましょう。
2.全工数を合算する
上記計算した結果、各作業工数は以下の通り。
入力処理の工数 | 20人日 |
出力処理の工数 | 30人日 |
計算処理の工数 | 45人日 |
設計及びテストの工数 | 760人日 |
これらを合算します。
20人日 + 30人日 + 45人日 + 760人日
= 855人日
しかし、問題文では、95日で開発を完了させたいという条件があります。
ですから95日で開発を完了させるためには、何人の開発要員が必要かを求めてみます。
3.求めた作業工数の合計を95(日間)で割ってあげる
前述したように、全作業(入力処理、出力処理、計算処理)における全工数は855人日。
1人でこれらの作業すると855日もかかります。
5人だと、855人日 ÷ 5人 で171日かかる。 ...
95日で開発を完了させたいということですから、全工数(855人日)を95日で割ってあげればよいだけです。
855人日 ÷ 95日
=9人
よって、このシステム開発を95日で完了させるのに必要な要員は、すくなくとも9人となります。
問題を解くポイントとして、
- まずは問題を整理し各作業を洗い出すこと。
- そして各々の工数(人日)を求めること。
- 工数から要員を求める時は、「工数 ÷ 日数」
問題文や表をみて、難しそうに見えます。
しかし、問題を整理し一つ一つの工数を求めることで全体工数がわかります。
そして、必要な要員はその全体工数を日数で割ってあげれば求められます。
まとめ
基本情報技術者試験の工数における2つ問題の紹介と、解くポイントや解説をしました。
出題パターンは、下記2つ。
- 開発工数(人月)を求める問題
- 開発工数から必要な要員を求める問題
「工数」とは、作業を完了させるために必要とされる仕事量(人月)のことで、人数 × 時間で求められます。
工数 = 人数 × 時間(日)
また、工数から必要な開発要員を求める問題も出てきますので、上記公式をしっかりと理解しておいてください。
この記事で、しっかり理解しておくことで、試験だけでなく実際の現場においても役に立ちますからぜひマスターしておいてくださいね!
人気記事【基本情報技術者試験の過去問(午前)】何年分解けばいい?よく出る問題をランキング形式で紹介し解説!