Monday, November 16, 2009

フリーのUMLツールをいくつか試してみた

StarUML
Platform: Windows native.
操作性とわかりやすさにおいては抜群に良い。
問題は最終ビルドが2005年で、開発が進んでいるのか分からないことと
どうやらDelphi 7で作られているらしく、開発環境と開発者が限られてしまうこと。
将来性を考慮した場合に多少不安が残る。

しかしながら、見栄えやとっつきやすさの点では一番良いと思えたので
Windows環境がメインなら自分はこれを使うと思う。

ArgoUML
Platform: Multi (java)
MacでSnow Leopardの人は起動時に要注意。
ArgoUML 0.28.1(Mac) を立ち上げようとすると
Rosettaをインストールする必要があるというダイアログが出る。

/Applications/ArgoUML.app/Contents/MacOS/ にある JavaApplicationStub が
PowerPC用の古い実行ファイルだからだ。
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/
にある JavaApplicationStub をコピーすればOK

cp /System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub /Applications/ArgoUML.app/Contents/MacOS/

0.28.1 は UML 1.4 にしか対応していないが 0.29.1 からは UML 2 に対応とのこと。
現時点では0.29.1はまだ中途半端で不安定らしいので正式リリースはされていない。

C++からのリバースエンジニアリング対応はPre-Alpha状態で限定的で
C++コードジェネレータとの統合ができていないので、RTE (Round Trip Engineering) もできないとのこと。
簡単なC++のコードを入れてみたが、stdio.hが見つからない程度でエラーになって生成失敗…
C++との連携には現時点では使えない。

画像のエクスポートは .png, .gif, .ps, .eps, .svg へ出力することが可能。

UML図作成のインターフェース自体はよく出来ていて、設計時にのみなら使えるツールであると思う。
ソースコードとの連携に関しては将来に期待。
(商用UMLツールのPoseidonはこのArgoUMLが元になっているようだが、Javaに特化している模様)

BOUML
Platform: Multi (native code and Qt GUI)
GUIがQtベースでインターフェースはいけていない上に操作もわかりにくいが
C++のソースコードからのリバースエンジニアリングも問題なくできた。
ただし、クラスブラウザ上に各クラスが読み込まれるものの
ページ上には配置されないので、クラスブラウザから各クラスをドラッグ&ドロップする必要がある。
大規模なプロジェクトだと全て描かれても厳しいので懸命な選択だとは思われる。
関連のあるクラスが配置されれば自動的に関連図も繋がれて描画される。

操作の面ではわかりにくいものの、UML図やプロパティーの管理・ソースコードとの連携等
機能面ではとてもよく出来ていると思う。

画像エクスポートは .png と .svg へ出力することが可能。
HTMLへのエクスポートはかなり詳細に出力ことができる。
#doxygenをご存知なら、doxygenで解析html出力したようなものを想像していただけるとわかりやすいかと。

Acceleo
Platform: Multi (java) with Eclipse
UMLの作図機能を持っているわけではなく、EclipseのモデリングフレームワークEMFをベースに
ソースコードとの連携を行うツールらしい。
UMLのサポートに関してはEclipsのEMFをベースにした標準のUML2や
EMSをベースにしたグラフィカルなモデリングフレームワークGMFを利用するUML2 Toolsを利用することで可能になるという仕組み。
(UML2がUMLをベースにしたプロパティエディタ、UML2 ToolsがグラフィカルなUMLエディタ)

なかなか奥の深い連携っぷりで、これぞまさにEclipseみたいな感じだが
Eclipseでプロジェクトを作るなり既存のプロジェクトを使うなりして
その中でUMLモデリングを行いつつAcceleoを使うことになるので結構手間がかかと思われる。

なぜ「思われる」と書いたかというと、C++のソースコードからUML図を
描き起こすところまで辿り着けなかったから。

というわけで、C++のコードを手っ取り早くUMLでデザインのしたいという用途には向いていないかも。

いずれにせよ、まずEclipseありき。普段の開発環境がEclipsでJavaがメインな方には良いと思われる。
Eclipseの標準的なフレームワーク群の上に構築されているので安心感があるし
他のEclipse用プラグインとの連携も期待できるのではないだろうか。

ちなみに、C++との連携を考えないのであれば、UML2 Tools等は使いやすくできている。


結論(あくまでも個人的な結論)
WindowsならStarUML。
MacやLinux、もしくはマルチ環境ならBOUMLを使いつつ、ArgoUMLの動向を見守る。
(LinuxのKDE環境に限って言えばUmbrelloも評判が良い。今回は試してない。)
仮想環境も含めて良ければ、Windows上のStarUMLか、Linux上のUmbrelloが良いかも。


参考URL
Top 5+ Open Source UML Tools | Cost Effective Software Reviews
http://open-tube.com/top-5-open-source-uml-tools/
List of Unified Modeling Language tools - Wikipedia
http://en.wikipedia.org/wiki/List_of_UML_tools

No comments:

Post a Comment