アーキテクチャとは何か、アーキテクティングとは何か。よく聞かれるので簡単に説明をしておきたいと思う。
もちろん、アーキテクチャとは、もとともは建築物のことを指すものである。しかしながら、現在では、CPUのアーキテクチャや製品のアーキテクチャなどの言葉があるとおり、より広く使われるものである。
アーキテクチャとは、“システムと外界(コンテクスト)との関係”及び“システムを構成する要素とその要素間の関係”のことを指す。
慶應SDMでも価値交換のアーキテクチャを表すために価値連鎖分析(CVCA:Customer Value Chain Analysis)や、欲求のアーキテクチャを表す欲求連鎖分析(WCA : Wants Chain Analysis)なども使ったりする。
アーキテクティングとは、アーキテクチャを設計する行為をさして呼ばれるものである。一般的にアーキテクティングを説明すると、大きく以下の2つのポイントが重要となる。
•複数の視点(viewpoint)からシステムを見て、それぞれの視点における要素と要素間の関係をデザインする
•デザイン結果として見えるもの(view)の重ねあわせ(Allocation)を実施する
これをISO/IEC/IEEE 42010 Systems and software engineering – Architecture descriptionでは、以下のように示している。
つまり、対象となるシステム(System of Interest)にはアーキテクチャが存在する。また、対象となるシステムにはステークホルダ(Stakeholder)が存在する。そのステークホルダには関心事(Concern)があり、その関心事に対応した視点(Viewpoint)を設定することができる。その視点から見えるもの(View)が複数存在し、視点と視点から見えるものを集めたものがシステムのアーキテクチャの表現(Architecture Description)である。
具体的には、以下のように考えることができる。一般的な技術システムでは、ステークホルダとして、利用者と開発者が考えられる。利用者としてはどのように使うのか、どのような機能を持っているのかといったことが気になる。一方で、開発者としてはどのように機能を実現するかがきになると考えられる。このため、どのように使われるかの視点(運用視点:Operational Viewpoint)での設計(Operational View)と、どのような機能をどのようなサブ機能で実現するかの視点(機能視点:Functional Viewpoint)での設計(Functional View)と、どのようにサブ機能をハードウェアやソフトウェアで実現するかの視点(物理視点:Physical Viewpoint)での設計(Physical View)で考える。運用をどのような機能要素で実現し、機能要素をどのような物理要素で実現するかを重ねあわせによって決定する。これが一般的な技術システムにおけるアーキテクチャ設計である。同様なことを、組織の設計では、役割(役割視点)と組織(組織視点)で設計するなどによって実現できる。
System Architectureに関する名著としては、"the art of systems architecting"がある。この本では、ArchitectingはEngineeringよりもよりArt側の側面が強く、Science側の側面が弱いといっている。
実際、Architectingでは、解空間が広く、自由度が高いために、いわゆるセンスのようなものによるところが大きい。(もちろん、このセンスはある程度、後天的に身につけることが可能である)
System of SystemのArchitectureとなると、これまたいろいろな難しさがでてくるのであるが・・・・・
System of SystemのArchitectureとなると、これまたいろいろな難しさがでてくるのであるが・・・・・