アーキテクチャについて

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

個人的には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)、ドメイン駆動設計、などもアーキテクチャだと言えます。

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

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

アーキテクチャについて