2012年10月26日金曜日

SimpleModeler最新状況

SimpleModelerはメタモデルの拡張も含めて、色々と改造しているため、最新版がどうなっているのか分かりづらくなっています。

ちょうど今日のドメイン居酒屋用に図を作ったので、これを元にSimpleModelerの最新状況について説明します。




DSL

SimpleModelerの最新状況では以下のDSLの仕様を想定しています。

  • SmartDox DSL
  • CSV DSL
  • Mindmap DSL (XMind)
  • Excel DSL (予定)

基本となるDSLはSmartDox DSLです。

CSV DSL, Mindmap DSL, Excel DSLはモデルを部分的に記述するのに用います。

Scala DSL

SimpleModelerは元々Scala DSLをメインのDSLにしていたのですが、以下の理由によりSmartDox DSLに置き換えることにしました。

  • 日本語による仕様記述を書きにくい。
  • コンパイルが必要になるのは運用的にマイナス。

日本語による仕様記述はJavaに対してのScalaのアドバンテージでしたが、プレインテキスト文書であるSmartDoxをベースにしたSmartDox DSLの方がより簡単に書くことができます。

開発サイクル

現状では、SmartDox DSL生成、DSLマージ機能、Excel DSLが予定となっており、SmartDox DSL、CSV DSL、Mindmap DSLのいずれかからモデルを読み込んで成果物の生成を行います。

最終的には予定機能を実現後に以下の開発サイクルを想定しています。

  1. 基本モデルをSmartDox DSLで記述
  2. 追加部分をMindmap DSLなどで記述。ブレインストーミングで作成したモデルなど。
  3. SmartDox DSLとMindmap DSLなどをマージしたモデルをSmartDox DSLへ反映。
  4. Smartdox DSLを編集して最終モデルを作成。
  5. 各種成果物を生成。

SimpleModel

各種DSLで記述されたモデルはマージされて、SimpleModeler内部でSimpleModelというモデルとして表現されます。このSimpleModelから各種成果物を生成します。

コード生成

現在プログラム生成の基本プラットフォームと考えているのは以下の2つです。

  • Java EE
  • Play2 + Ext-JS
Java EE

Javaコードとしては、基本JavaにプラスしてJava EE Webプラットフォーム系の以下のアノテーションを付加したコードを生成します。

  • JPA
  • Dependency Injection
  • JAX-RS
Play2 + Ext-JS

Webアプリケーションとしては、個人的な好みもありPlay2とExt-JSの組み合わせによるRIAを基本ターゲットにしています。

クライアント側のExt-JSとサーバー側のScalaコードを生成します。

g3とg4

また、クラウドアプリケーションでのアプリケーション開発技法やフレームワーク技術を調査するために試作した2つのフレームワークg3(Cloud Serivce Framework)とg4(Android Framework)向けのコード生成も行います。

仕様書とクラス図

SimpleModelで記述したモデルから仕様書とクラス図を生成することができます。モデルに直接記述した情報だけでなく、誰が誰から参照されているといったバックリファレンス情報、直目しているクラスを中心にしたクラス図の生成なども行います。

Asakusa Framework

SimpleModelerでAsakusa FrameworkのDSLを生成することを計画中です。

SmartDox DSL用のデータフローの記述方式を思いついたので、この記述からAsakusa DSLを生成します。

現状の現状

現時点では、メタモデルを色々といじったこともあり、一時的に動かなくなっている機能があります。現在デバッグ中なので、近いうちに安定版をリリースしたいと思います。

0 件のコメント:

コメントを投稿