@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- PR -

「UML」を初めとする現在の「モデリング言語(手法)」の問題点は?

投稿者投稿内容
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-02-01 09:38
引用:

H2さんの書き込み (2005-01-31 23:43) より:
引用:

k-nak さんの投稿 投稿日時: 2005-01-31 13:51
あと、今回の議論内容ですが「プロパティ」の問題というよりは
「ドメイン」の定義についての考察、な気がします。
その考察を進める過程で「プロパティ」の位置付けが明確になる、と
したほうが、議論が言語論争に流れる可能性が減ると思います。




ドメインと言う言葉が少しあいまいに使われているかもしれないので
念の為、ドメインと言う言葉を定義しておきませんか?

引用:

で、プロパティとか関係なく、「「UML」を初めとする現在の「モデリング言語(手法)」の問題点は?」となるといろいろあると思います。

1.モデリング手法におけるコンセプトの共有化が難しい。ここのスレッドで多いに問題になっているように、皆さんの中で「オブジェクト」とは何かという認識の違いがモデリングに大きく影響してしまうこと。
2.どうしても実装言語に偏る傾向がある。これは開発のスパイラルを考えるとしかたのないことかもしれません。一般的にモデリングをする時には使用言語が決まっていたりしますし。
3.モデリングを検証(verify)することが難しい。実際に作ってみたモデルが本当に問題解決もしくは実現しようとしている対象を忠実にモデル化しているかどうか検証するシステムがない。(注5)

などなど・・・

おそらく、みんなが納得するような統一理論はまずでないと思います。哲学にも近い概念なんですから。

注1)どこにもオブジェクト指向モデリングとは書いてありませんでしたが、.netやJavaについて議論をしているのでオブジェクト指向でのモデリングと仮定させていただきました。

注2)意見・反論・間違い・指摘など大歓迎です。でも、忙しいので返事ができなかったり、遅かったりします。すみません
m(_ _)m

注3)「抽象データ型」(Abstract Data Type)はデータとそれに対する手続きをセットにすることにより内部データアクセスには決められた手続きのみにしか許さないという情報隠蔽やカプセル化の延長線にできたもの。オブジェクト指向ではそのほか継承 (inheritance)や多相 (polymophism)などといった特徴も重要。なお、Objectさんが言っている構造主義というのは簡単にいうと、機能中心(フローダイアグラムを使った手続き型)でもなく、データ中心(ERダイアグラムなどを使ったデータ型)でもない、その間の抽象データ(機能とデータ)中心ということです。和とか積とかいうのは数学的に抽象データ型や継承、多相をあらわしていると考えていいと思います。習った記憶はあるんですけど詳しいところは覚えてないので嘘ついてるかもしれません

注4)ネットワークでたとえるならば、トランスポート層のプロトコルに物理層のプロトコルを組み込もうとしている感じ。

注5)実はあったりするけれど、あまり現実てきじゃない

#長文駄文で注釈が多くてすみません。一応、調べて考えて書いてますが嘘だったり間違ってるかもしれません。



■総論
自分自身が
「経験が足りないだけなのでしょうが、定義が足りていません。」
と言う状態だと思っています。
仕様書をひっくり返して分類を自分なりにつめていくのが言いのかも?
と思います。

■抽象クラスについて
抽象クラスが問題になると思っています。
抽象化する際に抽象化の軸が出てくるのですが、
その軸が後々になってぶれた時大規模な手直しが発生したりしそう。。。

例えば、状態クラスとか、関連クラスとか、バリエーションを挙げて
それぞれの特徴を洗い出して使い分けていくことで解決できるような
気がするのですが、
種類も特徴も定義があいまいなままなのではないか・・・と思います。

ただ、これは、UMLの概念を定義レベルでかみ締めていないことからくる
ものではないかとも思います。

■検証について
検証方法も先に挙げたバリエーションを掴む事で方針が出てくるような気がするのですが・・・。

■オブジェクト指向について
個人的な定義を先に出します。
1.カプセル化ができる
2.継承できる
3.オーバーライドができる
4.オーバーロードができる
5.インターフェースでオブジェクト間を区切ることができる
6.多態性(多相性)を持つことができる(広い意味で)

・・・と言う風に考えています。

ただ、6については2+3+4と言う広義の意味で捉えています。
4についてですが、
Javaではシグニチャで分けているのですが、
引数だけでなく、戻り値も含めてオーバーロードできると良いのかな・・・。
という風に考えています。(細かくなりますが)

[ メッセージ編集済み 編集者: るぱん 編集日時 2005-02-01 09:39 ]
zaxx_MD
大ベテラン
会議室デビュー日: 2003/04/21
投稿数: 204
お住まい・勤務地: 千葉県柏市
投稿日時: 2005-02-01 16:47
はわわ・・・3日ほど席から離れていたら
なんだかスゴイことになってますか?

レスする必要があったならごめんなさい。

改めて読み返す気力が無いので、
どうしてもレスがほしい方はPMでおねがいします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-02-01 16:57
>それはなぜですか?

それが「自己申告」というものだから。

>何をさして仕様書で、何をさしてアプローチなのですか?

自分で何を書き込んでるのか判ってないのか?
自己申告で談合が「無い」と言ってるだけで、少なくとも俺ともう一人は疑念を
抱いてる。その「自己申告」から逆の真実を導くアプローチ。

>相手に確認を取って論点を整理

仕様書って、こういう風に作るんやなかったっけ?
自分の自己申告で仕様書ってできてまうもんやったっけ? (プ

俺も大将の真似さして貰うわ。

>僕にはこの発言で溝を作られていると思うわけですが、

それは一体、どんな溝なのですか?
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-02-01 17:04
しかし、現状の枠の中で「バレさえしなけりゃ何でもあり」な奴って、例外無く
現実を肯定する事しか能が無いよな。そこから進歩や拡張しようとせんよな (プ
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-02-01 18:39
objectです。

引用:

H2さんの書き込み (2005-01-31 23:43) より:

そもそもオブジェクト指向で基本的な特徴の一つは「抽象データ型」(注3)であること。そして、この抽象データ型であるということはオブジェクトの内部構成
(内部属性・状態・内部データ・そのオブジェクトを構成する内部要素)
が外部から直接アクセスできないようにするということ。

.netにおける「プロパティ」はこの抽象データ型の実装方法の一つでしかない。javaはシンプルさゆえ(と私は勝手に思っている)その機構がないだけのこと。Haskell(関数言語ですが)のようにフィールドもプロパティもなしで抽象データ型のコンセプトを実装している言語もあります。

前にも誰かが言っていましたが、「プロパティ」は .net が提供するSyntax
Sugarであり、オブジェクト指向のもとのモデリングとはまったく違うレベルの話かと思います(注4)。そして、抽象的なコンセプトのオブジェクト指向(&モデリング)に、プロパティという実装定義を組み込むのはいまいちしっくりとこないと思います。

ということで、「プロパティはOO言語実装レベルの話でありOOモデリングレベルの話ではない」と思います。言語としての話なら「プロパティは便利だなぁ。でも諸刃の刃だなぁ。あれば使いたいなぁ。でもケースバイケースだなぁ」程度の意見になります。


私も、「抽象データ型」は、確かに「オブジェクト指向」のベースでもあり、重要であると思います。

しかし、私は「抽象データ型」の特徴は、「データ型」自体が「抽象化」されている事であって、
「外部から直接アクセスできない」
事、つまり「隠蔽」は「カプセル化」の為の一つの手段だと思います。

取り敢えず、
「プロパティが抽象データ型の実装方法の一つ」
かどうかは、次の問題として、
一つお聞きしても良いでしょうか?

H2さんは「基本的な特徴の一つ」という表現で、「オブジェクト指向」と「抽象データ型」の関係を少し曖昧にしていますが、
これは、「オブジェクト指向」で最も重要な特徴が「抽象データ型」だと言う意味でしょうか?
もしそうで無いとしたら、
「オブジェクト指向」で最も重要な特徴は、一体何だとお考えでしょうか?
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-02-01 18:43
objectです。

引用:

k-nakさんの書き込み (2005-02-01 01:15) より:
復習の前にひらめきが得られたのでとりあえずメモ代わりに投稿。

以上の部分について、これからどう考察をすすめるべきだろう、と悩んでる時に
思いついたのですが、ここのフィールドとファンクションは、
アルゴリズムとデータという言葉に置き換えませんか?

フィールドとファンクションでは言語要素的イメージが強いですし。

BPMツールやXAMLのような宣言型プログラミング、XML/XSLTでできるいろいろなこと
なんかのことを考えるとあまり言語要素的なイメージを持たせたくない、
と思うのです。(←ここの文章、うまく感覚伝わるか心配・・・^^;)


「ソフトウエア空間」をもっと一般化した方が良いというのはその通りかも知れません。

私の表現は
プロパティ=フィールド
メソッド=ファンクション
という今の常識が間違っているという事を明確にする事でしたから、
現状の言わば「ドクマ」が壊せるのであれば、表現自体には拘りません。

フィールド=データ
は特に問題は無いと思いますし、
ファンクション=アルゴリズム
も、まぁ、駄目という事では無いですね。

全体としては、内容を大きく歪める程の言い換えでは無いので、私は良いと思います。
#でも、範囲を広げ過ぎると、手に負えなくなる可能性はありますよ?

[ メッセージ編集済み 編集者: object 編集日時 2005-02-01 18:54 ]
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2005-02-01 22:20
引用:

objectさんの書き込み (2005-02-01 18:39) より:

私も、「抽象データ型」は、確かに「オブジェクト指向」のベースでもあり、重要であると思います。

しかし、私は「抽象データ型」の特徴は、「データ型」自体が「抽象化」されている事であって、「外部から直接アクセスできない」事、つまり「隠蔽」は「カプセル化」の為の一つの手段だと思います。

取り敢えず、
「プロパティが抽象データ型の実装方法の一つ」
かどうかは、次の問題として、
一つお聞きしても良いでしょうか?

H2さんは「基本的な特徴の一つ」という表現で、「オブジェクト指向」と「抽象データ型」の関係を少し曖昧にしていますが、
これは、「オブジェクト指向」で最も重要な特徴が「抽象データ型」だと言う意味でしょうか?
もしそうで無いとしたら、
「オブジェクト指向」で最も重要な特徴は、一体何だとお考えでしょうか?



>「オブジェクト指向」で最も重要な特徴が「抽象データ型」だと言う意味でしょうか?
#この質問をされると議題がモデリング手法からオブジェクト指向とはになってしまいますよ?質問されたので答えますが

いいえ。"最も重要"とは言っていません。曖昧にしたのではなく言葉どおりにオブジェクト指向の機能のひとつだと思います。私が思うに、「オブジェクト指向とは、継承と多相という機能がついている抽象データ、つまりオブジェクトとオブジェクトの複合体により物事を表現する概念」だと思っています("注3"でもちらりと書いていますが)。(注A-1)

よく言われる「情報と振る舞い」と呼んでも、K-nak さんが提案されている「データとアルゴリズム」と呼んでも、.Netのように「フィールド・プロパティ・メソッド」と呼んでも、Javaのように「フィールド・メソッド」と呼んでも、C++で「メンバー変数・メンバー関数」と呼んでも、HaskellでADTと呼んでもそれはやはりオブジェクト指向での「抽象データ型」の言い換えにしかすぎないと私は考えます。

繰り返しになりますが、言いたいのは
+ UMLをはじめとする今のモデリング手法は完璧ではないには合意できる。
しかし、その問題はモデリングの定義に.netのような「プロパティ」が欠けていることに起因するものではない。
+ .netのような「プロパティ」はオブジェクト指向の実装レベルの定義であり、モデリングなどの概念的定義ではない。

というのが私の思うところです。ちょっとおっかなびっくりなんですが・・・

注A-1)数学的に言えば object = 継承Π多相Π抽象データ と言いたい。 (Πはラージパイ) <- あってんのかなぁ 苦笑

前回と同じく、意見・反論・間違い・指摘など大歓迎です。でも、忙しいので返事ができなかったり、遅かったりします。前もってすみません m(_ _)m


[ メッセージ編集済み 編集者: H2 編集日時 2005-02-01 22:26 ]
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-02-01 23:10
引用:

H2さんの書き込み (2005-02-01 22:20) より:

繰り返しになりますが、言いたいのは
+ UMLをはじめとする今のモデリング手法は完璧ではないには合意できる。
しかし、その問題はモデリングの定義に.netのような「プロパティ」が欠けていることに起因するものではない。
+ .netのような「プロパティ」はオブジェクト指向の実装レベルの定義であり、モデリングなどの概念的定義ではない。

というのが私の思うところです。ちょっとおっかなびっくりなんですが・・・

注A-1)数学的に言えば object = 継承Π多相Π抽象データ と言いたい。 (Πはラージパイ) <- あってんのかなぁ 苦笑

前回と同じく、意見・反論・間違い・指摘など大歓迎です。でも、忙しいので返事ができなかったり、遅かったりします。前もってすみません m(_ _)m


オブジェクトを一旦、情報とアルゴリズムに分けてから組み立てなおす
・・・でもダメですかね?

その中に抽象データがでてきたり多相がでてきたりと言うのでは表現し切れませんか?

スキルアップ/キャリアアップ(JOB@IT)