基本情報技術者試験 平成31年度 春期 午前 問54
作業の所要工数(人日)の計算とクラッシングに関しての問題。
--------------------------
平成31年度 春期 午前 問54
システムを構成するプログラムの本数とプログラム 1 本当たりのコーディング所要工数が表のとおりであるとき、システムを 95 日間で開発するには少なくとも何人の要員が必要か。ここで、システムの開発にはコーディングのほかに、設計及びテストの作業が必要であり、それらの作業にはコーディング所要工数の 8 倍の工数が掛かるものとする。
プログラム の本数 |
プログラム 1 本当たりの コーディング所要日数 (人日) |
|
入力処理 | 20 | 1 |
出力処理 | 10 | 3 |
計算処理 | 5 | 9 |
ア 8
イ 9
ウ 12
エ 13
--------------------------
解説
表に記載済みのコーディングとは 別に 設計及びテストの作業が必要であり、その工数はコーディング所要工数の 8 倍とある。
プログラム の本数 |
プログラム 1 本当たりの コーディング所要日数 (人日) |
プログラム 1 本当たりの 設計及びテスト所要日数 (人日) |
|
入力処理 | 20 | 1 | 8 |
出力処理 | 10 | 3 | 24 |
計算処理 | 5 | 9 | 72 |
表に追加すると上の様になる。
"1 人日" は 1 人の作業者が 1 日かかる作業量(工数)を表している。
入力処理ではプログラム 1 本当たりの設計~コーディング~テストで 9 人日かかるので、プログラムの本数 20 本分では 180 人日かかることになる。
同じようにして、
出力処理では 10 本 ×(3 人日 + 24 人日)= 270 人日かかる。
計算処理では 5 本 ×(9 人日 + 72 人日)= 405 人日かかる。
全て足すと 180 + 270 + 405 = 855 人日の工数がかかることがわかる。
"1 人日" は 1 人の作業者が 1 日かかる作業量(工数)を表しているので、
1 人で作業をすると完了まで 855 日かかる。
3 人で作業をすると完了まで 855 ÷ 3 = 285 日かかる。
9 人で作業をすると完了まで 855 ÷ 9 = 95 日かかる。
なので、95 日でシステムを完成させるために必要な要員は 9 人なので、正解は選択肢イとなる。
プロジェクトの期間短縮の方法であるクラッシングはこの考え方で、作業者を増やせば所要期間を減らせると考える。
しかし、よほど都合の良い状況でないとそう上手くはいかない(そしてクラッシングが必要になるようなプロジェクトでそんな都合の良い状況であることは少ない)。
855 人日の作業を 855 人でやれば 1 日で終わるかといえば、そんなことはあり得ない。
実際に 855 人も集めてしまったら体制や作業環境の整備、作業の振り分けなどで 1 日なんてあっという間に過ぎ去ってしまうはず。
クラッシングそのものが良くないと言っているわけではなく、人手を増やして作業期間を短縮するためには色々と考慮する必要がある。
例えば以下の様なもの。
- 要員が到着後すぐに戦力となることはない。どんな作業をどのように進めるかを説明し、それを理解して慣れてもらうための時間を考慮する必要がある。説明する側もコミュニケーションに割く時間が増える。
- 追加の要員に任せる作業を決めておく必要がある。任せる作業が曖昧なままだと追加の要員がやる作業が無駄になってしまう可能性がある。任せる作業を決めるためには今いる要員の協力も必要になる。
- 要員の追加をお願いしてもすぐに要員はこない。他のプロジェクトとの調整や事務手続きは思ったより時間がかかる。人手の追加が必要になりそうな兆候があればすぐに検討を進める必要がある。
全てを完璧に考慮できているケースは稀だと思うけど、できる限り考慮したほうが効果的になるはず。
前後の問題はこちら。