Brooks Jr., Frederick P., "The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Addison-Wesley, 1975; 1995.(邦訳:滝沢徹・牧野祐子・富澤昇、『人月の神話−−狼人間を撃つ銀の弾はない(新装版)』、ピアソン・エデュケーション、2002年).
[要約]
コンセプトの完全性の実現
筆者は,プログラミングシステムのデザインにとって最も重要な考慮点はコンセプトの完全性(デザインの統一性)であるとする。コンセプトの完全性にとっては,デザインが1人または互いに意見が同じで共鳴している極少数の頭脳から考え出される必要があるが,これはスケジュール圧力に阻まれるとし,このジレンマの解決法として,1)アーキテクチャとインプリメンテーション間での作業区分,2)外科手術チームのようなプログラミングインプリメンテーションチームを編成する手法の採用をあげている。ここでは「貴族政治対民主政治」ということばを用いて,コンセプトコントロールの役割としての「貴族政治」,創造的作業がアーキテクト(エリート・貴族階級)だけに偏らない点,アーキテクチャの外部規定が実現グループの創造性を拘束するのではなく高める点,について言及している。
次に,アーキテクトの決定内容の伝達について,IBMシステム/360ハードウェアの開発時における実践事例を基に,マニュアル,形式的定義,ミーティング,複数のインプリメンテーション,電話の記録の果たす役割について説明している。さらに,バベルの塔を例に引き,その失敗の要因をコミュニケーションとそこから生まれる組織の2点の欠落とし,大規模プログラム開発においてコミュニケーションをはかる方法として,1)共通の解釈を非公式な方法,2)ミーティング,3)手引き書を挙げている。
最後に製品のコンセンプトの完全性について,トップダウンが複雑なプログラムシステムデザインにも適用できるとし,アーキテクチャ,インプリメンテーション,実現のそれぞれがトップダウン方式でうまくいくと述べられている。優れたトップダウンのデザインは,1)モジュールの要件や機能を厳密に記述できる,2)モジュールの分割・独立によりシステムバグを回避できる,3)詳細に立ち入らないことで構造上の欠陥を明確にする,4)テストの早期実施と各ステップで対応する詳細レベルに集中できる,としている。
銀の弾などない
狼人間(ソフトウェアプロジェクト)を,魔法のように鎮めることができる銀の弾(特効薬)は見あたらない。筆者は,ソフトウェアの困難を本質的なもの(ソフトウェアの性質に固有な困難)と偶有的なもの(実現するとき派生するが本来備わっているものではない困難)に区別し,前者について,固有の性質として複雑性,同調性,可変性,不可視性をあげている。これらは、概念構造体を作るうえでの固有の難しさである。複雑性から生じる問題として,コミュニケーションの欠陥のほか,管理上の複雑性により概観が困難になることでコンセプトの完全性が妨げられる点について指摘している。このほか不可視性では,実体は本質的に空間に埋め込めない点を指摘し,「銀の弾」として期待されるビジュアルプログラミングの限界について言及している。
[コメント]
筆者は、コンセプトの中身ではなく、その「統一性」をして完全性と呼んでいる。多数の人間の間でコンセプトを共有するには,トップダウンとコミュニケーションが必要となるという視点は臨場感に溢れている。技術革新の意義は、民主主義によるコンセプトの再構築にも大きくあるように感じる。
(以上、2004年6月21日 坂井 健太郎)