Index: [Article Count Order] [Thread]

Date:  Fri, 22 Apr 2005 16:09:28 +0900
From:  Kiminobu Kodama <kiminobu-kodama@....jp>
Subject:  [modeling-dojo:00345] Re: 汎化とインスタンス関係の使い分けwasパワータイプ質問
To:  modeling-dojo@....jp
Message-Id:  <200504220709.AA05376@....jp>
In-Reply-To:  <20050422020654.5527.HANYUDA@....com>
References:  <20050422020654.5527.HANYUDA@....com>
X-Mail-Count: 00345

 こんにちは,児玉@(株)エクサです。

羽生田さん,

 「[modeling-dojo:00341] 汎化とインスタンス関係の使い分けwasパワータイプ質問」のお返事
させていただきます。

   >[サービス]クラスと[クリーニング]や[加工]クラスとの関係は汎化関係でモデル
   >化されていますよね.,
   >その一方で,ノートで言及しているように,[クリーニング]クラスと[ドライ:ク
   >リーニング]や[水洗い:クリーニング]の関係や[加工]クラスと[防水加工:加工]
   >や[防虫加工:加工]の関係はクラス-インスタンス関係でモデル化されています
   >ね.
   >
   >この2番目のクラス-インスタンス関係は,微妙で誤解しやすいですが,汎化関係
   >の誤りではないでしょうか.つまり,防水加工も防虫加工も加工クラスのサブク
   >ラスとしたほうが,サービスと加工の汎化関係と整合的なのではないでしょうか
   >非常に微妙な違いといえますが,概念モデルやオントロジーを議論する場合,お
   >ろそかにはできない部分なので,ぜひ児玉さんの意見を聞かせてください.

 まず,「サービス」タイプのサブタイプとして「クリーニング」と「加
工」がありますが,これは部分集合の関係です。
 おそらく,「クリーニング」という「サービス」は「お預かり品」に
対してどれか1つのインスタンスとしかリンクしないはず。たとえば,
水洗いをやってドライをやってとはならないはず。
 一方,「加工」というサービスは任意に組合せができる(という想定
ですが)。たとえば,防水と防虫は組合せ可能。ということで,「預か
り品」との間で作るリンクの構造が違う,つまり広義の振る舞いが異な
るので,2つの部分集合に分類しました。

 モデルへのコメントで付けたのは,このような構造的な制約のほかに,
同じ「お預かり品」に対して,防水加工を2回やることは制約したいわ
けですが,これも,関連が{Set}だということで構造的に制約されてい
ると述べたわけです。

 次に,「クリーニング」という部分集合のメンバ(インスタンス)と
しては,ドライと水洗いがあるとノートで示しました。また,「加工」
という部分集合には「防虫加工」,「防水加工」などがあるとノートで
示しました。

 サービスは商品ですから,新商品が開発されるかもしれません。画期
的な洗剤が開発されて,「高速ドライ」とか「フェロモン仕上げ」など
ができると,このインスタンス「高速ドライ:クリーニング」,「フェ
ロモン仕上げ:加工」を作ることになります。こうして,メンバは増え
ていきます。
 なので,サブタイプが増えていく,つまりモデルの変更を必要とする
ようにすべきではないと思います。

 一方,「ドライ」や「水洗い」を(部分集合の)部分集合と見て,
「1:ドライ」,「3:水洗い」というインスタンスを考える理由は,そ
れぞれの原価が違うことを管理したいとかでしょうか。それなら私は,
「お預かり品」と「サービス」の間に(relationship setの)タイプ
をおきますね。そこに,原価や所要時間を記録します。

   >別の例で示すと,
   >「自動車」クラスと「乗用車」クラスや「運搬車」クラスとの関係に汎化関係を
   >使っておきながら,
   >一方で,「乗用車」のインスタンスとして「スポーツカー:乗用車」,「運搬車」
   >のインスタンスとして「トラック:運搬車」とモデル化するようなものではない
   >でしょうか.これらは自然な概念分類の考え方からすると,やはり,スポーツカー
   >は乗用車のサブクラス,トラックは運搬車のサブクラスとすべきでは.

 意味が分かりません。スポーツカーを乗用車のインスタンスとするか,
乗用車のサブタイプとして,さらにその下に何らかのインスタンスを考
えるか,あるいは,ずーっとサブタイプを考えるかは,自然な概念分類
という評価基準では判断できませんよね。むしろ危険だと思います。

 どこで分類を止めるかは要求(とモデルの視点)に照らして決めるべ
きと思います。

   >このように考えるか,整合性を重んじるのであれば,
   >「サービス」クラスのインスタンスとして,水洗いクリーニング,ドライクリー
   >ニング,防水加工,防虫加工を扱う,ようにするかのいずれかだと思います.

 こうすると,加工とクリーニングの振る舞いの違いが表現できません。

   >先のメールでわたしが,児玉さんのモデル中のサービスクラスはパワータイプだ
   >といったのはミスリーディングでしたが,このようにクラス-インスタンス階層
   >とスーパー-サブクラス階層が混じっていたので,そう思わざるを得なかった,
   >という面があります.

 なぜ混じっていると言われるのか分かりません。

   >仮に水洗いクリーニング,ドライクリーニング,防水加工,防虫加工をそれぞれ
   >クラス扱い(*)すれば,サービスはそれらのスーパークラスといえますが,逆に
   >水洗いクリーニング,ドライクリーニング,防水加工,防虫加工をそれぞれオブ
   >ジェクトと考えれば,それらの属する「サービス種」クラスは先の「サービス」
   >クラスのパワータイプということになります.

 水洗いクリーニング,ドライクリーニング,防水加工,防虫加工をそ
れぞれタイプ扱いすれば,クリーニング,加工という別にくくられるべ
き振る舞いの違いをそれぞれにばらまくことになります。
 それに,そんなことをしたら,商品が増えたときに構造を変えなけれ
ばならなくなります。

 現状のモデルで「サービス」に対するパワータイプ(たとえば「サー
ビス種」)を設けようとすると,そのインスタンスは「クリーニング:
サービス種」と「加工:サービス種」となり,上の振る舞いの制約をル
ールで表現できますね。ただし,料金ルールには関連しません。

 ルールを優先するか構造を優先するかというのはモデラーにとっては
重要な問いです。私は構造を優先します。

   >今回はうまく伝わりましたでしょうか?

 たぶん,どこかですれ違っているように思います。

----
児玉公信
 (株)エクサ SPBOMソリューションオーナー
       兼 技術部
 kiminobu-kodama@....jp kodamak@....org
         児玉流メール道 家元