「AP過去問 令和7年度春期 午後 問8 情報システム開発」の版間の差分
(ページの作成:「AP 過去問題 午後に戻る。 AP過去問_令和7年度春期_午後_問7_組込みシステム開発の同じ回の前の問題へ移動。 AP過去問_令和7年度春期_午後_問9_プロジェクトマネジメントの同じ回の次の問題へ移動。 AP過去問_令和6年度秋期_午後_問8_情報システム開発の前の回の同じカテゴリの問題へ移動。 == '''令…」) |
編集の要約なし |
||
8行目: | 8行目: | ||
== '''令和7年度春期 午後 問8 情報システム開発(AIプロンプト向け)''' == | == '''令和7年度春期 午後 問8 情報システム開発(AIプロンプト向け)''' == | ||
■エラーハンドリングに関する次の記述を読んで,設問に答えよ。 | |||
Q社は、業務システムの受託開発会社である。Q社は、スーパーマーケットの複数の店舗を運営するB社から、CRM(Customer Relationship Management)システムの開発と運用保守業務を受託した。CRMシステムは各店舗で利用され、顧客からの意見 | |||
やクレーム、店舗での対応の内容が登録・蓄積される。CRMシステムを運用する際の関係者のー覧を表1に示す。 | |||
<div><div class="table-container"><div class="table-header"><span class="table-title">表1 関係者の一覧</span><span class="table-unit"></span></div> | |||
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid"> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">関係者</td> | |||
<td align="center" style="border: 2px solid;">説明</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">顧客</td> | |||
<td align="center" style="border: 2px solid;">B社の店舗に来店した顧容。意見やクレームを、店舗に勤務するB 社の従業員に伝える。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">利用者</td> | |||
<td align="center" style="border: 2px solid;">CRMシステムへのアクセスが許可されたB社の従業員。顧客からの意見やクレ―ムをCRMシステムに入力し、過去の類似案件の記録を参考に顧客対応を行う。顧客から聞き取った氏名と連絡先を、 CRMシステムに顧客情報として登録することがある。顧客情報は、B社の従業員が顧客に連絡するために利用する。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">運用担当者</td> | |||
<td align="center" style="border: 2px solid;">B社に常駐しているQ社の従業員。CRMシステムの運用手順書に従って、利用者からの質問や不具合発生時の問合せに対応する。問合せ時の状況や不具合の再現手順の確認のために、運用中のCRMシステムへのアクセスが許可されている。運用手順書で対応しきれない技術的な問題については、Q社の開発担当者に対応を依頼する。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">開発担当者</td> | |||
<td align="center" style="border: 2px solid;">Q社内で勤務しているQ社の開発担当者。運用担当者からの問合せの際は、調査に必要な最小限の情報として、不具合の状況、再現手順及び発生時刻付近のログを受け取る。運用中のCRMシステムへの入力情報を、直接参照することはできない。</td> | |||
</tr> | |||
</table> | |||
</div> | |||
</div> | |||
Q社は、システムのリリース後に想定される、店舗からの問合せに対する迅速な対応を可能にするために、想定される問合せのパターンと対応方法を事前に整理し、対応の際に必要な要件をシステムの設計に反映させることにした。 | |||
〔CRMシステムの構造〕 | |||
CRMシステムのクラス図(一部)を図1に示す。AbstractController、AbstractServlce及びAbstractDaoは、それぞれ画面遷移、ビジネスロジック及びデータベースアクセスの共通処理が実装された抽象クラスである。これらのクラスを[ a ]したクラスを作成して、具体的な機能を実装する。ログを出力するにはLoggerクラスを利用する。ログの出力時には❝DEBUG❞、❝ERROR❞などの、ログの種別(以下、ログ種別という)が記録される。図1に示すクラスを使った処理の流れの例として、システムにログインする際のシーケンス図を図2に示す。 | |||
図1 CRMシステムのクラス図(一部) ここから | |||
AbstractControllerクラス(抽象クラス)、AbstractServiceクラス(抽象クラス)、AbstractDaoクラス(抽象クラス)は繋がっている。各クラスは属性名やメソッド名は持たない。 | |||
AbstractControllerクラスの派生クラスとして、LoginControllerクラス、CaseControllerクラスがある。 | |||
LoginControllerクラスは属性名は持たない。メソッドとしてログイン画面表示()、ログイン実行(ID, Password)を持つ。 | |||
CaseControllerクラスは属性名を持たない。メソッド名も持たない。 | |||
AbstractServiceクラスの派生クラスとして、AuthServiceクラス、CaseServiceクラスがある。 | |||
AuthServiceクラスは属性名は持たない。メソッドとして認証(ID, Password)を持つ。 | |||
CaseServiceクラスは属性名を持たない。メソッド名も持たない。 | |||
AbstractDaoクラスの派生クラスとして、UserDaoクラス、CaseDaoクラスがある。 | |||
UserDaoクラスは属性名は持たない。メソッドとして検索([ a ])がある。 | |||
CaseDaoクラスは属性名を持たない。メソッド名も持たない。 | |||
Loggerクラスは独立していて、属性名は持たない。メソッドとしてログ出力(ログ種別, 内容)を持つ。 | |||
Exceptionクラスは独立していて、属性名は持たない。メソッド名も持たない。 | |||
図1 CRMシステムのクラス図(一部) ここまで | |||
図2 システムにログインする際のシーケンス ここから | |||
:Webブラウザ、:LoginController、:AuthService、:UserDaoというシーケンスがある | |||
ここからシーケンスがはじまり、以下の順序で処理が行われる。 | |||
:Webブラウザシーケンスからログイン実行(ID, Password)により:LoginControllerのシーケンスに移動する。 | |||
:LoginControllerシーケンスから認証(ID, Password)により:AuthServiceのシーケンスに移動する。 | |||
:AuthServiceシーケンスから検索([ b ])により:UserDaoのシーケンスに移動する。 | |||
:UserDaoシーケンスから利用者情報を得て:AuthServiceのシーケンスに移動する。 | |||
:AuthServiceシーケンスから[ c ]を得て:LoginControllerシーケンスに移動する。 | |||
ここまででシーケンスは終わり | |||
図2 システムにログインする際のシーケンス ここまで | |||
利用者がログイン画面で認証に必要な情報を入力しログインを実行すると、LoginControllerのログイン実行メソツドが呼び出される。ログイン実行メソツドは、画面から入力された情報をAuthServiceに引き渡す。AuthServiceは、UserDaoに実装されている、利用者情報の検索を行う機能を用いて、認証の判定に必要な利用者情報をデータベースから取得する。AuthServiceは、取得した利用者情報を用いて口グイン認証の判定を行い、結果を返す。 | |||
プログラムの実行中にエラーが発生した際の、例外処理用のクラスとしてExceptionクラスがある。Exceptionクラスは、エラーの詳細情報として、エラーの発生個所のソースファイル名、行番号、メソッドの呼出し履歴及び直接的な原因を示すメッセージ文字列をもつ。エラー発生時には、エラーの発生箇所でExceptionクラスのオブジェクトを作成し、呼出し元ではそれを使って例外処理を行う。 | |||
〔CRMシステムのエラーの種別の整理とその対応〕 | |||
Q社は、運用中に起き得るエラーの種別(以下、エラー種別という)を整理し、対応方法について検討した。エラー種別と運用担当者の対応を表2に、対応を行うために必要な出力機能及び出力内容と、出力内容を参照する関係者を表3に示す。 | |||
<div><div class="table-container"><div class="table-header"><span class="table-title">表2 エラー種別と運用担当者の対応</span><span class="table-unit"></span></div> | |||
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid"> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">エラー種別</td> | |||
<td align="center" style="border: 2px solid;">説明</td> | |||
<td align="center" style="border: 2px solid;">運用担当者の対応</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">システム障害</td> | |||
<td align="center" style="border: 2px solid;">Webサ一バやデ一タべ一スサーバの停止、プ口グラムの異常終了、ネットワ―ク障害などの原因によって、システム自体の稼働が継続不能になる。</td> | |||
<td align="center" style="border: 2px solid;">利用者からの報告を受けて、サ一バやサービスの稼働状況を確認し、 必要に応じて再起動を行う。それでも復旧できない場合は開発担当者に対応を依頼する。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">システムエラー</td> | |||
<td align="center" style="border: 2px solid;">主にプ口グラムの欠陥によって発生する、想定外のエラ一。操作の途中で画面に工ラ一メッセージが表示され、業務を続行できない。</td> | |||
<td align="center" style="border: 2px solid;">利用者から、操作した手順を聞き取り、状況を確認する。エラー発生時の前後のログをログファイルから切り出して開発担当者に送付し、対応を依頼する。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">業務エラー</td> | |||
<td align="center" style="border: 2px solid;">業務ルール上、入力値の内容が正しくないか、禁止されている操作をしたときに発生するエラー。プログラムで想定済みのエラーで、利用者が入力値の内容を修正し、操作をやり直すことによって業務を続行できる。</td> | |||
<td align="center" style="border: 2px solid;">利用者から、操作した手順と、画面に表示されたエラーメッセージの内容を聞き取り、状況を確認する。運用手順書を参照し、エラーの回避方法を利用者に伝える。回避方法が不明な場合は、エラーの再現手順とエラー発生時の前後のログを開発担当者に送付し、回避方法の提示を求める。</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">入力エラー</td> | |||
<td align="center" style="border: 2px solid;">文字列長や文字種に関する入力値の検証時のエラー。利用者自身が入力値を修正することによって業務を続行できる。</td> | |||
<td align="center" style="border: 2px solid;">対応なし。利用者自身が画面に表示されているエラーメッセージを参照してエラーを解消する。</td> | |||
</tr> | |||
</table> | |||
</div> | |||
</div> | |||
<div><div class="table-container"><div class="table-header"><span class="table-title">表3 出力機能及び出力内容と、出力内容を参照する関係者</span><span class="table-unit"></span></div> | |||
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid"> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">出力機能</td> | |||
<td align="center" style="border: 2px solid;">出力内容</td> | |||
<td align="center" style="border: 2px solid;">参照する関係者</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">ログ出力</td> | |||
<td align="center" style="border: 2px solid;">プログラムの実行中に想定外の事態が発生した場合は処理を中断し、処理の呼出し元にエラーの内容を返す。その際、エラーの概要、詳細情報及びメソッドの呼出し履歴をLoggerクラスを使ってログファイルに出力する。</td> | |||
<td align="center" style="border: 2px solid;">[ d ]</td> | |||
</tr> | |||
<tr> | |||
<td align="center" style="border: 2px solid; width: 5em;">エラーメッセージ表示</td> | |||
<td align="center" style="border: 2px solid;">エラーの概要、Exceptionクラスがもつエラーの詳細情報及び利用者が次に行うべき操作の案内を画面に表示する。</td> | |||
<td align="center" style="border: 2px solid;">利用者</td> | |||
</tr> | |||
</table> | |||
</div> | |||
</div> | |||
表2、表3についてレビューを行ったところ、次の3点が指摘された。 | |||
(1) 表2のシステム障害及びシステムエラーは、利用者の問合せの前にシステムが自動的に検出して運用担当者が対応を開始できるようにすべきである。 | |||
(2) 表3の出力内容には、セキュリティの観点における潜在的なリスクがある。 | |||
(3) 表3について、エラーに関するログだけでは、開発担当者が原因を調査するための情報としては不足するので、追加の情報を出力する必要がある。 | |||
指摘事項の(1)に対応するために、①監視の機能を用意することにした。監視の機能は、監視対象の情報を定期的に取得し、エラー発生時の特徴を検出した場合に電子メールで運用担当者に通知する。指摘事項の(2)については、表3の②出力内容をー部変更することにした。指摘事項の(3)については、アスペクト指向プログラミングを導入して、プログラムの処理の中で、要所ごとにログを出力することにした。 | |||
〔アスペクト指向プログラミングの導入〕 | |||
レビューの指摘事項の(3)に関して、利用者が行った操作内容を一律でログに出力することにし、これを実現するためにアスペクト指向プログラミングを導入することにした。 | |||
アスペクト指向プログラミングでは、特定のルールを定義しておくことによって、そのルールに合致する全ての箇所で同じ処理を実行させる。ルールの定義の条件にはクラス名、メソッド名に含まれる文字列のパターンが利用できる。また、特定の条件に合致する場合には実行の対象から除外するように指定することもできる。 | |||
ここでは、実装上の制約ができるだけ少なくなるようなルールの定義方法で、画面遷移に関するクラスに実装された全てのメソッドについて、クラス名、メソッド名及び全て引数の内容をログに出力することにした。これを実現するために、[ e ]を親クラスにもつクラスの[ f ]には必ず特定の文字列のパターンを含み、それ以外のクラスの[ f ]には特定の文字列のパターンを含まないように命名規則を定義した。ただし、秘匿情報や個人情報の保護の観点から、認証に関する情報や、③顧客情報を扱う箇所はログに出力しないようにした。Q社は、表2、表3に関する検討結果をシステムの設計に反映させ、開発を開始した。 | |||
設問1 本文、図1及び図2中の[ a ]~[ c ]に入れる適切な字句を答えよ。 | |||
設問2 表3中の[ d ]について、どの関係者に向けた表現として出力をすべきか。表1の関係者から<u>全て</u>選び答えよ。 | |||
設問3 本文中の下線①について、業務運用中のCRMシステムの何を対象に監視するか。システム障害とシステムエラーのそれぞれについて、最も適切なものを解答群の中から選び、記号で答えよ。 | |||
解答群 | |||
ア 画面に表示されたエラーメッセージ | |||
イ データベースの接続確認の結果 | |||
ウ 電子メール送信履歴 | |||
エ ログ種別の文字列 | |||
オ ログファイルのサイズ | |||
設問4 本文中の下線②について、変更した出力機能を答えよ。また、その変更の内容を20字以内で答えよ。 | |||
設問5 〔アスペクト指向プログラミングの導入〕について答えよ。 | |||
(1) 本文中の[ e ]、[ f ]に入れる適切な字句を答えよ。 | |||
(2) 本文中の下線③について、出力しないようにした理由を、20字以内で答えよ。 | |||
I | |||
2025年5月7日 (水) 23:56時点における版
AP 過去問題 午後に戻る。
AP過去問_令和7年度春期_午後_問7_組込みシステム開発の同じ回の前の問題へ移動。
AP過去問_令和7年度春期_午後_問9_プロジェクトマネジメントの同じ回の次の問題へ移動。
AP過去問_令和6年度秋期_午後_問8_情報システム開発の前の回の同じカテゴリの問題へ移動。
令和7年度春期 午後 問8 情報システム開発(AIプロンプト向け)
■エラーハンドリングに関する次の記述を読んで,設問に答えよ。
Q社は、業務システムの受託開発会社である。Q社は、スーパーマーケットの複数の店舗を運営するB社から、CRM(Customer Relationship Management)システムの開発と運用保守業務を受託した。CRMシステムは各店舗で利用され、顧客からの意見 やクレーム、店舗での対応の内容が登録・蓄積される。CRMシステムを運用する際の関係者のー覧を表1に示す。
<div><div class="table-container"><div class="table-header"><span class="table-title">表1 関係者の一覧</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">関係者</td>
<td align="center" style="border: 2px solid;">説明</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">顧客</td>
<td align="center" style="border: 2px solid;">B社の店舗に来店した顧容。意見やクレームを、店舗に勤務するB 社の従業員に伝える。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">利用者</td>
<td align="center" style="border: 2px solid;">CRMシステムへのアクセスが許可されたB社の従業員。顧客からの意見やクレ―ムをCRMシステムに入力し、過去の類似案件の記録を参考に顧客対応を行う。顧客から聞き取った氏名と連絡先を、 CRMシステムに顧客情報として登録することがある。顧客情報は、B社の従業員が顧客に連絡するために利用する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">運用担当者</td>
<td align="center" style="border: 2px solid;">B社に常駐しているQ社の従業員。CRMシステムの運用手順書に従って、利用者からの質問や不具合発生時の問合せに対応する。問合せ時の状況や不具合の再現手順の確認のために、運用中のCRMシステムへのアクセスが許可されている。運用手順書で対応しきれない技術的な問題については、Q社の開発担当者に対応を依頼する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">開発担当者</td>
<td align="center" style="border: 2px solid;">Q社内で勤務しているQ社の開発担当者。運用担当者からの問合せの際は、調査に必要な最小限の情報として、不具合の状況、再現手順及び発生時刻付近のログを受け取る。運用中のCRMシステムへの入力情報を、直接参照することはできない。</td>
</tr>
</table>
</div>
</div>
Q社は、システムのリリース後に想定される、店舗からの問合せに対する迅速な対応を可能にするために、想定される問合せのパターンと対応方法を事前に整理し、対応の際に必要な要件をシステムの設計に反映させることにした。
〔CRMシステムの構造〕
CRMシステムのクラス図(一部)を図1に示す。AbstractController、AbstractServlce及びAbstractDaoは、それぞれ画面遷移、ビジネスロジック及びデータベースアクセスの共通処理が実装された抽象クラスである。これらのクラスを[ a ]したクラスを作成して、具体的な機能を実装する。ログを出力するにはLoggerクラスを利用する。ログの出力時には❝DEBUG❞、❝ERROR❞などの、ログの種別(以下、ログ種別という)が記録される。図1に示すクラスを使った処理の流れの例として、システムにログインする際のシーケンス図を図2に示す。
図1 CRMシステムのクラス図(一部) ここから
AbstractControllerクラス(抽象クラス)、AbstractServiceクラス(抽象クラス)、AbstractDaoクラス(抽象クラス)は繋がっている。各クラスは属性名やメソッド名は持たない。
AbstractControllerクラスの派生クラスとして、LoginControllerクラス、CaseControllerクラスがある。
LoginControllerクラスは属性名は持たない。メソッドとしてログイン画面表示()、ログイン実行(ID, Password)を持つ。
CaseControllerクラスは属性名を持たない。メソッド名も持たない。
AbstractServiceクラスの派生クラスとして、AuthServiceクラス、CaseServiceクラスがある。
AuthServiceクラスは属性名は持たない。メソッドとして認証(ID, Password)を持つ。
CaseServiceクラスは属性名を持たない。メソッド名も持たない。
AbstractDaoクラスの派生クラスとして、UserDaoクラス、CaseDaoクラスがある。
UserDaoクラスは属性名は持たない。メソッドとして検索([ a ])がある。
CaseDaoクラスは属性名を持たない。メソッド名も持たない。
Loggerクラスは独立していて、属性名は持たない。メソッドとしてログ出力(ログ種別, 内容)を持つ。
Exceptionクラスは独立していて、属性名は持たない。メソッド名も持たない。
図1 CRMシステムのクラス図(一部) ここまで
図2 システムにログインする際のシーケンス ここから
- Webブラウザ、:LoginController、:AuthService、:UserDaoというシーケンスがある
ここからシーケンスがはじまり、以下の順序で処理が行われる。
- Webブラウザシーケンスからログイン実行(ID, Password)により:LoginControllerのシーケンスに移動する。
- LoginControllerシーケンスから認証(ID, Password)により:AuthServiceのシーケンスに移動する。
- AuthServiceシーケンスから検索([ b ])により:UserDaoのシーケンスに移動する。
- UserDaoシーケンスから利用者情報を得て:AuthServiceのシーケンスに移動する。
- AuthServiceシーケンスから[ c ]を得て:LoginControllerシーケンスに移動する。
ここまででシーケンスは終わり
図2 システムにログインする際のシーケンス ここまで
利用者がログイン画面で認証に必要な情報を入力しログインを実行すると、LoginControllerのログイン実行メソツドが呼び出される。ログイン実行メソツドは、画面から入力された情報をAuthServiceに引き渡す。AuthServiceは、UserDaoに実装されている、利用者情報の検索を行う機能を用いて、認証の判定に必要な利用者情報をデータベースから取得する。AuthServiceは、取得した利用者情報を用いて口グイン認証の判定を行い、結果を返す。
プログラムの実行中にエラーが発生した際の、例外処理用のクラスとしてExceptionクラスがある。Exceptionクラスは、エラーの詳細情報として、エラーの発生個所のソースファイル名、行番号、メソッドの呼出し履歴及び直接的な原因を示すメッセージ文字列をもつ。エラー発生時には、エラーの発生箇所でExceptionクラスのオブジェクトを作成し、呼出し元ではそれを使って例外処理を行う。
〔CRMシステムのエラーの種別の整理とその対応〕
Q社は、運用中に起き得るエラーの種別(以下、エラー種別という)を整理し、対応方法について検討した。エラー種別と運用担当者の対応を表2に、対応を行うために必要な出力機能及び出力内容と、出力内容を参照する関係者を表3に示す。
<div><div class="table-container"><div class="table-header"><span class="table-title">表2 エラー種別と運用担当者の対応</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">エラー種別</td>
<td align="center" style="border: 2px solid;">説明</td>
<td align="center" style="border: 2px solid;">運用担当者の対応</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">システム障害</td>
<td align="center" style="border: 2px solid;">Webサ一バやデ一タべ一スサーバの停止、プ口グラムの異常終了、ネットワ―ク障害などの原因によって、システム自体の稼働が継続不能になる。</td>
<td align="center" style="border: 2px solid;">利用者からの報告を受けて、サ一バやサービスの稼働状況を確認し、 必要に応じて再起動を行う。それでも復旧できない場合は開発担当者に対応を依頼する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">システムエラー</td>
<td align="center" style="border: 2px solid;">主にプ口グラムの欠陥によって発生する、想定外のエラ一。操作の途中で画面に工ラ一メッセージが表示され、業務を続行できない。</td>
<td align="center" style="border: 2px solid;">利用者から、操作した手順を聞き取り、状況を確認する。エラー発生時の前後のログをログファイルから切り出して開発担当者に送付し、対応を依頼する。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">業務エラー</td>
<td align="center" style="border: 2px solid;">業務ルール上、入力値の内容が正しくないか、禁止されている操作をしたときに発生するエラー。プログラムで想定済みのエラーで、利用者が入力値の内容を修正し、操作をやり直すことによって業務を続行できる。</td>
<td align="center" style="border: 2px solid;">利用者から、操作した手順と、画面に表示されたエラーメッセージの内容を聞き取り、状況を確認する。運用手順書を参照し、エラーの回避方法を利用者に伝える。回避方法が不明な場合は、エラーの再現手順とエラー発生時の前後のログを開発担当者に送付し、回避方法の提示を求める。</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">入力エラー</td>
<td align="center" style="border: 2px solid;">文字列長や文字種に関する入力値の検証時のエラー。利用者自身が入力値を修正することによって業務を続行できる。</td>
<td align="center" style="border: 2px solid;">対応なし。利用者自身が画面に表示されているエラーメッセージを参照してエラーを解消する。</td>
</tr>
</table>
</div>
</div>
<div><div class="table-container"><div class="table-header"><span class="table-title">表3 出力機能及び出力内容と、出力内容を参照する関係者</span><span class="table-unit"></span></div>
<table border="0" width="100%" style="border-collapse: collapse;border-style: solid">
<tr>
<td align="center" style="border: 2px solid; width: 5em;">出力機能</td>
<td align="center" style="border: 2px solid;">出力内容</td>
<td align="center" style="border: 2px solid;">参照する関係者</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">ログ出力</td>
<td align="center" style="border: 2px solid;">プログラムの実行中に想定外の事態が発生した場合は処理を中断し、処理の呼出し元にエラーの内容を返す。その際、エラーの概要、詳細情報及びメソッドの呼出し履歴をLoggerクラスを使ってログファイルに出力する。</td>
<td align="center" style="border: 2px solid;">[ d ]</td>
</tr>
<tr>
<td align="center" style="border: 2px solid; width: 5em;">エラーメッセージ表示</td>
<td align="center" style="border: 2px solid;">エラーの概要、Exceptionクラスがもつエラーの詳細情報及び利用者が次に行うべき操作の案内を画面に表示する。</td>
<td align="center" style="border: 2px solid;">利用者</td>
</tr>
</table>
</div>
</div>
表2、表3についてレビューを行ったところ、次の3点が指摘された。
(1) 表2のシステム障害及びシステムエラーは、利用者の問合せの前にシステムが自動的に検出して運用担当者が対応を開始できるようにすべきである。
(2) 表3の出力内容には、セキュリティの観点における潜在的なリスクがある。
(3) 表3について、エラーに関するログだけでは、開発担当者が原因を調査するための情報としては不足するので、追加の情報を出力する必要がある。
指摘事項の(1)に対応するために、①監視の機能を用意することにした。監視の機能は、監視対象の情報を定期的に取得し、エラー発生時の特徴を検出した場合に電子メールで運用担当者に通知する。指摘事項の(2)については、表3の②出力内容をー部変更することにした。指摘事項の(3)については、アスペクト指向プログラミングを導入して、プログラムの処理の中で、要所ごとにログを出力することにした。
〔アスペクト指向プログラミングの導入〕
レビューの指摘事項の(3)に関して、利用者が行った操作内容を一律でログに出力することにし、これを実現するためにアスペクト指向プログラミングを導入することにした。
アスペクト指向プログラミングでは、特定のルールを定義しておくことによって、そのルールに合致する全ての箇所で同じ処理を実行させる。ルールの定義の条件にはクラス名、メソッド名に含まれる文字列のパターンが利用できる。また、特定の条件に合致する場合には実行の対象から除外するように指定することもできる。
ここでは、実装上の制約ができるだけ少なくなるようなルールの定義方法で、画面遷移に関するクラスに実装された全てのメソッドについて、クラス名、メソッド名及び全て引数の内容をログに出力することにした。これを実現するために、[ e ]を親クラスにもつクラスの[ f ]には必ず特定の文字列のパターンを含み、それ以外のクラスの[ f ]には特定の文字列のパターンを含まないように命名規則を定義した。ただし、秘匿情報や個人情報の保護の観点から、認証に関する情報や、③顧客情報を扱う箇所はログに出力しないようにした。Q社は、表2、表3に関する検討結果をシステムの設計に反映させ、開発を開始した。
設問1 本文、図1及び図2中の[ a ]~[ c ]に入れる適切な字句を答えよ。
設問2 表3中の[ d ]について、どの関係者に向けた表現として出力をすべきか。表1の関係者から<u>全て</u>選び答えよ。
設問3 本文中の下線①について、業務運用中のCRMシステムの何を対象に監視するか。システム障害とシステムエラーのそれぞれについて、最も適切なものを解答群の中から選び、記号で答えよ。
解答群
ア 画面に表示されたエラーメッセージ
イ データベースの接続確認の結果
ウ 電子メール送信履歴
エ ログ種別の文字列
オ ログファイルのサイズ
設問4 本文中の下線②について、変更した出力機能を答えよ。また、その変更の内容を20字以内で答えよ。
設問5 〔アスペクト指向プログラミングの導入〕について答えよ。
(1) 本文中の[ e ]、[ f ]に入れる適切な字句を答えよ。
(2) 本文中の下線③について、出力しないようにした理由を、20字以内で答えよ。 I
令和7年度春期 午後 問8 情報システム開発(問題原文)
■
回答・解説
AP過去問_令和7年度春期_午後_問7_組込みシステム開発の同じ回の前の問題へ移動。
AP過去問_令和7年度春期_午後_問9_プロジェクトマネジメントの同じ回の次の問題へ移動。
AP過去問_令和6年度秋期_午後_問8_情報システム開発の前の回の同じカテゴリの問題へ移動。
AP 過去問題 午後に戻る。