令和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 の本体には手を入れません。ログ出力のように多くの処理にまたがる関心事を本体から切り離し、どこに差し込むかを宣言で指定する技法がアスペクト指向プログラミングです。本体を触らずに横断的な処理を後から織り込む形を見たら、この技法だと判断できます。
ほかの選択肢はなぜ違うのか
- イオブジェクト指向プログラミング:オブジェクト指向プログラミングは、データと操作をオブジェクトにまとめ、クラスや継承で整理する技法です。案2のように、呼出しの宣言を別の場所に書いて既存の処理へ差し込む仕組みを特徴とするものではありません。
- ウ関数型プログラミング:関数型プログラミングは、副作用のない関数を組み合わせて計算を表す技法です。更新処理の後に別モジュールの呼出しを宣言で織り込むという、図の案2の書き方を説明するものではありません。
- エ構造化プログラミング:構造化プログラミングは、順次・選択・繰返しの基本構造だけで処理の流れを組み立てる技法です。呼出しを各プログラムに直接書く案1とも両立する考え方で、宣言で差し込む案2の工夫を指す名前ではありません。
この問題の用語
- 保守動いているシステムを使い続けられるように、点検や修正、更新を続ける作業です。障害の修正だけでなく、環境の変化に合わせた手直しも含みます。
出典:令和6年度 春期 システムアーキテクト試験 午前Ⅱ 問7
同じ用語が出る問題
- 令和5年度 春期 午前Ⅱ 問8:使用性に関する問題(保守)
- 令和3年度 春期 午前Ⅱ 問11:共通フレームに関する問題(保守)
- 平成30年度 秋期 午前Ⅱ 問16:NREに関する問題(保守)
- 平成30年度 秋期 午前Ⅱ 問3:CMMIに関する問題(保守)
- 平成28年度 秋期 午前Ⅱ 問12(保守)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)