ソフトウェア工学の祖の一人である、トム・デマルコが、最近IEEE Software 誌に、過去のソフトウェア・メトリクス賛美を悔い改める記事を書いている。

「ソフトウェア工学」というコンセプト－その時が来た、そして、その時は去った。http://www2.computer.org/portal/web/computingnow/0709/whatsnew/software-r

1982年に、デマルコは有名な「計測できないものは制御できない」という一文から始まる、『品質と生産性を重視したソフトウェア開発プロジェクト技法』という名著を書いている。このドグマは、ソフトウェア工学の考え方に強く根ざしている。むしろ、すべての「工学」という活動は、科学や経験から得た知見を使って自然現象をコントロールし、人間の役に立てることをその定義としており、そこでは測定を元にしたコントロールという概念はその中核にあるものだ。だから、「計測による制御」という概念を疑うことは、「ソフトウェア工学」というものの存在、あるいは、意味を大きく問う問題でもある。

では、計測しないで制御する、という方法があるというのだろうか？

この記事のなかで、例えば、GoogleEarch や Wikipedia といったソフトウェアが、果たして計測と制御という管理で作られただろうか、と問うている。そして、２つの種類のプロジェクトを例にし、

Project A: 100万ドルのコストを使って 110 万ドルの価値を作る。

Project B: 100万ドルのコストを使って 5,000 万ドル以上の価値を作る。

「計測と制御」は、Project A の世界では有効だが、Project B の世界ではほとんど意味をなさない、と指摘している。これは、

ソフトウェア開発という活動には「計測と制御」よりもっと大切なことが多く含まれており、その中では、「工学」の概念は「ポイントを外している」

ということだ。

デマルコは、冒頭に上げた本を書いた自分を「若かったころ」という言い方をして、メトリクス賛美を実際に悔いているように思われる。

ちょっと衝撃的な記事だが、実際には、「ソフトウェア工学は誤りだった」、というよりも、「ポイントを外しつつある」というのが正しい。ソフトウェア開発にもっとも大切なのは、そこには無かったのだ。現実のソフトウェア開発は、「計測と制御」で語れる部分の「外側」に徐々にフォーカスを移動しつつある。

デマルコの最後の結論の部分を引用する。

Software development is and always will be somewhat experimental.

The actual software construction isn’t necessarily experimental, but its conception

is. And this is where our focus ought to be. It’s where our focus always ought

to have been. ソフトウェア開発は、いつも、ある種「実験的」である。現実のソフトウェア構築は必ずしも実験ではないが、概念的にはその要素を含む。そして、それこそ我々が焦点をあてるべきところであり、ずっと焦点をあてるべきところであったのだ。