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

令和5年度春期 システムアーキテクト 午前Ⅰ 問9

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

UML を用いて表した図のデータモデルの a,b に入れる多重度はどれか。 〔条件〕 (1) 部門には 1 人以上の社員が所属する。 (2) 社員はいずれか一つの部門に所属する。 (3) 社員が部門に所属した履歴を所属履歴として記録する。
図。UMLクラス図。左に部門クラス(部門コード、部門名、…)、中央に所属履歴クラス(開始日、終了日、…)、右に社員クラス(社員コード、氏名、…)がある。部門と所属履歴は関連線で結ばれ、部門側の多重度は1、所属履歴側は空欄a。所属履歴と社員も関連線で結ばれ、所属履歴側は空欄b、社員側の多重度は1。
図。UMLクラス図。左に部門クラス(部門コード、部門名、…)、中央に所属履歴クラス(開始日、終了日、…)、右に社員クラス(社員コード、氏名、…)がある。部門と所属履歴は関連線で結ばれ、部門側の多重度は1、所属履歴側は空欄a。所属履歴と社員も関連線で結ばれ、所属履歴側は空欄b、社員側の多重度は1。
選択肢。選択肢の表。列見出しはaとbの二つ。ア:a=0..*、b=0..*。イ:a=0..*、b=1..*。ウ:a=1..*、b=0..*。エ:a=1..*、b=1..*。
選択肢。選択肢の表。列見出しはaとbの二つ。ア:a=0..*、b=0..*。イ:a=0..*、b=1..*。ウ:a=1..*、b=0..*。エ:a=1..*、b=1..*。

選択肢

  1. ア
    (問題の図表を参照)
  2. イ
    (問題の図表を参照)
  3. ウ
    (問題の図表を参照)
  4. エ
    (問題の図表を参照)
解き方のヒントを見る

業務条件を関連の両端から読む視点

クラス図の多重度は、業務条件の文章を一方のクラスの1つのインスタンスから見たときに、相手側がいくつ対応しうるかという問いに置き換えて考えます。向きごとに最小と最大を分けて整理することが検討の出発点になります。

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

確認すべき観点は一つ、業務条件のどの文言が「必ず存在するか」と「いくつまで許されるか」を示しているかです。関連の向きを取り違えずに、条件文の主語と対象を対応させて読み取ってください。

視点

関連の多重度は、関連の片方の端から見た相手側の対応数の範囲を表します。業務条件の一文は、どちらか一方の向きについてだけ述べていることが多いです。そのため、一文を読むたびに『どのクラスの1つを基準にしているか』『相手側の下限と上限のどちらに関わるか』を分けてメモすると、向きの混同を防げます。両方の向きについて根拠となる条件がそろっているかも確かめましょう。

確認ポイント

  • 各業務条件の主語が、どちらのクラスの1インスタンスを基準にしているかを確認したか
  • 存在の必須性に関わる文言と、個数の上限に関わる文言を区別して拾い出したか
  • 関連の両端それぞれについて、読み取った範囲を記号が書かれる位置と正しく対応させたか
正解と解説を見る

正解

エ

解説

条件(1)から部門1件には所属履歴が1件以上、条件(2)から社員1人にも所属履歴が1件以上存在するから、aとbはどちらも1..*になるよ。正答はエだね。

aの判断

aは部門1件に対応する所属履歴の件数だよ。条件(1)で部門には1人以上の社員が所属するから、どの部門にも少なくとも1件の所属履歴がある。さらに複数の社員や過去の所属も記録するので上限はない。だからaは1..*になるよ。

bの判断

bは社員1人に対応する所属履歴の件数だよ。条件(2)で社員は必ずいずれか一つの部門に所属するから、どの社員にも少なくとも1件の所属履歴がある。また、条件(3)で過去の所属を履歴として残すので、異動すれば件数が増える。だからbも1..*になるよ。

比較

選択肢の違いは、aとbの下限が0か1かだけだよ。下限を0にすると、所属する社員がいない部門や、どの部門にも所属していない社員を認めることになり、条件(1)や(2)と矛盾するんだ。なお、部門側と社員側の「1」は、所属履歴1件が一つの部門と一人の社員に対応することを表しているよ。

選択肢ア

これは不正解だよ。aもbも0..*にすると、所属履歴が1件もない部門や社員を認めることになるよ。でも条件(1)で部門には1人以上の社員が所属し、条件(2)で社員は必ずいずれかの部門に所属するから、部門側から見ても社員側から見ても所属履歴は最低1件あるはずだよ。下限0は両方とも条件に合わないね。

選択肢イ

これは不正解だよ。bの1..*は、社員は必ずいずれかの部門に所属するという条件(2)と合っているよ。でもaの0..*だと、所属履歴が1件もない部門、つまり社員が一人もいない部門を認めることになる。条件(1)で部門には1人以上の社員が所属するから、aの下限は1にする必要があるよ。

選択肢ウ

これは不正解だよ。aの1..*は、部門には1人以上の社員が所属するという条件(1)と合っているよ。でもbの0..*だと、所属履歴が1件もない社員、つまりどの部門にも所属していない社員を認めることになる。条件(2)で社員は必ずいずれか一つの部門に所属するから、bの下限は1にする必要があるよ。

選択肢エ(正解)

これは正解だよ。条件(1)から、部門1件には1人以上の社員の所属履歴があるのでaは1..*になるよ。条件(2)から社員1人には必ず所属先の履歴があり、条件(3)で異動などの過去の所属も記録するので複数件になり得る。だからbも1..*になるよ。どちらの側も下限1・上限なしで条件と一致するね。

学習のポイント

関連の端に書かれた多重度がどのクラスの個数を表すかを読み取り、条件文から下限0か1かを判断する力が大切だよ。

出典:独立行政法人 情報処理推進機構(IPA)令和5年度春期 システムアーキテクト試験 午前Ⅰ 問9(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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