How to MoDisco

今回は「検索で見つけたブログ記事」をネタにしたものです。

Javaコードを入力にして元のものに近いモデルを再生するのは、ある種 reverse engineering です。KDM 標準はそういうケースを想定して制定された OMG 標準です。これは MDA の逆をゆく行為なので ADM (Architecture Driven Modernization (TM)) という OMG 内のグループで作成されました。現在では ISO 標準にもなっています。

ただ、標準があってもそれを実装したツールがないと役に立ちません。出来ればオープンソースが良いですよね。Eclipse Modeling Project にはそのツールがあります。名前を MoDisco と言います。今回ちょっと利用する機会があり、改めて使い方を調べてみました。チュートリアルがなかったか検索したところ、有難いことに日本語のブログ記事(シリーズもの)が見つかりました。:)

記事自体は少し古そうでしたが、ポイントはちゃんと書かれています。流れとしては、Eclipse IDE に MoDisco と Papyrus (UML tool) のプラグインをインストールし、対象プロジェクトの右クリックから KDM モデル(xmi)を生成し、その KDM モデルから UML モデル(.umlファイル)を生成し、最後に UML  ツールの Papyrus に持ち込むというものです。記事で Xtext と Acceleo のインストールが要るようだと書かれていましたが、Oxygen 版で試したところ、これら無しでも動作しました(軽い使い方だったので問題が起きなかっただけかもしれません)。

スクリーンショット 0029-08-09 23.54.32

いつものモデルベース開発とは逆方向ですが、レガシーコードの分析などで利用できます。JavaコードからUMLモデルを導きたい方はお試しください。

 

How to MoDisco

EclipseCon France 2017 参加報告会を開催します

モデルベースソフトウェア開発コミュニティ という活動をしているのですが、ここ1年ほどほとんどイベント企画ができていませんでした。反省しています。

沈黙を破って、8月1日に、先日参加してきました EclipseCon France 2017 の参加報告会 を開催します。それなりの目的を持って参加したのですが、報告会となるとまず EclipseCon でどんな話題があったのかを広く(紙芝居的になってしまいそうですが)お話した方が良いだろうと考えています。なお今回はデモをお見せする時間を取れそうもありません。

カバーする主な話題は、MBSE の仕組みを構築する際に大いに利用できる Xtext, Sirius, Papyrus-RT, Capella 周りの発表内容などになります。ヨーロッパ方面では歴史があり今も活発に活動が続けられている分野です。日本から参加したのは私だけのようですので、もしご都合がつくようであればお立ち寄りください。

EclipseCon France 2017 参加報告会を開催します

Eclipse Sirius で遊ぶ #3

このシリーズの最終回です。Activity 図が書けるか試してみました。State machine の時と同様に OMG の仕様を調べたところ、Activity 周りは次のような定義になっていました(もちろん、今回も少し単純化しています)。

ActivityModel

実はこの構造は昔から DSL でネットワーク図を描く例題として馴染みのものです。そういうこともあり、かなり簡単にできてしまいました。

Activity Diagram

Buyer-Seller-Shipper の業務フローです。実線はコントロールフロー、点線はオブジェクトフローのつもりです。一箇所 UML 仕様に違反している部分もありますが(分かるでしょうか?)このような感じのダイアグラムエディタが簡単に作れるというデモンストレーションということで目をつむっていただければと思います。

クラス図、状態遷移図、アクティビティ図という三種類について、単純化したものであれば Sirius を活用して短時間でグラフィカルエディタが作れるということを示してみました。実際に現場で使う場合、モデルエディタだけでなくコード生成もセットで必要になりますが、Sirius ベースであれば親和性が良い Acceleo を使うのが良いと思います(どちらもフランスの Obeo 社が提供しているオープンソースです)。

 

Eclipse Sirius で遊ぶ #3

Eclipse Sirius で遊ぶ #2

今回は簡単な StateMachine を作成してみました。まず ecore モデルですが、UML 2.5 (OMG formal/2015-03-01) の仕様の StateMachine 定義を単純化してみました(これでも本物より簡単にしてあります)。

SimplifiedStateMachine.png

前回同様の手順を使うことでサンプルモデルから次のような StateMachine 図を作り出すことができました(今回のトライアルでグラフィカル要素の定義は下の図に含まれている要素に対してしか行っていません)。パレット部分を追加すれば簡単なエディタになります。

StateMachine Diagram

State は Container にしたので、作り込むと状態のネスト構造も記述できるのですが、お試しということでご勘弁ください。最後に Activity 図を試して、今回のシリーズを終了します。

Eclipse Sirius で遊ぶ #2

Eclipse Sirius で遊ぶ

昨年末ですがモデルベースソフトウェア開発コミュニティで Eclipse Sirius の勉強会を実施しました。チュートリアルに従い手を動かしてみるというもので、なんとか前半を終えました。近々後半をやることになっています。

海外では Sirius を使って色々なモデリング環境が作成されており、ギャラリーというページに多く例が掲載されています。勉強会で使ったチュートリアルの例は少し実用的ではないので、もう少し多くの方になじみのあるものを遊び気分で作ってみました。

まずベースとなる ecore モデルですが、単純化したクラス図を目標に次のようなモデルを使うことにしました(どこかで見たことのあるものです)。

domainmodel

これを使い model code, edit project, editor project を生成し準備を終え、ついでに dynamic instance の仕組みを使いサンプルモデルを作成し、Eclipse の別インスタンスを立ち上げてグラフィカルエディタを作成します。途中は飛ばしますが、次のようになりました。

sirius_diagram.png

左上の区画が肝となる odesign ファイルで、Entity (UML Class 相当) を Container とし、Attribute をリスト形式で埋め込んでいます。関連は EntityReference をベースに作成しています。昔の EMF + GEF や GMF 時代をご存知の方には隔世の感があるかもしれません。

時間があれば振る舞い系のものも作ってみる予定です。出来ればまた掲載します。

Eclipse Sirius で遊ぶ

TextUML & Cloudfier について

これまであまり真面目に調べたことがなかった TextUML について調べています。

TextUML はテキスト形式のUMLエディタで、完全ではないにしろ UML 仕様を結構真面目に実装しています。 次は私のお試しモデルです(まだ細かい点をマスターしていないので、間違いが含まれているかもしれません)。

screenshot#3

これを Cloudfier というクラウド上のモデル開発環境兼実行環境に持ち込むと、デフォルトで結構良さそうな画面やDB等を生成してくれ、プロトタイプ・検証に充分使えます。ドキュメンテーションはこの実効環境(Orion)にログインしないと見つけられないかもしれません。

ただ、今のところ日本語が扱えない模様ですので、とりあえずはお試し的にモデルの確認に使うのでしょうか。一つ興味深かったのは、他の UML ツールで作成した .uml ファイルをこのエディタでオープン出来ることで、英語のクラス図があれば(制約はありますが)この環境に持ち込むことで実行シミュレーションが出来るという点です。

TextUML & Cloudfier について