問題
問40
ソフトウェア保守で行う作業はどれか。
- ソフトウェア受入れテストの結果、発注者が開発者に依頼するプログラム修正
- プログラムの単体テストで発見した機能不足を補うための、追加コードの作成
- プログラムの単体テストで発見したバグの修正
- 本番業務で発生したシステム障害に対応するためのプログラム修正
[出典:ITパスポート試験 平成29年度春期 問40]
正解
正解は「エ」です。
解説
ソフトウェア保守とは、システムが本番運用を開始した後に、そのシステムを維持・管理し、必要に応じて変更を加える一連の活動のことです。これには、本番稼働中に発生した不具合を修正する「是正保守」、機能を追加・改善する「適応保守」、システムを効率化する「完全化保守」、利用環境の変化に対応する「予防保守」などがあります。選択肢「エ」の「本番業務で発生したシステム障害に対応するためのプログラム修正」は、まさにシステムが稼働している中で発生した問題に対処する「是正保守」に該当します。
例えば、皆さんが毎日使っているスマートフォンアプリが突然動かなくなったときに、開発元が修正版のアップデートを配布するような作業がソフトウェア保守の一例です。
ア(ソフトウェア受入れテストの結果、発注者が開発者に依頼するプログラム修正):
受け入れテストは、システム開発プロセスの最終段階で、本番運用に入る前に行われるテストです。この段階での修正は開発フェーズに含まれるため、ソフトウェア保守には該当しません。
イ(プログラムの単体テストで発見した機能不足を補うための、追加コードの作成):
単体テストは、プログラムの個々の部品が設計通りに動作するかを確認する開発フェーズの活動です。機能不足の解消も開発フェーズで行われるため、ソフトウェア保守には該当しません。
ウ(プログラムの単体テストで発見したバグの修正):
単体テストは開発フェーズで行われるテストの一種で、この段階で発見されたバグの修正は、ソフトウェアを完成させるための開発作業の一部であり、本番運用後の保守作業とは異なります。
難易度
この問題は、ソフトウェア開発ライフサイクルにおける「保守」のフェーズの理解度を問うものです。初学者にとっては、開発中のテストや修正と、稼働後の保守との違いを明確に区別することがポイントになります。選択肢が比較的明確に開発フェーズと保守フェーズの作業を分けているため、基本知識があれば解きやすい問題と言えるでしょう。
用語補足
ソフトウェア保守:
ソフトウェアが本番環境で稼働を開始した後に行われる、機能の改善、不具合の修正、環境の変化への適応などの活動全般を指します。例えば、スマートフォンアプリのアップデートで、新しい機能が追加されたり、以前あったバグが直ったりすることがこれに当たります。
受け入れテスト:
開発されたシステムが、利用者(顧客)の要求や期待を満たしているかを確認するために、利用者の視点で行われる最終的なテストです。例えば、新しいECサイトが完成した際に、顧客が実際に商品を注文し、支払い、配送までの一連の流れが問題なく行えるかを確認する作業です。
単体テスト:
プログラムを構成する個々の小さな部品(モジュールや関数など)が、それぞれ単独で設計どおりに動作するかどうかを確認するテストです。例えば、電卓アプリで「足し算機能」だけを切り離して、正しく計算できるかを確認するようなテストです。
システム障害:
コンピュータシステムが正常に機能しなくなり、サービスが利用できなくなる状態を指します。例えば、ウェブサイトが表示されなくなったり、銀行のATMが使えなくなったりするような状況です。
対策
この問題を解くためのポイントは、ソフトウェア開発ライフサイクルにおける各フェーズの役割を正確に理解することです。特に、「開発フェーズ」(計画、設計、プログラミング、各種テスト)と、「保守フェーズ」(システムが本番運用を開始した後の、不具合修正や機能改善など)の区別を明確にすることが重要です。保守作業は、リリース後に発生する事象への対応が中心となります。

