SAシステムアーキテクト試験 午後Ⅰ

平成24年度秋期 システムアーキテクト 午後Ⅰ 問3

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問3 セミナ管理システムの構築に関する次の記述を読んで,設問1〜3に答えよ。 D社は,各種のソフトウェアパッケージを核としたソリューションを提供する大手ソフトウェアベンダである。D社は,営業拡大を目的としたソリューションセミナ(以下,セミナという)を全国で年間数回ずつ,ホテルやイベント会場を使って開催しており,セミナの申込管理をシステム化している。 〔現状と課題〕 D社のセミナは,営業担当が指定した顧客に招待状を出し,Webで参加申込みを受け付ける。また,顧客以外の受講希望者の参加申込みも受け付けている。 各セミナは,1日単位で開催され,午前10時から午後5時までを五つの時間帯(以下,時限という)に分け,それぞれの時限でセッションを開催する。1回のセミナでは,20〜30個のセッションが開催され,申込者は申込時に1〜5個のセッションを予約するが,同一時限に開催されるセッションを複数予約することはできない。各セッションに定員を設定し,予約人数が定員に達した場合は,当該セッションは満席扱いとし,それ以降は予約を受け付けない。申込者には,申込時に当該セミナで一意に付与する申込IDと予約したセッション名を記載した受講票を,システムで発行する。 当日,会場受付には,申込ID順の申込者リストを準備し,来場した申込者(以下,受講者という)に受講票を提示してもらうことで,来場チェックを行っている。各セッションの会議室の入口では,受講者が提示した受講票に当該セッション名が記載されていることを確認して入室を許可しているが,申込IDなどの受講者の情報は記録していない。受講者が,予約していないセッションの受講を希望した場合には,空席待ちの列に並んでもらい,セッション開始時刻に空席があれば受講可能としている。 営業担当及びセミナ事務局から,次の課題が挙げられ,改善を要望されている。 (1)会場受付で誰が来場しているかは把握できるが,セッションの受講は記録されないので,受講者が予約したセッションを実際に受講したかは把握できない。 (2)各セッションの会議室の入口では,当該セッションを予約した申込者が来場しているかを把握できないので,予約人数が定員に達している場合に,セッションの開始時刻前に空席待ちの受講者を入室させてよいか判断できない。 (3)受講者が実際にどのセッションを受講したか把握できないので,有効なフォロー営業ができない。 (4)各セッションの受講希望人数にばらつきがあり,満席で予約を断るセッションがある一方で,予約人数が定員に満たないセッションもある。受講希望が多いセッションは,事前に大きな会議室に振り替えられるようにしてほしい。 D社では,これらの課題を解決するために,現在の申込管理のシステムを拡充し,セミナ管理システム(以下,新システムという)を構築することにした。 〔新システムに対する要件〕 情報システム部のE課長が新システムの構築を担当することになり,次のとおりに要件を定め,セミナ事務局(以下,事務局という)の了解を得た。 (1)申込受付時に,セッションの予約状況によって,予約希望が多いセッションに割り当てられた会議室を,より定員が多い会議室に変更することを可能にする。 (2)セミナの会場受付では,受講者が持参した受講票に基づき,申込IDを記録したICカード(以下,受講カードという)をその場で発行する。 (3)各セッションの会議室の入口に設置したICカードリーダに,受講者が受講カードをかざすことによって,予約の有無の確認を行い,セッションの受講を記録する。これによって,入室人数をリアルタイムに把握し,会場の事務局控室にあるPCで参照できる。 (4)各セッションの予約人数,当該会議室の定員,予約者の来場情報,予約者の当該セッションへの入室情報及び現在入室している人数を基に,受講見込人数の推定を行い,空席待ちの受講者の入室を段階的に効率よく行えるようにする。 〔新システムの設計〕 E課長は,〔新システムに対する要件〕に基づき,新システムの設計を行った。 新システムのE-R図を図1に,新システムの処理概要を表1に示す。 図1 新システムのE-R図 表1 新システムの処理概要 なお,セミナには一意にセミナ番号を付与する。また,セッションにはセミナ内で一意なセッションIDを付与し,時限は開始時刻順に1〜5の値をとる。 “受講セッション”の主キーについては,セミナ番号,申込ID,セッションIDを設定する方法と,セミナ番号,申込ID,選択したセッションの時限を設定する方法が考えられたが,業務プログラムの作成負荷を軽減するために,後者を選択した。 会議室変更の処理について,その仕様を明確にするために,判断する条件と,条件に一致したときに行う処理内容を次のようにまとめた。 あるセッションの予約人数が,そのセッションに割り当てられた会議室の定員の1.6倍に達したとき,当該セッションと,セミナ番号,時限が等しい全てのセッションについて,(1)〜(4)の処理を行う。 (1)各セッションの会議室の[a]が,当該セッションの会議室の[a]よりも[b]セッションを選択する。 (2)選択したセッションの中から,[c]が当該セッションの[c]よりも[d]セッションを選択する。 (3)選択したセッションの[c]を,選択したセッションの会議室の[a]で割って倍率を求め,その倍率が最も低いセッションを選択する。 (4)選択したセッションの[e]と当該セッションの[e]を入れ替える。 〔営業担当役員からの追加要望〕 E課長が,役員会で新システムの概要を説明したところ,営業担当役員から次のような要望があった。 ・セミナは営業拡大の絶好の機会であり,営業担当が総出で顧客対応を行っているが,受講者が多く目的の顧客がどこにいるのかが把握できず,うまく対応できていない。 ・セミナの開催場所と内容によって,重要顧客を選定する。重要顧客の来場時と各セッションへの入室時に,営業担当に連絡してほしい。 ・セミナ終了後,営業担当がフォロー営業を行えるように適切な情報を渡してほしい。 E課長は,これらの要望に応えるために,重要顧客の来場及び入室情報を把握できるよう新システムの設計の変更を行うことにし,あるエンティティタイプに重要顧客区分の属性を追加した。あわせて,表1の顧客招待,セミナ受付及びセッション入室の各処理を変更することにし,それぞれの処理の追加点を表2にまとめた。 表2 処理の追加点 設問1 〔新システムの設計〕について,(1)〜(3)に答えよ。 (1)E課長は,業務プログラムの作成負荷を軽減するために“受講セッション”の主キーに,セミナ番号,申込ID,選択したセッションの時限を設定する方法を選択した。なぜ,作成負荷が軽減できると考えたか。その理由を40字以内で述べよ。 (2)図1のE-R図について,破線で示した5か所のリレーションシップを凡例に倣って示せ。 (3)本文中の[a]〜[e]に入れる適切な字句を答えよ。 設問2 空席待ちの受講者の入室を段階的に効率よく行うために,当該セッションの予約人数及び当該会議室の定員の他に,リアルタイムで把握できる三つの情報を利用する。どのような情報か,図1中の属性名を用いて,それぞれ30字以内で述べよ。 設問3 〔営業担当役員からの追加要望〕について,(1)〜(3)に答えよ。 (1)重要顧客の来場及び入室情報を把握するために,あるエンティティタイプに属性として重要顧客区分を追加する。追加するエンティティタイプ名を挙げ,そのエンティティタイプに追加する理由を35字以内で述べよ。 (2)表2中の[f]〜[j]に入れる適切な字句を答えよ。 (3)セミナ終了後,フォロー営業に使用する情報を営業担当に渡すことになったが,新システムの稼働によって,確実に渡すことができるようになった情報がある。その内容を25字以内で述べよ。
図1 新システムのE-R図。顧客,セミナ,セッション,会議室などのエンティティタイプと,顧客招待,受講申込,受講セッションなどの関係を示すE-R図。
図1 新システムのE-R図。顧客,セミナ,セッション,会議室などのエンティティタイプと,顧客招待,受講申込,受講セッションなどの関係を示すE-R図。
表1 新システムの処理概要。セミナ企画,顧客招待,申込み,定員管理,会議室変更,セミナ受付,セッション入室などの処理概要を一覧化した表。
表1 新システムの処理概要。セミナ企画,顧客招待,申込み,定員管理,会議室変更,セミナ受付,セッション入室などの処理概要を一覧化した表。
表2 処理の追加点。顧客招待,セミナ受付,セッション入室について,重要顧客の区分参照や来場・入室情報通知の追加点を示す表。
表2 処理の追加点。顧客招待,セミナ受付,セッション入室について,重要顧客の区分参照や来場・入室情報通知の追加点を示す表。
解き方のヒントを見る

業務上の前提を意識して考える

設計を検討するときは、判断の土台となる業務上の前提に目を向けましょう。示されている条件と、自分の経験から補っている想定を区別すると、先入観に左右されずに、検討の根拠を整理しやすくなります。

この問題で問われていること

この分野では、慣れた業務のイメージをそのまま当てはめず、与えられた条件を判断の前提として扱うことが大切です。考えを進める際は、その判断がどの条件に基づくのかを、自分の言葉で確かめてみましょう。

視点

前提とは、検討の出発点として置く条件です。明示された内容と自分が補った想定を分けておくと、考えの根拠を振り返りやすくなります。

確認ポイント

  • 判断の根拠となる条件を確認したか
  • 自分の経験による想定を加えていないか
  • 判断の前提を自分の言葉で説明できるか
正解と解説を見る

解説

本問は、セミナ運営の課題をデータベース設計と処理設計に落とし込む問題です。重複予約の防止、会議室の交換、来場・入室情報による空席判断、セミナごとの重要顧客管理を、本文の業務条件から導きます。

問題の全体像

D社の従来システムでは、セミナの申込みと来場は把握できても、各セッションを実際に受講したかは記録できませんでした。また、予約の偏りによる満席や、空席待ちの入室判断にも課題があります。新システムでは、ICカードで入室を記録し、予約状況に応じた会議室変更や重要顧客の来場・入室通知を実現します。公式の出題趣旨では、業務要件からシステム要件を設定し、処理・データベースを設計する能力と、追加要件に応じて設計を変更する能力を問うとしています。本文の条件を、キー、関連、属性、処理のそれぞれに対応させることが中心です。

設問1(1)

着目する条件は「同一時限に開催されるセッションを複数予約することはできない」です。主キーをセミナ番号・申込ID・時限にすると、同じセミナの同じ申込者について、同一時限の受講セッションを二つ登録できません。セッションIDが異なっても主キーが重複するため、データベース側で重複予約を防げます。一方、セッションIDを主キーに含める方法では、同一時限の別セッションをキーの重複だけでは検出できません。公式解答例では、このチェックをデータベースの一意制約で実現できることを理由としています。40字以内では「同一時限の複数予約をデータベースの一意制約で防げるから。」と要点をまとめられます。

設問1(2)

公式解答例の5か所は、顧客●―○→顧客招待、顧客招待○―○受講申込、受講申込●―●→受講セッション、セミナ●―●→セッション、セッション●―○→受講セッションです。顧客1件には招待が0件以上対応し、招待1件は必ず顧客1件に対応します。招待と申込みは双方とも0件又は1件です。招待されても申し込まない場合があり、顧客以外の申込みもあるためです。また、同一顧客は同じセミナに複数回申し込めないので、招待1件に申込みが複数対応することはありません。受講申込1件には、1〜5個の予約に対応する受講セッションが必ず存在し、各受講セッションは受講申込1件に対応します。セミナ1件には複数のセッションが必ず存在し、各セッションはセミナ1件に対応します。セッションには予約がまだない場合があるため、受講セッションは0件以上ですが、各受講セッションは必ずセッション1件に対応します。採点講評では、関連を導くにはシステム要件の理解が必要だと指摘しています。キーの形だけでなく、データが存在しない場合も本文から判断します。

設問1(3)

公式解答例では、a=定員、b=多い、c=予約人数、d=少ない、e=会議室IDです。対象は同じセミナ・同じ時限のセッションなので、同時に使用する会議室の割当てを交換する処理です。まず、当該セッションより定員の多い会議室を使っているセッションを選び、次に、その中から当該セッションより予約人数が少ないものを選びます。さらに、予約人数÷定員の倍率が最も低いセッションを選びます。最後に交換するのは、セッション自体や予約人数ではなく、割当て先を表す会議室IDです。各空欄を埋めた文章が、予約希望の多いセッションを大きな会議室へ移すという要件につながることを確認します。

設問2

新システムの要件(4)には、予約人数、定員、予約者の来場情報、予約者の入室情報、現在入室している人数の五つが挙げられています。設問で既に示された予約人数と定員を除くと、残る三つが解答対象です。図1では、来場情報を受講申込の「来場日時」、入室情報を受講セッションの「入室日時」、現在の人数をセッションの「入室人数」で表します。公式解答例もこの三つを挙げています。各30字以内では、①「当該セッションの受講者のセミナへの来場日時」、②「当該セッションの受講者の入室日時」、③「当該セッションの入室人数」とまとめられます。来場済みでもまだ入室していない予約者と、既に入室した予約者を区別し、全体の入室人数と併せて判断します。採点講評では、属性名だけを書く解答が多かったとされています。どの受講者・セッションの情報なのかまで示すことが必要です。

設問3(1)

公式解答例で追加先とされているエンティティタイプは「顧客招待」です。本文では、重要顧客を「セミナの開催場所と内容によって」選定し、表2では招待したい顧客を選ぶ際に重要顧客の区分を付けています。つまり、重要顧客区分は顧客に固定された属性ではなく、特定のセミナへの招待について決まる属性です。顧客招待の主キーはセミナ番号・顧客IDなので、その単位で区分を保持できます。理由は35字以内で「重要顧客はセミナの開催場所と内容によって招待時に選定されるから。」とまとめられます。採点講評では、その情報がどの時点で何に対して付与されるかを理解する必要があるとしています。

設問3(2)

公式解答例では、f=受講票、g=申込ID、h=受講申込、i=顧客ID、j=受講カードです。セミナ受付では持参された受講票を使い、セッション入室ではICカードリーダで受講カードを使うため、fとjは読み取る媒体が異なります。どちらにも申込IDが記載・記録されているので、その申込IDから受講申込を参照して顧客IDを求めます。続いて、その顧客IDと当該セミナのセミナ番号で顧客招待の重要顧客区分を参照し、該当する場合に営業担当へ通知します。申込IDはセミナ単位で一意なので、参照時には当該セミナを特定した上で扱うことも押さえます。

設問3(3)

現状の課題(3)と、新システムでセッションの受講を記録する要件を対応させます。従来は、予約したセッションやセミナへの来場は把握できても、実際にどのセッションを受講したかは分かりませんでした。新システムでは受講カードによって受講者の入室を記録するため、実際の受講セッションをフォロー営業の情報として渡せます。公式解答例では「受講者がどのセッションを受講したかという情報」としています。25字以内では「受講者が実際に受講したセッションの情報」と要点をまとめられます。予約内容と実際の受講結果を区別することが解答の中心です。

学習のポイント

業務制約から主キーと関連の多重度・必須性を導き、情報の対象、記録時点、保持する単位を具体的に説明する練習が重要です。

出典:独立行政法人 情報処理推進機構(IPA)平成24年度秋期 システムアーキテクト試験 午後Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針