1章ソフトウェアアーキテクチャ

開発者たちは、簡潔で必要十分なソフトウェアアーキテクチャの定義をつくることにずっと奮闘してきた。その範囲が大きく、絶えず変化しているからだ。Ralph Johnsonは、広く知られているように、ソフトウェアアーキテクチャのことを「(それが何であれ)重要なもの」と定義した。アーキテクトの仕事とは、(それが何であれ)重要なものを全て理解し、釣り合いを取ることだ。

アーキテクトが最初にやるべき仕事は、解決案のためにビジネスやドメインの要件を理解することだ。たしかに、これらの要件は問題を解決するためにソフトウェアを利用する動機ではある。しかし、突き詰めれば、これらはアーキテクトがアーキテクチャを作り上げる際に熟考すべき要素の一つにすぎない。アーキテクトは、他にも数多くの要素を考慮しなくてはならない。その中には明確なもの(パフォーマンスに関するSLAなど)もあれば、ビジネスの性質的に不明確なもの(会社が合併や買収に乗り出しているなど)もある。したがって、ソフトウェアアーキテクチャづくりには、あらゆる関心事が釣り合う解決策を探るためにビジネスやドメインの要求をその他の重要な要素と共に分析するという、アーキテクトの技能が欠かせない。ソフトウェアアーキテクチャのスコープは、図1-1に示す要素全ての組み合わせから形成される。

図1-1に示すように、ビジネスやドメインの要件は、(アーキテクトによって定義される)他のアーキテクチャ上の関心事とともに存在する。これには、ソフトウェアシステムを構築する際の「何を」や「どうやって」といった判断をひっくり返す可能性のある広範な外部要因が含まれる。それらの一部を抽出したものを表1-1に示す。

図1-1 アーキテクチャの全体像は要件と「~性」を包含する ...

Get 進化的アーキテクチャ ―絶え間ない変化を支える now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.