linuxBean14.04(52)Eclipse Modeling ToolsでJavaコードからUMLを生成:その1

2015-07-20

旧ブログ

t f B! P L

前の関連記事:linuxBean14.04(51)Eclipse4.5のインストールと静的コールグラフ生成


linuxBean14.04(46)Eclipse Modeling ToolsのインストールしたときはJavaコードからUML図を作成する機能はないと思ったのですが、追加でプラグインをインストールするとUML図の作成ができるようです。

MoDiscoプラグインでJavaコードをUMLに変換する


generate sequence from java source code | Inpirasi Pribadi

やり方はここで教えてもらいました。


理屈は大体ここでわかりました。

まずJavaコードをKDMに変換し、さらにこのKDMをUMLに変換する、という手順を踏みます。

MoDiscoというプラグインがこれらの変換を担います。

KDMとはKnowledge Discovery MetamodelのことでObject Management Group (OMG)という標準化団体が規定していいる規格だそうで、MoDisco Toolはその実装になります。

Java DiscovererがJavaコードをKDMに変換する解説、KDM to UML ConverterがKDMをUMLに変換する解説になります。

UMLに変換するといっても図が出力されるわけでなく、umlファイルというのが出力されるのでそれを図示化するために、Papyrusプラグインも導入します。

このほかInpirasi PribadiではXtextプラグインとAcceleoプラグインの導入するように書いてあります。

XtextプラグインについてはXtext Documentationにヘルプがありますが、なかなか理解は難しいです。

どうも自分でプログラミング言語を作るのを補助する機能があるようなのですが、なんのためにインストールしないといけないのかはよく理解できませんでした。

UML図表示の文字の修飾をしてくれているような気もします。

Papyrus User Guide - EclipsepediaにはPapyrusがXtextエディタを提供してコードの解析をすると書いてありますね。

Andreas Blog: Polishing Papyrus Xtext IntegrationにはPapyrusとXtextを統合(連携?)すると書いてますね。

Papyrus自体もDSL(ドメイン固有言語)になるのでそれを扱うフレームワークとしてXtextを利用しているということかも(さっと読んで思ったことなので正確どうか不明)。

XtextがUML図表示の文字の修飾をしてくれているというのであっていると思います。

AcceleoプラグインについてもAcceleo Documentationに解説があります。

これはUMLをJavaコードに変換するプラグインなので、UML図で変更した内容をJavaコードへ反映させるために必要なようです。

Papyrusプラグイン以外のプラグインについては何をしているのかよく知らなくても支障はないと思います。

Eclipse Modeling Toolsにプラグインをインストールする


VirtualBox4.3.2にlinuxBean14.04、Eclipse Modeling Tools 4.5をインストールした状態から始めます。

Papyrusプラグインは最後に別にインストールするようにします。

EclipseのメニューのHelp→Install Modeling Components。



まずはAcceleo、Xtext、Modiscoの3つにチェックをつけて「Finish」。

あとは指示にしたがってインストールします。

Eclipse再起動後同様にしてPapyrusをインストールします。


これはダウンロードする量が多くて結構時間がかかりました。


再起動してWelcomeタブがでていたら閉じます。

linuxBean14.04(51)Eclipse4.5のインストールと静的コールグラフ生成で作成したLibreOffice5.0.0.0beta1SDKのFirstStepsのプロジェクトでまずUMLを作成してみます。

MoDiscoプラグインでJavaコードからumlファイルを作成する


パッケージエクスプローラでプロジェクトを右クリック→Discovery→Discoverers→Discover KDM Code Model From Java Project。


SERIALIZE_TARGETのValueの部分をクリックしてtrueを選択します。

これによって結果がxmiファイルに保存されます。

Value欄以外をクリックすると「OK」ボタンがクリックできるようになります。


「プロジェクト名_kdm.xmi」というファイルができました。

今度はこの「プロジェクト名_kdm.xmi」ファイルを右クリック→Discovery→Discoverers→Discover UML model from KDM model。


先ほどと同様にSERIARIZE_TARGETをtrueにします。


「プロジェクト名.uml」というファイルができました。

今度はこのumlファイルをPapyrusで図示化するのですが、Papyrusのファイルを削除するとプロジェクトのルートフォルダにあるumlファイルも一緒に削除してしまう、というバグがあるそうなのでUMLというサブフォルダをつくってそこにumlファイルをコピーしてから次の作業に移ります。(Bug 396881 – Spurious file deletions)

サブフォルダはプロジェクトフォルダを右クリック→New→Folder、で作成します。


次からUMLフォルダにコピーしたumlファイルで作業を行います。

Papyrusプラグインでumlファイルからdiファイルを作成する


umlファイルを右クリック→New→Other。


PapyrusにあるPapyrusu Modelを選択してNext。

UMLを選択してNext。


Papyrusの作業ファイルであるdiファイルの保存場所を指定します。Next。


モデルのルート名の指定ができますが、今回はデフォルトのroot modelのままにしてFinish。


元のumlファイルを書き換え可能にするのか質問されます。とりあえず「OK」。

これで「プロジェクト名.di」ファイルが作成されてエディタ画面に開きますが内容は表示されていません。

このdiファイルのタブがPapyrusの作業画面になります。

Papyrus用の画面配置に切り替える


以後Papyrusの操作になるので画面配置をPapyrusに簡単に切り替えられるようにします。

EclipseのメニューのWindow→Perspective→Open Perspective→Other。


Papyrusを選択して「OK」。


PacekageエクスプローラがProjectエクスプローラに変化し、左端にModel ExplorerとOutlineがでてきました。


Projectエクスプローラでの表示は同名ファイル名はまとめられて拡張子のみの表示なりました。

表示が変化しただけでまたJavaパースぺティブに戻してPackageエクスプローラでみると元の表示になります。


ツールバーにもPapyrusパースペクティブへの切替ボタンが出現しました。

Eclipseを再起動するとModelエクスプローラの内容が表示されなくなりますが、Projectエクスプローラでまとめられたファイル名をダブルクリックするとdiファイルがエディタタブにでて、またモデルが表示されるようになります。

パースペクティブをカスタマイズしてツールバーの表示項目を整理する


Window→Perspective→Customize Perspective、で現在選択しているパースペクティブについてツールバーやメニューなどの表示項目を細かく選択できます。


Find/Replaceをツールバーに表示させたかったのですが、その項目はみつけられませんでした。

Findをツールバーに表示させるプラグインを探す


Is it possible to dock the "Find/Replace" window in Eclipse? - Stack Overflow

これを読んでHelp→Eclipse Marketplace、でツールを探すことにしました。



この二つのどちらをインストールするか迷いましたがGralnceの方をインストールしました。
(2015.7.31追記。Find Bar for Eclipseの方をインストールしてみましたが起動方法がわかりませんでした。)

Eclipseを起動してから最初に使うときにCtrl+Alt+Fで呼び出す必要があります。


一番下のステータスバーに検索窓が表示されます。

いろいろ設定もできます。

参考にしたサイト


generate sequence from java source code | Inpirasi Pribadi
この記事を見つけてEclipse Modeling ToolsでJavaコードからUML図が起こせることを知りました。

Eclipse Community Forums: MoDisco » step by step guide to reverse engineering java code to uml
JavaコードからUML図が起こす仕組みについて書いてあります。

Knowledge Discovery Metamodel - Wikipedia, the free encyclopedia
JavaコードをこのKDMに変換してからUMLに変換しました。

Object Management Group - Wikipedia
KDMの規格を策定した団体。

Papyrus
umlファイルからUML図を描くEclipseプラグイン。幅1100px以上しないとリンクがクリックできません。

Papyrus User Guide - Eclipsepedia
Papyrusのユーザーガイド。しかし今回インストールしたPapyrusとバージョンが違うようです。

Andreas Blog: Polishing Papyrus Xtext Integration
PapyrusとXtextの関係についてのブログ記事。

Xtext - Language Development Made Easy!
UML図をEclipseで扱うのにこのプラグインもインストールしておいたほうがよいみたいです。

Acceleo/Getting Started - Eclipsepedia
UML図からJavaコードを生成するプラグイン。

Bug 396881 – Spurious file deletions
diファイルを削除すると一緒にプロジェクトルートフォルダにあるumlファイルも削除されるバグ。

次の関連記事:linuxBean14.04(53)Eclipse Modeling ToolsでJavaコードからUMLを生成:その2

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ