人月の神話
「概念上の統合性は、システム設計における最重要事項である」。 "Conceptual integrity is the most important consideration in system design."
コンセプトを統合するためには、設計は、一人の人間から、合意の取れている小さなグループへと進まなければならない。 To achieve conceptual integrity, a design must proceed from one mind or a small group of agreeing minds.
「基本設計と実装を分離することは、非常に大きなプロジェクトでコンセプトを統合するうえで、非常に強力な方法である」(これは、小さなプロジェクトにおいても当てはまる)。 "Separation of architectural effort from implementation is a very powerful way of getting conceptual integration on very large projects." [Small ones, too.]
コンセプトが統合されたシステムは、より早く作り上げられるし、より早くテストできる。 A conceptually integrated system is faster to build and to test.
ブルックスは、システム開発において、コンセプトを統合することの重要性を指摘する。
コンセプトが統合されたシステムは、より速く作り上げられるし、より速くテストできる。
そして、コンセプトを統合するためには、次のことが必要であると主張する。
基本設計と実装を分離することは、非常に大きなプロジェクトでコンセプトを統合するうえで、非常に強力な方法である(これは、小さなプロジェクトにおいても当てはまる)。
さらに、基本設計(アーキテクチャ)と実装を分離するためには、次のことが必要である。
コンセプトを統合するためには、設計は、一人の人間から、合意の取れている小さなグループへと進まなければならない。
つまり、システムの基本設計は、一人または少数のアーキテクトがするのである。したがって、誰かが「非常に気の利いた」考えを思いついたとしても、その考えがシステム全体の設計にうまく適合しないのであれば、却下される。
プログラマは、それぞれ個別のツールを使うべきではない。プロジェクトでは、指定されたツールを作る担当者を決めておくべきである。ツール作成担当者は、プロジェクトチームが行っている仕事のために、高度にカスタマイズされたツールを作成する。たとえば、仕様を基にしてコードを生成するコードジェネレータを作るなどである。また、システム全体で使われるツールは、共通ツールチームで開発するべきである。なお、共通ツールチームは、プロジェクトマネージャの監督下におかれる。