マーチン・ファウラーによる序文
ソフトウェア産業は長い間、アーキテクチャはコードを書き始める前までに完成させるべきものである、という考えに従ってきた。建設業界に倣って、開発中に変更の必要がないことが、優れたソフトウェアアーキテクチャの証であると捉えられてきた。これは、アーキテクチャの刷新によって生じる作り直しに高いコストがかかることへの当然の反応でもあった。
こうしたアーキテクチャの捉え方は、アジャイルなソフトウェア開発方法論の台頭によって激しく挑まれることとなった。事前に計画するというアーキテクチャに対するアプローチは、要件もコーディングが始まる前に決定されるべきという考えに基づくもので、要件にアーキテクチャが続き、それに製造(プログラミング)が続くという、段階的な(あるいはウォーターフォール型の)アプローチへとつながった。しかし、アジャイルな世界は、要件を事前に決定するというこの固定観念へと挑んだ。要件が定常的に変化するのは現代のビジネス上不可欠なことであると理解して、管理された変化を受け入れるプロジェクト計画手法を供給した。
この新しいアジャイルな世界では、多くの人がアーキテクチャの役割に疑問を抱いた。実際、アーキテクチャを事前に計画するというアプローチは、現代のダイナミズムには適合できていなかった。一方、アーキテクチャへの取り組みには別のアプローチもあった。アジャイルなやり方で変化を受け入れるアプローチだ。この観点から考えると、アーキテクチャとは、絶え間ない懸命な取り組みの1つと言える。プログラミングと緊密に連携し、変化する要件に対応するだけでなく、プログラミングがもたらすフィードバックにも対応できるようにする取り組みだ。変化が予測できない中でもアーキテクチャは良い方向に進むことができるということを強調するため、我々はこうしたアーキテクチャを「進化的アーキテクチャ( ...