システムアーキテクト試験 2009年 午後101


販売管理システムに関する次の記述を読んで、設問1~4に答えよ。

 A社は、缶入りの飲料を製造・販売している。商品の大部分は自動販売機(以下、自販機という)で販売されるので、自販機向けの販売管理システム(以下、A社販売管理システムという)を構築し、運用している。このたび、A社販売管理システムの機能強化を図ることにした。   〔A社の概要〕  (1)営業所が全国に300か所あり、各営業所には商品庫が一つずつある。  (2)各営業所には、約10名の営業担当者が所属しており、各営業担当者にトラック1台が割り当てられている。  (3)各営業担当者は、ハンディターミナル(以下、HTという)を1台ずつ所持する。各営業担当者は、約200台の自販機を担当し、毎日数回から毎月1回の頻度で担当の自販機を巡回して、売上金の回収や商品の補充などを行う。  (4)自販機は、商品を格納する縦型のストッカ(以下、コラムという)を30~40個内蔵しており、自販機前面の操作ボタンと連動して商品を販売する。  (5)工場での商品の1回の製造単位をロットといい、1ロット当たりの商品数量は数十万本である。ロットごとに一意のロット番号が付与される。ロット番号、製造年月日、製造工場番号、商品コード、商品賞味期限、原材料番号などは生産管理システムで管理されている。     〔販売管理業務とA社販売管理システムの概要〕  (1)A社販売管理システムの構成   ①A社販売管理システムは、サーバ、各営業所に設置されるWeb端末及びHTから構成される。HTはサーバや自販機と通をすることができる。   ②サーバ及びHTはファイルを保持しており、ファイルは、Web端末やHTを介した入力、サーバとHTとの通信。HTと自販機との通信、夜間バッチ処理で更新される。  (2)営業担当者の業務   ①ダウンロード処理:自販機の巡回出発前に、当日の巡回に必要なファイルを、サーバからHTにダウンロードする。   ②売上処理:自販機に到着後、HTと自販機を通させ、自販機コードと、コラムごとにコラム番号、販売単価及び売上数のデータを取得する。HTのアプリケーションは、販売単価及び売上数から売上金額を計算し、取得及び計算したデータをHTに保存する。その後、売上金を回収する。   ③補充処理:HTのアプリケーションで、売上処理で取得した売上数を基にコラムごとの最適補充数を計算する。それを参考に商品を補充し、補充数をHTに入力する。HTのアプリケーションは、HT内のファイルの情報、売上数及び補充数から、コラムごとの在庫数及びトラックの商品ごとの在庫数を計算し、入力及び計算したデータをHTに保存する。さらに、自販機内のコラムごとの売上数をゼロにする。   ④トラック棚卸処理:自販機の巡回終了後、営業所に戻り、トラックの商品の棚卸しを行う。棚卸しでは、トラックコード、商品コード及び実地棚卸数をHTに入力する。HTのアプリケーションは、トラック在庫マスタの在庫数を実地棚卸数で更新する。   ⑤積込積降処理:棚卸結果などから次の巡回に必要な商品をトラックに積み込み、倉庫コード、トラックコード、商品コード及び積込数をHTに入力する。また。不要な商品はトラックから倉庫に降ろし、倉庫コード、トラックコード、商品コード及び積降数をHTに入力する。HTのアプリケーションは、HT内のファイルの情報及び入力されたデータから、トラックの商品ごとの在庫数を計算し、入力及び計算したデータをHTに保存する。   ⑥アップロード処理:積込積降処理終了後、HT内のファイルをサーバにアップロードする。サーバでは、該当するファイルの該当するレコードを更新する。  (3)営業所の業務(倉庫担当者がWeb端末で行う)   ①入庫処理:工場から倉庫に商品が届いた際、検品後に登録する。   ②移動出庫処理:ほかの倉庫に商品を移動する際、移動元倉庫で登録する。   ③移動入庫処理:ほかの倉庫から商品が届いた際、移勤先倉庫で検品後に登録する。   ④返品出庫処理:商品を工場に返品する際、登録する。   ⑤倉庫在庫確定処理:HTから当日アップロードされたデータを入力として、倉庫在庫マスタを更新し、当日の在庫数を確定する。夜間バッチ処理で行われる。     主要なファイルの一覧を表1に、ダウンロード処理とアップロード処理を除くHTのアプリケーションの処理のDFDを図に示す。図は作成途中であり、データのうちHT番号と各伝票番号は省略している。  
システムアーキテクト試験(平成21年度 午後I 問1 表1)
  システムアーキテクト試験(平成21年度 午後I 問1 図1)
  〔機能強化〕  次の二つの対応を行うことにした。  (1)ほかの営業担当者が担当する自販機への巡回対応   現在、1日のうちに複数の営業担当者が同一自販機を巡回することはない。しかし、今後は巡回する可能性があり、問題なく対応できるようにする。そのため、サーバのコラムマスタの在庫数を、HT内のコラムマスタのアップロード時にHT内に保存されている値で更新するのではなく、サーバで計算し直すことを考えている。  (2)商品賞味期限の一覧表出力機能   自販機内の商品は、通常1か月以内に販売される。したがって、トラックや倉庫の在庫の賞味期限が2か月以上あれば、賞味期限に余裕をもった商品を販売できる。   生産管理システムからロットごとの商品賞味期限を入手し、その商品賞味期限が、本日から2か月以内に迫っているロットが、どの倉庫、どのトラックに存在するかを調べ、一覧表として出力する。この機能の実現のためには、ロット番号を関連するファイルに記録する必要がある。ロット番号を属性として追加するファイルと、そのロット番号を利用する処理との関連の一部を抜き出して、表2に整理した。
  システムアーキテクト試験(平成21年度 午後I 問1 表2)

販売管理システムに関する次の記述を読んで、設問1~4に答えよ。

設問1HTのアプリケーションについて、(1)~(3)に答えよ。

(1)図中の補充プロセスは売上プロセスの後に実行される。そのように設計した理由を30字以内で述べよ。

模範解答

補充プロセスの処理では売上数を必要とするから

解説

解答の論理構成

  1. 売上プロセスの役割を確認
    問題文(2)②に「自販機コードと、コラムごとに…売上数のデータを取得する」とあり、ここで当日の「売上数」が確定します。
  2. 補充プロセスの入力を確認
    同(2)③には「売上処理で取得した売上数を基にコラムごとの最適補充数を計算する」と記載されています。
  3. データ依存関係の導出
    補充プロセスは売上数という計算済みデータを前提に動くため、売上プロセスより前に置くと必要データが存在しません。
  4. 結論
    したがって「補充プロセスは売上プロセスの後」となる理由は「補充で売上数を参照する」ことに尽きます。

誤りやすいポイント

  • 「在庫数更新が後だから」という表面的理由だけを書くと、売上数依存を示せず減点対象。
  • プロセスの並列実行可否を論じてしまい、本質のデータ依存関係を外す。
  • 補充プロセスが売上数を“更新”すると誤解し、順序を逆転させてしまう。

FAQ

Q: 売上プロセスと補充プロセスを一体化すれば順序問題は解消しますか?
A: 一体化は可能ですが、職務分担や改修時の影響範囲を考えると別プロセスのまま順序制御する方が保守性に優れます。
Q: 売上数以外に補充プロセスが参照するデータは?
A: 問題文には「HT内のファイルの情報、売上数及び補充数から…在庫数を計算」とあるため、ローカル在庫情報も参照しますが、順序の決定要因はあくまで売上数です。
Q: 売上数をサーバへ直送し即時補充計算する方法は?
A: リアルタイム計算には通信環境の制約とシステム改修コストが伴うため、現行のHT内処理+巡回終了後アップロード方式が採用されています。

関連キーワード: DFD, データフロー, プロセス順序, 補充数計算

設問1HTのアプリケーションについて、(1)~(3)に答えよ。

(2)補充処理で、自販機内のコラムごとの売上数をゼロにしている理由を,30字以内で述べよ。

模範解答

売上数をゼロにしないと売上数が累積されてしまうから

解説

解答の論理構成

  1. 売上処理の流れ
    • 【問題文】「自販機に到着後、HTと自販機を通させ、自販機コードと、コラムごとに…売上数のデータを取得する。」
    • 同段落で「売上金額を計算し、取得及び計算したデータをHTに保存する。」
      すなわち、巡回時点の売上数を読み取り計算します。
  2. 補充処理の最後の操作
    • 【問題文】「さらに、自販機内のコラムごとの売上数をゼロにする。」
      ここでカウンタを初期化している事実が明記されています。
  3. 初期化の必要性
    • 次の巡回では再び「売上数」を読み取り計算するため、前回分を残しておくと「累積」され実際の当日売上を超えてしまいます。
    • 逆にゼロにしておけば、次回は当該巡回以降の純粋な増分だけが取得できます。
  4. よって「累積防止」がゼロクリアの直接目的となります。

誤りやすいポイント

  • 「在庫数の初期化」と取り違え、売上数でなく在庫補充後の在庫リセットと誤解する。
  • 「売上金額」までゼロにすると解釈し、会計データ消失と混同する。
  • 「翌日の締め処理で自動的にクリアされる」と思い込み、HT側のリアルタイム処理を軽視する。

FAQ

Q: 在庫数はゼロにしないのですか?
A: 在庫数は補充後に「コラムごとの在庫数」を再計算して保存します。ゼロにするのは売上数だけです。
Q: 夜間バッチで売上数をまとめてリセットしてもよいのでは?
A: 巡回は日中に複数回あり得るため、巡回ごとにリセットしないと同日中の二重計上が発生します。
Q: 売上数を差分計算する方式に変えればゼロクリアは不要?
A: 自販機の仕様が「累積カウンタ」である場合、HT側で差分を取るよりゼロクリアの方が確実かつ処理が簡単です。

関連キーワード: DFD, 在庫管理, データ整合性, 累積カウンタ, 初期化

設問1HTのアプリケーションについて、(1)~(3)に答えよ。

(3)図のDFDを完成させよ。図のDFDの表記例に倣って、プロセスを一つ,テータフローを三つ,データとともに追記すること。ただし、データは属性名で記述し、ほかの部分と同様、HT番号と各伝票番号は省略し、その他の属性は省略しない。 なお,図に〔機能強化〕は反映させない。

模範解答

システムアーキテクト試験(平成21年 午後I 問1 設問01-03解答)

解説

解答の論理構成

  1. 業務と既存プロセスの突き合わせ
    • 売上処理→P1、補充処理→P2、積込積降処理→P3 まで図に存在。
    • 【問題文】「④トラック棚卸処理」が図に見当たらず、これが追加対象。
  2. 入力データの特定
    • 【問題文】「棚卸しでは、トラックコード、商品コード及び実地棚卸数をHTに入力する。」
    • よって外部エンティティ「営業担当者」からプロセスへ上記 3 項目を流す。
  3. 更新・登録対象の洗い出し
    • 同じ段落に「トラック在庫マスタの在庫数を実地棚卸数で更新」とある。
    • 表1 に「トラック棚卸」「トラック棚卸明細」があり、棚卸結果を保持するファイルであることが分かる。
  4. データフローの作成
    • プロセス「トラック棚卸」から
      • トラック在庫マスタへ更新フロー
      • トラック棚卸明細へ登録フロー
      を引く。
    • これでデータフローは合計 3 本となり、設問条件を充足。
  5. 属性ラベル
    • ラベルには表1の正式名称を引用する。
      例:「トラックコード」「商品コード」「実地棚卸数」など。

誤りやすいポイント

  • 「トラック棚卸」をデータストア名と混同し、プロセスを描かない。
  • 属性名を省略/別表記にする(例:「棚卸数」と短縮)→減点対象。
  • マスタ更新と明細登録を一本のフローにまとめてしまい、データフローが 2 本しか無い。
  • 外部エンティティを「HT」としてしまう。入力者は【問題文】で明示された「営業担当者」です。

FAQ

Q: トラック棚卸プロセスは在庫マスタを“参照して更新”するので、データフローは 1 本では足りませんか?
A: 見た目は 1 本で構いません。DFD では「更新」も 1 方向の矢印で表し、参照分の逆向き矢印を省略しても可とする場合が多いからです。
Q: 「トラック棚卸」と「トラック棚卸明細」の両方にフローを書く必要がありますか?
A: はい。表1 に両ファイルが定義されており、明細は商品単位、ヘッダは伝票単位で保持します。どちらにも登録が必要なので 2 本描くのが適切です。

関連キーワード: データフロー図, 外部エンティティ, プロセス分割, ファイル更新, 在庫管理

設問2倉庫在庫確定処理について、(1),(2)に答えよ。

(1)この処理の入力ファイルを、表1中のファイル名を用いてすべて答えよ。

模範解答

積込積降, 積込積降明細

解説

解答の論理構成

  1. 倉庫在庫確定処理の目的
    「倉庫在庫マスタ」を当日分で確定させるバッチ処理であり、入力は “当日 HT からアップロードされたデータ” と明示されています。
  2. 当日 HT からアップロードされるファイル
    • 巡回終了後に行う「⑥アップロード処理」でサーバへ送信されるファイルは、「積込積降」と「積込積降明細」であると【問題文】が示しています。
  3. サーバ専用ファイルは対象外
    「入出庫明細」や「倉庫在庫マスタ」そのものはサーバに常駐し、アップロード対象ではないため入力ファイルには該当しません。
  4. よって入力ファイルは
    「積込積降, 積込積降明細」となります。

誤りやすいポイント

  • 「入出庫明細」や「入出庫」と混同してしまう
    → 自動倉庫間移動や返品時に使うサーバ側の伝票であり、HT アップロードの対象外です。
  • 「トラック棚卸明細」もアップロードされると勘違い
    → 棚卸はトラック在庫を更新するための処理で、倉庫在庫には直接関与しません。
  • ファイル名の入力漏れ
    → 「積込積降」と「積込積降明細」はセットで扱われるため両方を書きます。

FAQ

Q: なぜ「積込積降明細」だけでは不十分なのですか?
A: 「積込積降」で日付・倉庫コード・トラックコードなどヘッダ情報を持ち、「積込積降明細」で商品・数量を持つため、両方揃って初めて在庫更新ロジックが成り立ちます。
Q: 倉庫在庫確定処理はいつ実行されますか?
A: 【問題文】に「夜間バッチ処理で行われる」とある通り、営業日の終了後にまとめて実行されます。
Q: 入出庫に関するデータは倉庫在庫確定処理で使わないのですか?
A: 入出庫系は営業所の Web 端末で登録直後に「倉庫在庫マスタ」を更新しているため、確定処理の追加入力対象になりません。

関連キーワード: ファイルアップロード, 在庫マスタ更新, バッチ処理, データフロー, ハンディターミナル

設問2倉庫在庫確定処理について、(1),(2)に答えよ。

(2)倉庫の在庫を確定するためにこの処理が必要な理由を、35字以内で述べよ。

模範解答

積込み・積降ろしした分を倉庫在庫に反映させる必要があるから

解説

解答の論理構成

  1. 営業担当者は「⑤積込積降処理」で「倉庫コード、トラックコード、商品コード及び積込数」をHTに入力し、トラック⇔倉庫間の在庫移動を登録します。
  2. 登録内容は「⑥アップロード処理」でサーバへ送られ、「積込積降明細」などのレコードが更新されます。
  3. しかし倉庫在庫そのものは直ちには変わらず、夜間に「⑤倉庫在庫確定処理」で「HTから当日アップロードされたデータ」を用いて「倉庫在庫マスタ」を更新すると問題文に記載されています。
  4. したがって、積込・積降登録分を倉庫在庫に正確に反映する目的で倉庫在庫確定処理が必須となります。

誤りやすいポイント

  • 積込積降入力時点で倉庫在庫が即時更新されると誤解する。
  • 「トラック棚卸処理」が倉庫在庫を動かすと混同する。
  • 夜間バッチ処理の役割(アップロードデータをまとめて反映)を見落とす。

FAQ

Q: 積込積降をリアルタイムにサーバ更新すれば確定処理は不要では?
A: HTはオフライン運用が前提で、日中はサーバと常時接続できません。夜間バッチでまとめて反映する方式が業務モデルに合致します。
Q: 倉庫在庫確定処理は売上や補充のデータも使いますか?
A: 倉庫在庫に影響するのは倉庫⇔トラック間の移動だけなので、主に積込積降のアップロードデータを用います。売上・補充はトラック在庫へ影響します。

関連キーワード: バッチ処理, 在庫管理, ファイル更新, データ連携

設問3ほかの営業担当者が担当する自販機への巡回対応について、(1),(2)に答えよ。

(1)サーバのコラムマスタの在庫数を計算し直す理由を、40字以内で述べよ。

模範解答

在庫数は巡回したすべてのHT 内の売上と補充の情報から計算する必要があるから

解説

解答の論理構成

  1. 状況変化の把握
    • 【問題文】「現在、1日のうちに複数の営業担当者が同一自販機を巡回することはない。しかし、今後は巡回する可能性があり」とある。
    • つまり同一自販機に対して複数 HT から売上・補充データが送られる前提に変わる。
  2. 既存方式の問題点
    • 「サーバのコラムマスタの在庫数を…HT内に保存されている値で更新する」とある。
    • 単純上書きでは、後にアップロードした HT が先の HT の在庫計算を潰してしまう。
  3. 必要となる対策
    • 各 HT が送る「売上数」「補充数」を合算し、「コラムごとの在庫数」を再計算すれば整合性が保たれる。
    • これが「サーバで計算し直す理由」であり、模範解答の「在庫数は巡回したすべてのHT 内の売上と補充の情報から計算する必要があるから」に一致する。

誤りやすいポイント

  • 「ロット番号追加」や「賞味期限一覧」と混同し、理由に賞味期限を絡めてしまう。
  • 「複数自販機」ではなく「複数 HT」が問題である点を見落とす。
  • 「上書き防止」ではなく「レスポンス向上」など枝葉の利点を挙げてしまう。

FAQ

Q: 単純に最後にアップロードした HT の値を採用してはいけませんか?
A: 先に巡回した HT の売上・補充実績が消え、実在庫より多い在庫数が計上される恐れがあります。
Q: サーバ側での再計算はどのタイミングで行うのですか?
A: 各 HT からのアップロード時点でバッチまたはトランザクション処理として合算・再計算する方式が一般的です。
Q: 巡回順序をシステムで管理すれば再計算は不要ですか?
A: 物理的に巡回順序を確定できない場合や緊急対応で順序が変わる場合があるため、順序管理だけでは整合性が保証できません。

関連キーワード: 在庫管理, マスタ更新, データ整合性, 同期処理, 集計ロジック

設問3ほかの営業担当者が担当する自販機への巡回対応について、(1),(2)に答えよ。

(2)(1)で在庫数を計算し直す際に、サーバでコラムマスタの在庫数を計算するのに必要なHTのファイル名を、表1中から二つ選べ。

模範解答

①・売上補充 ②・売上補充明細

解説

解答の論理構成

  1. 目的確認
    問題文に「サーバのコラムマスタの在庫数を、HT 内のコラムマスタのアップロード時に HT 内に保存されている値で更新するのではなく、サーバで計算し直す」とあります。つまりサーバは“変化量”を受け取り、現在高を自力で再構築します。
  2. 変化量を含む HT ファイルを列挙
    表1 より、売上を保持するのは「売上補充明細」(属性:売上金額, 売上数, 補充数)。そのヘッダ情報をまとめるのが「売上補充」(属性:売上日, 自販機コード, 回収金額)。
  3. 他候補との比較
    • 「トラック在庫マスタ」はトラック全体の在庫数であり、自販機内在庫とは直接関係しません。
    • 「トラック棚卸明細」「積込積降明細」はトラックと倉庫の移動に関するデータであり、コラム在庫計算には不要です。
  4. 結論
    在庫数を算出する最小限の HT ファイルは「売上補充」と「売上補充明細」の二つになります。

誤りやすいポイント

  • トラック関連ファイルを選択してしまう
    自販機コラム在庫の更新対象はあくまで自販機内の売上と補充。トラックの在庫増減は計算に直接使いません。
  • ファイルの所在を見落とす
    表1 の注にある「無印はサーバ及び HT 上に存在」を読み飛ばすと、アップロード対象を取り違える危険があります。
  • 「売上補充明細」だけを選んでしまう
    明細行だけでは日付・自販機コードが欠けるため、サーバ側で正しく在庫をひも付けできません。ヘッダ「売上補充」も必須です。

FAQ

Q: 「売上補充」と「売上補充明細」は内容が重複していませんか?
A: ヘッダと明細の関係です。ヘッダが伝票単位の共通情報(売上日, 自販機コード 等)を、明細がコラム単位の数量を持ちます。
Q: コラム在庫の再計算で「積込積降明細」を参照しない理由は?
A: 積込積降はトラックと倉庫の在庫変動であり、自販機のコラム在庫には影響を与えないためです。
Q: 他営業担当者が同一自販機を巡回すると何が問題になるのですか?
A: 先に巡回した営業担当者の売上・補充を後から巡回した担当者が上書きするリスクが発生します。サーバ側で累積計算することで競合を防ぎます。

関連キーワード: 在庫更新, 売上データ, 補充データ, ファイル同期, データモデル

設問4

表2中の(a)~(g)に入れる適切な字句を、〔販売管理業務とA社販売管理システムの概要〕内の処理名を用いて答えよ。 (b, cは順不同、d, eは順不同)

模範解答

a:積込積降処理 b:入庫処理 c:移動入庫処理 d:返品出庫処理 e:移動出庫処理 f:倉庫在庫確定処理 g:トラック棚卸処理

解説

解答の論理構成

  1. (a) を決める
    トラック在庫マスタ(H)に「CU」、積込積降明細(H)に「C」とある処理は、HT でトラックへの積み込み/積み降ろしを行う【問題文】「⑥アップロード処理:…HTのアプリケーションは…トラックの商品ごとの在庫数を計算し…」に該当する。よって (a)=「積込積降処理」。
  2. (b)・(c) を決める
    倉庫在庫マスタ(S)に「CU」、入出庫明細(S)に「C」が立つ処理は倉庫への“入庫”系。複数あるので順不同で (b)・(c) を割り付ける。
    • 工場からの受入れ【問題文】「①入庫処理:工場から倉庫に商品が届いた際、検品後に登録する。」
    • 他倉庫からの受入れ【問題文】「③移動入庫処理:ほかの倉庫から商品が届いた際…登録する。」
      従って (b)=「入庫処理」、(c)=「移動入庫処理」。
  3. (d)・(e) を決める
    倉庫在庫マスタ(S)に「U」のみ、入出庫明細(S)に「C」が立つ処理は倉庫から“出庫”する系。順不同で (d)(e) を割り付ける。
    • 工場返品【問題文】「④返品出庫処理」
    • 他倉庫への移動【問題文】「②移動出庫処理」
      よって (d)=「返品出庫処理」、(e)=「移動出庫処理」。
  4. (f) を決める
    倉庫在庫マスタ(S)のみ「U」が立つ夜間バッチは【問題文】「⑤倉庫在庫確定処理:HTから当日アップロードされたデータを入力として…夜間バッチ処理で行われる。」に対応する。よって (f)=「倉庫在庫確定処理」。
  5. (g) を決める
    トラック在庫マスタ(H)に「U」、トラック棚卸明細(H)に「R」がある処理は【問題文】「④トラック棚卸処理:…棚卸しでは…トラック在庫マスタの在庫数を実地棚卸数で更新する。」に一致する。よって (g)=「トラック棚卸処理」。

誤りやすいポイント

  • 「CU」を “更新だけ” と早合点し、実際には「登録+更新」であることを見逃す。
  • 「移動入庫」と「移動出庫」を、入庫元/出庫先の視点で反対にしてしまう。
  • 夜間バッチの「倉庫在庫確定処理」を “更新のみ” と捉え “C” が無いことに違和感を覚え、他の処理と取り違える。

FAQ

Q: 「CU」が付いているのに入出庫明細に「C」が無い処理があります。矛盾しませんか?
A: 登録対象がマスタだけで伝票明細を生成しない場合は、入出庫明細に「C」が無くても整合します。今回それに当たるのが (a)「積込積降処理」です。
Q: (d)(e) の順序を逆にしても減点されますか?
A: 「順不同」と明記されているため、どちらの列に「返品出庫処理」「移動出庫処理」を入れても正解となります。
Q: “R” のみ付いているファイルはまったく更新されないのですか?
A: はい。表2の凡例にある通り “R” は「参照だけ」です。実地棚卸数はトラック棚卸明細に記録され、トラック在庫マスタは “U” で更新します。

関連キーワード: 在庫更新, CRUD解析, DFD, 夜間バッチ処理
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ