« ホワイトカラーの仕事をカイゼンするために | トップページ | ビジネスリーダーに必要な「経営の3言語」 »

2005.07.23

モデルにインスタンスを併記できることの意味

オブジェクト倶楽部で今年4月に開催された「第2回モデリングコンテスト」のお題「クリーニング屋さん」にもとづいて、XEADでデータモデルを描いてみた。クラス図表記の応募作品群と比較すると、オブジェクトモデリングとデータモデリングのアプローチの違いがわかっておもしろい。

モデリングコンテストのページに掲載されている投稿作品をざっと眺めたうえでデータモデルと比較してほしいのだが、一見して異なるのがインスタンス(実際値)の表記形式である。コンテストの投稿のルールとして、クラス図とともに、インスタンスの関係をまとめたオブジェクト図も示すことになっている。筆者が描いたデータモデルの表記法では、データモデルとインスタンスとが1枚の図で示されている。

laundry2

瑣末な違いに見えるかもしれないが、そうでもない。この表記法でインスタンスを併記できる利点を「テーブルの属性項目が横並びでレイアウトされているおかげ」とだけ考えると問題の本質を見誤る。試しにクラス図の属性項目を横並べにしても、オブジェクト図で描かれた内容をデータモデルでのようにシンプルな形には併記できない。

なぜかというと、クラス図にインスタンスを併記したとしても、インスタンス同士の関連線を省略できないためだ。クラスのインスタンス同士は処理系内部で暗黙的にリンクされるので、インスタンスを資料として示す場合、インスタンス同士の関連を図面上で補足する必要がある。結果的に、クラス図同士の関連線とインスタンス同士の関連線とがゴチャゴチャと交錯してしまう。どうしてもオブジェクト図のような、インスタンス同士の関連を示すためだけの図面を別途用意しなければならない。

いっぽう、データモデル上の「テーブル」に格納されるタプル同士の関連は、モデルの図版に赤線で示したように、識別子や外部キーの値として表される。したがって、タプルの値例を示す際にタプル同士の関連を線でつないで示してやる必要はない。「テーブル(帳簿)」の格納形式においては、タプル間の関連がソフトウエアレベルの機構ではなく、データ項目の値として扱われているということだ。

やろうと思えば、クラス図上でステレオタイプを駆使して識別子や外部キーを配置しつつ、インスタンスを関連線なしで併記することは可能ではある。ただしこれを推し進めると、モデリング作業が「オブジェクトモデリング」ではなく「クラス図を用いたデータモデリング」になってしまう。多くのオブジェクト指向実践者はこれを嫌う。

このように、たかだかインスタンスの表記様式の違いと思えたことは、じつは識別子の取り扱い方針にもとづく本質的な違いだったりする。

参考までに、クリーニング受注管理の「業務フロー」を示しておこう。業務フローは「企業システムの3要素(データ、業務、機能)」が集約的に示された俯瞰用図面として重要な役割を果たす。データモデルに業務フローを添えただけでも、システムのイメージがぐっと明確になることがわかってもらえると思う。

laundry1

謝辞:お題の利用に関して、オブジェクト倶楽部を主宰されている平鍋さんから快諾をいただいた。あらためてお礼を申し上げる。

|

« ホワイトカラーの仕事をカイゼンするために | トップページ | ビジネスリーダーに必要な「経営の3言語」 »

コメント

構造とデータサンプルが一枚で表現されていると、モデルの意味がわかりやすくてよいですね。検証もしやすいように思います。
それと、防虫区分や預かり状態がコード値(0,1...)ではなく日本語で表示されているのも、美しいですね。

投稿: 杉本 | 2005.07.24 13:34

お久しぶりです。
いつも面白く拝見してます。投稿しようと思いながら、ついずるずると。。
インスタンスの併記は、私達も、ホワイトボードを使った議論で良く使います。
類似の構造を探したり、メタデータ名の妥当性を考えたり、メタデータとデータの対応がこれで最適か?など具体的なチェックにとても有効ですね。
ちなみに、図法はTH風です。
確かに横の方が描きやすいですが、こちらになれているもので。。

投稿: ひがき | 2005.07.24 17:35

今日、ビジネスモデリング研究会のMLに、つたないクラス図を掲載した佐々木です。
確かに個々のインスタンスを特定する「識別子」の扱いというか、それを大事にしているかどうかが、取り組み方の違いになっているようです。
この点は弊社の臨席のDOAな同僚とも指摘しあってきました。
データの関係をもっと大事にしてOOA/OODができないものかと悩んでおりますので、引き続き、勉強させていただきます。
ありがとうございました。

投稿: 佐々木 | 2005.07.24 22:46

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: モデルにインスタンスを併記できることの意味:

» モデルと美 -- DOA か UML か!? [An Agile Way]
渡辺幸三さんが、XEADというデータモデリング用ツールを公開されています。ぼくは [続きを読む]

受信: 2005.07.23 23:58

« ホワイトカラーの仕事をカイゼンするために | トップページ | ビジネスリーダーに必要な「経営の3言語」 »