Open16

UML モデリング入門

dak2dak2

1章

モデリングはシステム思考である
システム思考とは、観察対象を構造化された全体、すなわちシステムとして見る態度のこと。
システムの問題状況は末端に表れるが、そこに問題の真の原因はない。問題は構造を成しており、その因果関係は循環している。

システムを分解して、構成要素を単独で取り上げてしまうと、相互作用が失われて、システムの認識は崩壊する。

つまり、構造的に把握しないと真に問題解決できない

モデリングは、システム思考で対象を観察し、記述していく活動。

dak2dak2

モデルの定義

ある人のある状況に関する明示された解釈
Brian Wilson

モデル化の対象をある目的を持った人間活動システムと見ている

Wilson はこのようなモデルを概念モデルと呼ぶ

dak2dak2

概念とは

概念は情報を載せる乗り物
概念を通じて世界の意味を汲み取って判断して行動してる。
情報は概念の状態変化をとして飲み取り出される
概念は予め存在するものでは無く、社会活動を通じて徐々に形成されるもの

もう少し具体的に言うと、概念は個々の事象を類似化して命名したもの。あるいは、ものごとを類似性によって集合に分類して命名したもの

パブロフのイヌの例

  1. エサを与える前にベル鳴らす
  2. やがてベルを鳴らしただけでヨダレを垂らすようになる

鳴らされるベルの音の高さや長さなどは全く同じではないが、それらを同じものと認識して、エサを予期させる事象として学習して予期させる事象に備えることができるようになっている。このプロセス自体が抽象化であ?。

dak2dak2

インスタンス(この本で言うところの個別事象)を考える時は、ギリギリの際どい例を挙げて考えるようにする。

所感

境界線が見えてくる感覚はある

dak2dak2

概念体系を再構築することが本来的な意味でのモデリングである。モデリングでは、よりシンプルで頑強な概念体系を追求する

一つひとつの概念の意味をバラバラに記述しても意味はなく、概念間の関わり合い、つまり『構造』にこそ意味がある
構造に着目して概念を再解釈して精緻化していく試み

dak2dak2

3章 最適モデリング

静的モデリングの3つのポイント

1. 1つのモデルにはひとつの視点

一つのモデルには複数の視点が紛れ込まないようにする。視点の異なるモデル間のインターフェースには、意味と時間の翻訳が必要

1つの認識主体に複数個の主体を包含しない。
認識主体ごとにモデルを分ける。

2. 静的モデルにはモデルの骨格となる基本的な構造が存在する

請求でいうと、請求とは予定の入金のことであり、様々な形態の入金がある。このような予定と実績の対応関係は請求における基本構造である。

3. 静的モデルは、必要最小限にして完備な概念にする

toto のビジネスモデルを考えた時、13試合の勝ち/負け/引き分けを購入者が予測するタイプや3試合の得点数を予測するタイプなどがある。これをチームと試合から書き始めて見るとうまくいかない。
主催者はくじを売ってるだけ。当たりくじをきめるためにサッカーの試合結果を使って何桁かの数字列を決めるのであって、チームや試合そのものはビジネスモデルの本質ではない。チームと試合の概念を削って最小限で完備なモデルを導出できた

dak2dak2

概念モデリング

ある概念の意味はコンテキストによって変わるので、正確に述べるのは難しい。モデルで作る世界の範囲を定めて、その中にある概念同士の関わり方を整理して意味を定義する作業のこと。

例えば、『商品』という概念は、『もの』を『売買する』という関わりの中で意味が確定されると考える。当然、この関わりに、さらに売り手と買い手が関わり、その移動に対する対価の支払い条件はどうなっているのか述べることになる。

dak2dak2

4章: 静的モデリング 関連

概念は単独では意味が不安定なので、他の概念とどのように関連しているかを記述することで意味を安定なものにする

静的モデルは任意の時間で切り取ったスナップショット

dak2dak2

認識主体のロールを考えてみる
親と子の多重度を考えた時に、自分から見たら親は両親だし、自分の子どもから見たら自分が親になる。なので味方によって親と子は相対的な役割の概念である。基本概念と同列に扱わない。
役割の概念をロール

所感

ロールを基本概念と同列に扱うと多重度が確定しないはず
モデリングがシャープにならないような印象

dak2dak2

ロールを見つけるには認識主体の言い方にもヒントあり
○○の**関係という言葉を考えると、○○が基本概念で、**が役割概念

人の生物学的な親子関係、ある企業の社員の上司と部下の関係など、すでに人のとか社員の役割であることを示唆する

dak2dak2

汎化して抽象化した概念を導入すると、暗黙的に補集合の存在を認めることになる。
例えば、人間と猿を汎化して動物とすると、人間でも猿でもないインスタンスの存在が暗黙的に仮定される。昆虫は動物ではないのかなどの議論。

このように汎化すると、個々のインスタンス以外の補集合の存在を仮定することになるので、その補集合を認めるかどうかは意識する必要がある。

dak2dak2

集約

束ねるものと束ねられるものの関係
ex. 森はたくさんの木のインスタンスからなる

=> あるものをまとめると、別の性質のものになるという性質

合成集約

2つの型は運命共同体な関係 => 黒のひし形
一方の型が削除されるともう一方の型が削除される関係

ex. 社員と扶養家族の関係。社員と扶養家族は一位にリンクされる。社員が退職すると、扶養家族の情報も不要になる。

逆に集約の方は、束ねるものの森のインスタンスを削除しても、束ねられるものの木のインスタンスは消さなくて良い

dak2dak2

5章: インスタンスの構造

書き方がメインで紹介されてるので重要な章ではない
ただ、オブジェクト図を書くことで、多重度の間違いや型の構造の間違いに気づけるというのは当たり前だけどそうだしそれを見つける作業がモデリングだなという所感はある

dak2dak2

6章: 高度な関連

モデリングの作業の大半は、多重度やロールも含めて、制約を明らかにして記述すること。常に、制約が必要かどうか自問して、曖昧な解釈や誤解が生じないようにすべき。

所感

これ1番大事な気がする。そのままシステムの世界にマッピングするのではなく、制約を明らかにして記述すること。