2012年11月12日月曜日

SimpleModelerとUML

story driven literate modeling with ubiquitous language model compilerでは、SimpleModelerのコンセプトを以下のように考えてみました。

  • story driven
  • literate modeling
  • ubiquitous language
  • model compiler

一点訂正があって、model compileはauto codingが最新の考え方でした。(SimpleModeler (クラウド温泉@小樽))「ドメインライブラリの自動コーディング」がSimpleModelerの守備範囲で、プログラム全体を自動生成をするものではない、という割り切りを行なっています。

さて、これを従来型のUMLと比較してみましょう。

story driven

オブジェクト指向モデルで静的構造が重要なのは論を待ちませんが、これだけだとデータ・モデリングとほとんど変わらないのでオブジェクト指向のよさが出てきません。 

そういう意味で重要なのは、シナリオ分析による動的モデルの抽出とその実現でしょう。ユースケースやロバストネス分析、ユーザー・ストーリーといった手法がこの系統の技術ですが、このあたりがオブジェクト指向の華ということができるでしょう。

シナリオ分析の特徴は自然言語で記述したシナリオを元に、オブジェクト間の相互作用を分析し、責務の割り当てを行なっていくことですが、ここで重要なのが「自然言語で記述したシナリオ」です。

しかし、この自然言語の扱いがUMLの弱点と言えます。UMLは、文字による情報を記述したり管理したりする機能があまり強くなく、UMLモデラでもコメントをプレインテキストで記述できるというような形の周辺機能という扱いになっている印象です。

このため、オブジェクト指向の「華」であるシナリオ分析との関係が薄くなってしまいます。UMLで記述できるのは、シナリオ分析が終わった後の綺麗に整形された後のモデルとなります。

literate modeling

literate modelingでは、モデルと仕様記述の自然言語が渾然一体となった成果物(artifact)が必要になりますが、UMLはグラフィカル言語であり、このようなことはできません。

ubiquitous language

ubiquitous languageでは、自然言語による仕様記述、モデル、プログラムで共通する語彙を定義し、この語彙をハブにして自然言語による仕様記述、モデル、プログラム間を連携します。

UMLは、自然言語に対する扱いが弱いので、語彙をハブにして自然言語と連携していくことは不得手といえます。

auto coding

MDAは動的モデルも含めてプログラム全体を自動生成するというアプローチだったと思います。これには、オブジェクト指向モデルで、システム全体の動的モデルをプログラム・レベルの精度で記述する必要がありますが、この点はうまくいかなかった、ということが現時点での結論と考えてよいと思います。 

前述したように、SimpleModelerでは「ドメインライブラリの自動コーディング」とターゲットを絞ることでこの問題を回避しています。

逆に考えると、UMLでもこの手法を取れば同様の効果を期待できます。

UMLの使い所

まずひとつ断っておきたいのは、オブジェクト指向に対するUMLの貢献はとても大きく、UMLなしではこのような発展はなかったということです。UMLでは、オブジェクト指向のグラフィカル言語に加えて、メタモデルの定義も行なっており、モデリングにおける共通語彙として大きな役割を担っています。

その前提の上で、システム開発作業における適材適所を考えると、グラフィカル言語としてのUMLをモデル記述言語として使うのは、あまり得策ではないのではないか、というのがボクの立てた仮説です。

その大きな理由の一つが、UMLが「自然言語」の扱いが弱いために、story driven, literate modeling, ubiquitous languageの目的に向いていないということです。

これらの目的を達成するために、SimpleModelerではEmacs org-modeをベースにしてプレインテキストのフォーマットであるSmartDoxをDSLのホスト言語として採用しました。自然言語とモデルを自然な形で混在できるので、story driven, literate modeling, ubiquitous languageを達成できるではないかと考えています。

さて、この枠組の中でもUMLの位置付けを考えてみます。

まず、オブジェクト・モデリングにおける共通語彙としてのUMLの価値は不変です。SimpleModelerでも、メタモデル(SimpleModeling)はUMLをベースにして、企業アプリ向けのプロファイルを乗せる形にしています。

また、モデルの視認性、可読性という意味ではデファクトのグラフィカル言語であるUMLを使うのが自然です。そこで、SimpleModelerではモデルからUMLのクラス図や状態機械図を自動生成するアプローチをとっています。

0 件のコメント:

コメントを投稿