Brooks Jr., Frederick P., "The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Addison-Wesley, 1975; 1995.(邦訳:滝沢徹・牧野祐子・富澤昇、『人月の神話−−狼人間を撃つ銀の弾はない』、アジソン・ウェスレイ・パブリッシャーズ・ジャパン、1996年)
【要旨】本書は、往年の名機IBM360システムおよびOS/360の開発リーダーであったブルックスが、大規模ソフトウェア開発過程で遭遇したさまざまな困難を腑分けし、それとの格闘で掴み出した開発管理者のための実践的組織管理方法を説き明かしたものである。本書におけるブルックスの主張は、その後のコンピュータおよびソフトウェア技術の急速な発展によっても、大方、成り立つものといわれる。
本書の要点は2つある。タイトルにある「人月の神話」と「銀の弾などない」についての主張である。
「人月の神話」とは、本書が始めて指摘した、いわゆるブルックスの法則:「遅延したプロジェクトへの要員追加は、さらなる遅れをもたらす」をさすが、その意味はこうだ。コスト計算をもとにして組み立てられた見積り技術は、労力と進捗を混同している。人月は、間違った危険な神話である。というのも、人月とは「人」と「月」が相互に交換可能だということを意味しているからだ。つまり、単純にマンパワーをつぎ込むだけでは大規模なソフトウェアを作ることはできない。一人のプログラマが一月かかる仕事に二人のプログラマを投入すれば、二人の人間を管理・協調するなどの余計な手間が入るおかげで仕事の完成に二月かかる羽目になる。大規模なソフトウェア開発では時間が足りなくなってプログラミング以外のユーザビリティなどにかかわる部分が省略されてしまう。開発途中で仕様が頻繁に変わるし、バグがあっても不思議ではない。ソフトウェアは複雑になりすぎたのだ――。
さらにブルックスは、「優秀なプログラマは平均プログラマより1桁以上生産性が高い」、「外科チームのような少数精鋭チームが一番効率がよい」、「工数はプログラムの規模のべき乗になる」、「プログラマがプログラミングとテストに費やす工数は、全工数の半分以下に過ぎない」等の指摘を次々繰り出す。
「銀の弾などない」は、初版の後で書かれた論文の追加収録であるが、ここでソフトウェア構築の本質的困難性に言及し、ソフトウェア機能の概念上の複雑性に根源があるこの問題を解決する魔法の薬はない、この問題は人間側の問題なのに,技術的な解法では解決できない、と主張、「ソフトウェアの生産性において格段の向上を、ひとりでにもたらすようなプログラミング技法は今後10年間は登場しない」と予言している。この困難性に対する突破口(つまり銀の弾丸となりそうなもの)として、高水準言語 (複雑性の低減)、 タイムシェアリング (バッチ処理にはない即時性) 、統一プログラミング環境 (UNIX など)を取り上げ検討し、最近の、オブジェクト指向については、それへの期待が大きいもののすぐに効果の出るものではない、また、AI は既存の問題しか解けず、エキスパートシステムは経験を補う意味では有用かもしれないが決定打ではないと分析、結局、本質的な複雑性を排除できないと結論付けている。
著者は、最終章で、プロジェクトが成功するためには、ツールや技術的アプローチよりも参加者の質、組織形態とその管理の方がはるかに重要で意味があるとの考えを述べ、プロジェクトの技術的というよりも社会学的側面にスポットを当てている『ピープルウェア』における議論を紹介している。
【コメント】@ みずほ銀行のシステム統合における不具合の問題は、まさに「人月の神話」の最近におけるまごうことなき証明だ。本書(改増版)からでも10年、初版本から30年経つ現在においても、ブルックスの主張は相変わらず的を得ていることになる。
A とはいえ、冗長性のある、分散型システムのアーキテクチュアが広がってきている現在、大規模プログラミングそのものの需要は減少しつつあるかも知れない。また、その他、技術的アプローチの問題解決への試みが、この10年である程度進んでいる部分もあるかと思われるが、その点の検証が望まれる。
B 本書によって改めて、人工物系と人間系の融合方法あるいは接合方法についてのトータルな研究開発の必要性を痛感する。
織田勝也(2004/06/21)