Podcastについて

ソフトウェアのアーキテクチャやモデリングに関するPodcastがいくつか有ります。私の気に入っているのは次のものです。

もしiTunesをお使いであればsubscirbe出来ます。どなたか日本でも同じようなことをしませんか?

関連してですが、やはりiTunesでOOPSLAをキーワードにして検索すると、2007年と2008年の講演内容の一部が公開されていることが分ります。

どちらも全部つきあうのは疲れますので、講演者やタイトル(分野)でつまみ食いされてはどうでしょうか?

Podcastについて

handbook of software architectureについて

ソフトウェアアーキテクチャの本は沢山出版されていますが、このURLのことはご存知でしょうか?

有名なBoochさんが気になる各種アーキテクチャを溜め込んで整理されています。内容にアクセスするには登録が必要です。今回はこの紹介だけです。

handbook of software architectureについて

viewとviewpointについて

viewとviewpointという言葉を聞かれた事があると思います。ソフトウェアやシステムのモデリングでは、viewpointというのは対象のある側面だけに注目(そしてそれ以外は気にしない)したモデル(仕様)を書く場合のその注目した側面のことです。例えば、情報要素だけに注目した情報のviewpoint、機能要素にだけ注目した機能viewpoint、物理的な配置に注目した物理viewpoint、またビジネスアナリストの立場からビジネスプロセスviewpointなどが考えられます。viewpointと言わずにperspectiveという言葉を使う場合もあります。viewというのは、そうやって決めたviewpointから対象を眺めた場合に見えるもの、つまりviewpointに限定したモデルないし仕様ということになります。wikipediaには、view modelというエントリがありますのでご覧ください。

いつ頃からこれらの概念が意識されるようになったのか確かな事は分かりませんが、私はISOのRM-ODP標準化活動に参加するようになってなじみの考え方になりました。RM-ODPではviewのことをviewpoint specificationと言っており、五つの標準viewpointをもうけています。その後、IEEE 1471というview/viewpointを一般的に扱う標準がIEEEで作成され、これがISOに持ち込まれて国際標準にするための作業が行われているところです(ISO/IEC JTC1/SC7というのがその検討の場になっています)。

UMLの世界にも“4+1” view modelというものがあり、UMLの標準文書でModelというPackageを拡張する要素を見ると、属性としてviewpoint(String)を書けるようになっています。つまり、ModelというPackageの中に各viewpointモデル(view)を含めることで、対象を複数の視点・観点から見た場合のモデルを構成する事が出来るようになっています。

分かり易いところでは、論理的なモデル図と物理的な配備図をviewpointの異なる別のモデルとして書く事が出来ます。

ただ気をつけるべきは、viewpointを分けて書いたとしても所詮同じ対象を書いているということです。従って、何らかのつながりがあるはずです。例えば、建築物の図面で正面図と側面図というのあり、前から見えるものと横から見えるもの(明らかに違います)を別々の図面で書きますが、正面図の長方形の屋根部分は、側面図で30度の傾きを持っているといったつながりがあります。ソフトウェアやシステムのモデルでも同じことが起きる筈です。RM-ODPではcorrespondence(相関関係)と言いますが、対応付けやマッピングと言う言葉で済む場合もあります。各viewモデルに加え、相関関係も併せて書く事で、モデルや仕様として完成度の高いものになり、うまく行けばモデル駆動開発(MDD)における高品質な入力情報になると思います。

viewとviewpointについて

モデリング記法いろいろ

UMLはUnifiedモデリング言語ですがUniversalモデリング言語ではありません。UMLを使うと普通必要な範囲のモデリングはほとんどカバーできますし、UML2.0になって基盤となるセマンティクスもしっかりしたものになっています(複雑すぎると言う批判も有りますが)。しかし、必ずしもUMLを使わないとモデリングが出来ない、というものでもありません。

例えば、XMLでモデリング対象の構造をしっかり規定すればUMLのクラス図と同様の効果を持つ文書構造が出来上がります。もっと緩やかにオフィス文書の延長でPowerPointやExcel、更には単純な文章で記述することも可能でしょう。書き方がどれだけ厳密かという点に違いが有ると思いますが、入りやすさという点では案外まずUML以外で書いてみるのは早道かもしれません。後で厳密さを上げてゆけば良い訳ですから。

メタモデリングツールの代表としてこれまで良くEMFを取り上げていますが、EMFのネイティブな(メタ)モデルの形式(ecore形式)はXMLです。それなら、最初からテキストエディタのテンプレート機能等を活用してXML文書の形でモデルを作成し、欠けている箇所をXML文書変換ツールで変換・補足してゆけば、ダイアグラム系ツールのお世話にならずに済みそうです。テキストベースだと何が書いてあるか分り難いという声もありますが、ソースコードもテキストです。ダイアグラムにすれば何でも途端に理解出来るようになる、という訳ではありません。

しかしながら、ダイアグラム系ツールの利点はやはり一見して全体が見渡せるという点だと思います。ダイアグラムが複雑になった場合には、ハイレベルで全体像を表現するようなダイアグラムを用意することが必要になると思います。そうしないと、XMLのようなテキスト系の記述の方がシンプルに思えてきます。

DSLの世界では両方のアプローチがあります。またMicrosoftのOsloのM言語はLanguage-oriented programmingという分野に入るようですが(wikipediaで調べてみてください)この世界は今のところテキスト中心のようです。

結局、モデリング分野で仕事をする人はやはり両方扱えるようにしておかないといけないですね。

モデリング記法いろいろ

SOAモデリングについて

今月(2008年12月)開催されたOMG会議の結果概要がプレスリリースの形で出ています。OMG Advances Standards at Technical Meeting; Elects New Board Members in Santa Clara, Calif  です。そして、その中に注目のエントリがあります。それがUPMS Submission(UML Profile and Metamodel for Services)です。

この仕様はSOAモデルをUMLの拡張(プロファイル:ステレオタイプ等)で書けるようにするもので、そのためのメタモデルも含まれています。これまでいろいろな人がいろいろな方式でSOAモデルを書いており、それを読む立場の人は、まず書き方を理解するところから入っていました。それが、標準化の目処が立った、ということです。OASISのSOA参照モデルなども参考にしながら作成されており、またWeb Servicesのモデルにならないように配慮してあります。現段階はOMGの標準化プロセスではアルファ版という位置づけであり、見直しを経てベータ版、最終承認を得てOMG標準仕様、という先があります。UPMS改訂提案文書(仕様案)は上のプレスリリースに含まれるURLから入手出来ます。

UML Profileですので、既存UMLツール用にProfileデータを作成すれば直ぐに試す事ができますし、ツールベンダもきっとこのProfileを組み込んだバージョンアップをしてくると思います(保証は出来ないので「期待します」が正しい言い方かもしれません)。是非ともお手持ちのUMLツールでお試しあれ!

SOAモデリングについて

組み込みシステムとモデリングについて

個人的には余り経験がありませんが、モデリングツールの適用先ということで良く組み込みシステムが話題になります。民生品では携帯電話やロボットなどですが、海外では軍関係の領域でいろいろあるようです。考えてみると、単純な券売機や自販機の状態遷移に基づく動作など、もともと向いていたのかもしれません。

iUMLというツールがありますが、基本的にクラス図と各クラスの状態遷移と動作を記述するアクション言語から構成されています。他のUMLダイアグラムを使わないという意味で、UMLサブセット+スクリプトということになりそうです。こうなると、基本となるクラスの選び方・設計が「非常に」重要になります。

メタモデリングツールも良く組み込み系で使われています。多分、電子部品等の組み合わせをコンポーネントとそのポート同士のワイヤリング・接続でうまく表現出来るためではないかと思います。航空機産業でも使われている模様ですし、当然ながら自動車産業でも利用されている筈です(現場は知りませんが)。

先日ロボットのミドルウェアに関する入門書を眺めましたがモデリングを使った説明がありました。興味深かったのはプラットフォームのモデリングで、エンタプライズシステムがWebアプリケーションをマルチティアの形で実現するように、単純には入力・処理・フィードバックというような制御ループの構造をベースにしているようだという点です(実際はもっと複雑なものだと思いますが、分かり易い説明でした)。

(エンタプライズシステム同様)組み込みシステムでも、どんなモデルをどんなプラットフォーム(を抽象化したものやフレームワーク)にマッピングするか、がポイントのようです。モデリングツールは使う人の好みで良いのではないかと思うようになってきました。

組み込みシステムとモデリングについて

本の紹介

最近「読んだ+読みつつある」モデリング関連の本をご紹介します(私の場合本は買い求めて安心するタイプですが、これらは読んでいます)。

  1. Domain-Driven Design (E. Evans)
  2. Domain-Specific Modeling – Enabling Full Code Generation (S. Kelly, J-P Tolvanen)
  3. Business Modeling – A Practical Guide to Realizing Business Value (D.Bridgeland, R. Zahavi)

最初のは有名なDDD本です。何しろ分厚いので途中で一休み中。なかなか進展しません。DDDに関する幾つかの疑問点(Domain ObjectベースのUIで大丈夫か、workflowやbusiness processのようなcontrol機能はどこに入るのか、等)を解消させたいのですが、時間がかかりそうです。

二つ目はメタモデリングツールの草分けであるMetaCaseの人が書いた本です。UMLのような汎用モデリング言語ではなくDSMのアプローチによりアセンブラから高級言語に移行したのと同等の生産性向上が実現出来るという主張は素晴らしい。彼らのメタモデリングのツールは良く出来ていると思いますが、コード生成のためには、Domain Frameworkを用意すること、Code Generatorを開発することが必要で、出来る人でないと出来ないかも、という印象。実際に使った方の意見をうかがいたいと思います。

三つ目は米国ユニシスの方によるビジネスモデリングの本。BMMについても触れているし、書こうとしているものは良しです。ただ、難しいのだろうと思いますが、具体例に近いようなダイアグラムが余り見当たらず、読者に(読んで理解出来る程度の)経験や背景知識を要求する本のようです。実は以前このような本を出版するという話を聞かされ、この本の内容にそったスライドを見せてもらった事がありました(もっと分かり易かったかもしれません)。ところで、著者の一人のZahaviさんは昔Essential CORBAを書いた方です。

本の紹介