- ベストアンサー
ソフトウェア開発技術者 午前問題 問48 について
タイトルに上げた問題なのですが、なぜ解答がエになるかが解りません。仮にX=100,Y=100,Z=100として、エの式に当てはめると全体の生産性は33となります。全体の生産性を求めるのに、調和平均を使用して3/(1/X+1/Y+1/Z)となるのなら納得がいくのですが。 問題文: 工程別の生産性が次のとき、全体の生産性を表す式はどれか。 設計工程:X ステップ/人月 製造工程:Y ステップ/人月 試験工程:Z ステップ/人月 選択肢: ア X+Y+Z イ (X+Y+Z)/3 ウ 1/X+1/Y+1/Z エ 1/(1/X+1/Y+1/Z) 公式解答:エ
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No2です。 真の原因は質問者さんがステップ数という言葉を誤って理解されているためだと思います。 ステップ数というのは、ソフトウェアを完成させるための手順の数や工数そのものを 示すものではありません。 ステップ数というのは、ソフトウェアの一番元となるソースプログラムの中で命令が 書かれている行数(通常コメントや空白行は除く)のことを指します。 従って、各工程にステップ数を分けるというようなことはできません。 昔は、ソースプログラムの中に命令を書く量と全体の工数がほぼ比例すると考えられた ため、ステップ数により工数見積もりをする方法が良く行なわれていました。 小論文作成を例にすると、書く量を原稿用紙2枚で800字と指示された場合の800字が ステップ数と同じ意味になります。 論文全体の内容や構成を検討するのが設計、800字を実際に用紙に書く作業が製造、 書いた後に800字全体を見直して必要に応じて修正をするのが試験に当たります。 設計、製造、試験に200,500,100字と字数を振り分けることはできませんし、800字を それぞれ設計、製造、試験したら800X3の2400字の論文になるわけでもありませんね。 仮に設計が100字/分だと800字で8分、製造が40字/分だと800字で20分、試験が200字/分 だと800字で4分、結局800字の論文を作成するのに合計32分かかったので生産性は 800/32=25 25字/分となります。 エの式に当てはめると、1/100+1/40+1/200=8/200=1/25となり逆数を取ると25となります。 25字/分なので、800字であれば800/25=32分かかることになります。
その他の回答 (3)
s_husky です。 X=1/3->3 Y=1/3->3 Z=1/3->3 のミスでした。お詫びしておきます。 なお、前回答はキャンセルして再回答します。 X=1 |**************| Y=1 |**************| Z=1 |**************| <全体の生産性=ステップ数÷人数>ですから、つまり、1/3=1/3。 エに従えば、1/(1/1+1/1+1/1)=1/3 X=3 |****|****|****| Y=3 |****|****|****| Z=3 |****|****|****| <全体の生産性=ステップ数÷人数>ですから、つまり、3/3=1。 エに従えば、1/(1/3+1/3+1/3)=1/1 もちろん、ステップ数は生産物ではないので加算していません。 確かに、両者の計算結果は一致しています。 問題は、<ステップ数÷人数=個別生産性の和の逆数>という等式。 なぜ、これが成立するのかということです。 念のために、もう少し検証してみます。 A=2 |*******|*******| B=3 |*******|*******| エに従えば、1/(1/2+1/2)=1/1=1 で、やはり、2/2=1に一致します。 ところで、2/2=1/(2/2)=1/(1/2+1/2)とエ式に変形することが可能です。 この式の変形可能は、当然のことながら全てに通じています。 そういうことで、問題は、この変形の意味です。 1ステップに換算すれば 1/(2/2) この場合の各工程の人員で表せば、1/(1/2 + 1/2) まあ、このように考えることも可能です。 まあ、見事にエ式が導き出されたということです。 ※年老いたスーツのデザイナはこの辺りでギブアップです。 ※全く自信ないです。質問者で更に検証を続けて下さい。
お礼
度々ありがとうございました。 皆様の説明で問題の趣旨と解答が理解することができました。
- kashira
- ベストアンサー率33% (3/9)
設計、製造、試験を全て終了して初めて一つのものが完成します。 X=100,Y=100,Z=100として 100ステップのソフトウェアを1人で作成するには 設計で1ケ月、製造で1ケ月、試験で1ケ月の計3ケ月が必要ですから 生産性は100/3=33となります。
お礼
回答ありがとうございます。 ソフトウェアを作成するにあたって 設計工程:100ステップの工数がかかる 製造工程:100ステップの工数がかかる 試験工程:100ステップの工数がかかる とすると、ソフトウェアを完成させるための全体の工数は300ステップになるかと思うのですが・・・。 仮に100ステップの規模のソフトウェアを作成しようとする場合、 設計工程:40ステップ 製造工程:30ステップ 試験工程:40ステップ のように、各工程ごとにステップが振り分けられるかと思います。(設計工程にのみ100ステップを費やしてもソフトウェアは完成しませんよね。) 100ステップ規模のソフトウェアを完成させる場合 設計工程:100 ステップ/人月 製造工程:100 ステップ/人月 試験工程:100 ステップ/人月 とすると、 40/100+30/100+40/100 = 1[人月]かかります。 また、選択肢エの式を当てはめて全体の生産性を求めると、 1/(1/100+1/100+1/100)=33[ステップ/人月]です。 全体の生産性を用いて100ステップのソフトウェアを完成させるために必要な人月を求めると、100/33=3[人月]かかってしまう計算になるかと思います・・・。 ここら辺が、この問題のしっくり来なかった点です。 説明足らずですみません。
X=1 Y=1 Z=1 1/(1/1+1/1+1/1)=1/3 つまり、1を生産するのに3ステップを要するということ。 X=1/3 Y=1/3 Z=1/3 ですと、1を生産するのに1ステップだということになります。 仮に、X、Y、Z が全て X 工程だとします。 であれば、これでいいような気がします。 ※問題を見てそう思っただけです。 ※単なるスーツのデザイナです。気にしないで下さい。
お礼
回答ありがとうございます。 全体の生産性の単位も[ステップ/人月]になるかと思います。 (1/X+1/Y+1/Z)[人月/ステップ]・・・1ステップ当たりにかかる人月 この逆数をとって、 1/(1/X+1/Y+1/Z)[ステップ/人月]・・・1人月でこなせるステップ数 となっているので。 X=1、Y=1、Z=1のときの全体の工数が1/3[ステップ/人月]ですと、3か月で1ステップの工数しかこなすことができないような気がします・・・。
お礼
納得できました。ありがとうございます。 X ステップのプログラムを設計するのに 1 人月 Y ステップのプログラムを設計するのに 1 人月 Z ステップのプログラムを試験するのに 1 人月 が必要という意味だったのですね。 仮に X = Y = Z = 100 として、 100 ステップのプログラムを作るとしたら、 3か月かかり、全体の生産性は 33 ステップ/人月 ですね。