“EMF Forms” Hands-on night

モデルベースソフトウェア開発コミュニティー活動の一つとして、EMF Forms の価値と使い方をご説明する場を企画しました。

EMF FormsハンズオンNight!

私は別に EMF Forms の開発に携わっている訳ではありませんので、ディープな知識がある訳ではありません。したがって、最もシンプルな使い方についての説明になります。そのシンプルな使い方だけであっても、データモデルのレビューと早期収束にとても有効なツールだと考えています。そしてハンズオンにしたのは、説明を聞きデモを見るだけでなく、実際に手を動かすことでこのツールの使い方を身につけて頂くためです。

なお EMF Forms は Eclipse の Modeling Project の一つで EclipseSource というドイツの会社が中心となって推進しています。

“EMF Forms” Hands-on night

Obeo UML Designer の紹介

Eclipse ベースの UML ツールは各種あり、オープンなものとしては Papyrus が良く知られています。 オープンという意味では Obeo UML Designer もあり、今回はこちらを紹介します。

昔はそうでなかったと思うのですが、Obeo 社は多くのオープンソースプロジェクトを持っているようです。 彼らの製品ページは次のようになっています。

最初にコマーシャル製品(SmartEA, Designer, Agility)があり、次に Eclipse Open Source Projects として Sirius, Acceleo などが続きます。 そして最後にオープンソース製品として、UML Designer, SysML Designer などがあげてあります。

さて、UML Designer ですが、次の専用ホームページがあります。

説明によると Sirius ベースとあります。多分 Eclipse の UML2 プロジェクトの成果を利用してグラフィカルエディタを作成したのだろうと思われます。 ダウンロードして使ってみるとなかなか使えます。 日本語が通らないと使って貰えないことがありますので、定番の日本語化(Pleiades)を適用してみました。 そうして作成したサンプルのクラス図を次に示します。

ObeoUMLDesigner

いかがでしょうか? Eclipse の他のモデリングツールとの連携は良いはずですので、是非お試しください。

Obeo UML Designer の紹介

Viewpoint: the making of 動画の紹介

EclipseCon NA 2015 の報告で PolarSys のことを書きましたが、PolarSys 関連の聴講セッションのなかでも特に感心したのがこのビューポイントを作成してモデルに反映するデモです。二人の人が前に出てマネージャとデベロッパーの役を演じ、マネージャからの無理難題をデベロッパーが Capella/Kitalpha を使い軽く実現してしまうというプレゼンテーションです。

自由に Viewpoint を定義して Model Work Bench をカスタマイズしながらモデルを発展させてゆくというアプローチがとてもうまく実現されており、使い方を工夫すれば別の世界(例えば、エンタプライズ系)にも適用できるでしょう。このプロジェクトには Obeo 社が参画しており、そのためか Sirius が大活躍しています。

いろいろな意味で参考になるプロジェクトですので、是非最後までご覧ください。

Viewpoint: the making of 動画の紹介

Mendix App Platform の紹介

モデル駆動開発の考え方を実用レベルで実現したシステムの例としてMendix社の製品を紹介します。この製品はDSLベースの現実的モデル駆動開発の実現により、欧州と米国を中心に利用が拡大しています。製品としては開発者(ビジネスエンジニア)が利用するMendix Business Modelerと社内サーバやクラウド側の実行環境(Mendix App Platform)があります。

モデルに基づいてシステム開発を行うアプローチとして説明されるモデル駆動開発ですが、具体的な製品としてはUMLやDSLをベースとしたモデル作成支援とコード生成・編集支援(スケルトンコードを生成し補完するコードを書き込む仕組み)を備えたものが多数派です。これに対しMendix App Platformは、対象領域をWebアプリケーションに絞り込むことで、モデル開発だけでビジネスアプリケーションが完成する(モデルを解釈実行)という最短のパスを実現しています。作成するモデルは次の3種類で、すべてBusiness Modelerを使っての作業になります。

  • ドメインモデル(データモデル)
  • GUIモデル
  • ロジックモデル

ドメインモデル

UMLのClass図(サブセット)相当のグラフィカルな記法を使い、ダイアグラムとして作成します。ここで定義するClassは実行環境でデータベースの一つのテーブルに対応づけられます。出来る範囲ですが入力項目の妥当性チェックも指定できます。例えば次のようなものです。

m1

顧客-注文-注文明細-製品というEntityモデル

GUIモデル

ドメインモデルで必要な概念と関連を定義しましたが、データ操作(CRUD操作他)につながるGUI定義(モデル)も必要です。登録したデータのリスト表示画面、エントリデータの編集画面がドメインモデルを用いて容易に作成できます(マウス操作が中心)。GUIモデルでは一つの画面定義が必ずしも一つのClassに対応するものでなく、業務の要求に応じた柔軟な画面設計が可能です。例えば次のようにマスター・明細を同時に含めることも出来ます。

m2

注文新規編集画面GUIモデル

ロジックモデル

通常ドメインモデルは構造を表現したモデルになります。従って、振る舞いを表現したモデル、例えばビジネスロジックやビジネスルールの定義も必要になります。何らかのプログラミング言語やスクリプト言語でこの部分を記述し、自動生成されたコードに欠けているコードを書き足す方式を良く見かけます。この製品では業務ロジックをBPMNのサブセットを使いモデルとして記述します。例えば次のようなものです。

m3

サンプルロジックモデル

こういった書き方なら業務・ビジネスロジックの大部分をコードの世界に入らず書くことが出来ます。Web ServicesやXMLインタフェースもモデルレベルで対応できるようになっています。どうしてもモデルで表現出来ない(またはしたくない)場合は、ロジックモデルの一部からJavaコードを呼び出せます。

大雑把な概要説明でしたが、かなりの種類の業務アプリケーションをこの方式で記述出来そうだということがお分かりになったと思います。では、実行環境はどうなるのでしょう?単体テストはBusiness Modelerを動作させているPCでサーバプロセスを動かすことで実施出来ます。それ以上のテストや本番用には、企業内サーバに実行環境を用意するか、Mendix社が運用するクラウド上の実行環境(Mendix App Platformの構成要素)を利用します。

評価のために簡単なサンプルシステムを作成してみましたが、国際化にも対応しており、業務概念定義・画面定義・ロジック定義だけで(コードを書く事なく)動作しました。また、プログラミング言語を使わなかったため一連の開発作業が早く、限られた時間でモデル作成・テスト・修正を何度もまわす事ができました。

さて、このようなシステム開発手法はシステムの発注者・利用者にとってどんなメリットがあるでしょう。Webアプリケーション形態の業務アプリケーションをかなり短期間で作成出来ます。その改変・更新も同様に短期間で出来ます。作成したモデルが実行環境のもとで実行されると共に、そのモデル自体が読み易いため、発注者・利用者と開発者がコミュニケートする仕様書として利用する事も出来ます。ビジネス環境が激変する昨今にぴったりの、変化に対応し易い業務システムが実現出来そうです。

Mendix App Platform の紹介

EclipseCon NA 2015 レポート

前のポストで書きました、モデルベースソフトウェア開発コミュニティの勉強会で報告した資料です。

エンタプライズ系業務システムからロボットまでという話題が豊富な半日のなかで、ちょっと時間を使いすぎてしまい、参加された方には申し訳なかったです。

そしてこの場を借りて、その後公開された次の Youtube 動画情報(確かに小型ビデオカメラで撮影していました)を追加します。他にも公開されている動画がありますので、興味のある方は周辺を探してみてください。なお二つともに、前半が説明で後半がデモになっています。画質はイマイチかもしれません。

なお、このコミュニティでは(もう超満員ですが)今度 DDD イベントを企画しています。

そしてその後に、私からの小ネタの一つで、EMF Forms のハンズオンを開催予定です(来週あたり案内を公開することになると思います)。

EclipseCon NA 2015 レポート