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

UML皆でお勉強しよ♪

■ このスレッドは過去ログ倉庫に格納されています
0001ニュージーランド漁夫NGNG
  Λ_Λ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< お勉強しよ♪
 (    )  \____________
 | | |
 (__)_)
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
メールで試用キーが送られてこなかったっけ?
0752デフォルトの名無しさんNGNG
送られてこないっす。flashmail使ってるけど。
試しにメアド変えて(hotmail)登録してみたら、
今度は届いた。2通も。
どうなってるんだ…でもさんくすこ。>751
0753 デフォルトの名無しさんNGNG
漏れ1ライセンス購入したらライセンスキー3個届いた。
どれも使える。
0754デフォルトの名無しさんNGNG
大丈夫なのかmagicdraw。
0755デフォルトの名無しさんNGNG
>>754
幸い MagicDraw のソフト本体が腐ってるという話は出てないから、まー大丈夫
なんじゃないの?
0756デフォルトの名無しさんNGNG
C++のコード取り込みがうまくいかん<MagicDraw 5.1
リバースするきさらさら無いからいいけど。

今いち、買おう、という値段じゃないんだなあ。
0757デフォルトの名無しさんNGNG
おれんとこには試用ライセンスが4つきた。
時間差で。

0758デフォルトの名無しさんNGNG
つまり、今がチャンス?w
0759デフォルトの名無しさんNGNG
>>756
MagicDraw の C++ のリバースはダメダメだね。そもそも、コンパイラでも ANSI C++
フルサポートしてる実装の方が少ないぐらいだから、期待してないけど(w 俺が試し
た中で C++ に比較的良く対応していたのが Togehter。ただし値が張るのと、C++ の
ソースに UML 用の情報を埋め込むタイプなので、微妙に使いにくいのが難。

そんなわけで、結局 MagicDraw のスタンダード版(リバース無し)を使ってるよ。
0760デフォルトの名無しさんNGNG
IIOSSのコードいじってjavaに特化した部分ごっそり削ろうかなあ。

そのためにJava覚えるのもばかばかしいがなあ..
0761デフォルトの名無しさんNGNG
>>759
「Togehter」を見てふと、ルー大芝を思い出してしまった。
てーぅぎゃざーあ
0762デフォルトの名無しさんNGNG
UML関連の記事2題:

http://itpro.nikkeibp.co.jp/members/NC/ITARTICLE/20020527/1/
http://www.atmarkit.co.jp/fjava/devs/survey/survey0205/survey0205.html
0763名無しさん@oopNGNG
> 数億円をかけて100ライセンス以上を購入した。
ここだけ反応してしまった。
0764デフォルトの名無しさんNGNG
いま仕事でUMLを書こうとしているのですが、
クラス図では、Cの構造体をどのように書けばいいのですか
0765デフォルトの名無しさんNGNG
名前と属性だけ書いた箱
0766デフォルトの名無しさんNGNG
ありがとうございます。もう少しご教授お願いします。
クラスとの関係はアグレゲーション(白い菱形)または、
コンポジション(黒い菱形)でよいのでしょうか。
0767デフォルトの名無しさんNGNG
よいんでない?
0768デフォルトの名無しさんNGNG
>>766は「アグリゲーション」ではないかと。
delegateは「デリゲート」?「デレゲート」?
0769デフォルトの名無しさんNGNG
デリゲート
0770デフォルトの名無しさんNGNG
suge-
0771逝ってよし ◆SKbg1v4s NGNG
a
0772鳥肌実 ◆SKbg1v4s NGNG
b
0773デフォルトの名無しさんNGNG
UML技術者認定制度のシルバーはどんな問題が出るの?
140点満点ってことは、140問もあるの!?
0774デフォルトの名無しさんNGNG
一問140点、残りはダミーです。
0775デフォルトの名無しさんNGNG
マジで?
0776デフォルトの名無しさんNGNG
5問。設問が3・4つといったところ。だったかな。
ていうか
親の名前でも使って試しに受けてみなさい。
オージス総研では日本語が通じない事がイタイぐらい身に染みる。
0777fNGNG
f
0778デフォルトの名無しさんNGNG
シルバーとゴールドの問題文、あれは確かに日本語とは信じ難い
0779デフォルトの名無しさんNGNG
b
0780デフォルトの名無しさんNGNG
「Roseを256倍使う本」を書こうと思うんだけど売れると思う?
0781デフォルトの名無しさんNGNG
>>780

うん、>>780の親が買ってくれるよ。
0782780NGNG
>>781
いや、親には内緒だから。
0783ニュージーランド漁夫NGNG
  Λ_Λ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< 初めはロクな書き込みなかったけど...最近は嬉しいな♪
 (    )  \____________
 | | |
 (__)_)

コンドサッポロノアルカイシャトコラボレーションスルンダケドUMLヲコミュニケーションツールノヒトツトシマス
0784デフォルトの名無しさんNGNG
お高いCASEツールなんぞ買えないし
フリーのこんなのいいと思うけどどうよ。
単純明快な感じするけど。

http://www.vector.co.jp/soft/win95/prog/se215535.html?l
0785デフォルトの名無しさんNGNG
おお、なんかよさげな感じ
0786デフォルトの名無しさんNGNG
いいね、コレ。
こういうメモ描きに適したのってなかったもんね。
Roseはもちろん、Visioもmagicdrawも構えちゃうし。

この手のダイアグラムには、こういう気軽な道具こそが大切だとつくづく思えるね。
早速言いふらかしましょう。
0787デフォルトの名無しさんNGNG
多重度が指定できると良いのだが.. とか言い出すとキリないけど
ほんとよく出来てると思う。
0788デフォルトの名無しさんNGNG
清書は Visio か何かでやればいいかと。
試行錯誤するのにいいかも。
0789784NGNG
評判よさそうだから
作者に教えてやろう。
きっとよろこぶダス。
0790デフォルトの名無しさんNGNG
コレがいいか〜?
俺ならmagicdraw使うな…

ていうかもう、code gen付いてないUMLエディタを使う気にならん…
0791784NGNG
む。
危うく作者に「大評判デス!」と送るところだった。
送るのはやめておこう。
よくないのか?
code genてなんだべ。
0792790NGNG
コードジェネレータ。

いや、まあ、こういう激軽いのを欲しがってた人もいるにはいるだろうな。
んで、そういう人にはバカ受け、と。
そう報告する分には良かろうて。
0793784NGNG
ああ、こぉどぢぇねれたーか。
ふぅん。
0794デフォルトの名無しさんNGNG
なんかこう、「クラスを作って」から「クラス図に反映」っていう直感的な
操作ができるエディタって少ない。俺が知ってる限りではMagicDrawだけ。
どいつもこいつも、「まずクラス図に配置してから」云々って操作を強いるんだよなー。
0795デフォルトの名無しさんNGNG
想像するコォドジェネレェタ
もやもや。

+-----------+
| Pen |    public class Pen{
+-----------+ private int katasa;
| -katasa |
+-----------+ public void getKatasa(){
|getKatasa()| //てめぇで実装しれ
+-----------+ }
   △ }
   |   →
+------------+ class SharpPen extends Pen{
| SharpPen | private int Sin_no_kazu;
+------------+
|-Sin_no_kazu| public void getKazu(){
+------------+ //てめぇで書けっつーの
|getHonsu() | }
+------------+ }

よく知らんけどきっとこういうやつに違いない。
0796デフォルトの名無しさんNGNG
すまんズレ過ぎて意味がわからん。
気にしないでくれ・・。
0797790NGNG
あのねえ・・・最近のコードジェネなら、
setter/getter ぐらいは中身まで書いてくれるよ・・・
0798デフォルトの名無しさんNGNG
ふぅん、そか・・。

ねぇ、>>794の
「クラスを作って」から「クラス図に反映」
って普通の使い方なわけ?
0799デフォルトの名無しさんNGNG
平たく言えば、Borland の RAD の 2-WAY と一緒でしょ。
どっちかを変更すればもう一方にも自動的に変更が適応される。
0800794=790NGNG
普通かどうかは知らん。
ただ、俺は「まずクラス図に空のクラスを放り込む」って操作に違和感を禁じ得ないの。
「クラスを作って」から「クラス図やシーケンス図に放り込むと初めて図として表示される」ってのが自然だろ。


#まあこう力説しても「どうでもいいじゃん」と流された事しかないけど…
0801790NGNG
>799 いや、俺はあくまで”最初の一歩が気に入らん”と言いたい。
0802デフォルトの名無しさんNGNG
こだわるねぇ
0803デフォルトの名無しさんNGNG
>>801
今あるほとんどの UML エディタは
オブジェクト指向設計向けに作られているからしょうがない。
RUP を見ても分かるように図を作成して開発を進めましょうってやり方。
設計段階によってはクラス図とコードが一対一対応しない。
UML エディタは開発支援ツールとしてはあんまり成功してないけどな。
コードセントリックな方が受け入れられやすいし。
0804 NGNG
>>803
同感

けど、UMLと既存言語間のマッピングは一つの様式に拘るべきだな。
0805デフォルトの名無しさんNGNG
お絵かきから設計を始めるなんてのは、正に絵空事。
0806デフォルトの名無しさんNGNG
同じクラスを違う図に配置すると別物として扱われるタイプのものは嫌、ということ?
それだったら同意
0807デフォルトの名無しさんNGNG
どうせ名前くらいはその場でつけるんだから
新規作成したその場でアイコンのプロパティが開いてくれたほうが楽。
0808デフォルトの名無しさんNGNG
>>794
Roseはできるよ
0809794=790NGNG
Rose使いてえ…
でも会社が買ってくれん…
買って貰ったとしても動かせるスペックのマシンがあるかどうか…


>同じクラスを違う図に配置すると別物として扱われるタイプのものは嫌、ということ?
誰がそんな話してた?

>新規作成したその場でアイコンのプロパティが開いてくれたほうが楽。
なんの話?
0810 NGNG
>>805
設計図が無い他業界を教えてくれ。
0811デフォルトの名無しさんNGNG
>>809
>>800
0812デフォルトの名無しさんNGNG
UML認定試験の解答集ってどこかにないのかね
0813デフォルトの名無しさんNGNG
>>809
Roseは起動してしまえばそんなに重くないよ。
Togetherはどう?モデリングだけならCommunityEditionでいけるが。
0814デフォルトの名無しさんNGNG
>>809

確かこのスレで紹介されていたような気がするが
http://www.sparxsystems.com.au/
これけっこう完成度高い。シーケンス図がイイです。
英語しかないのが難。
0815デフォルトの名無しさんNGNG
期限なしでタダで使えるエディションがあるツールって
ないですか? 前Togetherにそういうのあったけど、
今はどうなんだろ。サイトにはエディションの説明無いけど。
0816デフォルトの名無しさんNGNG
UMLmemo、やっぱいいよこれ。
思い浮かんだことをホントに気楽にメモ書きできるから。
BMP印刷でも身内レベルなら十分ですわ。

UML使って設計やりながら、こういう割り切った仕様のソフトに助けられてる。
それに引き換えなんじゃオレの設計わ。。。
ああ、悲しい。
0817デフォルトの名無しさんNGNG
>>816
ASCII 出力ができればいいなと思ったり。
メールや 2ch に UML 図を書ける(w
0818デフォルトの名無しさんNGNG
・属性に下線が引けない
・多重度が指定できない

というのが解決してくれればちょいとRDBのテーブル設計にも使えて
個人的にイイ感じなのだけど...
0819デフォルトの名無しさんNGNG
OOP,RDBでのアプリ開発って、開発手順はUMLになるの?
0820デフォルトの名無しさんNGNG
819の訂正。開発手順はUMLベースなのかいな?
0821仕様書無しさんNGNG
>>817
そういうのができるのがvectorにおいてあったような気がした。
0822デフォルトの名無しさんNGNG
UMLメモ、ステートチャートをサポートして欲しい。サーバーサイドの
開発にはステートチャート必須だよ。
0823デフォルトの名無しさんNGNG
>>822
つーか、UMLエディタって、IIOSSみたいのがあるんだから、
解析して、抽象クラスだけつくっておいて、あとは各OSに
みんなでかってに実装してくれという代物があればいいな。
0824デフォルトの名無しさんNGNG
>822
同意だね。
ステートチャートこそ気楽に描けなかったりするし・・・。
欲張りか。
0825デフォルトの名無しさんNGNG
>>819
OOA
OOD
OOP
など、いろいろございます。UMLは頭二つでしょうかね。
0826デフォルトの名無しさんNGNG
汎用系システムがメインの会社ですが、WEBアプリの開発プロセスがドキュメントで皆無。
大手ベンダーでは如何なものかと?誰かUMLベースの手順書くれないかな・・・・
0827デフォルトの名無しさんNGNG
シーケンス図ってエクセルで書くと楽なことがあるなぁ。

0828デフォルトの名無しさんNGNG
>>826
そういうときは、客向けの仕様書もおろそかな場合が多い。
さらに、DBアーキテクトとウェブロジック設計者・実装者が
分担されている場合が多い。この場合ウェブロジック設計者自らが
開発プロセスを示す場合がおおい。
(現実無視の実際の1/3の期間の線表が既にひかれている場合が多い)
開発分担し過ぎててオーバーヘッドが多いのが最近の特徴かな。
(つーか、最初の見積もりが甘すぎる)
また、UMLだけに頼ってはいけない。
UMLはあくまでデザインパターン等で意志疎通をしたりするための
記述方法だ。
問題は、プロセス、設計に対して時間をかけて綿密に打ち合わせ、
コミュニケートするかどうかだ。
0829デフォルトの名無しさんNGNG
>UMLはあくまでデザインパターン等で意志疎通をしたりするための
>記述方法だ。

( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン ( ゚д゚)ポカーン
0830逝って良しの1NGNG
俺が読めないのでUMLは禁止。
■ このスレッドは過去ログ倉庫に格納されています