資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

AP 午後 情報システム開発[R6春]

     

ダッシュボードの設計に関する次の記述を読んで,設問に答えよ。

 Y社は,食品などを販売する店舗を経営する企業である。複数ある店舗では,商品の販売状況や在庫状況に合わせて,割引率を設定したり,店舗間で在庫の移動を行ったりしている。販売に関する情報は販売管理システムで管理しているが,状況をリアルタイムで監視するには不向きであった。そこで,販売状況をリアルタイムで監視できるシステム(以下,ダッシュボードという)を開発することにした。
 Y社では,商品ごとに商品分類を設定し,売上金額や販売数の集計に利用している。Y社が扱う情報のデータモデル(抜粋)を図1に,ダッシュボードのイメージ(一部)を図2に示す。


図1 データモデル(抜粋)


図2 ダッシュボードのイメージ(一部)

 販売状況や在庫状況はデータベースで管理する。データベースに新たな販売実績が追加されたり,在庫数が更新されたりすると,その内容がダッシュボードに随時反映され,最新の情報が表示される。
 Y社は,ダッシュボードの開発をZ社に依頼し,Z社はその設計に取り掛かった。

 

ダッシュボードのクラスの設計
 Z社は,ダッシュボードのクラスの設計を行った。設計したクラス図を図3に表示できるグラフの種類を表1に,主なクラスの説明を表2に示す。Controllerクラスは,システム全体の挙動を制御するクラスである。Viewクラスは,画面にグラフを表示する機能をもつクラスである。グラフには複数の種類があるので,その種類ごとに,Viewクラスを  a  したクラスを作成する。Subjectクラスは,データベースが更新されたことをViewクラスのオブジェクトに通知するクラスである。図1のデータモデル中のテーブルのうち,ダッシュボードで監視したい情報に関するテーブルのそれぞれについて,Subjectクラスを  a  したクラスを作成する。以下,Viewクラス,Subjectクラスを  a  したクラスのオブジェクトを,それぞれViewオブジェクト,Subjectオブジェクトという。


図3 クラス図

表1 表示できるグラフの種類

表2 主なクラスの説明

グラフの新規表示
 例えば,“時間帯ごと商品分類ごとの売上金額”のグラフを新たに画面上に表示する場合を考える。グラフの種類は棒グラフなので,棒グラフViewクラスのオブジェクトを作成する。次に,①関係するSubjectオブジェクトのaddObserverメソッドを呼び出す。その後,画面の初期表示のために,画面表示更新メソッドを呼び出す。

グラフの表示内容更新
 店舗で商品が販売されると,販売管理システムが,データベースにレコードを追加する。そのとき,ダッシュボードのControllerクラスに実装されているdbUpdatedメソッドが呼び出されるように,システム間の連携が行われている。
 Controllerクラスは,dbUpdatedメソッドが呼び出されると,更新されたテーブルに対応するSubjectオブジェクトのnotifyObserversメソッドを呼び出す。notifyObserversメソッドは,そのオブジェクトが属性としてもつ配列viewsに格納されている全てのViewオブジェクトのnotifyメソッドを呼び出す。notifyメソッドは,画面表示更新メソッドを呼び出す。Viewクラスの画面表示更新メソッドは  d  メソッドなので,例えば,“時間帯ごと商品分類ごとの売上金額”の場合は  e  クラスに実装されたメソッドを呼び出す。

データのフィルタリング
 Y社からの追加の要求で,集計結果をフィルタリングする機能を追加することになった。例えば,“時間帯ごと商品分類ごとの売上金額”のグラフ上で,特定の商品分類の表示箇所をマウスでクリックしたときに,表示されている全てのグラフについて,指定した商品分類で絞り込んだ結果を表示したい。そこで,絞込条件を取り扱うクラスとして絞込条件クラスを導入し,次の改修を加えることで機能を実現することにした。

・絞込条件クラスは,属性として"テーブル名","項目名”,“絞込条件の値”をもつ。例えば,商品分類で絞り込む場合は,テーブル名に“商品マスタ”,項目名に“商品分類コード”,絞込条件の値に“商品分類コードの値”が入る。

・Controllerクラスの属性に絞込条件クラスのオブジェクトを追加し,その属性に条件を設定するためのsetFilterメソッドを追加する。

・Viewオブジェクトが画面の表示を更新する際に,絞込条件のオブジェクトが引き渡されるようにするために,SubjectクラスのnotifyObserversメソッドと,Viewクラスのnotifyメソッドのそれぞれについて,呼出しの2仕様を変更する。

・集計処理クラスの処理で絞込条件を考慮して集計し,画面を更新する。

 画面の操作が行われたら,Viewオブジェクトが絞込条件オブジェクトを生成し,ControllerオブジェクトのsetFilterメソッドを呼び出す。その後,全てのViewオブジェクトの画面表示更新メソッドを呼び出すことで,機能を実現する。

過負荷の回避
 設計レビューを実施したところ,次の点が指摘された。

・販売管理システムが,データベースに販売実績のレコードを連続で追加すると,ダッシュボードが過負荷になるおそれがある。

・一つのViewオブジェクトは  f  ので,1回の販売実績の登録で,表示の更新が複数回発生してしまう。

 そこで,Viewクラスの属性に“更新フラグ”を追加し,notifyメソッドでは画面表示更新メソッドを呼び出すのではなく,"更新フラグ”を立てるようにした。また,“更新フラグ”を立てる処理とは別に,定期的に画面表示更新メソッドを呼び出す仕組みを用意し,"更新フラグ”が立っている場合だけ画面の更新処理を実行してから“更新フラグ”を降ろすようにした。

設問1 本文中の  a  に入れる適切な字句を答えよ。

 

解答・解説
解答例

 継承

解説

 ー

 

 

設問2 図3中の  b    c  に入れる適切なクラス間の関係又は多重度を答え,クラス図を完成させよ。なお,表記は図3の凡例に倣うこと。

 

解答・解説
解答例

 b:0‥* c:△

解説

 ー

 

 

設問3 本文中の下線①について,関係するSubjectオブジェクトのクラス名を図3中から選び全て答えよ。

 

解答・解説
解答例

 販売実績Subject,販売明細Subject

解説

 ー

 

 

設問4 本文中の  d    e  に入れる適切な字句を答えよ。

 

解答・解説
解答例

 d:抽象 e:棒グラフView

解説

 ー

 

 

設問5 本文中の下線②について仕様変更の内容を30字以内で答えよ。

 

解答・解説
解答例

 絞込条件のオブジェクトをメソッドの引数に設定する

解説

 ー

 

 

設問6 本文中の  f  に入れる適切な字句を,30字以内で答えよ。

 

解答・解説
解答例

 複数のSubjectオブジェクトからデータ更新通知を受け取る

解説

 ー

 

 

IPA公開情報

出題趣旨

 (公開前)

採点講評

 (公開前)