LastUpdate : 2010/12/14

特定非営利活動法人 UML モデリング推進協議会

UML モデリング技能認定試験
L3 サンプル問題
モデリング問題―問題 3(ビジネス系)※本書の一部または全部を無断で複写、複製、転載、テープ化、ファイル化することを禁じます。
※UML、Unified Modeling Language は OMG（Object ManagementGroup）の商標です。

Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

問題
デジタル・カメラで撮影した写真データをサーバにアップロードして Web ブラウザから鑑賞できるよ
うにする Web アルバム・システムを開発しようとしています。
ログアウト

アルバム・タイトル： みちのく温泉奇行
アルバム所有者： きつねさん
アルバム公開日時： 2006/09/29 10:15:23
アルバム公開期限： 2006/10/29 10:15:23

アルバムの情報

写真番号 / アルバム中の写真総数
写真番号： #7/42
写真タイトル： 巨大マグロと格闘！
写真の情報
写真撮影日時： 2006/09/26 11:34:20

写真登録時に記入した解説文

写真解説文：
本州最北端の大間崎にて、巨大マグロと本気のガチンコ・バトルを展開してきました。

コメント：
日時： 2006/09/30 12:34:56
記入者： ウサギしゃん
大きいマグロですね～。300kg級くらい？
日時： 2006/10/01 21:06:32
記入者： 山田太郎
勝負の行方が気になります。勝てましたか？
日時： 2006/10/02 10:00:46
記入者： きつねさん
命からがら逃げてきました。危ないところでした。

写真イメージ←前の写真へ↑一覧へ

次の写真へ→

この写真に付けられたコメント

図 1 アルバム鑑賞画面のイメージ
この Web アルバム・システム(以下「本システム」と記します)のおもな機能の概要は以下のようになっています。
表 1 Web アルバム・システムの主要機能概要
#01

0203
0405

機能概要
本システムに登録されている各会員にはユニークな会員 ID が割り当てられており、利用者は Web ブラウザから会員 ID とパスワードを入力することによって本システムにログインします。
ログイン中の会員は Web ブラウザから「ニックネーム」「パスワード」など自身の会員情報を変更することができます。
ログイン中の会員は任意の時点でログアウトすることができます。
ログイン中の会員はアルバムのタイトルと解説文を指定して新しいアルバムを作成することができます。新しく作成されるアルバムの所有者はログイン中の会員になります。
ログイン中の会員は、自身が所有しているアルバムに対して写真を追加することができます。写真を追加するには、新規に写真データをアップロードする方法と、既に自身が所有しているアルバムに登録されている写真を指定する方法があります。
※ 後者の場合、ひとつの写真データが複数のアルバムから参照されることになります。また、ひとつのアルバムに同じ写真データの写真が数回登場するということも可能とします。ただし、他の会員が所有している写真データを自分のアルバムに含めることはできません。

-2–
Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

#06

0708
09

101112

機能概要
アルバムに写真を追加する際、オプションで写真のタイトルと解説文を設定することができます。同じ写真データであっても、アルバムに追加する毎に別々の写真タイトルと解説文を設定することができます。
ログイン中の会員は、自身が所有しているアルバムを他の複数の会員に対して公開することができます。アルバムを公開する際、公開対象の会員毎にそのアルバムの公開日数を指定します。
※ 自身が所有しているアルバムを自分自身に対して公開することはできません。
ログイン中の会員は、自身に対して公開されている他の会員のアルバムを鑑賞することができます(公開期限内の場合のみ)。
ログイン中の会員は、自身が所有しているアルバムの写真や、自身に対して公開されている他の会員のアルバム(公開期限内の場合のみ)の写真に対してコメントを書き込むことができます。
ログイン中の会員は、自身が所有しているアルバムから任意の写真を取り除くことができます。アルバムから写真が取り除かれた結果、その写真の写真データがどのアルバムからも参照されなくなった場合、自動的にその写真データがサーバから削除されます。
ログイン中の会員は、自身が所有しているアルバムを任意の時点で消去することができます。アルバムが消去された結果、そのアルバムに含まれていた写真から参照されていた写真データがどのアルバムからも参照されなくなった場合、自動的にそれらの写真データがサーバから削除されます。
会員は任意の時点で退会することができます。退会した会員の会員情報、および、その会員が所有者となっているすべてのアルバム、写真データ、その会員によって書き込まれたすべてのコメントがサーバから削除されます。

設問 1
前述の [05][06] などの機能に対応するため、「アルバム」に写真を追加/削除する際に写真データを包む「スリーブ」という概念を導入します。スリーブは写真を 1 枚だけ入れることができる透明な袋のイメージで、写真をアルバムに追加する際に『写真データを入れたスリーブ作成して、そのスリーブをアルバムに追加する』と考えます。アルバム中の各写真の解説文やコメントなどは、このスリーブに対して付加されていきます。
システムの開発を始めるにあたり、分析モデル(概念モデル)の一部として 図 2 のようなクラス図を作成してみました。

-3–
Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14( g )1( b ){ ordered }( c )0..*0..*

( a )
10..*

( h )

所有者

( d )

記入者

( i )
( j )
1
所有者

0..*

( e )

1( k )

( f )

( l )
{ ordered }図 2 Web アルバム・システムの概念モデル(一部)
このクラス図中の ( a ) ～ ( f ) にもっともよく当てはまるものを以下の選択肢から選んでください。
※ひとつの解答欄には、必ず何れかひとつの選択肢が当てはまります。
※選択肢の中には、どの解答欄にも当てはまらないものがあります。
※ひとつの選択肢が複数の解答欄に当てはまることはありません。
選択肢：

アルバム
タイトル : 文字列
解説文 : 文字列
登録日時 : 日時

(1)

会員
(2)

会員ID : 文字列
ニックネーム : 文字列
パスワード : 文字列

公開(3)

公開日時 : 日時
公開日数 : 整数/ 公開期限 : 日時-4–Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

コメント
コメント文 : 文字列
登録日時 : 日時

(4)

写真データ
(5)

アップロード日時 : 日時
撮影日時 : 日時 [0..1]
写真イメージ : URL

スリーブ
(6)

タイトル : 文字列 [ 0..1 ]解説文 : 文字列 [ 0..1 ]登録日時 : 日時

ログイン
(7)

ログイン日時 : 日時
セッション有効時間 : 時間
Webブラウザ種別 : 文字列

設問 2
図 2 のクラス図中の ( g ) ～ ( ｌ ) にもっともよく当てはまる多重度を以下の選択肢から選んでください。
※ひとつの解答欄には、必ず何れかひとつの選択肢が当てはまります。
※選択肢の中には、複数の解答欄に当てはまるものもありえます。
※選択肢の中には、どの解答欄にも当てはまらないものもありえます。
選択肢：
(1)

0..1

(2)

1

(3)

0..*

(4)

1..*

設問 3
設問 1、設問 2 で作成されたクラス図にはいくらか曖昧さが残されています。そこで、いくつか制約を追加して曖昧さを減らし、クラス図を補強していこうと考えています。

-5–
Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

以下の (イ) ～ (ニ) に示す制約式(OCL の書式で記述されています)のそれぞれを吟味し、その制約が必要であるならば 図 3 のクラス図中の ( 1 ) ～ ( 6 ) のどの箇所に記述すれば良いかを選択してください。その制約式が必要でない(記述すべきでない)と思う場合は「(7) 該当なし」を選択してください。
※ひとつの解答欄には、必ず何れかひとつの選択肢が当てはまります。
※選択肢の中には、複数の解答欄に当てはまるものもありえます。
※選択肢の中には、どの解答欄にも当てはまらないものもありえます。
なお、図 3 中の ( a ) ～ ( l ) は 設問 1、設問 2 で解答したクラス/多重度を示しています。
制約式：(イ)(ロ)(ハ)(ニ){ self.アルバム.所有者 = self.写真データ.所有者 }{ self.スリーブ.アルバム.所有者 = self.記入者 }{ self.アルバム.所有者 <> self.会員 }{ self.スリーブ->forAll( s1, s2 | s1 <> s2 implies s1.写真データ <> s2.写真データ ) }

選択肢：

( 2 )

( 3 )

( 1 )
( g )

{ ordered }

1

( b )

( c )

0..*
0..*

( i )

( 5 )

( a )
10..*

( 4 )

( h )

所有者

( d )

記入者

( j )
1

所有者

0..*

( e )
( 6 )

1

( 7 ) 該当なし
( k )

( f )

( l )
{ ordered }図 3 制約式の追加場所

設問 4Web アルバム・システム初版をリリースした後、次のような機能拡張を施した第二版の開発が開始される予定になっています。

-6–
Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

表 2 Web アルバム・システム拡張機能概要#0102030405

拡張機能概要特定の会員に対してではなく、本システムに登録されているすべての会員に対してアルバムを公開できるようにします。
各アルバム毎に、他の会員によって鑑賞された回数(アクセス数)を記録/確認できるようにします。
ログイン中の会員は、他の会員のアルバムを鑑賞した時、そのアルバムを 5 段階で評価することができます(5:非常に良い、4:良い、3:普通、2:イマイチ、1:悪い)。あるアルバムの現在の評価値は、そのアルバムに対して設定されたすべての評価値の平均値として確認することができます。
ログイン中の会員は、自身が所有するアルバムに対して複数のタグ(キーワード)を追加/削除することができるようにします。
ログイン中の会員は、自身に対して公開されているアルバムを「タイトル」、「解説文」、「タグ」、「アクセス数」、「評価値」などの条件によって絞り込んで検索することができます。
また、絞り込みの条件として、AND/OR/NOT の論理演算によって複合的な検索条件も指定できるようにします。

上述の拡張機能の要件(特に[05])を満たすために、検索などに用いられる条件をオブジェクトとして表現する汎用的な枠組み(フレームワーク)を考えてみました(図 4)。
2..*子条件{ordered}

0..1

1

条件

否定対象

( b ) 区間条件

複合条件

単一条件

NOT条件

0..1

下限値:実数下限値を含む:真偽値
上限値:実数上限値を含む:真偽値
AND条件

文字列条件

OR条件

比較方法:文字列比較方法
比較値:文字列( a ) 区間条件

《enumeration》
文字列比較方法
完全一致
前方一致
後方一致
部分一致
パターン一致《enumeration》
数値比較方法<<===!=>=>

数値条件( d ) 区間条件

比較方法:数値比較方法
比較値:実数

下限値:実数下限値を含む:真偽値
上限値:実数上限値を含む:真偽値( c ) 区間条件
上限比較方法:数値比較方法
上限値:実数

図 4 「条件」クラス群の構造(クラス図)
ここで、評価値やアクセス数などの数値区間に対する条件(たとえば、「3.0 以上 4.0 以下」、「100回以上 500 回未満」などといった条件)を表現するクラス「区間条件」を考えてみようとした際に悩-7–
Copyright©2009-2010 UMTP

LastUpdate : 2010/12/14

んでしまいました。このクラスは(可能性として) 図 4 のクラス構造中の ( a ) ～ ( d ) で示された位置のいずれかに定義できそうに思うのですが、それぞれトレードオフもありそうです。
「区間条件」クラスを定義する位置に関する以下の考察のうち、適切と思われるものを 1 つ選択してください。
選択肢：
(1)

( a ) の位置に定義する場合、「区間条件」クラスで新たな属性を追加する必要がないが、「区間条件」クラスの方が上位クラスである「AND 条件」クラスよりも構造的な制限が強い
ので、いくつかの操作をオーバーライドするか制約を加える必要がある。

(2)( b ) の位置に定義する場合、「単一条件」の一種として扱われないため、「複合条件」の子条件として追加することができなくなってしまう。

(3)( c ) の位置に定義する場合、上位クラス「数値条件」から継承している属性(「比較方法」と「比較値」)を下限値に対するものとして扱い、「区間条件」クラスで「上限比較方法:数値比較方法」と「上限値:実数」というふたつの属性を定義すれば、上位クラスの操作をオーバーライドしたり制約を追加したりする必要は無い。

(4)( d ) の位置に定義する場合、「下限値:実数」「下限値を含む:真偽値」「上限値:実数」「上限値を含む:真偽値」という 4 つの属性が「区間条件」クラスに定義されることになるので、同等の条件を表現する場合、( a ) 案よりも多くのメモリ容量を必要とする。

================================================================================-8–
Copyright©2009-2010 UMTP