オブジェクトの広場は株式会社オージス総研グループのエンジニアによる技術発表サイトです

モデリング

モデリングカフェ 第2回:社員と辞令をモデリングする

モデリングカフェ「Square」~UMLでモデリングを愉しもう~
(株)オージス総研 組み込みソリューション部
田中恒, 赤坂英彦
2006年1月12日

毎回、身近にあるモノや出来事など、簡単な【お題】を出題し、皆様にモデリングをして頂きます。次回の記事で、皆様の解答モデルの中から 3 つほど取り上げて、コメントを付けていくかたちで進めていきます。

目次
  1. 前回の問題(連絡網)
  2. 読者解答モデル
  3. 解答例
  4. 今月号の問題 (出題)
  5. 解答モデルの送付について
  6. 参考文献
  7. Elapiz (いらぴす)当選者発表

1.前回の問題(連絡網)

前回の問題をもう一度確認しておきましょう。

【お題01】連絡網

ゆうじ君たちは以下のように連絡をとることになっています。
この状況をモデリングしてください。

お題(連絡網)
図 1 お題(連絡網)

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です)。

2. 読者解答モデル

読者の皆様から、たくさんの解答モデルを頂きました。ありがとうございました。 その中から3つの解答モデルを、当カフェのマスターとヒトクセある!?常連たちの声を交えながら紹介致します。 コーヒーなどを飲みながら、皆様も一緒にわいわいやる感じで考えてみてください。 また、残念ながら紹介することができなかった解答モデルはこちらに掲載しますので、 オブジェクトの広場 メーリングリスト等で意見交換していただければ幸いです。

読者解答1:岩沢 正樹様

コンセプト

クラスの再帰構造を積極的に利用しました。

モデル

図 2 岩沢様の解答モデル
図 2 岩沢様の解答モデル

感想

  • 難しかったところ

    連絡先に関する情報の取り扱いが、判然としなかったところ。 例えば、連絡先情報をメンバーが持つ情報として捕らえるか、メンバー間の情報として捕らえるか。 (今回は、メンバーが持つ情報として捕らえました。)

  • 自己評価

    ベストモデルとは言えませんが、最初に描いたモデルとしては妥協点にはなっていると思っています。

コメント

マスター 再帰的な構造になるという特徴をずばり押さえていますね。
 
吉井さん うん、問題にあった図を素直に解釈して表現してる。それに「連絡網」というスコープが示されているのもいいね。そこに現れる「メンバー」や「連絡先」という概念ともしっかり区別されている。見てるところがブレていないね。
 
マスター 「発信者」と「受信者」の多重度に0が含まれているので、先頭と最後にいる「メンバー」も表現できていますね。
 
久本くん 輪になってるんじゃなくて、木構造みたいに階層構造になるってこと?
 
唐沢さん でしょうね。ただ、この場合はコンセプトに明示されていないから、階層構造だと考えているかどうかは不明ですが。
 
久本くん でも、輪にすることもできちゃいますよね。輪にならないことはどう表現したらいいの?
 
唐沢さん ここは無理やり構造で表現しようとせずに、制約{hierarchy}やノートを使って階層構造であることを示した方がわかりやすいですね。
 
吉井さん 「メンバー」と「連絡先」を切り分けているのも良いね。
 
マスター 固定電話の番号、携帯電話の番号、メールアドレスなど、「連絡先」は変わるってことですね。
 
吉井さん ええ。電話番号が、その「メンバー」を特徴付ける情報か、それとも「メンバー」に付加される情報か、というところですね。「連絡先」が複数ありえることを考えると、連絡に関する情報が付加される、として捉えるのが自然かな。
 
唐沢さん そうですね。でも関連についてはどうでしょう。『難しかったところ』で考察されていますが、「メンバー」の間でどういう連絡方法にするか取り決めがなされているような場合だったら、「メンバー」を繋ぐ概念として出した方がいいかもしれないですよ。(図 3)
 
図 3 「連絡先」が「メンバー」を繋ぐ場合
図 3 「連絡先」が「メンバー」を繋ぐ場合
 
久本くん 「連絡網」は「メンバー」の関係なのかな。なんとなく「連絡先」の関係のような気がしてきました。
 
吉井さん いいところに気が付いたね。「メンバー」と「連絡先」を切り分けたところから更に一歩進めると、「連絡網」というのは「メンバー」の関係ではなくて「連絡先」の関係であると考えることもできる。つまり、再帰的な関係にあるのは、「メンバー」ではなくて「連絡先」ということだね。(図 4)
 
マスター なるほど。そうすると、連絡に関することと「メンバー」に関することが完全に切り分けられますね。
 
図 4 連絡網は「連絡先」の関係だと考える場合
図 4 連絡網は「連絡先」の関係だと考える場合
 

読者解答2:kipple様

コンセプト

  • 連絡網は、連絡者間の関連で形づくられる。
  • 連絡者は、連絡先に連絡をする(連絡を受け渡す)。
  • 連絡先は、最大2つ(それ以上にするとボトルネックになる可能性がある為)。
  • 連絡は、複数の連絡元からは受け取らない(無駄)。
  • 連絡者間は、なんらかの方法で連絡をとる(ex.電話、メール...)

モデル

図 5 kipple様の解答モデル
図 5 kipple様の解答モデル

感想

  • 難しかったところ

    連絡内容が、途中ですりかわらないようなモデルを作りたかったのですが、できなかったです・・

  • 自己評価

    やりたいことが書けていないので30点

コメント

マスター 「連絡方法」をインターフェースとして出しているのが特徴的ですね。
 
吉井さん コンセプトにあるように、「連絡方法」が複数あることを考えたんだね。そして、「連絡方法」がどうであっても伝える先は1人。よく考えられていますよ。
 
久本くん コンセプトの通りにモデルが描かれているとわかりやすいですね。再帰関連になるのも、「連絡者」同士が繋がっているからだというのが分かります。
 
吉井さん それはとても重要なことだよね。コンセプトとモデルで互いに補い合いながら、意図を出来る限り正しく表現することが大切だね。
 
唐沢さん ただ、再帰関連の「連絡先」が「連絡方法」に繋がっている方が、コンセプトを表現できているように思います。「連絡者」の間を繋ぐものとして「連絡方法」があるということです。(図 6)
 
吉井さん そこがおしいところだったね。
 
図 6 「連絡方法」が「連絡者」を繋ぐと考える場合
図 6 「連絡方法」が「連絡者」を繋ぐと考える場合
 
マスター 「連絡」という概念を出しているのも良いのではないでしょうか。
 
久本くん 「連絡者」から「連絡者」へ「連絡」を受け渡す、ですね。そうして、連絡の内容が伝わっていく。
 
吉井さん そうだね。「連絡者」が作る構造の上を「内容」が伝わっていくことが「連絡網」だということかな。
 
唐沢さん 「連絡」と「連絡者」の関係があいまいではありませんか?いろいろな解釈ができると思います。
 
マスター 多重度だけではなく、ロール名も示してあるとわかりやすくなりますよね。
 
吉井さん 「連絡」が伝わる様や、ある「連絡」があったということ(実績)を表現しようとすると、それを表す概念が必要になってくるね。この場合『連絡内容が、途中ですりかわらない』ことを表現したいということだから、「連絡」という概念を出せているのは良いね。
 
唐沢さん そのために、迷いがあったのかもしれません。「連絡者」と「連絡者」の間の個別の「連絡」と、連絡網の全体を通じて1度行う「連絡」という概念とが混在していると感じます。(図 7)
 
吉井さん そうかもしれないね。更に、個別の「連絡」という事象(出来事)とそこで伝えられる内容とを切り分けて考えると、『連絡内容が、途中ですりかわらない』ことが表現できて、すっきり整理できるかもしれないね。
 
図 7 「連絡」は何?
図 7 「連絡」は何?
 

読者解答3:さいごさわ様

コンセプト

  • 連絡網はグループのメンバーに情報を伝達する体制である。
  • メンバーは連絡を受け、複数の人に通知する。
  • 連絡を始める人、連絡を更に伝達する人、最後に連絡を受ける人がいる。

モデル

図 8 さいごさわ様の解答モデル
図 8 さいごさわ様の解答モデル

感想

  • 難しかったところ

    連絡自体をモデリングする必要があるか悩んだ。

  • 自己評価

    既に連絡を受けた人が連絡を受けると無限ループに陥るので、いまいち。

コメント

マスター このモデルもコンセプトに沿って描かれていてわかりやすいですね。「連絡網」が「メンバー」の間の再帰的な関係だというのも良くわかります。
 
久本くん そうですよね。多重度に「0」が含まれている理由も良く分かります。
 
吉井さん ある「グループ」に所属している「メンバー」に連絡するんだということがわかりやすいね。
 
唐沢さん どうして「グループ」が必要なんでしょう?
 
吉井さん コンセプトからはそれは読み取れないね。でも、いろいろと理由は考えられるんじゃないかな。例えばクラス(学級)の連絡網もあれば、部活の連絡網もあって、両方管理したい場合とか。そして、連絡は「グループ」の単位で行う必要がある場合だね。
 
唐沢さん 逆に言えば、そこに興味がなければ必要ないということですね。
 
吉井さん まぁそうだね。モデリングをするときは、どういうコンテキストなのかをちゃんと考えないといけないね。でも、今回の問題ではそこは触れられていないから、自分ではっきりしていればいいと思うよ。
 
久本くん ちょっとわからないんですが、もし複数の「グループ」に所属する人がいる場合、連絡元と連絡先はどの「グループ」の連絡が回ってきたのかで変わっちゃいませんか?(図 9)
 
図 9 「メンバー」が複数の「グループ」に所属する場合
図 9 「メンバー」が複数の「グループ」に所属する場合
 
マスター 確かに、そうなりますね。
 
吉井さん ふむ、なかなか難しいところだね。この場合、「グループ」に所属するのは「人」ではなくて「メンバー」だというところがキーになりそうだね。「メンバー」というのは、Aさん自身ではなくてAさんの役割を表している概念だと考えてごらん。さっきの例だと、「クラス(学級)のメンバー」という役割での連絡先と、「部活のメンバー」という役割での連絡先は異なるということだね。
 
久本くん 「クラス(学級)のメンバー」としてのAさんと、「部活のメンバー」としてのAさんは別のインスタンスということですね。
 
マスター 「グループ」と「メンバー」と違って、「連絡事項」についてはコンセプトで触れられていませんね。
 
唐沢さん ええ、どういうことを表現してるんでしょうか。「連絡事項」が連絡の内容を表しているとしても、「メンバー」と「メンバー」の間で「連絡」が行われたことを表しているにしても、関連クラスで表現するのは不自然な気がします。
 
久本くん 関連クラスが不自然というのはどうしてですか?
 
吉井さん 文法の話になるんだけど、関連クラスのインスタンスはその関連のリンクに相当するんだ。だから、関連クラスのインスタンスが2つあるとすると、リンクが2本あることになるよね。オブジェクト図を書いてごらん。(図 10)
 
図 10 関連クラスのインスタンスはリンクに相当する
図 10 関連クラスのインスタンスはリンクに相当する
 
久本くん ・・・関連の多重度と矛盾しますね。
 
吉井さん そうだね。この場合、ある「メンバー」とある「メンバー」の間には、ただ一つの「連絡事項」インスタンスしか存在できないんだ。だから、「連絡事項」が連絡内容や連絡の実績を表しているとすると、連絡の度に毎回連絡網を作り直さないと矛盾が出てきてしまう。それは不自然だよね。じゃぁ「連絡事項」が何を表しているかっていうと、今ある情報からだと読み取れないね。
 

3. 解答例

解答例としまして、当カフェのマスターのモデルを紹介致します。 コンセプト次第でモデルは変わりうるものですから、正解としてではなく、1つの考え方、1つの例としてご覧ください。

コンセプト

前提・制約・その他

  • 連絡される内容は、連絡網とは関係がないとした
  • 連絡手段は、電話を想定した

連絡網は人と人とのつながり

図 11 解答例 ラフスケッチ
図 11 ラフスケッチ
 

人の情報

  • 電話連絡を想定すると、名前・電話番号は最低限必要

連絡順序のルール

  • ある人は、別の一人から連絡を受け(連絡元は1 )、その内容を複数の人(連絡先は1..*)に連絡する
  • ただし、連絡網の先頭の人は連絡を受ける人はなく (連絡元は0)、最後の人は伝える人がいない(連絡先は0)
  • 最後の人が最初の人に、終了の連絡をすることは考えない

モデル

オブジェクト図

図 12 解答例 オブジェクト図
図 12 解答例のオブジェクト図
 

クラス図

図 13 解答例 クラス図
図 13 解答例のクラス図
 

4.今月号の問題 (出題)

今月の問題です。モデリングの進め方については、第 1 回のモデリングの進め方を参照してください。

【お題02】社員と辞令

ソフトウェアを受託開発するイラピス株式会社では、2006 年 1 月に以下の辞令が発令されました。

  • 山田さんはジュニアSEに昇格しました
  • 田中さんは技術2部に配属されました
  • 花山さんはミドルSEに昇格しました

社員と辞令の関係をモデリングして下さい。 ただし、職級に関することなど不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

解答はクラス図で表現して下さい。クラスには必要な属性を、関連には多重度を明記するのがポイントです (解答時間の目安は15分~30分です) 。

5.解答モデルの送付について

解答モデルの送付についてをご覧ください。
なお、今月号は第2回です。 締め切りは 2006年 2月 2 日 (木) です。解答モデル送付期間は終了しました。

読者プレゼント ~Elapiz (いらぴす) 要ります?キャンペーン~

先月号に引き続き、UML モデリングツールをお持ちでない方向けの読者プレゼントを実施しています。
弊社の UML モデリングツールである Elapiz スタンダードエディション の Elapiz Basic の正規ライセンス(\9,975 相当)を、 解答モデルをご送付いただいた方の中から、抽選で 3 名の方にプレゼントいたします。

解答モデルの送付についてをご覧いただき、是非ご応募ください。

6.参考文献

本連載では、文献[1]をベースに、より気軽にモデリングを愉しんでいただけるテイストにしております。モデリングに関するしっかりした解説が欲しい場合には、以下の書籍をご覧になると良いと思います。

  1. 「思考系UMLモデリング即効エクササイズ モデ力を鍛える13の自主トレメニュー」、渡辺博之他、翔泳社
  2. 「UMLによるオブジェクト指向モデリングセルフレビューノート」、荒井玲子著、ディーアート
  3. 「UMLモデリングの本質」、児玉公信著、日経BP社

7. Elapiz(いらぴす)当選者発表

先月号の Elapiz Basic の正規ライセンス(\9,975 相当) の当選者の方々を発表いたします。おめでとうございます!!

  • まるごん 様
  • さいごさわ 様
  • 徳永 亮 様

また、今回抽選には外れましたが、モデリングカフェへの熱いコメントをブログを通じてお寄せくださいました ひらさわ 様 にも、
今回特別にご用意させていただいたモデリングカフェ マスター賞 として当選者と同様に Elapiz Basic のライセンスをプレゼントします。

モデリングカフェ マスター賞は、モデリングカフェの普及に貢献した方に贈られる、マスターの独断と偏見いっぱいの賞です。

なお、当選者の方々には、後日改めてメールにてご連絡いたします。お楽しみに!!


改定履歴:見た目のレイアウトを更新しました。(2017.12)