アーキテクチャの定義

アーキテクチャとは何かを的確に端的に表現するにはどんな言い回しがいいか。対象はシステムでもソフトウェアでも部分的な構成要素でもよい。一応、対象はシステムとしておく。いろいろと定義を探しては検討するのだが、ぴったりくるものがなかった。私は、次のように定義してみた。

アーキテクチャとは、システム全体の構造を定義するものであり、どのような要素に分割し、それら構成要素をどのように組織化するかという方式である。」

もう少し厳密には、「アーキテクチャ = 要素(element) + 形態(form) + 原理(rationale)」という表現を推奨する。要素とは、システムの構成要素とその仕様である。形態とは、要素間の関係や制約である。原理とは、システム全体に統一的に適用される原則や制約であり、言い換えると構成要素を組織化するための枠組みである。アーキテクチャは、この3段階で規定されていなければならない。すなわち、分割された構成要素を一定の形式で仕様化でき、要素間の関係を一定の形式で規定でき、それらがシステム全体として一定の枠組みに沿って組織化できるように定義されたものである。

ポイントは、一般にアーキテクチャパターンアーキテクチャスタイル)などとの連想から上記定義の原理の部分、組織化するための枠組みについてばかりに目が行きがちだが、要素自身をどう規定するか、要素間の関係をどう規定するかを含めて構造なのである。

分割しない場合はどうかという突っ込みには、システム全体も集合的には構成要素であると答えておく。