[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:72581] Re: クラス図を書くのに何を使います?


返事が遅くなりましたが、サマリを post いたします。

On Tue, Aug 01, 2000 at 09:31:06PM +0900,
in <20000801213558.A1847 _at_ dasen.typhoon.co.jp>,
Yasuhide OOMORI / 大森保英 <dasen _at_ typhoon.co.jp> wrote:
>
>とりあえず tgif-4.1.27 (Vine-2.0 に付いていたもの) で四苦八苦しながら
>クラス図 (OMT 法というものらしい) を書いているのですが、
>
>1. 四角のサイズの調整が面倒
>2. 複数の文字列を縦に並べたときに、開始点が微妙にずれて気持が悪い
>2. 継承や関連を表現するのに手間がかかる
>
>という点で、どうも使い勝手が悪いような気がします。また、保存するのに
>obj という独自形式でしか出力する方法が分からず、
>
>tgif -print -png classFooBar.obj
>
>などと変換して誤魔化しています。Tgif 自体、使ったことが無かったので、
>検索エンジンで見つけた
>
>http://saeki-www.cs.titech.ac.jp/prog4/tools/home.html
>
>を手掛かりに操作しています。
>
>もし tgif の OMT図向けの拡張や、便利な使い方、あるいは、クラス図を
>linux で書く方法を御存じでしたら、よろしくお教えくださいませ。

という質問に対して、多くの方からコメントを頂きました。一通にまとめて返
信したいと思います。

結論からいえば、

	1. メモリに余裕があるのなら、java で動くツールを使う
	2. (持っているのなら) Windows のツールを使う。
	3. gnome-libs, libxml がインストールできれば、dia を使う
	4. どれもないなら、tgif を使う

という所かと思います。私の環境の場合、1. については、64MB しかメモリが
なく、java の環境は遅すぎて実用性に欠けるものでした。また、2. について
は、パワーポイントも visio も持っていないので、結局 3. に落ち着きまし
た。

なお、gnome のフルセットは入れていません。
glib, gtk+, imlib, ORBit, audiofile, esound, gnome-audio, gnome-libs
あたりを入れれば、dia は動くようです。
# Vine/VineSeed の場合なので、Vendor によっては違うかもしれません。

On Tue, Aug 01, 2000 at 09:42:01PM +0900,
in <001101bffbb5$ccc55500$0400a8c0 _at_ danlan>,
hide <shide _at_ alles.or.jp> wrote:
>> もし tgif の OMT図向けの拡張や、便利な使い方、あるいは、クラス図を
>> linux で書く方法を御存じでしたら、よろしくお教えくださいませ。
>
> クラス図とか OMT図なんてのは知らないのですが、
>
> Dia というツールがあります。
>
> http://www.lysator.liu.se/~alla/dia/dia.html
>
> ちなみに日本語化パッチは
>
> http://www.u-aizu.ac.jp/~m5031201/dia/
>
> にあります。

こちらにあった、dia-0.84 の日本語化パッチを使っています。

Gtk-CRITICAL **: file gtkwidget.c: line 3306 (gtk_widget_set_sensitive): assertion `widget != NULL' failed.

というエラーがしょっちゅうも出てきますが、比較的安定しています。
# gtk+-1.2.8 にアップデートしてみたのですが、同様の症状が出ました。

ただ、出力ファイルの日本語部分は、LC_ALL=ja_JP.ujis, LANG=ja_JP.ujis
なのですが、

  <layer name="&#199;&#216;&#183;&#202;" visible="true">

という風になっていました。ひょっとしたら、dia に依存してしまうのかもし
れません。なお、argo や jude で生成したファイルは参照不能でした。

$ file test.jude
test.jude: Java serialization data, version 5

という具合だったので、jude の方は仕方ないにしても、argo の方は xml な
ので、ひょっとしたら少し加工すればインポート・エクスポート出来るのかも
しれません。

On Tue, Aug 01, 2000 at 11:05:53PM +0900,
in article <3986D93F.67E45743 _at_ venus.dti.ne.jp>,
Inada <inada _at_ venus.dti.ne.jp> wrote:
>
>> 1. 四角のサイズの調整が面倒
>> 2. 複数の文字列を縦に並べたときに、開始点が微妙にずれて気持が悪い
>> 2. 継承や関連を表現するのに手間がかかる
>
> パワーポイントやVisioなど,いかがでしょう (^^;.昔簡単なクラス,
>集約,関連,継承などの図を描いたような気がします.
>
> Windowsは禁止なのでしょうか (^^;;.

再起動するのが面倒なのと、vmware を持っていないのとで、可能なら Linux
上で作成したいと考えました。

パワーポイントや visio を使う機会があったら試してみようと思います。
rational rose は、参考にしている、翔泳社の『憂鬱なプログラマのためのオ
ブジェクト指向開発講座』の付録に 4.0J のデモ版が付いていたのですが、な
んとなく UI が使いにくい印象でした。
# チュートリアルがハイパーテキストになっていないのは致命的…。

On Tue, Aug 01, 2000 at 11:49:40PM +0900,
in <20000801235109V.dj990062 _at_ djedu.kit.ac.jp>,
Norio Taniguchi <dj990062 _at_ djedu.kit.ac.jp> wrote:
>まつぞの@オージス総研 です
>
># オブジェクト指向でメシをくっています(^^;

infoseek で "UML" をキーワードに検索したら、オージス総研さんの広告が出
てきました :-)

>> もし tgif の OMT図向けの拡張や、便利な使い方、あるいは、クラス図を
>> linux で書く方法を御存じでしたら、よろしくお教えくださいませ。
>
># 時代はすでに UML です(^^)v

上で記したとおり、翔泳社の『憂鬱なプログラマのためのオブジェクト指向開
発講座』という本を読みながらあれこれいじっているのですが、この本では、

	1. 現状では、多くの書籍が UML ではなく OMT を使っている
	2. UML はバージョンアップが多く、紹介した内容が一時的なものになっ
	   てしまう可能性がある

という理由で、少なくともクラス図については UML を使ってはいませんでし
た。いくつかの UML 作成支援ツールを見てみたところ、それほど違和感なく
使えるものばかりだったので、クラス図作成の操作の面では、あまり問題はな
いかもしれません。この本自体が2年前のものなので、その影響もあるのかなぁ
と思います。慣れないうちにあれこれ手を出すと混乱のもとになりかねないと
思われるので、必要に応じて調べていこうと思っています。
# まだ門を敲いたばかりなもので…。

この本自体が2年前のものなので、今ならいきなり UML で入ってしまった方が
いいということなのでしょうか…?

> dia 以外にも次のようなものがあります。
> 全て Java です
># とーぜん、というか (^^;

なぜ当然なのかは分からないのですが、何はともあれ、
http://www.blackdown.org を見て、kddlabs の ftp server から、
JDK-1.2.2-FCS というのを入手し、

# tar zxf /var/tmp/j2sdk-1.2.2-FCS-linux-i386-glibc-2.1.3.tar.bz2 -C /opt/

としてインストールし、[vine-users:023634] にあった font.properties.ja
を /opt/jdk1.2.2/jre/lib/ に入れました。
# default の font.properties では日本語が豆腐になるので

>[Jude]
>  http://www.esm.co.jp/divisions/open-sys/Jude/

こちらは比較的軽快に動きますね。
# メモリが 64MB のこのマシンには、やや荷が重いような気がしましたが

>[umlaut]
>  http://www.fsinet.or.jp/~nito/umlaut/

こちらは、「15分経ったら強制終了」とあったので、試していません。

>[together]
>  http://www.togethersoft.com/
>これは製品ですが、お試し番があります。唯一 C++ 番も
>あるツールだとおもいます。(Linux で動くものとしては)

こちらは「最小限スペック」にメモリ容量が足りないので、試していません。
C++ 版については、記述を見つけられませんでした。

>[argo]
>  http://argouml.tigris.org/
>オープンソースです。

こちらはやたらと不安定で、SIGSEGV で落ちたあと、Window Maker まで不安
定になってしまいました。何故か、メニューから rxvt を起動しようとしたら、
メニューで選択した瞬間に、Window Maker が core を吐いて落ち、X も巻き
込まれました。

argo が落ちたときには、標準出力には

SIGSEGV   11*  segmentation violation
    si_signo [11]: SIGSEGV   11*  segmentation violation
    si_errno [0]: 成功です
    si_code [0]: SI_USER [pid: 0, uid: 0]
        stackpointer=0x7e5ff3b4

Full thread dump Classic VM (Linux_JDK_1.2.2_FCS, native threads):
    "CritiquingThread" (TID:0x2b8d0750, sys_thread_t:0x8a9e4d0, state:CW, native ID:0x300d) prio=4
        at java.lang.Thread.sleep(Native Method)
        at uci.argo.kernel.Designer.run(Designer.java, Compiled Code)
        at java.lang.Thread.run(Thread.java, Compiled Code)
    "Thread-1" (TID:0x2b8dc408, sys_thread_t:0x8053890, state:CW, native ID:0x400) prio=5
    "TimerQueue" (TID:0x2b8e62f0, sys_thread_t:0x8a64c40, state:CW, native ID:0x280b) prio=5
        at java.lang.Object.wait(Native Method)
        at javax.swing.TimerQueue.run(TimerQueue.java, Compiled Code)
        at java.lang.Thread.run(Thread.java, Compiled Code)
    "ValidityCheckingThread" (TID:0x2b910500, sys_thread_t:0x88604b8, state:CW, native ID:0x240a) prio=4
        at java.lang.Thread.sleep(Native Method)
        at uci.argo.kernel.ToDoList.run(ToDoList.java, Compiled Code)
        at java.lang.Thread.run(Thread.java, Compiled Code)
    "Screen Updater" (TID:0x2b94fa68, sys_thread_t:0x2f514238, state:CW, native ID:0x2009) prio=4
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java, Compiled Code)
        at sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java, Compiled Code)
        at sun.awt.ScreenUpdater.run(ScreenUpdater.java, Compiled Code)
    "AWT-Motif" (TID:0x2b92b488, sys_thread_t:0x8444860, state:R, native ID:0x1807) prio=5
        at sun.awt.motif.MToolkit.run(Native Method)
        at java.lang.Thread.run(Thread.java, Compiled Code)
    "SunToolkit.PostEventQueue-0" (TID:0x2b92be10, sys_thread_t:0x83890f0, state:CW, native ID:0x1406) prio=5
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java, Compiled Code)
        at sun.awt.PostEventQueue.run(SunToolkit.java, Compiled Code)
    "AWT-EventQueue-0" (TID:0x2b92bdc0, sys_thread_t:0x840e9d8, state:R, native ID:0x1005) prio=6
        at java.lang.System.arraycopy(Native Method)
        at java.lang.String.getChars(String.java, Compiled Code)
        at java.io.BufferedWriter.write(BufferedWriter.java, Compiled Code)
        at java.io.Writer.write(Writer.java, Compiled Code)
        at java.io.PrintStream.write(PrintStream.java, Compiled Code)
        at java.io.PrintStream.print(PrintStream.java, Compiled Code)
        at java.io.PrintStream.println(PrintStream.java, Compiled Code)
        at java.awt.EventDispatchThread.pumpOneEventForComponent(EventDispatchThread.java, Compiled Code)
        at java.awt.EventDispatchThread.pumpEventsForComponent(EventDispatchThread.java, Compiled Code)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java, Compiled Code)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java, Compiled Code)
    "Finalizer" (TID:0x2b927320, sys_thread_t:0x80d6380, state:CW, native ID:0xc04) prio=8
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java, Compiled Code)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java, Compiled Code)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:174)
    "Reference Handler" (TID:0x2b9273b0, sys_thread_t:0x80d1178, state:CW, native ID:0x803) prio=10
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java, Compiled Code)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:114)
    "SIGQUIT handler" (TID:0x2b9273e0, sys_thread_t:0x80d0b08, state:R, native ID:0x402) prio=5
Monitor Cache Dump:
    java.lang.ref.Reference$Lock _at_ 2B9273C0/2B95C890: <unowned>
        Waiting to be notified:
            "Reference Handler" (0x80d1178)
    java.lang.ref.ReferenceQueue$Lock _at_ 2B927338/2B95CD60: <unowned>
        Waiting to be notified:
            "Finalizer" (0x80d6380)
    javax.swing.TimerQueue _at_ 2B8E6578/2BBD70F8: <unowned>
        Waiting to be notified:
            "TimerQueue" (0x8a64c40)
    sun.awt.PostEventQueue _at_ 2B92BE10/2BA28898: <unowned>
        Waiting to be notified:
            "SunToolkit.PostEventQueue-0" (0x83890f0)
    sun.awt.ScreenUpdater _at_ 2B94FA68/2BA4A0F0: <unowned>
        Waiting to be notified:
            "Screen Updater" (0x2f514238)
    java.io.PrintStream _at_ 2B92C298/2B991D18: owner "AWT-EventQueue-0" (0x840e9d8) 2 entries
    java.io.OutputStreamWriter _at_ 2B92C280/2B991DD0: owner "AWT-EventQueue-0" (0x840e9d8) 1 entry
Registered Monitor Dump:
    PCMap lock: <unowned>
    utf8 hash table: <unowned>
    JNI pinning lock: <unowned>
    JNI global reference lock: <unowned>
    BinClass lock: <unowned>
    Class linking lock: <unowned>
    System class loader lock: <unowned>
    Code rewrite lock: <unowned>
    Heap lock: <unowned>
    Monitor cache lock: owner "TimerQueue" (0x8a64c40) 1 entry
    Thread queue lock: owner "TimerQueue" (0x8a64c40) 1 entry
        Waiting to be notified:
            "Thread-1" (0x8053890)
    Monitor registry: owner "TimerQueue" (0x8a64c40) 1 entry

Exception occurred during event dispatching:
java.lang.IllegalMonitorStateException: current thread not owner
        at javax.swing.TimerQueue.addTimer(TimerQueue.java, Compiled Code)

というメッセージが出ました。関係があるかどうかは分かりませんが、X が再
び立ち上がったあとに、吐かれた core を gdb でバックトレースすると、

(gdb) core-file core
Core was generated by `/usr/X11R6/bin/wmaker'.
Program terminated with signal 11, セグメンテーション違反です.
#0  0x2aca8d59 in ?? ()

(gdb) file /usr/X11R6/bin/wmaker
Reading symbols from /usr/X11R6/bin/wmaker...(no debugging symbols found)...
done.

(gdb) core-file core
Core was generated by `/usr/X11R6/bin/wmaker'.
Program terminated with signal 11, セグメンテーション違反です.
Reading symbols from /usr/X11R6/lib/libwraster.so.1...
(no debugging symbols found)...done.
Reading symbols from /usr/lib/libPropList.so.0...
(no debugging symbols found)...done.
Reading symbols from /usr/lib/libtiff.so.3...(no debugging symbols found)...
done.
Reading symbols from /usr/X11R6/lib/libXpm.so.4...
(no debugging symbols found)...done.
Reading symbols from /usr/lib/libpng.so.2...(no debugging symbols found)...
done.
Reading symbols from /usr/lib/libz.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libjpeg.so.62...(no debugging symbols found)...
done.
Reading symbols from /usr/lib/libungif.so.4...(no debugging symbols found)...
done.
Reading symbols from /usr/X11R6/lib/libXext.so.6...
(no debugging symbols found)...done.
Reading symbols from /usr/X11R6/lib/libX11.so.6...
(no debugging symbols found)...done.
Reading symbols from /lib/libdl.so.2...done.
Reading symbols from /lib/libm.so.6...done.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
Reading symbols from /usr/lib/gconv/EUC-JP.so...done.
Reading symbols from /usr/lib/gconv/libJIS.so...done.
#0  chunk_alloc (ar_ptr=0x2ad3d7a0, nb=1344) at malloc.c:2758
2758    malloc.c: そのようなファイルやディレクトリはありません.

(gdb) bt
#0  chunk_alloc (ar_ptr=0x2ad3d7a0, nb=1344) at malloc.c:2758
#1  0x2acaa2c4 in __libc_calloc (n=1, elem_size=1336) at malloc.c:3618
#2  0x2abb0d48 in XOpenDisplay () from /usr/X11R6/lib/libX11.so.6
#3  0x808438d in XMapRaised ()
#4  0x2ac6e428 in __restore ()
    at ../sysdeps/unix/sysv/linux/i386/sigaction.c:127
#5  0x2aca94c5 in __libc_free (mem=0x818a708) at malloc.c:2967
#6  0x80839ac in XMapRaised ()
#7  0x8083e2e in XMapRaised ()
#8  0x806767d in XMapRaised ()
#9  0x808bdee in XMapRaised ()
#10 0x8065b24 in XMapRaised ()
#11 0x8065796 in XMapRaised ()
#12 0x809aae1 in XMapRaised ()
#13 0x8065862 in XMapRaised ()
#14 0x806fd2d in XMapRaised ()
#15 0x2ac681fb in __libc_start_main (main=0x806f5a0 <XMapRaised+137064>, 
    argc=1, argv=0x7ffffb24, init=0x804c738 <_init>, fini=0x80a81dc <_fini>, 
    rtld_fini=0x2aab5600 <_dl_fini>, stack_end=0x7ffffb1c)
    at ../sysdeps/generic/libc-start.c:90

という出力が得られましたが、意味までは私には分かりません…。
これまで Window Maker がこのように落ちたことはなかったので、jdk のバグ
のような気がしてならないのですが、再現はできませんでした。

>これを元に、IPA が作っている CASE ツールがあります。
>  http://www.iioss.org/
>これを試してみようとしているところです。

こちらは、ダウンロードを何処からすればいいのか分からず、試せませんでし
た。

>できれば比較調査をしてみたいと思っているのですが、なかなか時間が
>作れなくて。。。
>皆さんの使用した感想など、教えて頂けるとありがたいです。

…全然参考になってなる話を提供できず、申し訳ございません。

On Wed, Aug 02, 2000 at 02:24:53AM +0900,
in <20000801172451.21616 _at_ sam.hi-ho.ne.jp>,
"Hiroaki OE (大江弘晃)" <hiro-o _at_ sam.hi-ho.ne.jp> wrote:
>MagicDraw UML なるものがあります。
>unix用とwindows用があります。
>http://www.nomagic.com/magicdrawuml/
>
>前のバージョンのdemo版は制限なく使えていますが、
>つい最近アップグレードされた新しいものについては不明です。
>(旧バージョン3.5もダウンロードできます。)

新しいバージョンについては、12月1日までの試用版が入手可能ですね。
ただ、実装メモリが最低でも 256MB は無いとつらいと思います。

このマシンは 64MB Memory & 128MB Swap なのですが、食い潰されました。
音に聞きし、8MB Memory で Windows 95 を使うのと同じくらいの遅さかと思
います。ファイルをセーブしようとしたら、5分くらい沈黙し、Window Maker
のワークグループの移動に30秒近くかかる状態が続いたので、頭に来て
Alt-Ctrl-BS してしまいました…。
# Netscape Communicator や emacs がかわいく見えました…。

On Tue, Aug 01, 2000 at 11:49:40PM +0900,
in <20000801235109V.dj990062 _at_ djedu.kit.ac.jp>,
Norio Taniguchi <dj990062 _at_ djedu.kit.ac.jp> wrote:

>> という点で、どうも使い勝手が悪いような気がします。また、保存するのに
>> obj という独自形式でしか出力する方法が分からず、
>
>印刷/出力フォーマットで選んで→印刷でしょうか。

これで出来ました。
png に変換する場合、ps に落としたうえで convert コマンドを使った方がキ
レイになりました。
-- 
大森保英 / かずさのすけ。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: