Loading AI tools
ウィキペディアから
『人月の神話』(にんげつのしんわ、英: The Mythical Man-Month: Essays on Software Engineering)は、フレデリック・ブルックスが著したソフトウェア工学とソフトウェアプロジェクト管理の書籍である。
人月の神話 The Mythical Man-Month: Essays on Software Engineering | ||
---|---|---|
著者 | フレデリック・P・ブルックス Jr. | |
訳者 |
山内正弥 滝沢徹 牧野祐子 宮澤昇 | |
発行日 |
アメリカ合衆国 1975年、1995年 日本 1977年、1996年、2002年、2014年 | |
ジャンル |
ソフトウェア工学 ソフトウェアプロジェクト管理 | |
国 | アメリカ合衆国 | |
言語 | 英語 | |
形態 | 上製本 | |
ページ数 | 321(2002年版) | |
コード | ISBN 978-4-89471-665-0 | |
ウィキポータル コンピュータ | ||
|
ブルックスの考察は、自身がIBM で OS/360 というオペレーティングシステムの開発に携わったときの失敗に基づいている。 プロジェクト管理者がソフトウェアプロジェクト管理において、繰り返し何度もこのような誤りを犯すという傾向があるため、ブルックスは自分の本について、次のような皮肉を述べている。
この本は「ソフトウェア工学の聖書」と呼ばれている。なぜなら、誰もがこの本を読んでいるが、誰もこの本で述べていることを実践しないからである。
最初に刊行されたのは1975年である。1995年に20周年記念版として再刊された。20周年記念版では、『銀の弾などない——ソフトウェアエンジニアリングの本質と偶有的事項』という論文 (エッセイ) と著者による解説が、収められている。1977年に出版された日本語訳の書籍では『ソフトウェア開発の神話』という書名であった。1996年、2002年に出版された日本語訳の書籍では『人月の神話 狼人間を撃つ銀の弾はない』の書名であった(ISBN 978-4-89471-665-0)。
本書の表紙と第1章「タールの沼」には、タールの沼と複数の獣たちの絵が描かれている(参照: #問題の所在—表紙とタールの沼)。また本書の20周年記念版で、新たに追加された第16章「銀の弾などない」の扉には、狼人間の絵が描かれている。
2002年に出版された日本語訳の書籍より目次を記す。なお第16章から第19章は、二十周年記念版で新たに追加された章である (初版には無かった章である) 。
本書の表紙には、タールの沼と複数の獣たちの絵が描かれている。
太古の昔から、タールの沼に落ちた巨大な獣が死にもの狂いで岸に這い上がろうとしている光景ほど、鮮烈なものはない。恐竜やマンモス、それにサーベル・タイガーが、タールに捕らえられまいとしてもがく様が目に浮かぶ。激しくもがけばもがくほど、タールは一層絡みつき、どんなに力強い獣でも、また賢く器用な獣でも、ついには沈んでいってしまう。
大規模システムプログラム開発は、過去十年以上もの間そうしたタールの沼のようなものだった。そして、多くの強大な獣たちが、その中へ乱暴に突き落とされてきた。たいていは稼働システムを作り、這い上がってきたものの、目標とスケジュール、それに予算にかなったものはほとんどなかった。
規模の大小、また大量動員あるいは少数精鋭であろうとも、開発チームは次から次へとタールでがんじがらめになってしまう。問題を引き起こす原因は、一つだけではないように思われる。原因が一つだけなら、足のどれか一本くらいはタールから抜けるはずだ。だが、同時かつ相互に影響し合う要因が重なり合っているのなら、動きがどんどん遅くならざるをえない。この問題が執拗でやっかいなのは、誰にとっても驚異であり、その本質を理解することは困難である。しかし、問題を解決しようというならば、理解するように努めなくてはならない。 — フレデリック・P・ブルックス Jr.、滝沢徹、牧野祐子、宮澤昇、2002年、p.4
以下では、ブルックスが本書で述べている見解を説明する。
まず、ブルックスは、次のような問題を指摘する。
時間が足りなかったせいで失敗したプログラミング・プロジェクトは、その他のすべての原因で失敗したプログラミング・プロジェクトよりも多い。
そして、その原因は、「人月」という考え方を使って見積もりをしているからであるとする。ブルックスは、人月の問題点を次のように指摘している。
私たちが使っている見積もり手法は、コスト計算を中心に作られたものであり、労力と進捗を混同している。人月は、人を惑わす危険な神話である。なぜなら、人月は、人と月が置き換え可能であることを暗示しているからである。
つまり、人月を使ってスケジュールを見積もることで、その見積もりが失敗し、スケジュールが遅れてしまうのである。そういう事態に陥ってしまった場合、スケジュールの遅れを取り戻すために、プロジェクトの人員を増やすという対策が取られることが多い。しかし、それでは、火に油を注ぐことになってしまうとブルックスは主張する。彼は、それを「ブルックスの法則」と呼び、以下のように定義している。
ブルックスの法則:遅れているソフトウェア・プロジェクトに人員を投入しても、そのプロジェクトをさらに遅らせるだけである。
そして、ブルックスは、その法則が成り立つ理由を以下のように分析している。
ソフトウェア・プロジェクトに人員を追加すると、全体として必要となる労力が、次の3つの点で増加する。すなわち、再配置そのものに費やされる労力とそれによる作業の中断、新しい人員の教育、追加の相互連絡である。
したがって、人員を追加することで、遅れているプロジェクトに対処することはできない。そこで、ブルックスは、スケジュールが遅れているときには、
ことを提案している。ちなみに、ブルックスは、次のような目安で、スケジュールを運用している。
私の大まかなやり方は、スケジュールの1/3を設計に、1/6をコーディングに、1/4をコンポーネント・テストに、1/4をシステム・テストに割り当てるというものである。
外科手術チームでは、一人の外科医が指揮を執る。そして、その外科医は最も重要な作業を行う。一方、他のメンバーは、その外科医を補助したり、それほど重要ではない仕事をする。このやり方は、ソフトウェアプロジェクトにも活用できる。つまり、一人の「優秀な」プログラマが、重要なシステム・コンポーネントを開発し、他のメンバーが、そのプログラマに対して、必要なものを提供する。
ブルックスは、システム開発において、コンセプトを統合することの重要性を指摘する。
コンセプトが統合されたシステムは、より速く作り上げられるし、より速くテストできる。
そして、コンセプトを統合するためには、次のことが必要であると主張する。
基本設計と実装を分離することは、非常に大きなプロジェクトでコンセプトを統合するうえで、非常に強力な方法である(これは、小さなプロジェクトにおいても当てはまる)。
さらに、基本設計(アーキテクチャ)と実装を分離するためには、次のことが必要である。
コンセプトを統合するためには、設計は、一人の人間から、合意の取れている小さなグループへと進まなければならない。
つまり、システムの基本設計は、一人または少数のアーキテクトがするのである。したがって、誰かが「非常に気の利いた」考えを思いついたとしても、その考えがシステム全体の設計にうまく適合しないのであれば、却下される。
セカンドシステムは、人間が設計したものの中で、最も危険である。なぜなら、作り込みすぎてしまうというのが、一般的な傾向だからである。
ブルックスは、パイロットプラントという考え方を紹介する。
化学エンジニアは、プロセスを実験台から工場にそのまま持ち込まない。彼らは、規模を拡大し、保護されていない環境で操作するという経験を積むために、パイロット・プラントを作る。
そして、ブルックスは、その考え方をソフトウェア・プロジェクトでも活用するべきであると主張する。
この中間の手順は、プログラミング製品にも同じように必要である。しかし、ソフトウェア・エンジニアは、実際の製品の納品に着手する前に、規則として試作のシステムを実地テストにかけるということをいまだに行っていない。
ブルックスによると、最初に作られるシステムは、粗悪である。
多くのプロジェクトでは、最初に作られたシステムは、ほとんど使えない。なぜなら、遅すぎるし、大きすぎるし、使いにくいからである。これら3つがすべて揃っている場合もある。
ブルックスは、そこから次のように主張する。
使い捨てであるはずのファーストシステムをユーザに納品すれば、時間稼ぎにはなるだろう。しかし、結局は、ユーザを激しく苦しめ、再設計をしているときにシステムをサポートしている開発者をイライラさせ、製品の評判が取り返しのつかないほど悪くなるだけである。
そのため、次のようなことが起こる。
したがって、捨てるプランを立てるべきである。いずれにせよ、そうするだろう。
ファーストシステムが捨てられた後に開発されるシステムをセカンドシステムという。このセカンドシステムは、ファーストシステムより洗練されている。このセカンドシステムを製品として納品するべきである。
「プロジェクトは、どのようにして一年も遅れるようになるのか…一日ずつ」
チームは、できるだけたくさんの方法で、お互いに連絡を取るべきである。非公式には、いつものプロジェクト会議で、技術的なブリーフィングで、共有の公式プロジェクトワークブックで(そして、電子メールで)。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.