トップページ⇒tech
966コメント334KB

UML皆でお勉強しよ♪

■ このスレッドは過去ログ倉庫に格納されています
0001ニュージーランド漁夫NGNG
  Λ_Λ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< お勉強しよ♪
 (    )  \____________
 | | |
 (__)_)
0652デフォルトの名無しさんNGNG
>650
あとIIOSかな?

JAVA向けのページだけど此処結構揃ってるYO!
ttp://www.geocities.co.jp/SiliconValley/6064/java_link.html
0653デフォルトの名無しさんNGNG
IIOSSはJavaに特化しすぎててむかつく。
あんなクソ言語つかわねえっつーの
0654650NGNG
>>651-652
ありがと〜早速試してみるYO!
0655デフォルトの名無しさんNGNG
これから実プロジェクトにUML使ってみようと思っているのだが、DBはOracleが
圧倒的に多いし、RDBMSは設計、管理...でERが便利で手放せそうにないし。
クラス図だけだとちょっと辛そう。UMLとERを両方とも使っていきたいんだけど
どんなもんだろう。
0656narucy56 ◆wMOjCT4s NGNG
>>655

プロジェクトで UML 使うってのは、どういうことでしょうかね。

「かんたんUML」とかに書かれていることを、そのままやろうとしたら
多分、うまくいかない(と、思うんだけど、どうでしょう)

XP的には
「どうせクラス構成なんて開発中に変わるもの」
「せっかく作ったクラス図だって時間がたてば古くなる」
「その種のドキュメント書きは無意味」
0657デフォルトの名無しさんNGNG
俺のお薦めは、開発中はすべて手書き。
ホワイトボードかA2くらいの紙を壁に貼った上にね、マジックでぐりぐりと。

みんなの見えるとこにおいといて、そこに書ききれないような細かいのは書かないの。
使用がかわったらすぐに書き直し。

プロジェクト終了後と社外の人に見せるときだけ瞬間的に清書。

開発が再開したら、また、同じことするんだぞ。
0658 NGNG
そう。初めはUMLツールなんかは使わないのが吉。
ホワイトボードと、PostItの四角形の奴を使うと書き直しが楽だよ。
0659デフォルトの名無しさんNGNG
>657
クラス図は手書きでも構わんけど
状態変移図とかはどうしてるの?
手書きだと修正がつらくね、やり直したい時とか?

オレの場合は一応紙とツールで書く、ただし細かい部分は省略、
プロトでとりあえず自分の中で不明確な点を確認、思いついた
アイデア等は図をコピーして反映する。

>655
すでにDBが存在するならUMLの出番はDB設計においては殆ど無し。
ただし新規作成ならUMLの分析は有効なはず。>604のリンク先参照

>656
>「どうせクラス構成なんて開発中に変わるもの」
これはUMLでも同じ考え、ただし変化を考慮してパターン等
を使用して大幅に変わらんようにする。

>「せっかく作ったクラス図だって時間がたてば古くなる」
>「その種のドキュメント書きは無意味」
UMLは厳密言うとドキュメントではない気がする。
ただの設計過程での思考経過を表すメモでしかない。
それにドキュメントは時間がたてば古くなるのは嘘
仕様変更が無ければドキュメントも常に最新
UMLは設計変更に対応する際の対応方法を考えるのにも当然使用される
べきでその結果UMLは常に最新になるはずなんだけど・・・
現実にうまく行ってる所は知らない。
0660デフォルトの名無しさんNGNG
>>「せっかく作ったクラス図だって時間がたてば古くなる」
>>「その種のドキュメント書きは無意味」
>UMLは厳密言うとドキュメントではない気がする。
>ただの設計過程での思考経過を表すメモでしかない。

んだね。「クラス構成が変わる」というが、そのクラス構成をより良く変える過程で
道具として使うものだと思う

メンバ変数やメソッドを逐一記述するヤシはそういないだろ
0661657NGNG
壁に手書きっていうのはね、大きな意味があってね、

「書き直すのが面倒な図は、悪い設計」

てことなの。

状態遷移図は、細かく書き始めると確かに大変かもしれないが、
紙の上で書き直してて、もしくは付け足してて面倒だと思ったらね、

「この状態遷移は悪い遷移。もっと簡単にしる」

ってことなの。

経験からいってもね、手書きでOKなレベルでないと、
プロジェクトの他の人がその図を見たとき、
把握できないのよ。

大切なのは、何が重要なのか、を見せること。

重要な何かが、どれと関わっているのか、を見せること。

状態遷移は、定型的なパターンを図示できればOKで、
部分ごとの細かい遷移については、あくまで、壁に貼ってある図の
「発展系」なんだって認識でやればいいの。

具体的に一個一個書きたい気もわかるけど、
重要なパターンというのは数えるほどしかなくて、
しかも大体それは、小学生でも書けるような、簡単な遷移図であるべきなんだよ。
0662デフォルトの名無しさんNGNG
>>661
大雑把なところをプロジェクト参加者全員で共有するという話だと「手書きレベル
で OK な図で留めとけ」というのは、間違ってないとは思う。

ただ通信プロトコルにせよ何にせよ、実際には複雑な状態遷移と対峙すること
が多い。簡単にしすぎると

 性能
 効率
 安定性

どこかで致命的な妥協を要求されるから。(TCP/IP も基本的な部分は簡単だ
が、実際に OS 組み込みのプロトコルスタックを組もうと思ったら、タイマーが
並行して何個も走ってる複雑な状態遷移機械になるよね)

俺は、実装者向けの図としては詳細まで書いた方が良いと思うよ。もちろん、
図に書かずにコードで書くという選択肢もあるが、経験的には図を書いた方が
ロジックミスを防ぎやすいし。
0663657NGNG
>>662
実装者が、詳細レベルまで書き下ろすことについては否定しない。
で、そういう実装レベルの図を、ドキュメント化して、実装と同期をとることも
否定しない。

そもそも、いままでそういうのを図示する共通のやり方がなかったわけだからね。

そして、たぶんその図は壁には貼られないだろうけど、
仕様のレビュー時と、コードのレビュー時に、大いに役立つだろうね。

でもおれんとこのだと、そこまで細かいものは、書く人は書く、
書かない人は書かない、で仕事しちゃってるんだよね。

徹底させてるのは、例の、壁に貼るやつだけなんだ。
0664デフォルトの名無しさんNGNG
655です。
>659
>すでにDBが存在するならUMLの出番はDB設計においては殆ど無し。
>ただし新規作成ならUMLの分析は有効なはず。>604のリンク先参照

これは分か気がするし勉強してみるけど、すでにDBがある場合は、
コードの設計をUMLでやりたいし、新規作成の場合も、最後はERから
DBへ落としたいので、いずれにしても最終的にUMLのドキュメント
と、ERを共存させたいんだけど。
それとも切り替えるのかなー。ここらをどうやってるか聞きたかったわけ。

あと、手書きでホワイトボードうんぬんの議論は分からないではないし、
議論はそれでやるけど、実際、それだけではプロジェクトは崩壊する。
8人ぐらいならまあいいかもしれないけど、100人以上の規模になると、
ER、DB定義なんかみんなのバイブルだし、ステート遷移、通信プロトコル
あたりも同じ。全体設計にかかわるところは文書化して、配布しないと
どうにもならんと思うが。

もちろん、いろいろ壁に貼っとくけど(これらのバージョン管理は大変ね)。
だいたい、ホワイトボードを永遠に消さないつもり?
議論の結果はドキュメントにしなけりゃ時間の無駄だよね。
だったら、最初からドキュメントにすること考えて作業したほうがいいと思うけど。

量的にも、ERにしても1000個近く表があったりする手書きで済む話じゃないし。
実装と完全に同期が取れていなくても、ドキュメントが無意味であることに
はならない。手書きで書ける簡単な図にしたって、納品うんぬんより電子
ドキュメント化して共有しなけりゃ議論もできない。

簡単に全体が把握できる図が必要ということはまったくそのとおり。
でもそれだけじゃ無理だし、そもそもUMLって階層的に概略から詳細まで
落とせるんだよね? まず全体見るし、必要なら詳細見れるように書くん
じゃないの?
細かいクラスの定義なんかは、コード見ればいいけど。どこのコード見
ればいいのかのガイドはいるだろ。

あと、自分のプロジェクトではないのし、アプリの内容にもよると思うが、
プログラマーに最後までクラス図書かせてるプロジェクトは、コーディング
量も少ないし、従ってバグも少ないようだが、いかが?。
0665657NGNG
最後の二行は同意。

他も大体同意。

ホワイトボードは会議中だけ。
0666デフォルトの名無しさんNGNG
良スレ age
0667659NGNG
>664
基本的にはUML->ER図への変換し別々に管理する。
別の手として三階層サービスモデルでテーブルを
データ層に直接記述する。もちろんデータの取り込みや
管理等も一緒に。これは大規模には使用できないかな?
でもUMLを作図した際の情報を考慮すると自然とキーや
リレーションっと言った感じが見えてくるし何より処理
に対して必要なデータが判り易くER図だけより良いのではと思ってる。

やっぱ開発規模によって使い方は変わってくるな。
これかはレスするときには分析者、実装者と開発規模とかも
記述した方がよさげ。

ちなみにオレは実装者、小規模
0668デフォルトの名無しさんNGNG
明日から UML FORUM/TOKYO 2002 が開幕。

なんかおもろい活用法ないかなーと、
ちょろちょろうろつく予定です。
0669668NGNG
スマソ、UML Forumの会期は、3/26(火)〜3/27(水)だった
鬱氏
0670デフォルトの名無しさんNGNG
>668
なんかよさげな物あった?
0671デフォルトの名無しさんNGNG
>>670
会社が金だしてくれたんでチュートリアルにでてきたよ。
というか、上司に「チュートリアル逝け」といわれた。

「超入門」というだけあって、内容は簡単だったよ。
ただ途中の「メタモデル」の部分だけはサパーリだったよ。
社内の報告&内容発表ではそこはとばすつもりだよ。
資料がおおすぎて、時間が足りなくなって、とばしまくりだったよ。
事例が多かったので社内のUML化推進の材料にはなりそうだったよ。
質問はあまりでてなかったよ。
ただ途中いかにもオタクあがりのへんなやつが時間がないって急いでいるのに
意味不明の質問をしてからんでたよ。
昼休みにみたUMLでモデリングした自走ロボットカーのレースはおもしろかったよ。
0672デフォルトの名無しさんNGNG
>667
やはり、そんな感じになるのね。
別の手のほうだが、データアクセスのところ(DAOね)は高スキルの人間に
任せたいので、その手法をとっているプロジェクトもある。大規模200人以上。
ただ、クラス側にあまりSQL書かないで、PL/SQLでストアードで実装し、
DAOをそれを呼ぶだけで簡略化しているようだ。
これをうまくやればUML系の人と、ER系の人をある程度分離できるかなー?
ただ、667が言うように、両方使いたいんだよね。

DBがオブジェクトDBとしてもっと進化するか、UMLのステレオタイプが進化して、
詳細レベルはDBの物理実装まで記述でき、DBスキーマと対応取れるようになるまで、
インピーダンスミスマッチはごまかして行くしかないんだろうか。

あと、方法論と開発規模の件も同意。最近読んでる本によると、規模に応じた選択を
考える方法論がかかれているらしい(まだ、翻訳されてないみたい)。

ただ、開発中のコミュニケーション、問題発見のためのドキュメント等は規模依存と
思うけど、開発しちまったもののドキュメントは量を除き、システム規模でそんなに
変わらない気がするが、いかが。
0673667=670NGNG
>671
>事例が多かったので社内のUML化推進の材料にはなりそうだったよ。
いいな!うちの職場もUML推進してほすい。

>672
両方使うときの最大の問題点はやっぱり同期なんだよね。
これを解決するいい方法が俺には思いつかない。
ツールもたぶん存在するだろうけど熟練度が低いと邪魔なだけ。
それに最悪1プロジェクト内に2文化が発生して実装側が混乱
し、それに伴いバグ頻発するし。いいアイデアがあれば教えて欲しいです。

ドキュメントについては同意。
でも大規模な開発に関わったことがないの正直分からんけど
オブジェクト数はどれくらいなるんだろ?
100を超えてくると混乱するからそれを解決するためにレベルが
発生してくるのでは?。
レベルがどのように分けるべきかははっきりと見えてないけど
それを管理するドキュメントみたいなものが別途必要なのかな。
0674671NGNG
>>673
一番上の人は推進せよっていって、
折れにいろいろ勉強させてくれてありがたいんだけどね、
開発の実質的な中心人物の先輩は「あんなもんは必要ない」って
感じの人なんで間に入る折れはちょっと苦しいかも。
もともとチュートリアルもその先輩に話があったのが
「忙しいから」と断わって折れに振られたわけだったし。
0675デフォルトの名無しさんNGNG
>>674
いわゆる抵抗勢力というやつですな。
0676デフォルトの名無しさんNGNG
>>671

俺もチュートリアルでたが、UMLを学ぼうと意気込んでいった
俺には前半以外は難しかった…。超入門とは思えない。
あれはなに?UMLを使うっていうよりは、UMLを研究している人たちの
場なのかい?
自分が場違いな感じがして情けなかったよ…。

> ただ途中いかにもオタクあがりのへんなやつが時間がないって急いでいるのに
> 意味不明の質問をしてからんでたよ。

あの人は他の会場にも出没して意味不明だった。

0677デフォルトの名無しさんNGNG
漏れは気まぐれでUMLエディターのセッション聞いたけど、
「UMLエディター作成者のための機能自慢大会」みたいで痛かったYO!

方法論のないUMLなんて...
0678デフォルトの名無しさんNGNG
でもUMLと方法論は厳密に言うと別物だから
あまり方法論に固執する問題あり

って言うてみるテスト。
0679デフォルトの名無しさんNGNG
>>678
君はおおむね正しい。

って言ってみるテスト。
0680デフォルトの名無しさんNGNG
>>678-679 Javaと開発方法論は別物だから、
 あんまり開発方法論に固執すると問題あり

 って言うのと同じ程度の意味しかないと思われ
0681デフォルトの名無しさんNGNG
スタンダードか、暗黙の同意か、という差はあれど、
方法論のない開発なんて、学習中の初心者か、
混乱しきって予測不可能になった開発現場にしか存在しないんじゃないかー。

そういう基本前提があるからこそ、
開発方法論の差異を超えた、共通のモデル記述言語=UMLが、
重要なんだよね。
0682678NGNG
>681
そうなんだよね。開発方法論は重要なのは確かだけどUMLだと
この開発方法でやらなきゃダメみたいな感じになってる人が
多い気する。>680が言うようにUMLで有効である開発手法は
ある程度決まってるが型にはまったやり方だけしか許されない
わけではない。

っていうかそれだとつまらんでしょ。(w
0683デフォルトの名無しさんNGNG
だけど、UML作った人たちの頭には、RUPが概念的に存在してて、
ようはある程度の方法論があった状態で、UML考えたような
気がするのは私だけ?
0684デフォルトの名無しさんNGNG
UML も RUP も Rational の親玉たち (アミーゴズ?)のものだから
当然しょ。
最終的には普及のために方法論と独立を目指すとはいえ
開発方法論から生まれた話なのは間違い無し。

0685デフォルトの名無しさんNGNG
MagicDrawを課で10本程度購入しようと思っています。
課のみんなに、使いにくいぞ。ゴルァ。とか言われるの怖いんですが、
UMLツールの選定、この選択で正しいと思いますか? 当方、Java。
0686デフォルトの名無しさんNGNG
>>685

絶対、間違い。紙とペン。これがマジ最強。
0687デフォルトの名無しさんNGNG
>685
うちも、とりあえず一つ買ってみた。
結構いいと思うし、コストパフォーマンスは優れていると思う。
とりあえず気になるのは、

○設計情報がXMLで交換できるはずなんだが、rose評価版とうまくいかなかった
○シーケンス図とコラボレーション図の自動変換ができない

以上は、まだ使い方よく分かってないからかもしれない。あと、多人数での
設計まとめるサーバは使ってないのでわからない。

オージスから出ているツールもよさそう。値段はMagicDrawの倍。
だれか使ってみたひといたらどんな感じ? なんか、評価版が落とされまくった
らしくて、現在ダウンロード停止されているので、評価できない。


紙とペン派は、多人数で、コミュニケーション共有しなけりゃならない状況は
わかっていないと思われ。そもそもUMLはコミュニケーションツールなので
その手の方たちには必要ないだろう。

手書きのコピーを配布するなら、彼らには、ワープロも、visioもいらないだろ-な。
068830年前から時空を越えてレスNGNG
プログラム、紙と鉛筆で書いてますが何か?
0689デフォルトの名無しさんNGNG
>>687
>○設計情報がXMLで交換できるはずなんだが、rose評価版とうまくいかなかった

XMI?XMIはまだ標準仕様が固まってないのでツール間での連携はあまり期待しない
方がいいと思います。

>○シーケンス図とコラボレーション図の自動変換ができない

普通はどちらか一つだけ書くものだと思うんですが、必要なんですか?
#私はOMTから入ったので慣れたシーケンス図しか使いません

>紙とペン派は、多人数で、コミュニケーション共有しなけりゃならない状況は
わかっていないと思われ。そもそもUMLはコミュニケーションツールなので
その手の方たちには必要ないだろう。

最初あーでもない、こーでもないってやってるうちはホワイトボード最強ですね。
でもある程度固まったらツール使って清書するし、一人で考えてるときもツール
使って書いたり消したりしながら考えます。

ただUML使って設計を覚えようという人は、ツールをいきなり使うより手書きで
書いてみるといいと思います。OOA/Dの手法とUMLの記述法とツールの使い方を
いっぺんに覚えようとしたら挫折してもおかしくないでしょうからね。
0690685NGNG
>>687

マジレスありがとうございます。

とりあえずのリヴァース、フォワード、
あとチーム開発ができる安価なツール、
ということでMagicDrawを選定しましたので
Roseとの互換性はさほど気にならないんですが、

>○シーケンス図とコラボレーション図の自動変換ができない

はちょっと痛いですね。これだと、
リヴァース時のシーケンス図生成も行われないんだろうか……(;´д⊂)

というか、体験版さわってみたものの、
リヴァースしたクラスをクラス図に反映できん。

0691デフォルトの名無しさんNGNG
687です。

>689
シーケンス図とコラボレーション図は用途によって両方欲しいことが
多いと思う。ぱっと見はコラボレーションが全体像がつかめていいし
少し詳しくシーケンスを考えるときはシーケンス図。いずれにしても
同じ情報だから、いちいち書き直したくないなー。

XML形式はXMIと思われます(よく知らないものでスマン)。
そもそも、MagicDrawはセーブするとXMLのZIPファイル
しかファイルが作られません。これ、展開するとテキストで読めます。
これがXMIの構造になっていると思うんだが。
おっしゃるとおり、互換性はよくない模様(ツールメーカー何とかして欲しいな)。

>690
クラス図と、継承関係ぐらいまではリバースできた。シーケンスとかは無理と思う。
ただ、開発方法論の話になっちゃうけど、リバースはあまりやらないほうがいいと思う。
クラス図から直すのは大変だけど、トータル、長期的にはメリットも多しと思うのだが。
せっかくの設計が...とうことになりかねないと..。
もっとも、開発サイズとか、時と場合によりけりは方法論の常ですが。

チーム開発環境としては、結果レポート希望。


あと、紙&ペンは否定はしてないが、これだけですむはず無し。
だれだって、メモ、走り書き、ホワイトボード図はかくに決まってるが
それだけだと、プロジェクト期間中もしくはその後メンテまでのスパン
でコミュニケーションできない。

ちょっと話がずれるが、昔、アクタとかMoreとかいう、MACでのアプリが
あったのを知ってるでしょうか。思考支援ツールといわれ、まあ今で言う
アウトラインエディタですな。ようは、ワープロは清書するだけでなく
これで書いていろいろ動かしていることで思考支援されると思われ。
論文書くときは、目次が一番苦しむからね。

いろいろあるカード利用の方法なんかも同じかな。で、ノートにUMLツール
いれて、プロジェクターでやってみようと思ってる。プロジェクター高いけど。
クラス図をカードにして、ボードであれこれ動かして議論するとよいと言う本
もあったが、あとでその結果を写すのが面倒。うまくいくと思うんだがだれか
やってみたことあります? ERのレビューはこれでやったことあり(紙の配布も
同時にやったけど)。
0692narucy56 ◆wMOjCT4s NGNG
各種 XP 本の論調によると

「コミュニケーションにコンピュータ使うことは人の視点を
コンピュータに向けてしまい、ダメ。視点は常に人に向いて
ないといけない。」

とのことで。

それ以前に、どうしても、印刷された UML図 が必要なシーンとい
うのが思い浮かばない。

わざわざ難しい設計にしてしまってるんじゃないの? どうなの?
0693デフォルトの名無しさんNGNG
>>692

あとからシステムみるとき、
UMLないと泣きそうになりません?
コード追うのも、ヘタな日本語読むのも鬱。
0694デフォルトの名無しさんNGNG
をXP対UMLという定番対決になってきたね。何か創造的な議論が出来ることを期待。

>692
>それ以前に、どうしても、印刷された UML図 が必要なシーンとい
>うのが思い浮かばない。
ってことはUMLドキュメント自体は必要ってことでいいの?
XPだと違うかな?
0695デフォルトの名無しさんNGNG
UMLがコミュニケーションの道具として役に立つ、ということでは一致している
と思います。それをどのように使うか、というところで違いがあるんでしょう。

個人的にはUMLは設計上のアイディアをある程度具体的にするために使います。
大体ツールを使って書きますが、UMLからコードを吐かせることはめったにし
ないですね。ときどきすごく細かく書くことにこだわってる人がいますが、分析
にしろ設計にしろあるところまでいったら先に進まないと煮詰まっちゃいますね。
細かいところを図にしてもわかりにくくなるだけなので、そういうところはメモ
をペタペタ貼り付けておいて、もし後で分かりやすく書けそうなら書き直します。
0696デフォルトの名無しさんNGNG
ソースとUMLの同期がとれなくなって、設計時のUMLが
ドキュメントとして提出できなくなることがしばしば。
またいちから書くのはダルい。リバースあればいいな。
0697デフォルトの名無しさんNGNG
>>687
オージスのツールというと、Konesaのことですかね。評価版を使ってみましたけど、
かなりダメな感じです。

Javaで作ってあるんで、重い上に操作性が悪い。クラス図はともかく、
シーケンス図がとにかく作りにくい。
素人にはおすすめできないけど玄人にもおすすめできないです。
リバースとかグループ開発の機能は使ってないので不明。

ちなみに普段はRoseを使ってます。Roseも、ときどきバグるけど、
Konesaより10倍マシ。

ところで最近話題らしいTogether Control Centerはどうよ?
0698デフォルトの名無しさんNGNG
>>697
レポートありがと。やっぱりRoseになるのかなー。
もう少し安けれ買ってみるのだが。お金のない人はやはりMagicDrawか。
今度、どこかの大き目のプロジェクトで、顧客だまして(もとい、推薦して)
Rose買ってみようと思ったりして。
>>692
「」の中はまったく同意だよ。昨日も顧客ががんばるから7時間ぶっとーしで
会議であった。基礎設計ね。
で、これらの会議の結果を、形にしないといけないだろ。
だいたい昨日も、その前の会議の結果を、ドキュメントにして、
それをレビューしてたの。

もっとも、UMLじゃなかったけど、UMLでいえば、ユースケースや
コラボレーション、クラス図で書くようなドキュメント類。
ドキュメントも無しで、てぶらで会議なんでできないでしょ。
大量の情報を、会議に出てる人間がまったく同様に完璧に記憶
なんてできないんだから。

相手が、今目の前にいるか、将来のメンテの人かいずれにしても
人とコミュニケーションするために、ドキュメントが必要なんだよ。
そのとき、UMLは記述方法としてよろしいと思う。
XPもドキュメントを書かなくてよいと誤解されてると思う。
不必要なドキュメントは要らない(コード見れば分かることとかね)という
ことと思う。
逆にコードもドキュメントとして読めるように書けということかな。あと、開発サイズもかなり小さくないと無理だろうね。
数100人でペアプログラミングしてるとこなど、見てみたいが...
0699デフォルトの名無しさんNGNG
>>695

クラス図があろうがなんだろうが、分かりづらいもんは
分かりづらいんだよな・・・。

できれば貴方のその、ドキュメントにしてレビューしたという
プロジェクトの内容はどんなもんなのか教えていただきたい。
0700デフォルトの名無しさんNGNG
>>698

できれば貴方のその、ドキュメントにしてレビューしたという
プロジェクトの内容はどんなもんなのか教えていただきたい。

(結局は「どんな機能を持ってるのか」ってところに着目できれば、
整理できると思うけどなぁ。)
0701デフォルトの名無しさんNGNG
>>699
「分かりづらい」ってのは君の個人的な意見だよな。
個人のレベルで主観的にいう「分かり安さ」というのは、慣れや経験、
バックグラウンドなどがかかわってくるので、いまいちつかみどころがない。
ちなみに俺は「どちらかというとUMLは分かりやすい」と感じている。

分かりづらいところがあれば、分かりやすくなるように改良する、
というのがUMLが求められていることだろう。
が、そのためには「何が」「どんな風に」「分かりづらい」かが
はっきりしないとかなり「つらい」。
ただただ否定するだけでなく、そこんとこもふまえてて建設的にいってくれ。
0702デフォルトの名無しさんNGNG
話の腰を折って申し訳ないですが、限定子(Qualifier)について教えて下さい。

分かりやすい例とかURLとか。

よく見かけるのは、UMLの規格書にあるBank/Account/Personの例とか、
ウェブを見回るとあるDirectory/Filename/Fileとかで、そういったのを
見るとその時は分かったような気になるんですが、やっぱりよく分かりません。
いざ自分で考えてみると、そこに限定子が関与してくるのはわかるのですが、
限定子が関連のどっち側に付くべきなのかが混乱して分からなくなってしまいます。

なんかもっと分かる例と、手とり足とり解説してくれるのはないでしょうか。
0703narucy56 ◆wMOjCT4s NGNG
>>702

「限定子」俺もわかんなくて調べてみたけど、
http://www.atmarkit.co.jp/fjava/rensai/uml02/uml02.html

要するに、キーと値のリストを使ったオブジェクトで用いるものわしい。

(ただ、分かりづらいもの使っててもしょうがないよ。自分が分からないものは多分、回りの人も分らないのでは)

>>701

俺の経験では、5個以上のクラスが書かれたクラス図は分かりづらいクラス図。そんな沢山のクラス間の依存関係があっても困る。

もし 5個以上のクラス図を書かないと、具体的な機能の説明ができないようだったら、それはあまりいい設計とは言えないんじゃないの。
0704デフォルトの名無しさんNGNG
データを取りにいくのかどうかでpush/popという区別をすることがある。

ここで、pop型はpush型によって実現できるとする。
どいうことかというと、push型はデータが出来上がると
クライアントに送りだすとすると、pop型ではpush型のオブジェクト
にラップして、データが出来上がるまで待つ、という処理を
付け加えると考えると、内部でpush型を使っていても見かけ上は
pop型になるからである。

この場合pop型のモデルとpush型のモデルの関係は何だろうか?
pop型モデルはpush型モデルを使っているので、<<use>>依存関係。
push型モデルでpop型モデルを実装しているので、実装の関係。
push型モデルに機能を追加してpop型モデルにしているので、汎化特化関係。
pop型モデルはpush型モデルを含んでいるので、集約。

状況にも依存するとは思うが、果してどういう見方をするのが、正しいのだろうか。
0705デフォルトの名無しさんNGNG
>699, 700
内容は別として、複数のデーモンプロセスと、外部システム、webGUIが
協調して動くDBアプリだが。よくある話だ。

で、よく話が混同してるようだが、どちらもドキュメント要らないという
立場なのか、UMLはわかりにくいという立場なのかどっち?

698はドキュメントはいるだろ、という話なんだが。

で、わかりにくいという話なら、体系づけられたすばらしい
代替方法を教えてくれ。

UMLは単に記述方法なんで、詳細レベルとか、まとめ方とかでいくらでもわかり
にくくできるよ。英語で書いてあるから分かりにくい、フランス語で書いてく
れ。とぃう議論と同じに思える。

で、文法、単語ぐらい共通になってないとお互いコミュニケーション取れないから、UMLでどうです? という意味だと思うのだが。
従って、「UMLでは...という概念がかけない」とか「文法が悪い」とかなら
議論になるが、単に分かりにくいといわれてもねー。できないやつが書いた
んだろ、ぐらいしか反応できないなー。

これだけ議論されてるわけだし、みなが同じ文法を使うということ自体も
重要。英語よりフランス後のほうが論理的だが、英語のほうが人数多いしね...
と同じ。
>698 ユースケースの話と混同してない?
機能記述以外にも、データ定義とか、インターフェースシーケンスとか
いろいろあるんだけど...
0706デフォルトの名無しさんNGNG
>>703
わざわざ調べてくれてありがとうございました。

UMLの規格の、区分(Partition)云々とかいう説明はよくのみこめなかったですが、
キーとそれによって引き出される情報、というとらえかたは解りやすかったです。

Directory/Filename/Fileの場合は、DirectoryからFilenameをキーにしてFileが引き出される。
そして、限定子を使って表現しない場合は、FilenameはFileの属性になる。
Bank/Account/Personの場合は、BankからAccountをキーにしてPersonが引き出される。
そして、限定子を使って表現しない場合は、AccountはPersonの属性になる。

もともとは、いっしょに仕事している人がオブジェクト指向(というかクラス図)がきらいな人で、
一つのクライアントは複数のサーバーにリクエストを出し、
一つのサーバーは複数のクライアントからリクエストを受ける、
一つのホストには一つのサーバーしかない、
という部分のクラス図でクライアントとサーバーに多対多の関連を引いたところ、
「だから、クラス図は使い物にならない」といわれました。

そしたら、UMLに詳しい人が、そういう場合は限定子を使うのだ、と教えてくれて、
その場はうまく治まり、よかったのですが。自分で何かしようとすると、混乱して
しまって解らなくなってしまってました。

おかげで今回少し解るようになりました。
0707narucy56 ◆wMOjCT4s NGNG
>>705

分厚過ぎる「ドキュメント」
http://objectclub.esm.co.jp/eXtremeProgramming/thud-j.html

「かんたんUML」とかオージス総研とかの本に書かれている UML を使った設計方法はかなりインチキだと思う。あんなのでうまくいくはずがない。
0708デフォルトの名無しさんNGNG
>>707
おまえUMLを使ったことないか、ちょっとさわった程度だろ。
使いこなせるようになればかなり便利だぞ。
憶測でものを言うなよ。
0709デフォルトの名無しさんNGNG
>>708
UML 一般を批判しているのではなく

 《「かんたんUML」とかオージス総研とかの本に書かれている UML を
 使った》 設計方法

を非難してるのでは? 両方とも読んでないから、知らんけど。
0710デフォルトの名無しさんNGNG
>>707-708
俺も読んでないからわからんが、
どうせなら707が具体的にインチキさ加減を指摘して
708もカッカしないでレスしてくれれば
丸とは言わないまでも楕円くらいに治まってくれると思う。
0711デフォルトの名無しさんNGNG
「かんたん UML」 は分析・設計に失敗しないでさくさく進むのがおかしい。
0712デフォルトの名無しさんNGNG
>711
そこに突っ込む前に「かんたんUML」と言うタイトルに突っ込まないのがおかしい

というてみるテスト。
0713デフォルトの名無しさんNGNG
>>712
そこに突っ込む前に「かんたんUML」なんてタイトルの本を手にとってしまう奴がおかしい

というてみるテスト。
0714デフォルトの名無しさんNGNG
>>711 分析・設計に失敗しないでさくさく進むのがおかしい。
 失敗つうか、試行錯誤や再設計でそ、普通
0715695NGNG
>>706
クライアント?サーバ?ホスト?
いったいどういうクラス図を作ってるんでしょうか?

単純に多対多の関連なら関連端の多重度がともに0..*(または1..*)になるだけ
だと思うんですが。
0716デフォルトの名無しさんNGNG
誰かこのツール使ったことある人いますか?
http://www.sparxsystems.com.au/
0717デフォルトの名無しさんNGNG
>>716
ダウンしてみました。ちょっと見ただけですが感想。
・日本語NG
・Win用で動作が早い
・ビジネスプロセスを表記可能("Business Modeling with UML"?)
・DBの表記(PKとか)が可能
・実装言語へのフォワード/リバースエンジニアリング可能(出来は不明)
・ステレオタイプいろいろ

パターン、モデル共有等は未チェック。

日本語化して!
0718716NGNG
>>717
日本語はフォントを変更することで表示できることは確認済み
単にUMLだけではないのかな?個人ベースでは意味ないかも。
0719717NGNG
>>718
ほんとだ。わからんかった。
メニュー-View-option-objects-Font name ...

安いのは大きな特徴だと思われ(149ドル)。

個人ベースの利用者増による普及は無い、に同意。
もともとそういう戦略ではないでしょ。
0720デフォルトの名無しさんNGNG
ここのところ、UMLツールを片っ端から物色してるのですが。
今現在、Javaのソースからシーケンス図を生成できるツールってあるんでしょうか?
惜しいのはあるのですが..。(Threadオンリーとか..)

それにしても、roseの体験版は何処で手に入れれば..。(コレだけまだ試せてない..)
0721デフォルトの名無しさんNGNG
>>720
Roseの体験版。.comの TryIt にあるじゃん。疲れてるな..。
0722デフォルトの名無しさんNGNG
オージス総研が「10日でおぼえるUML入門教室」って本を書いたみたい
なんだけど、読んだ人、感想プリーズ。
(いつ出たのか知らないけど地元にはなかった)
0723デフォルトの名無しさんNGNG
>>722
地雷臭いタイトルだな(藁
0724デフォルトの名無しさんNGNG
TogetherSoftのControlCenterはビクーリするくらいよい
0725デフォルトの名無しさんNGNG
関連スレ!

http://pc.2ch.net/test/read.cgi/tech/1016842360/
0726デフォルトの名無しさんNGNG
存在を忘れていたのでage
0727デフォルトの名無しさんNGNG
Javaのソースからクラス図作ってくれる、*無料*なツールってある?
人のソース読むときの参考として、クラス図を自動生成させたいんだけど・・・
0728デフォルトの名無しさんNGNG
>>727
doxygen とか?
0729727NGNG
>>728
試してみた。
javadocを便利にしたような感じで、これはこれで使えそうだけど、
クラス図生成の能力がちょっと・・・
0730デフォルトの名無しさんNGNG
>>729
HAVE_DOT = YES にした? これで多少はマシになる。

(でも UML お絵かきツールには及ばんけど)
0731デフォルトの名無しさんNGNG
とりあえず、ブロンズ程度の内容は覚えたんだけど、
シルバーって他にどんなのを覚えればいいの?
0732デフォルトの名無しさんNGNG
覚えなくてもいいから実地をやれ。
0733デフォルトの名無しさんNGNG
>>671
>事例が多かったので社内のUML化推進の材料にはなりそうだったよ。
社内のUML化推進をおこなうにはどうしたらいいでしょうか?
なんかいいアイデアはないですか?
0734671NGNG
>>733
いい方法があるならオレもぜひ知りたいです。

とりあえず、UML導入以前と以後でどうなるか、という観点から、
メリットとデメリットを列挙して説明する、という安直な方法でやってます。
けっこうこじつけがあります。
が、あんまりやるとかえって逆効果かなとも思ってます。

抵抗勢力が現場をしきっているので、なかなかむずかしいです。

あと、すでに終わった仕事とかを持ち帰ってUMLによる設計に
焼きなおして整理する、ということもやってます。
忙しいのであまり進んでませんが。
これはどちらかというと自分の勉強になってしまってます。
0735デフォルトの名無しさんNGNG
>>727
Togetherをつかいなさい。Roseが糞に見えてくる。
http://www.togethersoft.com
0736デフォルトの名無しさんNGNG
>>734

コンサルつきRUP導入するしかないと思う。
0737デフォルトの名無しさんNGNG
ソフトウエア開発環境展
http://web.reedexpo.co.jp/SODEC/japanese/index.html
に行けばいろいろUML関連ツールは見られそうだ。
0738デフォルトの名無しさんNGNG
集約の「共有」(白い菱形)と「合成」(黒い菱形) (←Visioの用語を使用)
の違いがどうしてもはっきりと理解できません。

分かりやすく教えてください。
0739デフォルトの名無しさんNGNG
用語はごちゃごちゃしているのでこの表を参照してくれ。
http://www.atmarkit.co.jp/fjava/devs/jobjmdl01/jobjmdl_about.html

集約の「共有」(白い菱形) は 集約、
集約の「合成」(黒い菱形) は コンポジッションと呼ぼう。
関連の特殊な形態が集約であるように、
集約のよりオブジェクト間の結びつきが強いものがコンポジション。

集約は has-a の関係だ。
例えば、「a car has four tires」

コンポジションは a-part-of の関係。
例えば、「a finger is a part of a hand」

どこが違うのかというと、オブジェクトの生成消滅のタイミング。
集約の場合は車をスクラップにしてもタイヤだけ取り外して使ってもいい。
コンポジションの場合は、手が成り立つには指が必須であり不可分の存在なので、
手を失うってことは指も同時に失うってこと。
0740デフォルトの名無しさんNGNG
>>739
俺もいまだによくわかんない。
738じゃないけど、便乗教えてくん

(1)「tires is a part of a car」とは言えないのですか?
(2)逆にいうと、タイヤはタイヤとして単独で存在できるが、指は指単独では存在できず、手の一部としてしか存在できない。
 (これは正しいですか?)
(3)コンポジションは、集約の一種ですか?
(4)良くわかんない場合は、集約使っていれば間違いではないですか?
(5)実装してするときに、集約とコンポジションで差がつきますか?
0741デフォルトの名無しさんNGNG
>>740
(1) いいよ。その場合はタイヤは車と不可分。
 739 は取り外したタイヤを転がして遊んだりもできるという設計思想だった。
 そのプログラムの設計上、どの程度オブジェクト同士の結びつきが強いかなので
 集約よりも強いならばコンポジションで表記すればいい。

(2) そだね。集約の端的な例は コンテナに近いクラスかな。
 Book クラスと BookShelf クラスがあるとする。
 BookShelf はインスタンス変数で Verctor books を持ち、
 Book オブジェクトを追加する add(Book book)、削除する delete(Book book) メソッド、
 あとは数を数えたり条件検索したり管理に便利なメソッドがある。
 ある Book を複数の BookShelf に登録したり、
 ある BookShelf が detele や GC されたあとも、その BookShlef にあった Book を
 読者オブジェクトに利用したりなんてことはありえると思う。

 GUI のウィジェットはコンポジション。
 ウインドウ・フレーム・ペインの上にボタンやテキストフィールドを乗せるけど、
 ウインドウがなきゃボタンなどは表示されないし触れない。
 ウインドウが消滅するときはその上に乗っていたウィジェットも一緒に消える。

(3) そう。
(4) 教えるときはそう言ってる。あんま良くないけどね。
 関連と集約は使い分けてほしいけど、集約とコンポジションは混乱しがちだから。
(5) 定義的には 739 に書いたように消滅のタイミングが同じなのがコンポジション。
0742デフォルトの名無しさんNGNG
C#を使ったUMLの解説本って出てます?
JAVAを使ったUMLの解説本はたくさんあるみたいだけど。
0743デフォルトの名無しさんNGNG
別になんの言語を使っててもUMLはUMLだろーよ。
0744デフォルトの名無しさんNGNG
UML1.4をみてみると、
集約=全体−部分関係をなす関連
合成=集約の一種で「多くともひとつの全体に対する部分」になっているもの
といったようになってるようです。
というわけで、この“at most one composite at a time”というのがUMLでの
合成の意味を決定付けているのではないでしょうか。

用語集より
aggregation
A special form of association that specifies a whole-part
relationship between the aggregate (whole) and a
component part. See: composition.

composition
A form of aggregation which requires that a part instance be
included in at most one composite at a time, and that the
composite object is responsible for the creation and
destruction of the parts. Composition may be recursive.
Synonym: composite aggregation.

ノーテーションガイドより
Composite aggregation is a strong form of aggregation which requires that a part instance be
included in at most one composite at a time and that the composite object has sole
responsibility for the disposition of its parts. The multiplicity of the aggregate end may not
exceed one (it is unshared). See “AssociationEnd” on page 2-22 in the Semantics chapter for
further details.

セマンティックスより
composite - The target class is a composite; therefore, the
source class is a part and must have the aggregation value of
none. The part is strongly owned by the composite and may not
be part of any other composite.

0745デフォルトの名無しさんNGNG
>>744
タイヤとクルマの例だと、
タイヤとクルマは、それぞれ部分と全体を成すので集約であり、
さらに、タイヤは同時には1つのクルマの一部として機能するが、
同時に2つ以上のクルマの一部としては機能しないので合成である、
ということか。

あるクルマのタイヤを外して、別のクルマに取り付けた
場合はどうなるんだろうか。集約? 合成?
0746デフォルトの名無しさんNGNG
『独習UML』の例だと、HDやメモリ、モニタといった
パーツで構成されるコンピュータシステムは「集約」。
で、天板と脚から成るテーブルが「合成」。

『独習UML』から引用すると 744 が書いていることと同じだが、
合成は「部分側が単一のクラスの部品になっているような集約関係」
らしい。

つまりある環境において、部分が複数のクラスからも利用されて
いれば「集約」で、単一のクラスからしか利用されていなければ
「合成」になるでは。

>>745
別のクルマに取り付けられるという前提があるのであれば
「集約」ではないでしょうか。
0747デフォルトの名無しさんNGNG
>>746
> 別のクルマに取り付けられるという前提があるのであれば
> 「集約」ではないでしょうか。
なるほど、俺もそんな感じに思ってたよ。
だけど、>>744の「同時に(at a time)」というのに引っかかってしまったわけだ。
同時に、というのが集約と合成を区別するのだとすると、
ハードディスクやメモリーなどは合成ということにならん?
モニターについては複数のマシンで切り替え機を使うことで同時に
利用しているという考え方もありそうではあるが。
0748746NGNG
>>747
そうだね、「同時に」を考えるとパソコンの例は
合成だね。


今月の『JavaWorld』212頁にあるUML要素の説明からも
引用しときます。

コンポジション (ここで言う合成)
あるクラスと他のクラスの間に強い「has-a」の関係があることを
示す。この場合、「has-a」関係のhasに当たるクラスが削除されると、
aに当たるクラスもすべて削除されることになる。
0749仕様書無しさんNGNG
抽象的にそうなんだろけど、
具象を設計するのは我々なんだから、
has-aをpart-ofとして設計またはその逆でも
問題がなければいいのでは?
0750デフォルトの名無しさんNGNG
magicdraw、demo版落としてみたんだけど、
実行しようとするとライセンスキーを聞かれる。
マニュアル読んでもdemo用のキーの事なんか書いてないし。
カネ払わないとdemoも実行できないの?
0751デフォルトの名無しさんNGNG
メールで試用キーが送られてこなかったっけ?
■ このスレッドは過去ログ倉庫に格納されています