過去問解きまくり研究所 ホーム

令和6年度 春期 午前Ⅱ 問7

ソフトウェア開発管理技術

現在のプログラム A,B に,在庫テーブルを更新した後に更新ログを出力する機能を追加する。この機能は共通モジュールで実装し,どのプログラムからも利用できるようにする。図は,プログラムの実装案である。案 1 も案 2 も,在庫テーブルを更新した後に更新ログが出力される。更新ログを出力する共通モジュールを呼び出す処理を,案 1 のように各プログラム中に直接記述するのではなく,案 2 のように呼び出し方の宣言を共通プログラムなどに記述することによって,開発の効率を高めたり,保守性を高めたりするプログラミング技法はどれか。

プログラムの実装案:

〔現在〕
  プログラムA: ⋮ 在庫テーブルを更新する ⋮
  プログラムB: ⋮ 在庫テーブルを更新する ⋮

〔案1〕
  プログラムA: ⋮ 在庫テーブルを更新する/モジュールCを呼び出す ⋮
  プログラムB: ⋮ 在庫テーブルを更新する/モジュールCを呼び出す ⋮
  モジュールC: 更新ログを出力する

〔案2〕
  プログラムX: 宣言:在庫テーブルを更新した後にモジュールCを呼び出す
  プログラムA: ⋮ 在庫テーブルを更新する ⋮
  プログラムB: ⋮ 在庫テーブルを更新する ⋮
  モジュールC: 更新ログを出力する
答えと解説を見る

✓ これが正解アアスペクト指向プログラミング

解説

横断的な処理を宣言で差し込む技法はアスペクト指向プログラミングです。

案1では、プログラム A と B の両方に、在庫テーブルを更新した後でモジュール C を呼び出す処理を直接書いています。呼び出すプログラムが増えるたびに同じ記述を書き足す必要があり、呼出しの漏れや修正忘れも起きやすくなります。案2では、在庫テーブルを更新した後でモジュール C を呼び出すという宣言をプログラム X に一か所だけ書き、A と B の本体には手を入れません。ログ出力のように多くの処理にまたがる関心事を本体から切り離し、どこに差し込むかを宣言で指定する技法がアスペクト指向プログラミングです。本体を触らずに横断的な処理を後から織り込む形を見たら、この技法だと判断できます。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:令和6年度 春期 システムアーキテクト試験 午前Ⅱ 問7

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)