No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

UMLモデリングツール(お絵描き含む)の比較

MementoWeaver開発記(4)
(大幅に加筆・訂正)
前回でJavaFXの使い方の最初の一歩はなんとなくわかりそうな気がしてきたので、各種の設計ドキュメントを書いてみる。
その際に、いくつかのフリーなモデリングツールを試してみたので、選択の理由と評価(感想)をまとめておく。

ドキュメント種別と使用ツールの関連

現時点で作成するドキュメントとそのツールの関係は以下のとおり。

ドキュメント 使用ツール 備考
ユースケース astah* community Software Ideas Modelerから乗り換え
ユースケース記述 LibreOffice 4(http://ja.libreoffice.org/) フリーのツールでユースケース記述までサポートはしてくれないのでWriterを使う
コンポーネント astah* community 一般的に期待されるようなコンポーネント図とは一寸違うけど、社内的に言うところのCRDのレベルを描くために。Software Ideas Modelerから乗換え
クラス図 AmaterasUML Javaからリバースしたいのでastah* communityでは不可
状態マシン図 astah* community Software Ideas Modelerから乗り換え
ER図 ERMaster Software Ideas Modelerから乗り換え
その他 LibreOffice 一旦、上記にはまらないような文書はオフィスソフトで描くことにしておく

いつもの事ながら有用なフリーウェアを開発されている関係者の皆様に感謝します。

モデリングツールの比較

現時点ではAstah*,AmaterasUML,ERMasterに落ち着いているが、他のツールについても試してみた感想などを簡単にまとめる(プライベートなので無料で使えるツールに限定)。

関心のある諸元

ツール 入手元 動作形態 リバース ユースケース コンポーネント クラス図 ステートマシン図 ER図
astah* community astah* community - 無償UMLモデリングツール 単体 不可 ok ok ok ok -
AmaterasUML AmaterasUML - Project Amateras eclipse 可(クラス図) ok - ok - -
ERMaster ER Master eclipse 可(DDL) - - - - ok
Software Ideas Modeler http://www.softwareideas.net/ 単体 未確認 ok ok ok ok ok
Modelio http://www.modelio.org/ 単体 未確認 ok ok ok ok -
ArgoUML http://argouml.tigris.org/ 単体 未確認 ok ok ok ok -
Violet UML Editor http://alexdp.free.fr/violetumleditor/page.php 単体/eclipse 不可 ok - ok ok -

感想

astah* community

国内での定番ともいえるモデリングツール。
UMLをスケッチするには結局のところastah*が最も使いやすいように感じた。
UML2系にも対応。
community版ではJavaからのリバースが出来ないので、これだけで閉じられないのが残念(有償版なら出来るようだが、自宅用ではお金を掛けられない)。

AmaterasUML

Eclipseプラグインであることは、ツールを複数立ち上げなくてすむという意味で1つのメリット。またJavaソースからのクラス図生成も行えるのはポイントが高い*1
残念なのは、対応するモデルがユースケース図、クラス図、シーケンス図、アクティビティ図のみであること。
今回はステートマシンは欲しいと考えていたので主力にはなれず。
Javaの読み書きは行えるが、基本的にはお絵描きツールという認識(違ってたらごめんなさい)。

ERMaster

正直、これはすごい!って思った。ERモデリングのツールなんだけど、フリーでこの完成度は驚いた。
Eclipseプラグインであることも1つの利点だが、DDLのリバース/フォワードもメジャーなDBMSには対応している*2ようだし*3、基本的な作図については全く不満無し。
今まで使ったことのある他のERツール(フリー)と比較すると、特にメタデータの扱いが秀逸。

Software Ideas Modeler

何と言っても優れているのは、対応するダイアグラムのカバレッジの広さ。
UML,ER,BPMN等の比較的メジャーなダイアグラムから、「何それ美味しいの?」的なダイアグラムまで広範にカバーしている。
(その分、各ダイアグラムの扱いについて厳密性は失われているが。)
このツール1つでトップダウンアプローチのダイアグラムについては、ほぼ全て網羅できるのではないか?と期待して実際に使い始めてみたが、残念なことに若干Buggy。
ダイアグラムの構成要素を複製した時に、内部識別子的な何かの管理にバグがあるらしく、次に開いたときに図が書き換わっている、ってことが何度かあった。
このバグは一寸致命的なので今回は採用を見送る。

ArgoUML

以前に使っていたことのあるUMLモデリングツール。
特に欠点を感じているわけではないが、UML2系に非対応であることと、他のツールと比較して特に秀逸なところがあるわけでもないので今回は見送り。

Violet UML Editor

Eclipseプラグインとしても単体としても*4使えるUMLをスケッチするためのツール。
Eclipseプラグインとして使用してみると、日本語入力等でかなり微妙な挙動を示していた。
(単体として使用してみると、その微妙な挙動は解消している。)
純粋にお絵描きとして使うのであれば、悪くない選択かも知れない。
今回は他のツールと比較して特に秀逸なところがあるわけでもないので見送り。

結局のところAstah*に落ち着いてしまった感が満載。

作成したドキュメント

ユースケース

f:id:kazyury:20130309112833p:plain
要するに管理者がデジカメから素材を取ってきて、HTML(=メメント)を作ってというだけのツールなのでユースケースとしてはこの程度かと。
HTMLを作成する際には、素材に付与したタグをベースにして作成するHTMLを切り替える。

ユースケース記述

ユースケース記述*5はインストール部分のみGitHubの方に作成(odtフォーマット)しているのでそちらを参照。他のユースケースについては開発が進んでから書く。

コンポーネント

すごくザックリではあるけど、インストールに関わるコンポーネント間の関連をこんな感じで考えておく。
f:id:kazyury:20130309112510p:plain
インストール以外についてはまだ分解が必要。

クラス図

クラス図はJavaと同期を取るために頻繁に更新されるだろうからここでは省略。Git上のプロジェクト内においておく。

ERD

f:id:kazyury:20130309101706p:plain
一時的に付与したタグなんかを保管するためにDBにもデータを持たせる。
ADにも書いているけど、DBMSは導入が手軽なJavaDB(Derby)を使用することにする。
素材とタグの状態遷移は状態マシン図で表現する。

状態マシン図

ステートマシン(Material)

f:id:kazyury:20130309115343p:plain

ステートマシン(TaggedMaterial)

f:id:kazyury:20130309115358p:plain

データ配置

ユースケースの補足としてデータ配置のイメージをポンチ絵(Libre Office Draw)で表現する。
f:id:kazyury:20130228234129p:plain

ファーストカットなのでまだまだ変更は入ると思うが、とりあえずこのような感じで進めてみる。

*1:今回採用している最大の理由

*2:残念ながらDerbyは無し。ただ、StandardSQLということでフォワードは可能。

*3:今回は試していない。

*4:公式HPによるとApplet等としても

*5:仕事で書いている人からは怒られそうなレベルだな...。