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

モデリング

モデリングカフェ 第3回:部品の構成をモデリングする

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

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

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

1.前回の問題(社員と辞令)

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

【お題02】社員と辞令

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

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

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

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

2. 読者解答モデル

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

読者解答1:andy様

コンセプト

  • 社員は複数の部署に所属する可能性があります。
  • 社員は複数の役職に付く可能性があります。
    例) 澤田さんは技術二部の部長と研究室の室長を兼ねる
  • もちろん、部署には複数の社員が存在し、ある職務を果たす社員も複数います。

モデル

図 1 andy様の解答モデル
図 1 andy様の解答モデル

感想

  • 難しかったところ
    • 従事という関連名はより適切なものがありそうです。
    • 「辞令は、1.配属のみ 2.従事のみ 3.配属と従事、を指定する場合がある」と言うことを示したかったのですが、現在のクラス図では「4.配属も従事も支持しない辞令」を認めてしまっています。どう書くべきなのか分かりませんでした。
    • 「部は課からなる」などの情報は無視しました。
  • 自己評価

    上記の妥協があるので70点くらいでしょうか。

コメント

マスター   コンセプトにある通り、社員が複数の部署に所属する可能性(社員と配属の関係)と社員が複数の役職につく可能性(社員と従事の関係)が表現できているね。
 
久本くん   それに、部署に複数の社員が存在すること(配属と部署の関係)や、ある職務を果たす社員が複数いること(従事と職級の関係)も、コンセプト通りに表現できていますね。
 
吉井さん   興味の対象として、(社員が配属される)部署と(社員が従事する)職級の2つあるところをきちんと捕らえていて、とても良いと思います。
 
唐沢さん   感想のところに3種類の辞令の組み合わせがあることが書かれていますけど、これはコンセプトに記述した方が良かったんじゃないかなぁ。
 
久本くん   これは辞令と配属、辞令と従事の関係の多重度(0..1)のところに表現されているものですね。 配属も従事もない辞令を認めないようにするには、どうやって表現すればいいのでしょう?
 
唐沢さん   ノートアイコンで書いておけばいいんじゃないかな。厳密に制約を記述するにはOCLを使うことになると思うけど。
 
マスター   ここでは厳密性より、分かりやすさを優先したいところ。 みんながOCLを理解しているなら構わないけど、ノートで書いた方が良いと思うな。
 
 
 
マスター   複数の部署に配属される可能性があるとのことだったけど、 一度に複数部署に兼務するような辞令はどう表現できるのかな?
 
久本くん   えっーと。あれ?ひとつの辞令ではひとつの配属しか結びつかないですね。
 
吉井さん   たぶん、別の辞令が発行されるものと考えるんじゃないですか?
 
唐沢さん   このあたりはコンセプトに記述がないのでちょっと判断できませんね。
 
 
 
久本くん   ところで、配属クラスと従事クラスの存在ってなんでしょうね?配属は、社員と部署の関係名(配属する)のように思えますし、従事も同様(社員と職級の関係名:従事する)に感じます。
 
唐沢さん   配属辞令、従事辞令という訳じゃないみたいですけどね。
 
吉井さん   配属や従事になにか情報(たとえば期間など)を持たせたい場合には有効ですね。
 
 
 
唐沢さん   部署のサブクラスとして技術二部や、職級のサブクラスとしてミドルSEとジュニアSEがクラスになっていますが、これらは部署や職級のインスタンスなんじゃないですか?
 
久本くん   えっ、部署や職級の種類を表しているじゃないですか?ほら集合の概念でよく出てくる。。。
 
吉井さん   確かに、種類をサブクラスで表現することは多いですよね。
 
マスター   種類は型(クラス)なのか実体(インスタンス)なのか・・・。 たとえば職級とサブクラスのミドルSEあるいはジュニアSEを比較して、 何か新しい情報がある(あるいは異なる関連がある)か、異なる振る舞いがあるか考えてみるといいよ。 現在考えているレベルの情報量では、特に職級との違いもないので、 ミドルSEやジュニアSEは職級のインスタンスとして扱って問題ないと思うよ。
 
図 2 サブクラス
図 2 サブクラス
 

読者解答2:松田政博様

コンセプト

  • 辞令には、能力・資格に関係する格付辞令と部門への配属に関する配属辞令がある。
  • 社員が現在どこに配属されているか、また、社員が過去に配属されてきた部門もわかる。
  • 同様に、社員が現在どんな職級にあるか、また、また、社員が過去に格付けされてきた職級もわかる。
  • 社員は入社すると格付辞令・配属辞令により、いずれかの職級に格付けされ、いずれかの部門に配属される。
  • 課長、部長の扱いは不明なので、モデルには表現していない。

モデル

クラス図

図 3 松田様の解答モデル(クラス図)
図 3 松田様の解答モデル(クラス図)

オブジェクト図

図 4 松田様の解答モデル(オブジェクト図)
図 4 松田様の解答モデル(オブジェクト図)

感想

  • 難しかったところ
    • 社員は、会社にいる間、格付・配属辞令を複数回経験する。
    • 格付をいかに表現するかというところ。
  • 自己評価

    「UMLモデリングの本質」、児玉公信著、日経BP社にある「もの」-「こと」-「もの」の構造を見つけたつもり。

コメント

吉井さん   コンセプト通りにモデルが表現できていますね。 格付けの辞令と配属に関する辞令の2種類をきちんと区別されていますね。
 
マスター   社員と辞令の関係も明確になっていて良いね。
 
久本くん   辞令によって、社員と職級あるいは社員と部門が関係付けられているということですね。
 
吉井さん   そうそう。「もの」-「こと」-「もの」の構造になっているわけですね。
 
 
 
久本くん   オブジェクト図もあるので、具体例で確認できますね。
 
マスター   クラスはあくまで集合概念なので、オブジェクト図を使って表現してみることはとても大事なこと。 クラス図をまとめる前にオブジェクト図を使って整理すると良いね。
 
唐沢さん   普通に考えると社員と辞令を関係付ければいいように思えるけど、 ここでは社員と辞令のサブクラス(格付辞令や配属辞令)が関連で結ばれていますね。
 
吉井さん   コンセプトに理由が書かれています。 単に社員と辞令ではなく、格付け辞令と配属辞令を区別しているわけですね。
 
マスター   そうだね。それに、それぞれの履歴も扱っているね。 過去にどういった部署に配属されてきたのか、 あるいはどういった格付だったのかがわかるようになっているんだね。
 
 
 
唐沢さん   ところで、現在(あるいは直近)と履歴の2つの関連があるでしょ。これって、本当に2本の関連になるのかな?
 
久本くん   だって、現在の関係と過去の関係なのだから問題ないと思いますが?
 
唐沢さん   格付辞令(あるいは配属辞令)から社員を見たときに、2本のリンク、 つまり2つの社員のインスタンスが存在するってことになるのかな?
 
吉井さん   よく見ると、オブジェクト図では必ずしも格付辞令のインスタンスから社員のインスタンスへ 2本のリンクが出ているわけではないみたいですね。 クラス図とオブジェクト図が対応していないのかな?
 
マスター   クラス図に表現された、現在と履歴の2本の関連は意図としては十分に分かりやすいものだといえるね。 でも、格付辞令や配属辞令からみた社員は必ず1人だということがうまく表現できていないようだ。 現在を表す関連は履歴を表す関連の一部(subset)であると考えるといいだろうね。
 
図 5 subset関連
図 5 subset関連
 
久本くん   なるほど。そうすれば、いいのか。
 
吉井さん   直近の格付け辞令というロールの関係は社員から片方向の関係と見ることもできそうですね。
 

読者解答3:吉本様

コンセプト

  • 前提・制約・その他
    • 辞令の発令は1日複数回発令されることはない
  • 辞令
    • 辞令は、1社員に対して職級と配属先の辞令が同時に発令されることも想定した
  • 辞令内容
    • 辞令内容は、職級の変更と配属先の変更を想定した
    • いずれも変更前と変更後の情報を管理するようにした

モデル

クラス図

図 6 吉本様の解答モデル(クラス図)
図 6 吉本様の解答モデル(クラス図)

オブジェクト図

図 7 吉本様の解答モデル(オブジェクト図)
図 7 吉本様の解答モデル(オブジェクト図)

感想

  • 難しかったところ
    • 二種類の辞令の内容をどう表現するか
    • 辞令が辞令内容として職級変更を複数、または配属変更を複数していできないことを表現するのが難しかった
    • 今回はノートに記述した
  • 自己評価
    • 二種類の辞令がそれなりに表現できたと思う
    • 分析中に変更前と変更後が抽出できた点はよかった
    • ※ お題の範囲を超えると思われる部分は・・・

コメント

吉井さん   このモデルもコンセプトに書かれたことがきちんと表現できていますね。
 
マスター   それに図だけでは表現できないところを、ノートを使って説明しているのも良いね。
 
唐沢さん   興味のあることをキチンと切り分けて考えていて、再構成して全体を表現しています。 分割と統治のバランスがいですね。
 
久本くん   関心事がうまく整理されている感じで、レイアウトが見やすいですよね。
 
吉井さん   うん。抽象度を合わせてレイアウトされているからとても見やすい。
 
 
 
マスター   コンセプトには書かれていないけど、職級の上位、下位についても表現されているね。
 
唐沢さん   職級クラスの自己関連ですが、上級も下級も多重度が0..1になってますよね。
 
久本くん   等級のようになるのかな? 1級、2級、3級…みたいに。
 
吉井さん   キャリアパスみたいに分岐するような職級というのがあっても良いかもしれないね。 その場合、多重度は0..*になりますね。
 
 
 
唐沢さん   このモデルも階級のサブクラスとしてジュニアSEやミドルSEといった種類を出しているけど、 これらは階級クラスのインスタンスで良いかもしれないですね。
 
マスター   そうだね。この時点では異なるクラスとする情報を持っていないからね。 階級変更のサブクラスの昇格と降格、部署のサブクラスの技術1部と技術2部も同様にインスタンスで良いよね。
 

3. 解答例

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

コンセプト

  • 社員と辞令の関係
    • 社員は辞令によって配属先の部署、与えられる職級が決定する
    • 社員は複数の辞令を受ける
    • 辞令は発令日という情報を持ち、一人の社員を特定する
  • 辞令には昇格辞令と配属辞令がある
    • 昇格辞令は職級を特定する
    • 配属辞令は組織を特定する
図 8 辞令の種類(ベン図)
図 8 辞令の種類(ベン図)
 

前提条件

  • 組織の上位・下位などは表現しない
  • 昇格辞令には降格のケースも含むものとする
  • ひとつの辞令は、職級または配属先の部署のいずれかを指定するものとする

モデル

オブジェクト図

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

クラス図

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

総括

ポイント

今回のお題でのポイントは「もの」-「こと」-「もの」の構造です。
辞令(コト)が、社員(モノ)と職群あるいは組織(モノ)とを繋いでいます。

図 11 「もの」-「こと」-「もの」の構造
図 11 「もの」-「こと」-「もの」の構造
 

種類はサブクラスかインスタンスか

解答例では、辞令の種類として昇格辞令と配属辞令というサブクラスを抽出しましたが、 職級や組織に関してはサブクラスを抽出していません。 同じ種類でも、サブクラスとしたり、インスタンスで区別することもあります。 ここでは、種類が異なる情報を持っていたらサブクラスにする方針を採っています(図2も参照して下さい)。

辞令クラスのサブクラスには昇格辞令と配属辞令があり、それぞれ職級と部署に関係があります。 この関係は、昇格辞令と配属辞令が、辞令クラスとは異なる情報を持っていることを表しています。 一方、サブクラスを抽出していない職級の種類(ジュニアSE、ミドルSE)はいずれも職級の持つ情報以外に異なる情報を持っていません。 今回、階級クラスのサブクラスとしてジュニアSE、ミドルSEを、 部署のサブクラスとして技術1部などをクラスとして抽出された解答モデルが多く散見されました。 もちろん、一概に間違いとはいえませんが、異なる情報を持っていないレベルではサブクラスとして抽出する必要性はありません。 サブクラスとして識別するよりも、単に異なるインスタンスと考えればよいでしょう。

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

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

【お題03】部品の構成

型番 D0101 の机の部品構成は以下のとおりです。

  • 机 (D0101) は天板 (T0212) 1つ、脚 (F0132) 4つ、引き出し (H0303) 1つで構成されます
  • 引き出し (H0303) は、箱 (B0505) 2つ、棚 (TA0635) 1つで構成されます
  • 天板 (T0212) や引き出し (H0303) などは他の製品でも利用されます

※ ( ) 内は型番

この例を参考に部品の構成をモデリングして下さい。 不足する情報は適宜補っていただいて結構です。補った情報は、コンセプトに記述してください。

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

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

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

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

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

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

現在、応募していただいた方の当選確率は、83 % と高確率 です!

6.参考文献

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

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

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

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

  • 吉本 様
  • たつ 様

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

改訂履歴

  • サイトテンプレート変更に伴う変更(2018年3月)