モデリングツールについて

毎日何か書こうと思っていましたが、やはり無理でした。 :)

ということで今回は軽い話題にし、私がこれまでに触れた事のあるモデリングツールについて並べてみます。

UMLツールでは

  • Rational Rose
  • Rational Software Modeler
  • Objecteering
  • MagicDraw
  • Enterprise Architect
  • PatternWeaver
  • omondo
  • Papyrus
  • Topcased

メタモデリングツールでは

  • GME/gems
  • eclipse EMF/GMF

そしてMDDツールですが、まだいろいろ試している最中で(まだ使い込んだものがありません)、納得したものが現れた時点で報告することにします。

UMLツールには、簡単なコード生成機能を備えるもの、クラス図をecore形式でexport出来るもの、GMF的機能を備えるもの、など各種あるため製品のデータシート等は良く読んで選ばれればと思います。またアドオンやプラグインという名前での機能拡張が提供されている場合が多くあります。

そういえば、以前オープンソースのOCLツールというのを使ったことがあります。メタモデルを表すクラス図をテキストで書きましたが、OCLの良い勉強になりました。

最後に、皆さんの職場環境にも依存しますが、機能と同時に価格も重要ですよね。

モデリングツールについて

メタモデリングについて

日本語版のWikipediaによると、「メタモデル(Metamodel)とは、所定の問題領域でのモデリングに適用可能で有益なフレーム/規則/制限/モデル/理論を意味する。メタモデリング(Metamodeling)とは、メタモデルの分析/構築/開発を意味する。この用語はメタモデルという用語の組み合わせである。」(リンクはこちら)とあります。

IT業界の関係者の方であれば、eclipseのEMFをご存知の方も多いと思います。このオープンソースツールでメタモデルを作成する事が出来ます。何しろEMFが実装しているのはOMGのメタメタモデル標準であるMOFの基本部分ですから、EMFを使って描けるモデルはメタモデルになるという訳です。そしてそのメタモデルに基づくモデルエディタを生成することが出来ます。この部分については、当初(現在でも可能ですが)GEFというグラフィカル面を定義するツールと併せて用いることになっており、慣れた方以外使うのが難しい状況でした。現在ではこのあたりを改善したGMFを利用出来るようになっています。

EMF/GMFで作成するメタモデルはダイアグラムを意識したものになります。例えば、ネットワーク図というものがあります。ノード(クライアントやサーバのマシン)がリンク(通信路:ケーブルやワイヤレスのLAN/WANでの接続)により結ばれている図で、四角い箱が実践や点線で結ばれている図です。このメタモデルを考えると、その主要要素はノードとリンクの二つで、リンクはノードとノードの間を結ぶという関連を持ちます。そしてモデルは図ですので、ノードとリンクを含む親の役を果たすメタモデル要素(ネットワーク図)も追加します。これらにより構成されるUMLのクラス図を想定してもらうと、それがネットワーク図のメタモデルになります。EMFで作成する場合はXML文書の操作になり、GMFの場合はグラフィカルな操作になります。

OMGのホームページから公開されている標準仕様を調べるといくつものメタモデル標準が出てきます。

個人的に気がかりなのは、メタモデルが独立している(重なり合いがない)うちは良いと思いますが、重なり合いが出てきた場合に、将来的に複数のメタモデルを同時に扱うと(重なって現れるメタモデル要素について)どのメタモデルに属する要素なのか区別つかなくなるのではないか、という点です。これが名称空間などで区別出来たとしても、名前が同じだが少し意味の違うメタモデル要素を同じモデルの中でどう扱うかという問題もあります。Ontologyなんて使うのでしょうか?

上でネットワーク図の話を例にあげましたが、ちょっとご存知のアーキテクチャ図というものを思い起こしてください。多分、ほとんどのものが箱形図形要素と線の組み合わせで出来ていたのではないでしょうか?箱形図形がネストしていたり凸凹していたりというバリエーションはあると思いますが。そうすると例であげたメタモデルはアーキテクチャ図のメタモデルのベースになる要素があります。違いが、例えば箱の種類や構造、線の種類だけだとすると、上のメタモデルの箱の部分にサブクラスとして異なる種類の箱を追加するといったカスタマイズをすればかなり良い線まで近づけそうです。興味のある方は試してみてください。ただ、振る舞いの要素を表現しようとするとこれでは不充分で、ステートマシン・状態遷移図やシーケンス図・アクティビティ図に対応するようなものも必要になってくると思います。

メタモデリングについて

ビジネスモデリングについて

ビジネスモデリングという正式の言葉は無いのかもしれません。ただ、昨今ビジネスとITの融合といった言葉を聞くように、企業の経営者層や管理者層少なくとも利用者のニーズと、提供されたITシステムとの間に乖離があるという話は以前からありました。このギャップを埋めるために、トップダウンとボトムアップの両方の観点から、ビジネスの世界のモデル化というアプローチが出たのではないかと思います。でもビジネスって何?という声が出てきそうです。

OMGにBusiness Modeling and Integration (BMI)というグループがあり、ここで各種の標準を開発しています。例えば、ビジネスモチベーションモデル(BMM)、ビジネスプロセス管理記法(BPMN)、ビジネスルール関連標準(SBVR)、組織構造に関する標準、などです。詳しい内容はOMGのホームページから探してみてください。

私の勝手な解釈ですが、BMMを使ってビジネスの動機・目的を明確にしそれを実現方式としてのビジネスプロセスと関連づけ、BPMNを使ってビジネスプロセスをユーザレベルで詳細記述し、またSBVRを使ってビジネスルールを記述し、その結果をサービスシステム(SOAのSです)やインフラから実現するというのが標準化活動を進めている人の持っている実現イメージのようです。SOAについてはSOAモデリング用UML Profileがもうすぐ出てきますので、それを活用することになるでしょう。このビジネスプロセスとサービスの対応付けは、ビジネスや技術環境の変化が激しい現代において、俊敏・機敏なエンタプライズを実現するのに有効なやり方だと言われています。つまり、ビジネス環境の変化に対応してビジネス戦略を見直し、それをビジネスプロセス改訂に結びつけ、最後にビジネスプロセスを実現するサービスを選び直して(改訂もあるでしょうが、別のサービスに乗り換えるというのも選択肢)組み直すようにすると短時間での対応が可能になるということです。

モデリングをしていると、何故そんな事が必要なのか、と聞かれることがあると思います。モデリングの結果を企業の資産としてとらえ、それを基にして次の戦略を考え実行するような仕組みを考えて貰いたいものです。多分、この辺りの説明が難しいのでしょう。初期投資がかかりますから。作ったモデルに基づく簡単なシミュレーションが出来れば多少改善出来ないでしょうか?

取り敢えずこのポストの結論としては、BMM – BPMN & SBVR – SOAというコンビネーションは期待が持てる、ということになります。

ビジネスモデリングについて

モデリングについて

ここでのモデリングはシステムのモデルの話ですが、まずは昔話から始めます。(大昔)工学部の学生時代に卒論で実験とシミュレーションをセットでやりました。実験では人工的に作ったある環境で電圧だの圧力の測定を行い、その測定結果を眺めその背景にある原理を説明出来るような理屈(この値は別のあの値と比例関係にある等)を立て、それをFortranプログラムでシミュレーションし、勝手な理屈が実験結果をかなり正しく現している、というような内容でした。今考えてみると、これは自然現象(つまり神様の作った仕組み)の一部をモデリングし、そのモデルが正しそうだ、という話になります。

さてUMLです。UMLは基本的にはソフトウェアの世界のモデリング記法ですが、最近ではビジネスの世界(BPMN他)、ハードウェアも含めた世界(SysML他)、各種業界向けなどに拡張し使われています。まず気がつくのは、これらは(全部ではないかもしれませんが)神様の作った仕組みではなく人間が作った仕組みを対象としたモデリングだということです。人間は神様程完璧ではありませんから、どうしてもファジーな部分や誤りが入ってくることがありそうです。UMLの中身については書籍も沢山ありあますので、例えば、UMLモデリングのエッセンス、などをご覧ください。英語ですが仕様原文はOMGからも公開されています。

国際標準としてのUMLは2種類になるのはご存知でしょうか?最初のものはUML1.4.2で、これは国際標準となり日本ではJISにもなっています。現在UML2.0(本当は2.1.2?)が別の国際標準番号で審議されようとしています。これはUML1.4.2も他の標準で使われていて簡単に置き換える事が出来ないという事情によるものです。

UMLといえばUMLツールですが、多くありすぎてどれを選んで良いか困るという状況だと思います。私も、Rational Rose、IBM Rational Software Modeler、MagicDraw、PatternWeaver、Enterprise Architectなどを使ったことがありますが、それぞれ特徴があります。最近ではeclipse modeling projectでUML含めいろいろ楽しそうなことをやっています(英語なのでつきあうのが疲れそうで眺めるだけですが)。オープンソースのUMLツールも探せば幾つかあります。欧州は政策のせいだと思うのですが、研究プロジェクトが沢山あって、モデリングツールに関する活動が活発です。そのうちいくつか紹介します。

モデリングとUML全般について何か書くというのは手に負えませんのでこの程度にして、後は個別の話題のなかで何か書ければと思います。

モデリングについて

アーキテクチャについて

ソフトウェアのアーキテクチャというと、ハイレベルなものから詳細なものまで各種あると思います。まずは大局的というか大雑把というか、大きな枠組みを意識しているものについて触れてみます。

個人的にはRM-ODPというISO/IECとITU-Tの標準に長年つきあっていますので、この紹介から。日本語にすると、オープンな分散処理のための参照モデルということになりますが、対象のシステムを五つの観点に分けて記述します。Enterprise、Information、Computational、Engineering、Technologyというのがその五つで、それぞれ、経営者やシステムの発注者の観点、情報の観点、論理的機能の観点、分散処理メカニズムの観点、実際に使うテクノロジの観点、ということになります。詳しい事は、1)Wikipedia RM-ODP、2)INTAPのオープンシステムモデリング技術委員会などをご覧ください。

このRM-ODPの枠組みと似ていますが、もっと有名なものにZackmann Framworkがあります。これは、この図にあるように対象を5W1Hという分類の縦軸と、Scope、Business、System、Technology、Component、Operationsという横軸の合計36のセルに分けてシステムを理解ないし定義するものです。ちょっと数が多すぎるとは思いますが。 :(

また、Enterprise Architectureという言葉があります。これは米国政府などで各省庁が個別に調達をかけた結果、多くの類似の仕掛けやシステムが出来てしまい、ある意味で税金の有効利用が出来ていないということになり、調達時のシステムの仕様を共通の基準で書く事になり、この書き方のもとになるものです。上のZackmann Framworkも参考にしたと聞いています。米国政府のものはFederal Enterprise Architectureといって、ホワイトハウスのホームページの一部に掲載されています。日本政府も類似の基準を定めており、電子政府の推進について経済産業省のEAポータルといったページがあります。

これらは大枠からトップダウンで全体像を描き出すのに便利な枠組み(フレームワーク)であり、多くの方になじみのテクノロジレベルのアーキテクチャとはちょっと区別しておいた方が良いと思います。

テクノロジレベルには、数多くのアーキテクチャがあります。上位から行くと、ビジネスプロセス管理、サービス指向(SOA)、CORBA、メッセージング、イベント、ワークフロー、EAI、ベンダー固有のアーキテクチャ、通信アーキテクチャ、ユーザインタフェース(例えばMVC)、等々。このブログサイトに関連の深い話題では、モデル駆動アーキテクチャ(MDA)、ドメイン駆動設計、などもアーキテクチャだと言えます。

モデリングとの関連で、アーキテクチャをどう表現するか、という問題があります。通常は簡単な図に言葉での説明を加えていると思います。この簡単な図というのがアーキテクチャ図の基になることがあります。図自体は四角や楕円などの閉じた図形と(必要に応じて)それらを結ぶ線程度の組み合わせですが、この閉じた図形や線に意味を与えることでそれぞれのアーキテクチャ表現が出来るようになっているのだと思います。

必要に応じてもう少し詳しい事を書くかもしれませんが、今回はこれだけにして、次はモデリングの話にします。

アーキテクチャについて

はじめまして

ソフトウェアを対象としたアーキテクチャやモデリングなどを話題にして、気になったことを書いて行くことにします。モデル駆動何々というのも対象です。余り守備範囲を限定しないで「何でもあり」で行きます。

このポストはご挨拶だけです。宜しく御願いします。

はじめまして