応用情報技術者 2012年 秋期 午前2 問46
問題文
ソフトウェアの再利用の説明のうち、適切なものはどれか。
選択肢
ア:再利用可能な部品の開発は、同一規模の通常のソフトウェアを開発する場合よりも工数がかかる。(正解)
イ:同一機能のソフトウェアを開発するとき、一つの大きい部品を再利用するよりも、複数の小さい部品を再利用する方が、開発工数の削減効果は大きい。
ウ:部品の再利用を促進するための表彰制度などによるインセンティブの効果は、初期においては低いが、時間の経過とともに高くなる。
エ:部品を再利用したときに削減できる工数の比率は、部品の大きさに反比例する。
🔒 解説は解答すると表示されます
再利用部品の工数特性【午前2解説】
正解の理由
ソフトウェア部品を「再利用可能」にするためには、単に同等機能を作るよりも汎用化・設計見直し、安定したインタフェース設計、ドキュメント整備、テストの網羅化、管理・配布の仕組み構築など追加工数が必要になります。したがって、初期の開発工数は同規模の通常開発より増えることが一般的です。以上の理由から、選択肢アが適切です。
解法ステップ
- 問題が「工数(コスト)の増減)」について問うている点を確認する。
- 各選択肢を「一般的原則(設計負荷、テスト、ドキュメント、運用負荷、再利用回数)」に照らして評価する。
- 「再利用可能にするための追加作業」が存在するかを基準に判断する。もし追加作業があるなら初期工数は増える傾向があり、その点を重視する。
- 再利用の効果は時間(採用回数や組織定着)や適用規模に依存する点を常に認識する。初期負担が高くても、繰り返し利用されることで長期的に工数削減が実現する(損益分岐は利用回数で決まる)ため、「初期は工数がかかる」という主張は矛盾しない。
- 各選択肢が「常に正しい」と断定できるか、あるいは条件付きかを検討し、普遍的に成り立つ記述を正答とする。
選択肢別の誤答解説
- ア: 再利用可能な部品の開発は汎用化や品質担保のための追加工数が必要であり、同一規模の通常開発より工数がかかることが多い。したがって正しい。
- イ: 「複数の小さい部品の方が工数削減効果が大きい」との断定は誤り。小粒度は再利用性を高めるが、組み合わせ・統合のオーバーヘッドや設計の複雑化が増える。最適な粒度は利用パターンや運用コストで決まり、必ずしも「小さい部品が有利」とは限らない。
- ウ: 表彰制度などインセンティブの効果が「初期は低く時間とともに高くなる」とする記述は一般化しすぎ。実際には導入直後に高い関心や利用が生じることもあり、効果の時間変化は制度設計・文化・運用支援による。したがってこの単純な時系列仮定は誤りである。
- エ: 「削減できる工数比率が部品の大きさに反比例する」という厳密な逆比例関係の主張は成り立たない。大きな部品は絶対的な工数削減が大きいこともあるし、適合性やカスタマイズの必要性で比率は変わる。比例関係を断定できないため誤り。
よくある誤解
- 再利用は常に即時に工数を削減する:初期投資が上回る場合があり、複数回の再利用で回収される点を見落としがちです。
- 粒度は小さいほどよい:小粒度は再利用性が高まりますが、接続・同期・管理のコストが増えるため最適点が存在します。
- 表彰だけで再利用文化が根付く:インセンティブは有効ですが、カタログ整備、バージョン管理、サポート体制などの仕組みが同時に必要です。
補足コラム
再利用の投資判断は損益分岐(ブレークイーブン)で考えると分かりやすいです。
追加初期投資を 、部品を再利用するたびにかかる適用コストを 、一から作る場合のコストを とすると、1回あたりの純利益(節約)は です。n回再利用したときに投資回収できる条件は
追加初期投資を 、部品を再利用するたびにかかる適用コストを 、一から作る場合のコストを とすると、1回あたりの純利益(節約)は です。n回再利用したときに投資回収できる条件は
です。つまり必要な再利用回数は
となります。例えば 工数、、 なら で 。2回以上の再利用で投資回収できます。
簡単な計算例(Python):
I = 120
c_s = 80
c_a = 20
s = c_s - c_a
needed = -(-I // s) # 切り上げ
print(needed) # 必要な再利用回数
実務的な推奨:
- 再利用対象の候補は利用頻度と適合度で優先順位付けする。
- API安定化・ドキュメント・テスト自動化を標準化する。
- 組織的なカタログと検索性を整備する。
- インセンティブは導入期に集中投下し、運用ルールと組み合わせて持続性を確保する。
FAQ
Q: なぜ最初に工数が増えるのですか?
A: 汎用化(拡張性・例外対応)、明確なインタフェース設計、ドキュメント、広範なテストなど追加作業が必要になるためです。
A: 汎用化(拡張性・例外対応)、明確なインタフェース設計、ドキュメント、広範なテストなど追加作業が必要になるためです。
Q: 部品の粒度はどう決めるべきですか?
A: 利用パターン(どのくらい頻繁に再利用されるか)、結合度、変更頻度、運用コストの観点からトレードオフを評価して決めます。小さすぎると統合コストが増え、大きすぎると再利用性が低下します。
A: 利用パターン(どのくらい頻繁に再利用されるか)、結合度、変更頻度、運用コストの観点からトレードオフを評価して決めます。小さすぎると統合コストが増え、大きすぎると再利用性が低下します。
Q: 表彰や報奨は効果的ですか?
A: 効果はあるが単独では不十分。導入期に利用を喚起するため重要で、カタログ整備や技術支援と組み合わせることで長期的効果が期待できます。
A: 効果はあるが単独では不十分。導入期に利用を喚起するため重要で、カタログ整備や技術支援と組み合わせることで長期的効果が期待できます。
関連キーワード: ソフトウェア再利用、部品化、工数削減、再利用ROI、粒度設計、カタログ管理

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

