ソフトウェア開発を俯瞰する読書「ソフトウェア開発はなぜ難しいのか」

フレデリックブルックスの名著「人月の神話」を題材に、ソフトウェア特有の規模の問題、あるいはその複雑性が、人間世界と実世界、そしてコンピュータ世界という3つの世界で密接に絡み合っている実情が説明されている。そんな本質的な部分を見せつけられると、今更ながらソフトウェアとは実に厄介なものだと痛感せざるを得ない。ソフトウェア開発の現場を知らない人も、この本を読めば多少なりともその状況を理解できるのではないかと思う。

開発現場で無視されがちなソフトウェアエンジニアリングの知恵も、実は普通のソフトウェア開発者が作業を進める上では必要不可欠な存在のはずだ。

世の中には天才やスーパーハッカーが開発する優れたソフトウェアがありますし、ビジネスインパクトが大きいのも確かです。しかし、産業全体の観点から言うと、大部分の開発活動は、普通のエンジニアによって支えられています。数十人の人が集まったときに、全員が天才であることはほとんどありえません。従って、大衆技術としてのソフトウェアエンジニアリングを確立していかなくてはなりません。

もちろん、そんな普通の開発者が作業を進められるように、ソフトウェア開発を改善するための取り組みも果敢に行われてきた。書籍の中では、1970年代から始まった各種方法論が紹介され、同時にその成果や限界も示されている。例えば、ビル建築や船舶建造などの一般的なプロジェクトマネジメントの手法としてよく使われるWBSにも、自ずから限界がある。

段取り工学がうまく機能するのは、あからじめ手順が決まっている手順化されたサービス、繰り返される製造工程が対象です。不確実性や新規技術開発を伴うものに対してはそのままでは適用できません。
(中略)
プロジェクトのWBSを決定していく方法も、現状ではトップダウン型にならざるを得ません。よく分かっていない不明瞭なプロセスを分解することはできませんから、WBS主体のプロジェクトマネジメント手法は、それだけではうまくいかないのは自明です。

なぜ、プロセスが不明瞭なのか。それはソフトウェア特有の事情が絡んでいるからだ。

建築で言えば、とりあえず10階建てのビルを建ててみたら、お客様が10階建てのビルのでき映えを見て心変わりし、20階建てにしてくれと言うような状況です。開発したソフトウェアの実行が、周囲の認識を変えてしまうことを、あらかじめ織り込むことができるマネジメント手法というのは未だ出現していません。

「契約に含まれていないから」「要求仕様書に記載されていないから」と変更を突っぱねることは簡単だけど、仕様追加・変更という形で次々と出される項目に泣く泣く対処する羽目になった経験を持つ開発者は少なくないはずだ。ソフトウェアをどのような形にでも変えられるのは長所であり、また同時に短所でもあると思う。

気軽に読める割には内容が充実しており、ソフトウェア開発の変遷や全体像がよく分かる本だと思う。これからのあるべき姿として、アジャイルのような変化に適応するプロセス、抽象化・自動化・モジュール化と言った重要な観点も紹介されており参考になる。銀の弾丸は無いけれど、地道に対処することによって、それなりに上手くやる方法は見つけられると期待したい。

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)