
まえがきより

アジャイル開発は、めまぐるしく変化する仕様要求にさらされながらも、迅速にソフトウェアを開発する能力を与えてくれる。こうしたアジャイル性(俊敏性)を達成するためには、規律とフィードバックを与えてくれるプラクティス(実践法)が必要だ。また、柔軟性と保守性を兼ね備えた設計を実現するための基本原則や、そうした原則をバランスよく利用するためのデザインパターンを理解している必要がある。本書は、この3 つのコンセプト(原則・デザインパターン・プラクティス)をすべて縫い合わせ、1 つにまとめようという試みである。
本書では、原則、デザインパターン、プラクティスを示し、それらが実際にどのように利用されるのかをたくさんのケーススタディを通して説明する。もっと重要なことは、これらのケーススタディの解答を天下り的に示さず、むしろ設計過程を進行形で示したことである。したがって、あなたは設計者がミスを犯す様子を目撃することになる。設計者がそのミスをどのように特定し、また実際にどのように修正するのかを観察して欲しい。そこでは、設計者がどのように難問に挑み、仕様書の曖昧さや現実とのトレードオフとどのように格闘するのかを見ることになるだろう。つまり、設計という行為そのものを見ることになるのだ。
本書の構成 この本は下記に示す6 つの主な部と付録から構成されている

● 第1 部:アジャイル開発― この部ではアジャイル開発のコンセプトを説明。まずアジャイルソフトウェア開発宣言から始まり、エクストリームプログラミング(XP)の概要を説明してから、特に設計やコードの記述にインパクトがあるXP プラクティスの説明に的を絞った小さなケーススタディを数多く紹介。
● 第2 部:アジャイル設計― この部に属する章では、オブジェクト指向ソフトウェア設計について取り扱っている。最初の章では「設計とは何か?」という疑問を投げかけソフトウェア開発の複雑さを管理する際の問題点やテクニックについて議論。最後にオブジェクト指向設計の原則を紹介するところで頂点に達する。
● 第3 部:給与システムのケーススタディ― この部はこの本で最も大きな部分を占め、もっとも完全なケーススタディとなっている。給与システムのオブジェクト指向設計とC++ による実装を行う。最初に複数の章を割いて、このケーススタディで利用するデザインパターンを説明している。ケーススタディそのものについては、最後の2 つの章にまとめられている。
● 第4 部:給与システムのパッケージング― この部はオブジェクト指向パッケージ設計の原則について解説し、第3 部で登場したクラスを段階的にパッケージングしていく過程を通してこれらの原則の有効性を例証している。
● 第5 部:気象観測ステーションのケーススタディ―この部はもともとBooch の本のために書き下ろされたケーススタディである。このケーススタディでは、ビジネス上の重大な決定を下した会社の状況を説明し、Java 開発チームがその決定に対処していく様子を追う。他の部と同様にまずここで利用するデザインパターンを説明する。最後にステーションの設計と実装をするところで頂点に達する。
● 第6 部: ETS のケーススタディ― この部は著者が実際に取り組んだプロジェクトを例として取り上げている。このプロジェクトによって開発されたシステムは1999 年からずっと現在も稼働し続けている。これは自動化されたテストシステムであり、建築士登録委員全国協議会(NCARB)が主催する建築士試験を実施し採点することができる。
● UML 表記法に関する付録― 付録A とB にはUML の表記法を説明するために使った2 つのケーススタディが含まれている。
● その他の付録
多くのコードを掲載

この本にはたくさんのJava、C++ のコードが含まれている。コードをじっくり読んで欲しい。ある意味、本書のポイントはコードそのものにあると言っていい。
この本の論点を具現化しているのはコードなのだ。
本書の進め方は特定のパターンに従っている。まず、さまざまな大きさのケーススタディが用意されており、非常に小さいものからいくつかの章に渡って説明されているものまである。
具体的なケーススタディで追体験

本書では、原則、デザインパターン、プラクティスを示し、それらが実際にどのように利用されるのかをたくさんのケーススタディを通して説明する。もっと重要なことは、これらのケーススタディの解答を天下り的に示さず、むしろ設計過程を進行形で示したことである。したがって、あなたは設計者がミスを犯す様子を目撃することになる。設計者がそのミスをどのように特定し、また実際にどのように修正するのかを観察して欲しい。そこでは、設計者がどのように難問に挑み、仕様書の曖昧さや現実とのトレードオフとどのように格闘するのかを見ることになるだろう。つまり、設計という行為そのものを見ることになるのだ。
結論

各章の最後に「結論」で、その章のまとめを掲載。また章末ごとに参考文献を掲載しているので、出典が明確となっている