HOME»基本情報技術者平成27年秋期問題»午後問5
基本情報技術者過去問題 平成27年秋期 午後問5
⇄問題文と設問を画面2分割で開く⇱問題PDF問5 ソフトウェア設計
決定表を用いた注文機能の設計に関する次の記述を読んで,設問1,2に答えよ。
T社は,スポーツ用品の小売業者である。このたび,店舗での販売だけでなく,会員制のWebサイトを構築し,インターネット販売を開始することにした。
情報システム部に所属するAさんは,注文機能を構成する処理の一つである,注文確定をさせる前の処理(以下,注文確定前処理という)の設計を担当している。注文機能の流れを,図1に示す。 注文確定前処理は,注文情報入力処理(以下,入力処理という)で注文情報の入力が完了した後に呼び出される。注文情報と,入力ファイルの情報を参照して,注文確定可否のチェック,注文額の計算などを行う。注文確定前処理において,エラーがない場合は注文確定処理(以下,確定処理という)へ進み,エラーがある場合は入力処理に戻る。
注文情報を表1に,注文確定前処理が参照する入力ファイルの主な項目を表2に示す。〔注文確定前処理の概要〕
次の(1)~(8)を順に処理する。ただし,処理中にエラーを検出した場合は,該当するエラーメッセージを表示して入力処理に戻る。エラーを検出しなかった場合は,注文確定情報として確定処理に受け渡す。
T社は,スポーツ用品の小売業者である。このたび,店舗での販売だけでなく,会員制のWebサイトを構築し,インターネット販売を開始することにした。
情報システム部に所属するAさんは,注文機能を構成する処理の一つである,注文確定をさせる前の処理(以下,注文確定前処理という)の設計を担当している。注文機能の流れを,図1に示す。 注文確定前処理は,注文情報入力処理(以下,入力処理という)で注文情報の入力が完了した後に呼び出される。注文情報と,入力ファイルの情報を参照して,注文確定可否のチェック,注文額の計算などを行う。注文確定前処理において,エラーがない場合は注文確定処理(以下,確定処理という)へ進み,エラーがある場合は入力処理に戻る。
注文情報を表1に,注文確定前処理が参照する入力ファイルの主な項目を表2に示す。〔注文確定前処理の概要〕
次の(1)~(8)を順に処理する。ただし,処理中にエラーを検出した場合は,該当するエラーメッセージを表示して入力処理に戻る。エラーを検出しなかった場合は,注文確定情報として確定処理に受け渡す。
- 必須入力項目の入力チェックを行い,未入力の項目がある場合は,必須項目未入力エラーとする。
- 希望納期が未入力の場合は,注文確定前処理を実行している日(以下,処理日という)の1週間後の日付を希望納期として設定する。
- 希望納期が処理日以前の場合は,項目関連エラーとする。
- 請求先区分が"指定する"であって,請求先情報が未入力である場合は,項目関連エラーとする。
- 請求先区分が"届け先と同じ"である場合は,請求先情報に,届け先情報と同じ値を設定する。
- 購入対象商品の全てについて,在庫ファイルから在庫数を取得する。
- 在庫数が,注文を受けた数(以下,注文数という)よりも少ない商品が存在する場合は,在庫不足エラーとする。
- 購入対象商品の全てについて,在庫ファイルの在庫数を更新し,注文額及び①割引額を計算する。
設問1
表3の注文確定前処理の決定表(一部)中の に入れる正しい答えを,解答群の中から選べ。
a,b,c,d に関する解答群
- 希望納期>処理日
- 希望納期≦処理日
- 希望納期が入力されている
- 希望納期が未入力である
- 請求先区分が"指定する"である
- 請求先区分が"届け先と同じ"である
- 請求先情報が入力されている
- 請求先情報が未入力である
e に関する解答群
解答選択欄
- a:
- b:
- c:
- d:
- e:
解答
- a=ウ
- b=ア
- c=オ
- d=キ
- e=イ
解説
〔注文確定前の処理〕は(1)~(8)の順に処理されるので、決定表の条件部も上からこの処理順に並んでいることになります。
〔aについて〕
2つ目の条件部なので(2)の処理に相当する処理規則が入ります。
まず表3で条件aが"N"のときに、「希望納期に処理日の1週間後の日付を設定する」を実行"X"することに注目します。「希望納期に処理日の1週間後の日付を設定する」処理は「希望納期が未入力の場合」に実行されるので、「希望納期が入力されているか」の判定が"N"(未入力)の場合に、この処理が実行されるのが適切な手順です。したがって条件aには「希望納期が入力されている」が入ります。
a=ウ:希望納期が入力されている
〔bについて〕
3つ目の条件部なので(3)の処理に相当する処理規則が入ります。
表3で条件bが"N"のときに「項目関連エラー」になることに注目します。(3)の処理において項目関連エラーは「希望納期が処理日以前」の場合に表示されることになっているので、「希望納期が処理日より後か」の判定が"N"(処理日以前である)の場合に項目関連エラーとなるのが適切な手順です。したがって条件bには「希望納期>処理日」が入ります。
b=ア:希望納期>処理日
〔cについて〕
表3で条件cが"N"のときに、「請求先情報に届け先情報と同じ値を設定する」を実行することに注目します。「請求先情報に届け先情報と同じ値を設定する」処理は「請求先区分が"届け先と同じ"」場合に行う処理なので、「請求先区分が"指定する"であるか」の判定が"N"(届け先と同じ)の場合に、この処理が実行されるのが適切な手順です。したがって条件cには「請求先区分が"指定する"である」が入ります。
c=オ:請求先区分が"指定する"である
〔dについて〕
表3で条件dが"N"のときに「項目関連エラー」になることに注目します。(4)の処理において項目関連エラーは「請求先区分が"指定する"であって、請求先情報が未入力」の場合に表示されることになっているので、条件cが"Y"、かつ、「請求先情報が入力されている」の判定が"N"(未入力である)の場合に項目関連エラーとなるのが適切な手順です。したがって条件dには「請求先情報が入力されている」が入ります。
d=キ:請求先情報が入力されている
a~dの条件部を埋めた決定表は以下のようになります。〔eについて〕
まず「項目関連エラー」の処理ですが、条件の組合せを見ると
次に「請求先情報に届け先と同じ値を設定する」の処理ですが、請求先区分が"指定する"になっているため実行されません。したがって"-"が入ります。
最後に「在庫数を取得して表4を処理する」ですが、〔注文確定前処理〕の(5)までの手順でエラーが出ない場合には(6),(7)の在庫引当処理に進むことになります。したがって"X"(実行)が入ります。
e=イ
〔aについて〕
2つ目の条件部なので(2)の処理に相当する処理規則が入ります。
まず表3で条件aが"N"のときに、「希望納期に処理日の1週間後の日付を設定する」を実行"X"することに注目します。「希望納期に処理日の1週間後の日付を設定する」処理は「希望納期が未入力の場合」に実行されるので、「希望納期が入力されているか」の判定が"N"(未入力)の場合に、この処理が実行されるのが適切な手順です。したがって条件aには「希望納期が入力されている」が入ります。
a=ウ:希望納期が入力されている
〔bについて〕
3つ目の条件部なので(3)の処理に相当する処理規則が入ります。
表3で条件bが"N"のときに「項目関連エラー」になることに注目します。(3)の処理において項目関連エラーは「希望納期が処理日以前」の場合に表示されることになっているので、「希望納期が処理日より後か」の判定が"N"(処理日以前である)の場合に項目関連エラーとなるのが適切な手順です。したがって条件bには「希望納期>処理日」が入ります。
b=ア:希望納期>処理日
〔cについて〕
表3で条件cが"N"のときに、「請求先情報に届け先情報と同じ値を設定する」を実行することに注目します。「請求先情報に届け先情報と同じ値を設定する」処理は「請求先区分が"届け先と同じ"」場合に行う処理なので、「請求先区分が"指定する"であるか」の判定が"N"(届け先と同じ)の場合に、この処理が実行されるのが適切な手順です。したがって条件cには「請求先区分が"指定する"である」が入ります。
c=オ:請求先区分が"指定する"である
〔dについて〕
表3で条件dが"N"のときに「項目関連エラー」になることに注目します。(4)の処理において項目関連エラーは「請求先区分が"指定する"であって、請求先情報が未入力」の場合に表示されることになっているので、条件cが"Y"、かつ、「請求先情報が入力されている」の判定が"N"(未入力である)の場合に項目関連エラーとなるのが適切な手順です。したがって条件dには「請求先情報が入力されている」が入ります。
d=キ:請求先情報が入力されている
a~dの条件部を埋めた決定表は以下のようになります。〔eについて〕
まず「項目関連エラー」の処理ですが、条件の組合せを見ると
- 希望納期が未入力
- 請求先区分が"指定する"で、請求先情報が入力されている
次に「請求先情報に届け先と同じ値を設定する」の処理ですが、請求先区分が"指定する"になっているため実行されません。したがって"-"が入ります。
最後に「在庫数を取得して表4を処理する」ですが、〔注文確定前処理〕の(5)までの手順でエラーが出ない場合には(6),(7)の在庫引当処理に進むことになります。したがって"X"(実行)が入ります。
e=イ
設問2
〔注文確定前処理の概要〕の下線①の割引額について説明する。T社では,会員を無料会員と有料会員に分類(以下,会員区分という)している。年会費5,000円を支払って有料会員になると,無料会員よりも優遇された割引サービスを受けることができる。割引サービスとは,直近1年間の累計購入額(以下,累計購入額という)に応じて,注文時の注文額に一定の割引率を適用して割り引いたものを購入額としたり,送料を無料としたりするサービスである。
なお,累計購入額の算出に当たっては,過去の購入実績だけを対象とする。T社の割引サービスを表5に示す。 表6は,表5で示した割引サービスの要件を整理するために作成中の決定表であり,動作部は未記入である。Aさんは,この決定表から発生し得ない無効な条件の組合せを抽出し,決定表から削除することによって,テストケースの設計にも活用したいと考えている。表6の決定表において,削除できる規則は幾つあるか,正しい答えを,解答群の中から選べ。
なお,累計購入額の算出に当たっては,過去の購入実績だけを対象とする。T社の割引サービスを表5に示す。 表6は,表5で示した割引サービスの要件を整理するために作成中の決定表であり,動作部は未記入である。Aさんは,この決定表から発生し得ない無効な条件の組合せを抽出し,決定表から削除することによって,テストケースの設計にも活用したいと考えている。表6の決定表において,削除できる規則は幾つあるか,正しい答えを,解答群の中から選べ。
解答群
- 6
- 7
- 8
- 9
- 10
- 11
- 12
解答選択欄
解答
- オ
解説
すべての会員は累計購入額が「10万円未満」「10万円以上20万円未満」「20万円以上」のいずれかのグループに分類されます。現実では「10万円未満」と「20万円以上」の条件が同時に"Y"になることがないことを考えればわかるように、累計購入金額の項目は排他的な条件で、どれか1つだけが"Y"、その他は"N"となる性質を持ちます。
つまり決定表で、累計購入金額の条件部に複数の"Y"が付いている、又は全てが"N"のテストケースは現実に起こり得ない無効な条件と言えます。表6からこれらの無効なテストケースを探すと下図のように10つのテストケースを削除できます。∴オ:10
現実的に発生し得る有効なテストケースは以下の6つとなります。
つまり決定表で、累計購入金額の条件部に複数の"Y"が付いている、又は全てが"N"のテストケースは現実に起こり得ない無効な条件と言えます。表6からこれらの無効なテストケースを探すと下図のように10つのテストケースを削除できます。∴オ:10
現実的に発生し得る有効なテストケースは以下の6つとなります。
- 無料会員で10万未満
- 無料会員で10万以上20万未満
- 無料会員で20万以上
- 有料会員で10万未満
- 有料会員で10万以上20万未満
- 有料会員で20万以上