UML2.0の最新情報
山田正樹
有限会社メタボリックス
UML1.xシリーズもOMG(Object Management Group)で1.1が承認されてから4年、初めてRationalのwebサイトで0.8(まだこのころは言語ではなく方法論であった)が公開されてから数えるともう6年が過ぎました。ずいぶん熟成が進み、そのよい香りが多くの人を惹きつけています。と同時にその熟成にも限界があり、熟成が腐敗に変わるのもそう遠くないと感じ始めている人もいることでしょう。
OMGでは、つい先頃2001年9月にUML1.4(http://www.omg.org/technology/documents/formal/uml.htm)を正式に新しい仕様とし、UML1.5に向けての中間レポート(http://www.omg.org/techprocess/meetings/schedule/UML_RTF_January_2001.html)も提出されました。その一方で、既に1年以上前からUML2.0の標準策定作業が始められています。本稿ではOMGのwebサイト(http://www.omg.org/uml/)に掲載されたドキュメント類と、2001年9月30日から10月4日にかけてカナダのトロントで行われた<<UML>>2001コンファレンス(http://www.cs.toronto.edu/uml2001/)のチュートリアルやパネル・ディスカッションの内容をもとに、UML2.0の最新動向を探ってみることにします。
まず最初に認識しなければならないのは、UMLはMDA(Model Driven Architecture, http://www.omg.org/mda/)という、より上位のOMGの壮大な構想(野望ともいう)を支える要素技術の一つであるという位置付けです。MDA自身は特定の技術や標準仕様ではありません。おおざっぱにはMOF(Meta-Object Facility)/UML/CWM(Common Warehouse Metamodel)のようなOMGの標準仕様を用いて世界中のすべてのドメインをモデル化してしまおうという大きなフレームワークと言っていいかと思います。OMGが今までCORBA(Common Object Request Broker Architecture)という切り口を通して世界中のすべての技術インタフェースを記述しようとしていたのがOMA(Object Management Architecture)だとしたら、MDAはその進化版、モデル版とも考えることができます。MDA自身については稿を改めて述べるほかありませんが、UML2.0の提案はいかにMDAのフレームワークをよくサポートするかというのが一つのキーポイントになるでしょう。
<<MDAのダイアグラム http://www.omg.org/mda/mda_audio/mda_rollovers/mda_left_new.gif>>
さて、UML2.0のRFP(Request for Proposal)は現時点で次の四つに分けてそれぞれ出されています(カッコ内の日付はRFP発行日)。
これらのうち下部構造とOCLについては8月20日に第1次提出(Initial Submission)の締め切りを迎え、それぞれ5件、4件(うち1件は下部構造と重複)の提出がありました。残りの2つについては10月22日が第1次提出の締め切りで、原稿執筆時点(9月19日)では上部構造に1件の提出があるだけです(しかもその1件は下部構造と重複)。ここでは特に下部構造を中心にみていくことにしましょう。
UML 2.0 下部構造(Infrastructure)とは、UML自身のアーキテクチャを再定義することを指します。それに対して上部構造(Superstructure)とは、下部構造の上でUML1.xの意味論や記法をどのように拡張/洗練するかということを指します。現状のUMLのアーキテクチャの問題点は
といったあたりに集約されると思います。いずれも現状の大方のUMLの使われ方のように、概念的なモデルを感覚的に表現しているだけならば大きな問題ではないかもしれません。しかしMDA構想のようにUMLで記述されたモデルが世界的な標準として使われたり、モデルの検証、変換、実行などを行おうとするときには大きな問題となってきます。
このUML 2.0 下部構造のRFPに応答して次の5つのグループが提案を出しました。
提案を区別するのに適当な方法がなかったので、提案作成に主に携わったと思われる人やグループの名前を冠しましたが、特に政治的な意図はありません。これらの中で特に重要と思われるprecise UMLのグループの提案とコブリン、セリクらのグループの提案についてもう少し詳しく内容を見てみることにしましょう。
precise UMLとはイギリスの大学人であるS. ケント, A. エバンス, T. クラークを中心とするグループ(http://www.puml.org/)です。実際の提案はS. メラー(Project Technology, http://www.projtech.com/)、D. デスーザ(Kinetium, http://www.kinetium.com/)らの名前で行われています。彼らの提案はこの5つの提案の中ではもっとも興味深いものと言っていいと思います。彼らの方法はUMLのメタモデル自身を以下の枠組みを使って再構築しようというものです。
パッケージ・テンプレートとはパラメータを持ったパッケージのことで、パッケージそのものは基本的にはUMLでいうパッケージとほぼ同じです。パッケージは分類子やその間の関係、パッケージ自身など任意のモデル要素をグループ化するものです。パッケージ・テンプレートのパラメータを具体化してやることによって、テンプレートを適用した具体的なパッケージを生成することができます。またいくつかのパラメータを同一視することによって、複数のパッケージ・テンプレートをマージした新しいパッケージ・テンプレートを合成することができます。もちろんパッケージは汎化可能です。そして、パッケージ・テンプレートの適用、マージ、汎化の意味を精確に表現するためにOCLで必要な制約を記述します。
<<パッケージ・テンプレートの例 http://www.omg.org/cgi-bin/doc?ad/01-08-34.pdf fig.8, fig.9>>
彼らは28種類(9カテゴリ)のパッケージ・テンプレートとその適用/マージ/汎化のみを用いて、UMLメタモデルを構築できるとしています。もっとも最初の提案は静的な構造(UML1.xでFoundationに相当する部分)が中心(それもまだかなり不完全)で、動的な構造(UML1.xでBehavioral Elementsに相当する部分)についてはほとんど記述されていませんから、基本となるパッケージ・テンプレートの数はもっと増える可能性はあります。また彼らの提案によれば、このメカニズムはMOFを規定するものであり、MOF自身はそのままUMLのサブセット(UML Core)になるということです。
この提案の興味深い点のひとつは、パッケージ・テンプレートのメカニズムが実はMDAを支える中心的なテクノロジそのものであることです。この方法はもともとD. デスーザのCatalysisやS. メラーの実行可能UMLというような方法論あるいはテクノロジに由来しています。つまり、この提案はUMLを含むMDA全体を一貫性のある方法で取り扱う技術的な基盤を提案しているのです。技術的な詳細についてはprecise UMLグループのwebサイトなどをご覧ください。このサイトにはmmtという、Javaで記述されたメタ・モデリング(上記パッケージ・テンプレートのメカニズムを用いたメタ・レベルのモデリング)の実験を行うツールなどもあり、かなり遊ぶこともできます。
もう一つの興味深い点は、この提案あるいはMDAが実現されたときにextreme modeling(http://www.extrememodeling.org/)と呼ばれるような新しいソフトウェア開発方法論を想定していることです。extreme modelingとは端的に言って検証/実行可能なモデリング技術のことであり、extreme programmingと同じような迅速で変化に強い開発方法論です。そしてそれは決して夢のような方法論ではなく、一部のドメインではすでに十分実用化されている方法論でもあるのです。
C. コブリン(Telelogic, http://www.telelogic.com/), B. セリク(Rational, http://www.rational.com/)らのグループの提案は、precise UMLのグループのようなドラスティックなものではなく、UML1.xのより延長線上にあるものです。主にパッケージ構成の再編成と定義の洗練によってアーキテクチャの再定義を行っています。彼らの提案で下部構造に相当するのは、Core(従来MOFが担っていた役割に相当)パッケージとProfilesパッケージです。CoreパッケージはUMLだけではなく、CWM、MOFなどの定義でも利用されます。Profilesパッケージでは特にStereotypeがメタモデルに組み込まれ、メタモデルを直接的な形で拡張できるようになりました。まだ完全とは言えませんが、MDAでのプロファイル定義に力を発揮するだろうと思います。
<<パッケージの関連図 http://www.omg.org/cgi-bin/doc?ad/01-09-02.pdf fig.1-1>>
また、UML 2.0 下部構造の話とは直接関係ありませんが、B. セリクが<<UML>>2001のパネル・ディスカッションで以下のような興味深い話をしていました。すなわち彼らはUML 2.0 上部構造の提案には以下のような項目を含める予定であるということです(上部構造とは上の図ではUMLパッケージとCoreパッケージに相当)。
シーケンス図やアクティビティ図の取り扱いは今までも大きな懸案事項でした。ただしその実現方法についてはその他の提案も現れそうです。その他の点は主にUMLによるアーキテクチャ記述に関連したものです。MDAにとってUMLでアーキテクチャが記述できることは必要不可欠な重要事項といっていいでしょう。実際すでにUMLによるモデリングやプロファイル作成にとってRM-ODP(Reference Model for Open Distributed Process、http://www.dstc.edu.au/Research/Projects/ODP/ref_model.html)やIEEE Std. 1471(アーキテクチャ記述のガイドライン)への参照が重要になりつつあります。ROOM(Real-time Object-Oriented Modeling)というのは、B. セリクが提案してきたリアルタイム・システムのモデリングのための記法と方法論です。ROOMはそれなりの実績を持っており、ObjecTime(今はRational Rose RT)というツールで実現されています。プロトコルというのもROOMの主要概念の一つです。
<<ROOMの記法例 http://www.rational.com//images/whitepapers/umlrt_fig6.gif>>
最後にUML 2.0 OCLの提案から、BoldSoft/IONA/Rationalによるもの(http://www.omg.org/cgi-bin/doc?ad/01-08-01)を簡単に説明しておきましょう(現時点では実質的な提案はこれ1件です)。実際の提案作成の中心となったのはKlasse(http://www.klasse.nl/english/)のJ. ウォーマとA. クラッペではないかと想像しています。OCL1.xに対する主な変更点は以下の通りです。
オブジェクト制約記述言語の進化方向としては、形式的仕様記述言語であるZのような形式性の高い方向もあり得ますが、この提案はむしろ従来のOCLに問い合わせやアクション(副作用を伴う計算の実行)を取り入れてリッチ(何でもあり)にしていく方向です。他の点はともかく、最後のアクション言語を取り入れる点については反対もあるかもしれません。確かにモデルを書くのにいくつもの言語を覚えるのは気が進みませんが、制約や問い合わせとアクションが一緒に記述されているのもあまり気持ちのいいものではないでしょう。
以上、UML 2.0の最新動向について概観してみました。次は2001年12月24日が下部構造とOCLの更新提案の締め切りとなります。その後何回かの更新提案と、各提案のすり合わせや統合が試みられ、最終的に一本化された提案が提出されるはずですが、それまでにまだかなりの時間を要しそうです。
UML 2.0について特に共通の認識となっているのは「精確なモデルを記述でき、拡張性が高いこと」です。それ自身は大変よいことです。しかし今まである意味での「いい加減さ」によって加速されてきたUMLの大衆化に、その難解さや巨大さが歯止めをかけ、新しいUMLが見向きされなくなる可能性もないとは言えません。<<UML>>2001のパネル・ディスカッションで、チェアのC. コブリンはパネラたちに「UML2.0はセカンドシステム症候群に陥る可能性はないか」という命題を出していました。セカンドシステム症候群とは、最初のシステムは手探りで開発されるので余計な機能は持たないが、次のシステムは最初にやろうとしていたすべての機能を盛り込んだ使い物にならないシステムになりがちであるというジンクス(フレッド・ブルックス「人月の神話」)を指しています。その本当の答えは提案者でもあったパネラたちではなく、何年か後の我々が知っていることでしょう。