応用情報技術者過去問題 平成28年秋期 午後問8
⇄問題文と設問を画面2分割で開く⇱問題PDF問8 情報システム開発
モジュール分割に関する次の記述を読んで,設問1~4に答えよ。
E社は,英会話教室や料理教室などのカルチャースクール向けにSaaSを提供する会社である。E社のサービスは,画面デザインやシステム機能を顧客向けにカスタマイズできる点が人気を集めており,約100社の顧客が利用している。E社のサービスを提供するシステムには,顧客向けのカスタマイズを容易にするために,システム機能の部品化による高い再利用性が求められている。
E社では,ビジネス拡大を目的としてスポーツクラブ向けの施設利用状況管理サービスを提供することになった。施設利用状況管理サービスを提供するシステム(以下,新システムという)の開発は,E社開発部のF君が担当することになった。
〔新システムの概要〕
新システムは,会員管理機能,利用管理機能,利用状況集計機能の三つの機能を提供する。会員管理機能は,会員の氏名や連絡先などの情報を登録・更新・削除する機能である。利用管理機能は,スポーツクラブの店に設置する受付機を用いて,会員の利用施設や利用開始・終了日時などの施設利用実績を記録する機能である。利用状況集計機能は,各施設の利用状況を集計してレポート出力する機能である。
〔新システムのプログラムの開発方針〕
F君は,E社のサービス提供方法を考慮したプログラムの開発方針を策定し,上司の承認を得た。F君が策定したプログラム開発方針を図1に示す。〔モジュール分割手法の選定〕
F君は,新システムのモジュール設計を行うに当たり,モジュール分割手法の調査を行った。モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割するa,データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割するb,データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割するcなどがあることが分かった。
F君は,新システムは,会員の施設利用実績データを蓄積し,それを集計した結果をレポート出力するので,cが最適な手法であることを調査報告書にまとめ,上司の承認を得た。
〔利用状況集計機能の入出力データ分析〕
利用状況集計機能のプログラムは,施設利用実績データを集計し,店ごとに施設の利用状況をレポート出力する。
プログラムへの入力は,受付機で記録した施設利用実績データである。プログラムからの出力は,店ごとの施設の月間利用者数,最多利用者情報などを記載した施設利用レポートである。施設利用実績データの例を表1に,施設利用レポートの例を図2に示す。 F君は,プログラムへの入出力データの分析を行い,入力データ構造図及び出力データ構造図を作成した。F君が作成した入力データ構造図を図3に示す。〔利用状況集計機能のプログラム構造の設計〕
F君は,〔利用状況集計機能の入出力データ分析〕の結果を基に,プログラム構造の設計を行った。F君が設計したプログラム構造図を図4に示す。〔利用状況集計機能のモジュール分割〕
F君は設計したプログラム構造図を基に,プログラム開発方針に従ってモジュール分割の検討を行った。F君が検討したプール利用状況出力処理のモジュール分割案を図5に示す。図5中の①~④の破線は,モジュール分割案を示している。 F君は,利用状況集計機能以外の機能についてもモジュール分割を行い,モジュール設計を完了させた。
E社は,英会話教室や料理教室などのカルチャースクール向けにSaaSを提供する会社である。E社のサービスは,画面デザインやシステム機能を顧客向けにカスタマイズできる点が人気を集めており,約100社の顧客が利用している。E社のサービスを提供するシステムには,顧客向けのカスタマイズを容易にするために,システム機能の部品化による高い再利用性が求められている。
E社では,ビジネス拡大を目的としてスポーツクラブ向けの施設利用状況管理サービスを提供することになった。施設利用状況管理サービスを提供するシステム(以下,新システムという)の開発は,E社開発部のF君が担当することになった。
〔新システムの概要〕
新システムは,会員管理機能,利用管理機能,利用状況集計機能の三つの機能を提供する。会員管理機能は,会員の氏名や連絡先などの情報を登録・更新・削除する機能である。利用管理機能は,スポーツクラブの店に設置する受付機を用いて,会員の利用施設や利用開始・終了日時などの施設利用実績を記録する機能である。利用状況集計機能は,各施設の利用状況を集計してレポート出力する機能である。
〔新システムのプログラムの開発方針〕
F君は,E社のサービス提供方法を考慮したプログラムの開発方針を策定し,上司の承認を得た。F君が策定したプログラム開発方針を図1に示す。〔モジュール分割手法の選定〕
F君は,新システムのモジュール設計を行うに当たり,モジュール分割手法の調査を行った。モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割するa,データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割するb,データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割するcなどがあることが分かった。
F君は,新システムは,会員の施設利用実績データを蓄積し,それを集計した結果をレポート出力するので,cが最適な手法であることを調査報告書にまとめ,上司の承認を得た。
〔利用状況集計機能の入出力データ分析〕
利用状況集計機能のプログラムは,施設利用実績データを集計し,店ごとに施設の利用状況をレポート出力する。
プログラムへの入力は,受付機で記録した施設利用実績データである。プログラムからの出力は,店ごとの施設の月間利用者数,最多利用者情報などを記載した施設利用レポートである。施設利用実績データの例を表1に,施設利用レポートの例を図2に示す。 F君は,プログラムへの入出力データの分析を行い,入力データ構造図及び出力データ構造図を作成した。F君が作成した入力データ構造図を図3に示す。〔利用状況集計機能のプログラム構造の設計〕
F君は,〔利用状況集計機能の入出力データ分析〕の結果を基に,プログラム構造の設計を行った。F君が設計したプログラム構造図を図4に示す。〔利用状況集計機能のモジュール分割〕
F君は設計したプログラム構造図を基に,プログラム開発方針に従ってモジュール分割の検討を行った。F君が検討したプール利用状況出力処理のモジュール分割案を図5に示す。図5中の①~④の破線は,モジュール分割案を示している。 F君は,利用状況集計機能以外の機能についてもモジュール分割を行い,モジュール設計を完了させた。
設問1
本文中のa~cに入れる適切な字句を解答群の中から選び,記号で答えよ。
a,b,c に関する解答群
- STS分割
- TR分割
- オブジェクト指向
- 共通機能分割
- ジャクソン法
- ワーニエ法
解答入力欄
- a:
- b:
- c:
解答例・解答の要点
- a:イ
- b:ア
- c:オ
解説
モジュール分割の技法は、データの流れに着目するタイプと、データの構造に着目するものに大別されます。前者には「STS分割」「TR分割」「共通機能分割」、後者には「ジャクソン法」「ワーニエ法」などがあります。
「データを処理するトランザクションに着目」、「トランザクション単位にまとめて」という記述からTR分割とわかります。
〔bについて〕
「データの流れに着目」、「入力・変換・出力の観点から」という記述からSTS分割とわかります。
〔cについて〕
「データ構造に着目」、「入力データ構造と出力データ構造の対応関係から」という記述からジャクソン分割とわかります。
∴a=イ:TR分割
b=ア:STS分割
c=オ:ジャクソン法
- STS分割
- プログラムを入力(Source)、変換(Transform)、出力(Sink)の3種類のモジュールに分割する
- TR分割(トランザクション分割)
- トランザクションが分岐する地点を見つけて、主要データフローごとにモジュールを分割する
- 共通機能分割
- 分割したモジュールの中に同じ機能を持つものがある場合、それを共通モジュールとして独立させる
- ジャクソン法
- 入力データの構造と出力データの構造の関係を木構造で比較し、1対1に対応させ、そこからプログラムの構造を作成する
本問の図3~図5がジャクソン法による分割例です。 - ワーニエ法
- データが「いつ・どこで・何回」使われるかを3つの制御構造(順次・選択・繰返し)で表し、それをそのままプログラム構造とする
「データを処理するトランザクションに着目」、「トランザクション単位にまとめて」という記述からTR分割とわかります。
〔bについて〕
「データの流れに着目」、「入力・変換・出力の観点から」という記述からSTS分割とわかります。
〔cについて〕
「データ構造に着目」、「入力データ構造と出力データ構造の対応関係から」という記述からジャクソン分割とわかります。
∴a=イ:TR分割
b=ア:STS分割
c=オ:ジャクソン法
設問2
図3中のd,eに入れる適切な字句を表1中の字句を使って答えよ。
解答入力欄
- d:
- e:
解答例・解答の要点
- d:施設名
- e:会員氏名
解説
プログラムに入力されるのは、受付機で記録した施設利用実績データです。したがって、表3の入力データ構造図は、表1の各データが過不足なく含むものでなくてはなりません。
図3と表1を対応させると、図3には「施設名」と「会員氏名」が存在しないことがわかります。よって、2つの空欄には「施設名」と「会員氏名」のいずれかが入ることになります。図3で「会員番号」が「会員情報」の連接データとして表現されていることを考えれば、同じく会員情報に属する「会員氏名」はeに入ると判断できます。残ったdには「施設名」が入ります。
∴d=施設名
e=会員氏名
図3と表1を対応させると、図3には「施設名」と「会員氏名」が存在しないことがわかります。よって、2つの空欄には「施設名」と「会員氏名」のいずれかが入ることになります。図3で「会員番号」が「会員情報」の連接データとして表現されていることを考えれば、同じく会員情報に属する「会員氏名」はeに入ると判断できます。残ったdには「施設名」が入ります。
∴d=施設名
e=会員氏名
設問3
図4中のf,gに入れる適切な字句を20字以内で答えよ。
解答入力欄
- f:
- g:
解答例・解答の要点
- f:店ごとの施設利用レポート出力処理 (16文字)
- g:利用者なし表示出力処理 (11文字)
解説
〔fについて〕
fは、プログラム構造の最上位に位置する処理であり、下位の処理に「ヘッダー情報出力処理」「プール利用状況出力処理」等を含みます。図2「施設利用レポートの例」に「ヘッダー情報」「プールの利用状況」等の対応する出力があるので、図4は利用状況集計機能プログラムのプログラム構造図であるとわかります。
本文中に「利用状況集計機能のプログラムは,…,店ごとに施設の利用状況をレポート出力する」とありますから、fには「店ごとの施設利用レポート出力処理」が入ります。
∴f=店ごとの施設利用レポート出力処理
〔gについて〕
gは、「最多利用者出力処理」を行う際の選択処理(右上に〇付)に位置付けられています。施設レポートの例を見ると、その施設の利用者がいるときには上位5名の利用状況を表形式で出力しますが、利用者がいないときは(スタジオの利用状況欄のように)「※当月の<施設名>利用者なし」という文字列を出力します。つまり、利用者数によって出力処理が分岐します。これが「最多利用者情報出力処理」で生じる選択処理です。
選択処理の一方は「上位利用者出力処理」であるため、gには利用者がいない場合の出力処理が入ります。図2の注記では、「当月の施設の利用者がいないときは,…利用者なし表示を出力する」と説明しているため、gには「利用者なし表示出力処理」が入ります。
∴g=利用者なし表示出力処理
fは、プログラム構造の最上位に位置する処理であり、下位の処理に「ヘッダー情報出力処理」「プール利用状況出力処理」等を含みます。図2「施設利用レポートの例」に「ヘッダー情報」「プールの利用状況」等の対応する出力があるので、図4は利用状況集計機能プログラムのプログラム構造図であるとわかります。
本文中に「利用状況集計機能のプログラムは,…,店ごとに施設の利用状況をレポート出力する」とありますから、fには「店ごとの施設利用レポート出力処理」が入ります。
∴f=店ごとの施設利用レポート出力処理
〔gについて〕
gは、「最多利用者出力処理」を行う際の選択処理(右上に〇付)に位置付けられています。施設レポートの例を見ると、その施設の利用者がいるときには上位5名の利用状況を表形式で出力しますが、利用者がいないときは(スタジオの利用状況欄のように)「※当月の<施設名>利用者なし」という文字列を出力します。つまり、利用者数によって出力処理が分岐します。これが「最多利用者情報出力処理」で生じる選択処理です。
選択処理の一方は「上位利用者出力処理」であるため、gには利用者がいない場合の出力処理が入ります。図2の注記では、「当月の施設の利用者がいないときは,…利用者なし表示を出力する」と説明しているため、gには「利用者なし表示出力処理」が入ります。
∴g=利用者なし表示出力処理
設問4
〔利用状況集計機能のモジュール分割〕について,(1),(2)に答えよ。
- 図5中の②の破線の下の処理を複数の施設の利用状況出力処理で共通して利用するモジュールとする場合,モジュールの結合度は何結合となるか,解答群の中から選び記号で答えよ。
- 図5中の処理をプログラム開発方針に従って,モジュール強度を高め,モジュール結合度を下げるようにモジュール分割するとき,最適な分割を図5中の①~④の番号を用いて答えよ。また,その理由を40字以内で述べよ。
解答群
- データ結合
- スタンプ結合
- 制御結合
- 外部結合
- 共通結合
- 内容結合
解答入力欄
- 分割:
- 理由:
解答例・解答の要点
- ウ
- 分割:④
- 理由:
データ結合のモジュールに分割でき,再利用やカスタマイズが容易となるから (35文字)
解説
- モジュール結合度とは、モジュール同士の関連性の強さを示す概念です。モジュール同士の結合度合いが強ければ、関連するモジュールに変更があった場合の影響は大きく、反対に結合度が弱ければ影響を受けにくくなります。独立性と保守性の観点から、モジュール結合度は低いほど良いとされています。
モジュール結合度の強弱は、モジュール間のデータの受渡し方法などにより6段階のレベルに分類されています。- データ結合(弱い↑)
- 処理に必要なデータだけを単一のパラメータとして受け渡している
- スタンプ結合
- 処理に必要なデータだけをレコードや構造体などのデータ構造として受け渡している
- 制御結合
- モジュールの動作を制御するための要素を受け渡している
- 外部結合
- 大域宣言された単一のデータを、複数のモジュールが参照している
- 共通結合
- 大域宣言されたレコードや構造体などのデータ構造を、複数のモジュールが参照している
- 内容結合(強い↓)
- モジュールの内部を直接参照・使用している
∴ウ:制御結合 - プログラム開発方針では以下の2点が示されています。まず、各施設で共通でない「最大同時利用者数出力処理」を共通モジュールに含めている①は論外です。残る②から④でモジュール結合度が最も低くなる分割点を考えます。
②での分割は前述の通り制御結合です。③での分割も②と同様に、「利用者なし表示出力処理」のために<施設名>の受渡しが必要となるので制御結合です。④は集計したデータを幾つかのパラメータとして受け渡すだけで済むのでデータ結合となります。
よって、モジュール結合度が最も低くなる④が開発方針に合致する分割点となります。
∴④、データ結合のモジュールに分割でき,再利用やカスタマイズが容易となるから