July 09, 2014

ソフトウエア開発55の真実と10のウソ

キーワード:
 ロバート・L・グラス、ソフトウェア、研究、真実、ウソ、銀の弾丸
ソフトウェア開発における真実が55、ウソが10個示されている本。本書の内容が大まかにわかる目次が出版社のページにあったので、そちらを参照。著者は企業に所属する技術者、または大学での研究者としてソフトウェア工学の世界に45年以上(本書出版は2002年なので、現在では60年近く!?)携わってきており、書籍を25冊、論文を75本書いているようだ。そんな著者によって、ソフトウェア開発における一般的に知られている真実、またはまったく知られていない真実、そしてウソを各種文献、論文をもとに列挙している本となる。

各種の真実、ウソの構成として、最初に概要を述べ、次にその反論を示している。最後に真実の情報源が論文や各種文献として示されている。

本書は以下の本で、『初級』レベルより上に進むために開発者が読むべき本として取り上げられていたので、読んでみた。CODE COMPLETEにもつながる内容が多く示されていたなと思う。

さて、前述のリンク先の目次をざっと眺めてみると、聞いたことがある、経験則的にわかっているというものも多いと思う。例えば、『真実3:遅れているプロジェクトに人を追加すると、もっと遅れる。』は、ソフトウェア工学をちゃんと勉強した人なら当然知っている、ブルックスの法則だね。本書に示されているように、この真実を根本から否定する人はほとんどいないとある。まぁ、そうだよねと。人員投下で何とかなったためしがない。表面上スケジュールに間に合ったとしても、コスト面では赤字になったりとかね・・・・。

そして次は『真実8:プロジェクトが大失敗する原因には二つある。一つは見積もりミスだ』を見てみよう。本書によれば、見積もりの大部分は非現実的で単なる希望に過ぎず、21世紀になっても、適切な見積もり手段がないと示さされている。これはもう自分のタスクでも正確に見積もるのが難しいと実感するのに、大規模見積もりとなると、不正確にならざるを得ない。あとは、競争入札で勝つために無謀な見積もりになっていたり・・・。さらには、見積もり手法としてファンクションポイント法や他の開発プロジェクトを参考にするというのがまったく有効でないということもいろいろと示されていて、そうだよねとうなずくばかり。

さらに『真実10:見積もりは、上層部かマーケティングが実施する場合がほとんどだ。実際にプログラムを開発したり、開発プロジェクトの直接のマネジャが見積もることはない。結局、適切な人が見積もっていないのだ。』はみんな実感しているだろう。やっぱりプログラミングや開発経験のない人が提案して全体の開発スケジュールを決めるのはダメだよね。そんでいざPJTが開始になって、デスマーチ確実で下っ端は死ぬ!!!!wwということになりかねない。

保守のカテゴリでは『真実41:保守には、ソフトウエアのコストの40〜80%(平均60%)がかかる。従って、ソフトウエア・ライフサイクルの最重要フェーズである』とある。これは、ソフトウェア技術者がよく忘れる真実の代表として挙げられている。なので、ソフトウェアサイクルで最も重要なフェーズとして示されている。

そして、『真実45:優れたソフトウエア・エンジニアリングに沿ってプログラムを開発すると、保守は減らず、かえって増える』は、最大級の意外性で、これはどういうことだってばよ!?wとなった。その部分の理由を以下に引用。
新技法で開発したシステムは、何度も変更を繰り返すため、保守期間が長くなる。このシステムは、構造がきれいなのでエンハンスが容易であり、それゆえ、何度も変更を繰り返すのだ。
(pp.199)
保守というのは、『問題』として扱うのではなく、すでに出来上がったソフトウェアの改善に導く『解法』であるという考えにつながるようだ(真実43 保守は解法であり、問題ではない。)。

また、真実21に関して、著者が本書でこれだけは覚えておいてほしいという部分があるので、そこを引用しておこう。
この本を読んで、すべて忘れてもよいが、次のことだけは、覚えていてほしい。「対象となる問題の複雑度が25%増加するたびに、ソフトウェアによる解法の複雑度は100%上昇する」。また、この問題を一挙に解決する「銀の弾丸」はないことも、記憶してほしい。ソフトウェアが複雑なのは、ソフトウェアの性格なのである。
(pp.98-99)
そして、さらに、真実31(ソフトウエア開発のライフサイクルで、不良除去に最も時間がかかる。)に関して、以下の部分も引用しておこう。
この真実は、本書で繰り返し述べている「圧倒的な真実」、すなわち、「ソフトウェアを開発することは、きわめて難しく、エラーが入り込みやすい」ということの一部である。希望や革新的技術や銀の弾丸では、この真実を変えられない。
(pp.147)
本書を読めば読むほど(そして自分の過去の経験からも)、『どんなに頑張ってもあなたはバグのない完璧なソフトウェアを作り上げることはできない』という絶望にまみれた真実を突きつけられるのであった!!(なんかもう転職して職業を根本から変えたくなってくるね!!w('A`))

2,3ページで1つのトピックなので割と読みやすい。自分の経験則と照らし合わせて、あるある!!と共感する部分も多いし、はて、それは本当に正しいと言えるのだろうか!?と思うものもある。本書の知識を実際の現場で有効活用できればいいのだけどね。

本書はすでに絶版になっているようだ。もしかしたら大型書店で売れ残っているかもしれない。ソフトウェア開発、システム開発の仕事をしている人、ソフトウェア工学を学ぶ学生、そして研究者の人も中古でもいいから買って読んでおいて損はない。



ソフトウエア開発 55の真実と10のウソ
ロバート・L・グラス
日経BP出版センター
2004-04-08

読むべき人:
  • ソフトウェア開発者の人
  • ソフトウェア工学を研究している人
  • 完璧主義者の開発者の人
Amazon.co.jpで『ロバート・L・グラス』の他の本を見る

bana1 ソフトウェア開発クリック☆  にほんブログ村 本ブログへ



トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星