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

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

投稿者投稿内容
本田@スミテム
常連さん
会議室デビュー日: 2004/01/22
投稿数: 21
お住まい・勤務地: 東京
投稿日時: 2005-02-07 23:32
引用:

未記入さんの書き込み (2005-02-07 12:46) より:
本田さんの返信で、私のこのスレッドの問題に対する認識に、間違いが無かったことを確認できました。



本田@スミテムです。
私は逆に、未記入様のお話の展開が自分の中で?になってしまいました。
恐れ入りますが、確認させてください。

引用:

例えば、一つの石が存在したとします。



石の話で未記入様が例示されているもの、すなわち、私などが「情報(状態)」と認識し、未記入様が「振舞」と認識するものの例は、石の「丸さ」でよろしいですか。
他にも言葉がいろいろありますので、以下が例示ではないことも確認させてください。

・石自身の「存在」
・石が「坂道に存在する」こと
・石が「転がり落ちる」こと
・石の種類、花崗岩、安山岩、閃緑岩、その他多数
・石が「凝固する」こと
・石を構成する「原子」
・石の形や色
・石が過去に受けた影響

また、もし、これらも例示であれば、全て「振舞」なのかどうかお教えください。

(追加)石の「丸さ」と同じものもあればお願いします。


[ メッセージ編集済み 編集者: 本田@スミテム 編集日時 2005-02-08 00:35 ]
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2005-02-08 06:04
ぐっちょ、も〜にんぐ。はにまるです。
引用:

コナンさんの書き込み (2005-02-07 11:35) より:
#見当違いだったらごめんなさい


いえ、お陰様で質問が通じ難い文書である事が判りました。
多分、これで理解頂けるかな?と思っています。
引用:

髪の色といえば{黒、白、金}、その印象といえば{普通、クール、こわい}などのように
定義域と値域の集合があるよということだけだと思います。


はい、ここまで理解出来てはいますが、しかしこの理論では
「要素→データ」、「集合→フィールド」、「写像→関数」
までしか納得出来ませんし、
ここからメソッドとプロパティに押上げる理論は提示されていません。

例えば「髪の色」と「身長」の要素同士からは何らかの関係を見出す事は出来ません。
{黒、白、金}は「髪の色」集合の要素です。
{1.6m、1.7m、2m}は「身長」集合の要素です。

メソッド=振舞とするならば、1メソッドはメソッドが所属するオブジェクト内の全要素が扱えますから
{1.6m、1.7m、2m、黒、白、金}の集合概念が存在します。
しかしこの集合概念は数学上、意味はあるのでしょうか?
また「髪の色」と「身長」を兼ね合せて新たな情報元を創出する行為は数学なのでしょうか?
以上の疑問を頂きました。

_________________
人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-02-08 10:24
コナンです。

プロパティといえば右クリックしか思い浮かばない人なので、雰囲気で答えてしまいました。
すみません

引用:

はにまるさんの書き込み (2005-02-08 06:04) より:

{黒、白、金}は「髪の色」集合の要素です。
{1.6m、1.7m、2m}は「身長」集合の要素です。

メソッド=振舞とするならば、1メソッドはメソッドが所属するオブジェクト内の全要素が扱えますから
{1.6m、1.7m、2m、黒、白、金}の集合概念が存在します。



この部分がひっかかりました。
{黒、白、金}の黒や白は「髪の色」集合の要素ですが、オブジェクト内の要素ではないと思います。
「髪の色」集合はプログラム的に言うと、ある関数の引数にとりうる値のことです。

例えば全角カタカナを半角カタカナにする関数の場合は、引数は文字列ですよね。
この文字列を集合として考えると、{ア、アア、アアイ、アアウ、…}のようなかんじですよね。
で、写像を介して{ア、アア、アアイ、アアウ、…}の集合の中から対応するやつが一つ選ばれるイメージですかね。

なので、髪の色と身長で何かしたい場合は、引数を2つにすればいいと思います。

引用:

また「髪の色」と「身長」を兼ね合せて新たな情報元を創出する行為は数学なのでしょうか?


数学かどうかは正直よく分からないんですけど、数学的にアプローチすることによって
何かがスッキリするような気がします
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2005-02-08 12:30
引用:

コナンさんの書き込み (2005-02-08 10:24) より:
{黒、白、金}の黒や白は「髪の色」集合の要素ですが、オブジェクト内の要素ではないと思います。
「髪の色」集合はプログラム的に言うと、ある関数の引数にとりうる値のことです。


そうですね関数の引数にとりうる値の話ですよね。
主な疑問だけを話せばよかったと反省しています。
主は前投稿の前半です。

_________________
人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-02-08 12:52
objectです。

引用:

H2さんの書き込み (2005-02-07 19:18) より:
あれ?あれ?「オブジェクト」で概念を表すこととがドメイン空間ではないのです
か?ドメイン空間を表すための言語というか、構成要素としてオブジェクトが使われてい
るのでしょう?

オブジェクト指向という概念が生まれる前はDFDやフローチャートみたいなデータや
機能中心の方法でしかドメイン空間を表していなかった。でも、それではドメイン空
間は正確に表すことができなかったので、今主流なのはUMLを使ってドメイン空間を
オブジェクトで表す方法が開発されてきた。確かに以前発言したようにこのモデリン
グテクニックはまだ完璧ではないですし、今後改良や新しい概念が生まれてくると思
います。

で、私が今まで言い続けてきたのはドメイン空間におけるオブジェクトの定義で、オ
ブジェクトとは何か、オブジェクト指向とは何か、という点からObjectさんが提言さ
れたプロパティがオブジェクトの構成要素としてドメイン空間に存在するべきか疑問
を投げてきたつもりだったのですが・・・。

もし、私がソフトウェア空間の概念で話をしているのであれば、もっとJavaだとか
.NETなどの実装言語を使った説明をしていると思います。オブジェクト指向が「ドメ
イン空間に関わる概念」であるからこういう議論になったと思っていましたが、どこ
かですれ違ってしまったのでしょうか

#うーん、やっぱり掲示板だとコミュニケーション能力に限界がありますねぇ。
#ホワイトボードを前にリアルタイムで話をしてみたいけど、
#Objectさんは香川県・・・。遠い〜 笑 


えっ、そうなんですか?(^^ゞ
私は、議論できる共通のベースを模索する為に、これまで質問をして来た積もりでした。
そして、「抽象データ型」に関しては、基本的な一致点を見出したのですが、
「オブジェクトとドメイン空間」に関する部分では、認識の違いが大きいと判断してしまいました。
それで、前回のレスを差し上げた訳です。
何か、私の早合点だった様で、謝ります!<(_ _)>

それでは、少し私の観点から、話をします。

最初に、
「H2さん」は
オブジェクト指向という概念が生まれる前にも「ドメイン空間」と言えるものがあった
というお考えの様ですが、
私が考えている「ドメイン空間」は、あくまで「構造」を持っている空間です。
#「ソフトウエア空間」に於ける「抽象データ型」迄の解釈を、カテゴリ「フィールド、ファンクション」で行って
#みる事はとても意味があると思いますが、ここでは保留します。

次に、
「オブジェクト指向」のベースが「抽象データ型」である
という点に関しては、私も同じ考えです。
しかし
「抽象データ+継承・多相」
を考えた場合、確かに
「機能的・構造的」には「オブジェクト指向」の「フレーム」に近いものが実現出来る
と思います。
でも、これでは、あくまで「ソフトウエア空間」上の「フレーム」であり、
「オブジェクト指向」つまり「ドメイン空間」上の「フレーム」にはならない
と考えています。

また、1つ気になる点として
>私がソフトウェア空間の概念で話をしているのであれば、もっとJavaだとか
>.NETなどの実装言語を使った説明をしていると思います。
「ソフトウェア空間」か「ドメイン空間」かは、話題の「抽象・具象性」とは無関係だと思いますよ?

それから、これは独り言ですが、
「Java」で「フィールド」がクローズアップされましたが、
「C、C++」では、「左辺値、右辺値」がベースでは無かったか?
なんて思いが少ししてるんですよね。

#私も掲示板の限界はヒシヒシと感じています。
#でも、これは考え方によっては、とても良い「言葉での対話の訓練」になりますよね?(^^ゞ
#今回初めて「H2さん」と話をさせて頂いて、じっくり客観的な話が出来る方である事が十分に分かりました。
#機会があれば、方法論その他を含めて、色んな話をジックリとしてみたいと私も思っています。
#今後共宜しくお願いします。

[ メッセージ編集済み 編集者: object 編集日時 2005-02-08 13:00 ]
zaxx_MD
大ベテラン
会議室デビュー日: 2003/04/21
投稿数: 204
お住まい・勤務地: 千葉県柏市
投稿日時: 2005-02-08 13:06

斜めにしか読んで無いので詳細はわかりませんが
なんだかエライコトになってるような・・・

引用:

本田@スミテムさんの書き込み (2005-02-07 23:32) より:
引用:

例えば、一つの石が存在したとします。


・石自身の「存在」
・石が「坂道に存在する」こと
・石が「転がり落ちる」こと
・石の種類、花崗岩、安山岩、閃緑岩、その他多数
・石が「凝固する」こと
・石を構成する「原子」
・石の形や色
・石が過去に受けた影響

また、もし、これらも例示であれば、全て「振舞」なのかどうかお教えください。



石の状態を調べるのに、どのような「振る舞い」を用いますか?
・目で見ますか?
・叩いて音をききますか?
・握ってみますか?
・舐めてみますか?(きちゃない

OOAにおける石に関する情報はすべて受けてのものです。
OODにすると意味が変わってしまいますが・・・
OODでは石を扱う範囲(赤い石と黒い石など)で抽象化し、
よりプログラムしやすいように最適化(リファクタリング)するのが
良いと思います。

しかし、要件を提起した人がOODの「範囲」が正しくないと指摘することも
あると思います。その場合はOOAに具体的にオブジェクトを追加してもらって、
再度OODに入ることに・・・
なので、全てをOOAしてその後にOODすると手直しの範囲が[とてもとても強そう]な
ことになってしまいます。そのため、あじゃいるとかXPとかいう手法が
出てくるのですが・・・エンドユーザがついてこないとマッタク意味がありません。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2005-02-08 14:11
引用:

objectさんの書き込み (2005-02-07 13:07) より:

>ラフィンさん
>・情報は3つだが、1つは残り2つから導かれるものだからフィールドは2つがよい。
>→フィールドを2つにすることにより、3つの情報間の不整合がなくなる。
>→つまりフィールドをパブリックにすることでは解決しない。
少し出遅れました。
しかし、「ラフィンさん」からの重要な質問だと思いますから、私も一言書かせて頂きます。

上にある通り、
「複数の情報」に対して、「従属的な情報」を提供しようとすると、
それは、「独立な情報によるファンクション」の形
とならざるを得ない。

しかし、
「情報=フィールド」、「振舞=ファンクション」…(1)
という考え方では、
それは「情報」としては存在出来ず、強制的に「振舞」になってします。

この事実だけを考えても、
(1)の考え方は破綻している
と私は思います。



 いえ、ここまでは確認でして、素朴な質問はこれからです。(笑)

 まず、「プロパティが重要」と言われる一つの理由は上記にありますね?

 では、このWINDOWクラスの例ですと「右の位置は左の位置プラス幅」というルールは何故に情報側に必要なのでしょうか?
 ・情報:左、右、幅の3つ
 ・振舞1:移動(方向 as 角度,移動量 as 相対座標)
   これにより左と右が変更される。
 ・振舞2:サイズ変更(方向 as 角度,変更量 as 長さ)
   方向が左なら左と幅が、方向が右なら右と幅が変更される。
 振舞2には暗に「幅は左と右の距離」というルールがもりこまれていますが、これだと「破綻している」のですね?

 もう一つ、「これらのルールが振舞にあってはならない」だとしても、「情報になければならない」とはならないと思います。例えば情報・振舞以外の別の要素であってもよいはず。

 WINDOWクラスのフィールドを2つにするなら、左と右の方がしっくりきませんか?要するにルールは、
・「右の位置は左の位置プラス幅」
・「幅は左と右の距離」
のどっちが適切か?ということなのですが...
 合理化しようとするとこの手の問題が出てこないですかね?
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-02-08 16:49
コナンです。

↓モデリングについての考えを背景からまとめてみました。

オブジェクト指向の入門書とかに、「犬はワンワン鳴く」、「ブルドッグは犬クラスを
継承しているのでワンワン鳴く」のようなたとえ話ってよく載ってますよね。

僕もこういう本を読んで勉強したことがあるんですけど、「犬クラスっていったい…」と
思ってなかなか進まず、悶々としていました。

でも犬じゃなくてサッカーに例えてみたら理解できた(ような気がする)ので、
ここで発表してみます。

特徴は物事をルール、作戦、プレーヤーに分けることです。

【ルール】

 作戦とプレーヤーを制限する事柄です。
 プレーヤーが存在するための世界と言えます。

 ・11人対11人
 ・手を使っちゃダメ など

【作戦】

 プレーヤーを制限する事柄です。
 プレーヤーの意思とは無関係に存在する目的のようなものです。

 ・3-5-2
 ・4-4-2 など

【プレーヤー】

 この人が主役というか主体です。(インスタンス?)
 ルールと作戦に縛られながらも精一杯、自分の仕事をする人です。

 ・エースストライカー
 ・ディフェンダー など

他の例でも示してみます。

《人生》

 ルール:いつか死ぬ
 作戦:子孫を残す
 プレーヤー:結婚する

《石ころ》

 ルール:万有引力
 作戦:地球を形作る
 プレーヤー:その場所でじっとする

《全角カタカナを半角カタカナにする関数》

 ルール:文字コード
 作戦:全角カタカナを半角カタカナにする
 プレーヤー:引数が全角カタカナかチェックする

これがオブジェクト指向なのかどうかは分かりませんが、
ビジネスを定義するときなどには役立ちそうです。

もしまだ似たような分析モデル(?)がなければ、ルール(Rule)、作戦(Tactics)、
プレーヤー(Player)の頭文字をとって、RTP分析モデルと命名しようと思います

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