アーキテクチャ設計における観点

ITアーキテクチャの設計を行う際、一つの観点のみからアーキテクチャを理解することは、非常に難しい。アーキテクチャを一枚の図で表したようなモデルをよく見るが、この様な図では色々な観点がごちゃ混ぜになってしまい、後続の作業に役立てることはできない。*1

よって、様々な観点からアーキテクチャを設計していくことになる。その際に問題になるのが「では、どんな観点(ビューポイント)で考えればよいか」ということ。もちろん全てのケースに適用できるような正解はないのだけれども、毎回その場限りで考えていたら効率が悪い。

ということで、通常は既存のビューポイント・カタログやアーキテクチャ・フレームワークをベースにするのが、良いやり方。世の中には様々なものが存在するので、代表的なものを少し整理してみた。*2

4+1ビューモデル

Philippe Kruchtenによって提唱されたモデルであり、Rational Unified Processにおいても中心となるフレームワーク。下図*3のように、アーキテクチャを4+1のビューに分類している。

論理ビュー
ユースケースを実現するための”機能”に焦点を当てたビュー。論理的な設計モデルを扱う。サブシステム、コンポーネント、クラスの構成や、各要素の振る舞いなどを定義する。実装技術(J2EE、.NET、…)には踏み込まない。
実装ビュー
実装モデルを扱う。このモデルは、実装技術(J2EE、.NETなど)が考慮されたものとなる。ソフトウェア開発に直接関連する関心事を対象とする。
配置ビュー
ノードの配置や、ノード間の連携、ノードへの機能の配置を表す。いわゆるシステム構成図といわれるような、インフラよりのビュー。
プロセスビュー
システムの動的な観点に焦点を当てたビュー。並行性、パフォーマンス、拡張性なども検討される。
シナリオビュー(ユースケースビュー)
アーキテクチャ上重要となるユースケース群。

有名なモデルではあるのだけれど、個人的には以下のような点に関し、疑問を持っている。

  • 機能の観点を論理と実装に分けているのに、配置を論理と物理に分けていない。
  • 情報に関する観点が明確にされていない?
  • 本来、非機能的な要件(パフォーマンス、可用性、セキュリティ…)は、全ての観点で横断的に検討されるべきだが、そのような観点がない?

Zachmanフレームワーク

個々のシステムのアーキテクチャというより、EA(Enterprise Architecture)の分野で使用されるフレームワーク。

下図のようなマトリックスを使用して、アーキテクチャを設計・構築・評価する。*4

うーん、正直言って、どう使ったらいいのか分かりません。

RozanskiとWoodsのフレームワーク

システムアーキテクチャ構築の原理で紹介されているフレームワーク。下図に示すとおり、6つのビューポイントと、それらのビューポイントで横断的に検討すべきパースペクティブが定義されている。縦軸(ビューポイント)と横軸(パースペクティブ)で、アーキテクチャを網羅的に把握する。4+1ビューモデルを参考にしているらしい。

f:id:GOLEM-XIV:20110303124612p:image

ElesとCrippsのフレームワーク

システムアーキテクチャ構築の実践手法で紹介されているフレームワーク。主にシステムを機能的な観点(いわゆるコンポーネント・モデル)と、配置的な観点(いわゆるオペレーショナル・モデル)で理解する。

具体的には、下図のとおり、基本ビューポイントと、それらに対する横断的ビューポイントからなる。RozanskiとWoodsのフレームワークと同様、縦軸と横軸でアーキテクチャを網羅的に把握することを目的としている。

機能ビューポイント、配置ビューポイントでは、各々論理アーキテクチャ、物理アーキテクチャが作成される。

f:id:GOLEM-XIV:20110303232109p:image

情報に関するビューポイントが独立していない点や、妥当性確認がビューポイントである点に少し違和感があるけれども、かなりシンプルで理解しやすい。非常に実践的だと思う。

まとめ

世の中では、実証済みのアーキテクチャ・フレームワークがたくさんある。いきなり自己流でアーキテクチャ設計をするよりも、まずは世の中にどんなフレームワークがあるかを調査してみること。

アーキテクチャを検討する際のポイントは「対象のアーキテクチャを網羅的に把握するためには、最低限どの観点が必要か」ということだと思う。必要となる観点はプロジェクトごとに異なる。適切と思われるフレームワークをベースにして、テーラリングすると効率も良いし、ある程度品質も担保しやすい。

個人的には、ElesとCrippsのフレームワークがお勧め。まあ、彼らがIBMerであり、僕が受けてきた研修の考え方ともほぼ一致しているからかもしれないけれど…

参考

http://en.wikipedia.org/wiki/4%2B1_Architectural_View_Model

http://www.ipa.go.jp/jinzai/itss/activity/ITA/2006/ITA_MMS_guide2006.pdf

http://www.viewpoints-and-perspectives.info/index.php?page=home

*1:このような図は、上位マネジメントへの説明などでは役立つこともある。

*2:当然ながら、今回挙げた以外ものも沢山あります。

*3:出典:http://en.wikipedia.org/wiki/File:4%2B1_Architectural_View_Model.jpg

*4:出典:http://en.wikipedia.org/wiki/Zachman_Framework

One Comment

ビューポイントとビュー | Golem XIV にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です