ソフトウエア設計の問題!
午後の問題を少しずつ解説していく連載です。
・赤字は「私ならここに線を引くなぁ」という場所。
・青字は私が考えたことや注釈などです。
皆さんも一緒に問題を読みながら、解答の方法をトレ
ースしてみていただけたら、幸いです。
問5
農産物の検査管理システムに関する次の記述を読んで、
設問1~3に答えよ。
K社は、農産物を検査し、結果を報告する検査業務
を実施している。検査の申込者の情報、検査を依頼さ
れた農産物(以下、検査農産物という)の情報、及び
検査項目ごとの検査結果の情報は、検査管理システム
で管理する。
〔検査農産物の検査業務の流れ〕
検査農産物の検査業務の流れは、次のとおりである。
担当者は、申込者から検査農産物と検査項目を受け付
ける。一つの検査農産物に対して五つまでの検査項目
を受け付ける。
担当者は、申込者が新規の場合、申込者の情報を検
査管理システムに登録する。
担当者は、検査農産物の情報を検査管理システムに
登録する。ただし、検査項目は登録しない。
担当者は、受け付けた検査項目の検査を実施する。
受け付けた全ての検査項目の検査が終了した後、検査
結果の情報を、検査項目ごとに検査管理システムに一
括して登録する。
担当者は、検査管理システムに登録された検査結果
を確認して、申込者に検査結果を報告する。
〔検査管理システムの説明〕
検査管理システムの構成を、図1に示す。検査管理
システムは3台のサーバから成り、各サーバは個別に
データベース(以下、DBという)をもつ。各DBへ
の情報の登録には、各サーバの申込情報登録ツール、
利用者情報登録ツール及び検査結果登録ツールを利用
する。
申込者に報告する検査結果を確認するために、担当
者は報告用アプリケーションを利用する。報告用アプ
リケーションは、各サーバが提供しているWebイン
タフェースのAPI(以下、WebAPIという)で
ある情報取得用WebAPIと認証関連WebAPI
だけを利用して、各DBにアクセスする。
担当者は、報告用アプリケーションに自身の利用者
IDとパスワードを入力して、検査管理システムにロ
グインする。報告用アプリケーションは、ログイン処
理に認証関連WebAPIを利用し、ログインに成功
したら認証サーバからアクセス用のID(以下、アク
セスIDという)を取得する。アクセスIDは、認証
情報として認証DBに格納され、ログアウトするまで
管理される。報告用アプリケーションは、アクセスI
Dを情報取得用WebAPIの引数に指定して、各D
Bから必要な情報を取得する。
〔検査管理システムが管理する情報〕
検査管理システムが管理する情報と項目を、図2に
示す。各情報は、個別のID(利用者ID、検査ID
など)を付与される。各情報は、いずれかのDBだけ
に格納されている。各サーバがもつDBは、そのサー
バが提供している情報取得用WebAPI(表1参照)
又は認証関連WebAPIと、登録ツールだけからア
クセスできる。よって、申込DBに格納されている情
報は、図2に示す情報のうち、( a )である。
3つのサーバに振り分けてみよう。
・申込情報管理
・認証
・検査結果管理
〔情報取得用WebAPIの説明〕
申込情報管理サーバと検査結果管理サーバが提供し
ている情報取得用WebAPIの説明を、表1に示す。
情報取得用WebAPIは、指定された引数に基づ
いて処理を実行し、取得した情報を戻り値とする。
引数の指定方法には、情報取得用WebAPIによ
って、個別のIDを指定する方法、IDのリストを指
定する方法、開始番号を指定する方法の3通りがある。
情報取得用WebAPIの引数が開始番号の場合、
格納されている情報を整列し、整列後の並びの先頭の
情報を1件目とし、開始番号の位置から最多で10件
を取得して戻り値とする。例えば、検査結果情報が2
5件ある場合、開始番号が1のときは整列後の並びの
1~10件目を、開始番号が11のときは11~20
件目を、開始番号が21のときは21~25件目を戻
り値とする。
情報取得用WebAPIは、処理開始時に、認証関
連WebAPIを利用して、引数に指定されたアクセ
スIDが認証情報として管理されているかどうかを確
認する。管理されていない場合は、処理を受け付けな
い。ここで、表1中のWebAPI仕様の処理の説明
では、アクセスIDの確認処理の説明は省略している。
設問1
設問1
3つのサーバに振り分けてみよう、は文章をよく読んで
どんな順番でやってるかを考えてみると。
・申込情報管理 申込者情報 検査農産物情報
・認証 利用者情報 認証情報
・検査結果管理 検査結果情報
こんな感じになると思うので
a カ
農産物検査情報には申込者が紐付けされてなければ。
b オ
検査農産物IDが紐づけられていてほしい。
c エ
(次回に続く!)