きしだのはてな このページをアンテナに追加 RSSフィード

2013-03-22(金) ソフトウェア工学は失敗している

ソフトウェア工学は失敗している 01:24 ソフトウェア工学は失敗しているを含むブックマーク

特に学術的にソフトウェア工学に触れたことはないのですが、むしろそうではなく現場にいる身としては、ソフトウェア工学は失敗しているように見えます。

「成功していない」ように見えるのではなく「失敗している」ように見えるのです。


もちろん、いまソフトウェア開発で使う技法やツールなど、ソフトウェア工学の産物はたくさんあり、現在のソフトウェア開発がソフトウェア工学から生まれたもので支えられていることには間違いありません。

でも、そうやって築き上げてきたものが、1999年以降ガラガラと崩れて、そしてうまく再構築できていないように見えます。

1999年、なにがあったかというと、XPエクストリーム・プログラミング入門という本が発行されたのです。リンク先は2版ですが、日本語版でも初版は2000年12月になっています。

ここからソフトウェア工学がガラガラ崩れた気がしています。


では、ここまでソフトウェア工学がどういう感じだったかというと、オブジェクト指向が大成功し、統一設計技法の前段階としてUMLができ、異機種通信としてCORBAが注目され、統一データ定義としてXMLが策定、開発プロセスとしてCMMに期待が集まっていたという時期でした。

しかし、結局統一設計手法は完成せず、UMLだけが残りました。実際に使われているのはその一部です。CORBAも普及せず、WebプロトコルにあわせてSOAPが出てきたものの、結局単純なRESTが定着しました。XMLはいまは毛嫌いされています。大成功したはずのオブジェクト指向も、Webアプリではうまく適用できませんでした。

そしてCMMもいま特に話題になることもありません。

また、動的型付言語の普及も、ソフトウェア工学離れのひとつであると言う事ができるかもしれません。

さまざまな技術とともに、ソフトウェア工学は前世紀の遺物になってしまった感があります。


ここで、やはりCMMの失敗がソフトウェア工学にとっての痛手だったように見えます。

もちろん、プロセスを規定することが難しいということは当時からも言われていました。それであるから、CMMはプロセスそのものを規定するのではなく、プロセスの規定方法を規定するというメタプロセスになっていたのです。

そして、すべての組織で同じプロセスを採用することはできないということから、5段階のレベルを設けました。また、プロセスは変化し続けなければいけないということから、CMM成熟度レベル5では「最適化している」という成熟度になっていました。

これはなかなかいいかもしれないということで、期待は大きかったと思います。


でも、とにかく運用が大変だとか、CMM成熟度レベル5でも品質がいいわけじゃないとか、そういう話がきこえてくるようになりました。

そこにXPですよ。アジャイルですよ。

もともとソフトウェア工学に対しては「がっこーで現場しらない人が研究してる手法なんて使えない」のような声があったのですが、XPやアジャイルによって「現場から生まれた手法のほうが使えるよねー」というのが決定的になりました。


ソフトウェア工学が何を失敗しているかというと、その学問自体の認知度が低すぎることです。

ソフトウェア工学がどのような問題を扱う学問かが知られていない。どのような問題を扱う学問か知られていないので、その問題に直面している人がソフトウェア工学の成果を積極的には利用できない。

就職活動で「半年でプログラムは覚えれるし専門は必要ない」のようなことを言われるという話があります。たしかにアルゴリズムなど実装技術の研究をしていた人をSIの開発現場で生かすのは難しいと思います。でも、ソフトウェア工学の専門知識は、半年で覚えれるものではないし、SIでの開発現場に必要になるはずです。


ソフトウェア開発がある限り、ソフトウェア工学は必要なので、XP・アジャイルを織り込んで再構築して、認知度を高めていってほしいなーと思います。再構築とかは他力本願になってしまうけど。


ソフトウェア工学が扱う範囲や内容については、東大のこのPDFが参考になると思います。

ソフトウェア工学 東京大学大学院総合文化研究科 玉井哲雄


書籍としては、この本がよくまとまっていますが、現代版が欲しいところ。


※ 追記(2013/6/21) なんか参考になるインタビューが。 電気通信大学:西 康晴 先生インタビュー:第2回:日本のテストの現場への提言 | 豆蔵ソフト工学ラボ

通りすがり通りすがり 2013/03/23 13:32 一理あるように思えますが、悲観的すぎです…
それぞれの手法が淘汰されて、少しずつ良いところ取りで現場では使われていますし
Webアプリの制作にも何度も紹介されている手法で開発し、成功を収めています。
学問レベルになると取っつきにくいでしょうが、ソフトウェア工学の一部が
一般的に普及していると思いますし、ソフトウェア工学すべてを知っていないと
開発が出来ない、くらいに書かれるのは現場レベルをもっと見ていない証拠ではないか
と、批判的な意見を書かせていただきます。

ネットで学ぶソフトウェア工学ネットで学ぶソフトウェア工学 2013/03/23 22:40 ソフトウェア工学って、ソフト開発全般に対する言葉で、それが成功してるかどうかは、いろんな種類のソフトや現場があるなかで、判断は難しいところですね。
たとえば、
>オブジェクト指向が大成功し
現場によっては普及してないし、必ずしも正しいというには躊躇してしまいます。
>CMM成熟度レベル5でも品質がいいわけじゃない
これは賛成したいところですが、
>ソフトウェア工学が何を失敗しているかというと、その学問自体の認知度が低すぎることです。
ソフトウェア工学の成功、失敗は、現場に役に立っているか、ということであれば、投資対効果は別にしても、役に立っているので、必ずしも失敗って言っちゃうのは、ちょっと乱暴な気がします、というマジレスしてしまった

Daisuke HirataDaisuke Hirata 2013/03/25 10:37 CMMの解決策としてアジャイルが出てきたという点になるほどと思いました。
しかし異なる見方として、私が今読んでいる本「Engineering Long-Lasting Software」では、アジャイルな開発手法が向いていない領域として、例えばNASAでの開発を挙げられ、ここでは従来型のアジャイル(素早い)ではない手法が有効であるとしており、確かにそうだと思いました。衛生が落ちたら困ります。
本ではアジャイルが向いているかどうかの質問として、以下でNoが多ければアジャイル、
Yesが多ければPlan and Documentだとしていました。
1. Is specification required?
2. Are customers unavailable?
3. Is the system to be build large?
4. Is the system to be build complex?
5. Will it have a long product lifetime?
6. Are you using poor software tools?
7. Is the project team geographically distributed?
8. Is team part of a documentation-oriented culture?
9. Does the team have poor programming skills?
10. Is the system to be built subjuect to regulation?

昨今のSaaSはアジャイルにむいていますが、CMMがうまく行く開発も当然あるということだと思います。
また10の質問が正しいかどうかは、議論の余地がありとは思っています。

ヒコヒコ 2016/03/24 02:41 ん・・? コメント欄をみて。
「通りすがり」さんが書かれていることが、すこし 的外れな気がしますね。 こういった反応を引き寄せた、というのはなんにせよいい記事である、と私はおもいました。