『人月の神話−狼人間を撃つ銀の弾はない−』

Brooks, Frederick P. Jr. The Mythical man-month: essays on software engineering Anniversary Edition, Addison-Wesley Publishing Company, Inc., 1995.(邦訳:滝沢徹・牧野祐子・富澤昇『人月の神話−狼人間を撃つ銀の弾はない−』アジソン・ウェスレイ・パブリッシャーズ・ジャパン,1996年.)

【要約】
ハードウェア開発の生産性とソフトウェア開発のそれを比較した場合、ハードウェア開発の生産性は20年間で少なくとも1000倍になっている。しかし、ソフトウェア開発の生産性はこの20年間でそれほど上がっていない。なぜなら、ソフトウェア開発はハードウェアのそれと比べて歴史が浅く、開発に関係する大量で複雑な情報を制御する方法が未熟だからである。したがって、ソフトウェア開発の生産性を上げるためにはソフトウェアがもつ複雑な情報を制御する必要がある。
複雑性制御のためには、まず利用者にとっての使いやすいコンセプトの統一性のとれたソフトウェアの開発を行うべきである。
なぜなら、ソフトウェアのアーキテクチャ(利用者が知覚できる製品の定義)をインプリメンテーション(製品の実装部分の定義)から切り離すことで、利用者の代弁者であるアーキテクトの活動を促すことができるからである。利用者の代弁者の活動を促すことで、利用者にとって使いやすいコンセプトの完全性がとれたソフトウェア開発が可能になるのである。
次にソフトウェアの利用者の特性に関する明白な推測を書きだすことで、複雑性を抑えるべきである。
なぜなら、多数の利用者のためにソフトフェアに多数の機能を組み込むことができる状況においては、利用者という一人の頭脳からみたソフトウェアを開発する方がコンセプト上の統一が図れるからである。
また、ソフトウェアに少しずつ機能や装飾などをもたらす後継システムを追加することでソフトウェアの複雑性をコントロールすべきである。
なぜなら、基本的なソフトウェアに少しずつ機能を追加していくことで常に利用可能な実働システムが存在し、そのシステムのモジュールを書き換えることでシステム全体の複雑性を抑えながら、それを漸増的に育成していくことができるからである。
さらに、システムのモジュールコードを隠蔽することでソフトウェア開発の複雑性を制御すべきである。
なぜなら、自分が担当していないモジュールの内部を適切なインターフェースを使って隠蔽することで、ソフトウェア開発の複雑性を抑えることができるからである。

慶應義塾大学総合政策学部 川村真哉