マイケル.A.クスマノの「ソフトウエア企業の競争戦略」という本の中で紹介されている、1968年(!)に発表された「ソフトウェア工学の諸問題に関するNATO報告書」の内容を知って絶望したことについて。
ちなみに、「ソフトウェア工学」という言葉そのものも、ほぼこのあたりが発祥らしい。つまり、これから紹介する諸問題は「ソフトウェア工学」のはじめからあったということ。
たぶん原典はhttp://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDFだけどちゃんと読んではいない。
ソフトウェア工学の諸問題に関するNATO報告書(1968年)
- 顧客と設計者側のシステム要件に対する理解の欠如
- 見積もり技術の未熟さが原因の、経費および時間に関する大きな予実差異、要件変更に対応する期間延長の不履行、および作業分割の内容が十分に理解されないうちに実施され、その結果適切な作業実施が不可能となるような、プログラミング作業の小ブロックへの分割
- 1つの調査だけでも26対1もあった、プログラマーの生産性レベルの大きなばらつき
- 設計に関する判断が、製造(コーディング)時にもなお発生していることに起因する、設計とコーディング間の作業分担の困難性
- 「プログラムの構築は、組み立て作業の各工程を完了したうえで次の段階に進むというような、単純な段階的作業とは限らない」がゆえの、ソフトウェア・プロジェクトの監視の困難性
- ソフトウェア・システムの急激な規模拡大
- 同一プロジェクトで作業するグループ間のコミュニケーション不測、および整理されていない情報や不必要な情報の氾濫、ならびに必要な情報を処理するシステムの欠如によるかかる状況の悪化
- オンラインによる製造管理ツールの開発にかかる多額の費用
- プログラマーおよびシステム性能の主要能力測定の困難性
- 「実用的な用途のために」システムを書くことをせずに、新しいシステム、より改良されたシステムを書こうとしてしまうプログラム開発者の習性。プログラム開発者は、そのため1つのプロジェクトのなかで研究、開発、製造を渾然一体化させてしまい、予測や管理を難しくさせている
- プログラマーに対する需要の急激な増加と、適切に教育を受けたスキルある人材の不足
- 大規模ソフトウェア・システム内での(エラーの数と許容誤差を抑えるという意味での)十分な信頼性確保の困難性
- ソフトウェアのハードウェアに対する依存性の高さ。その結果、異なったハードウェア上で機能するソフトウェアの標準化を困難にさせている
- 新プログラムの作成に役立つような、再利用可能なソフトウェア・コンポーネント資産の欠如
- 時として当初のシステム開発コストを超えてしまう、ソフトウェアのメンテナンス費用
これを読んで皆さんはどう思うだろうか。そう、これらの問題はまるで昨日聞いたあのプロジェクトのものである。なんていうことだ!変っていないじゃないか!
なんと我々は40年以上も進歩せずに来てしまったのだろうか、というのが、現代のソフトウェアエンジニアの端くれとしての感想。そして、これからの数十年もこれらの諸問題を解決することなく歩んで行かなければいけないのだとしたら、なんと呪われた職業なのだろうか、と考える。
もちろん、「自分の仕事を憎むには、人生はあまりにも短い(ジョエル・スポルスキ)」わけだが。