2012年10月23日火曜日

Literate modeling

10月23日の昼にとあるプライベートな集まりで、夜に名古屋Geek BarでSimpleModelerを紹介する機会がありました。参加された皆さん、どうもありがとうございました。


今回は新機能であるSmartDox DSLを中心に紹介しました。

ユビキタス言語

SimpleModelerの主張点の一つは、ユビキタス言語を軸にビジネス・モデリングから分析、設計、そしてコード自動生成を束ねていく点にあります。

この目的に、より近づくために開発したのがSmartDox DSLです。

SmartDoxは、Emacs org-modeをベースにした文書処理システムです。これをオブジェクト指向モデルの記述言語に採用したものがSmartDox DSLです。

SmartDoxは普通の文章を記述するためのフォーマットですが、この中に、一定のコンベンションに沿った文章を書くことで、この文章の中からオブジェクト・モデルを抽出し、モデルの可視化やコード生成を行うものです。このようにして抽出されたオブジェクト・モデルは、自然言語によって記述された文書との整合性を持つはずです。この部分が日本語、モデル、プログラムの共通部分、すなわちユビキタス言語となります。

Literate modeling

ユビキタス言語を軸に説明する方針をとっていたのですが、説明をしながら思いついたのはLiterate modelingの観点をもう少し強調した方がよいかもという点です。

Literate modelingはLiterate programmingのモデリング版で『Enterprise Patterns and MDA』で提案されているものです。

UMLによるビジュアル・プログラミングだけでは情報不足という認識から、UMLと同時にビジネス文脈文書(Business context document)を作成し、この2つをあわせてモデリングの成果物とします。

『Enterprise Patterns and MDA』版Literate modelingでは、UMLが主でこれを自然言語文書で補完しますが、SmartDox DSLのLiterate modelingではこれを一歩進めて自然言語文書+コンベンションで実現します。

スライドにも柔らかいモデル、固いモデルという表現が出てきますが、これをもう少し精密化して、Literate modelingの文脈で説明していくのがよいのではないかと考えたわけです。

SmartDox DSLで書かれた自然言語文書(+コンベンション)の文書から抽出されるものは以下の3つに分類できます。

非モデル
モデル化できないマテリアル。自然言語、図など。
柔らかいモデル
プログラムに落とすことはできないが、モデルとしてデータ化することができる。
固いモデル
プログラムを自動生成できる。

SmartDox DSLでは非モデル、柔らかいモデル、固いモデルを一つの文書に束ねて記述します。このため、プログラムと直接対応を持たない非モデル、柔らかいモデルがプログラムと生き別れになってしまい散逸してしまうことを防ぐことができます。

柔らかいモデルは、要求仕様といったビジネス側の要件をオブジェクト指向モデルの枠組みにそって記述したものです。この柔らかいモデルが固いモデルを束ねる形になりますが、このメカニズムにより固いモデル経由で、仕様記述、ビジネス・モデリング記述とプログラムの関係を明示することができます。

また、非モデルも柔らかいモデルや固いモデルの説明として紐付けられ、モデルの中に束ねられます。

説明中に思いついたアイデアをより具体化してみました。Literate modelingはSimpleModelerの特徴をわかりやすく表現できるようです。SimpleModelerのモデル記述方法に関する説明は「ユビキタス言語」と「Literate modeling」の2つを軸に洗練させていきたいと思います。

0 件のコメント:

コメントを投稿