浅海智晴プログラマ日記 このページをアンテナに追加 RSSフィード

2008-11-04 SimpleModeler

SimpleModelerが生成

SimpleModeler 0.1

この所、プログラミングに集中していたのですが、やっと公開できるレベルまで動いてきました。

wakhokでは、オブジェクトモデリングゼミを中心に活動していましたが、その成果をまとめたものがオブジェクトモデリング手法SimpleModelingです。「上流工程UMLモデリング」として書籍化しました。

SimpleModelingはモデリング演習などの教育で使用することを想定したモデリング手法ですが、これに加えてモデル駆動開発も重要なテーマとしています。

モデル駆動開発を行うためには、モデル駆動開発に適したモデル体系(メタ・モデル)を使用しなければなりません。このモデル体系は、UMLのメタ・モデルのサブセットを絞り込み、これにUMLで定義していない要素(ユースケース記述など)を加えて、プロファイル化したものになります。この具体例の一つがSimpleModelingのモデル体系であるSimpleModelです。

オブジェクト・モデルを記述する手法としてUMLが広く利用されていますが、以下の短所があるためそのままの形では本格的な開発に利用するのは難しいのではないかというのが浅海の立場です。

  • オブジェクト・モデル以外の記述には必ずしも適していない。
  • オブジェクト・モデルも完全に記述できるわけではない。
  • 作成効率が必ずしも高くない。
  • モデル・リポジトリの操作性がよくない。
  • 大規模開発に必ずしも適していない。
  • 自然言語情報の取り扱いが不十分。

UMLの利用方法としては、(1)コミュニケーション・ツール、(2)設計図、(3)プログラミング言語、(4)施工図といったものが考えられますが、(1)や(4)の用途が適しているのではないかと思います。また問題空間側のモデルやアーキテクチャ・ビューといった実装とは違う側面のモデルを記述するのにも利用できます。しかし、プログラムと等価の情報を持つ実装よりのモデルの作成、UMLプログラミング言語として使用する用途は、開発効率の面で厳しいものがあると考えています。

それでは、オブジェクト・モデルの記述に何を使用すればよいのかということですが、浅海はプログラミング言語のようなテキストベースのDSLを用いるのがよいのではなかと考えています。どのような大規模、複雑なシステムでもテキスト・ベースのプログラミング言語では記述できるわけなので、モデルもテキスト・ベースで記述するのがよいのではないかということです。

テキストベースのDSLを用いたモデル・コンパイラ(スキーマコンパイラ)として、2000年から2004年にかけてXMLスキーマ言語RELAXからJavaプログラムなどの成果物を生成するRelaxerを開発しましたが、この技術をオブジェクト・モデルに向けに発展させたものがSimpleModelerです。

SimpleModelerは、Scalaを開発言語にしていますが、DSLメタ言語にもScalaを採用しています。

つまり、SimpleModelingのモデル体系であるSimpleModelをScalaベースのDSLで記述し、このDSLからJavaプログラム仕様書を生成するためのモデル・コンパイラがSimpleModelerというわけです。

開発も端緒についたばかりで、実用に利用するにはまだまだ機能不足ですが、最初の第一歩ということで公開します。

SimpleModelerのホームページは以下のURLです。

http://code.google.com/p/simplemodeler/

SimpleModeler 0.1は以下のページからダウンロードできます。ソースコードSubversionからチェックアウトすることができます。

http://code.google.com/p/simplemodeler/downloads/list

SimpleModelerの技術情報は以下のURLで公開していく予定です。セットアップ方法もこのページを参照してください。

http://simplemodeler.blogspot.com/