ソフトウェア開発201の鉄則: 原理19:一般:どんな複雑な問題にも解決策がある、と思うのは誤り

要旨

* ソフトウェアの分野には、魔法のようにすぐに役立つ解決策は、存在しない
* なので、「これこれさえやれば、品質が上がりますよ」という謳い文句は、まず疑ってかかれ

解説

原理の文言だけ見ると、誤解しやすい。原文の英語も同様。

ソフトウェアは、解決策が全く存在しないほど複雑になり得る。

と言っているのでは、ない。

どんな場面でも、どんな複雑な問題に対しても解決できる「唯一の」「定型化された」方法はありませんよ。

というのが趣旨。

ソフトウェアの世界でよく言われる「銀の弾丸は存在しない」という話。

ソフトウェアの進化は、複雑さに対する解決策の発明・提案の繰り返し、ということができる。マシン語に変わって高級言語、オブジェクト指向、AI、コンピューティングパワーの増大。

これらは、確かに一時の複雑さを解決し、コトが簡単になってソフトウェアに大きな進化をもたらしたソリューションだが、「なんでも解決できた」わけでは、決してない。

新たな問題が生まれたものもある。それに何より、たまたま直面した複雑さに起因する問題を解決したに過ぎず、ソフトウェアが持つ本質的な問題を解決したわけでは、ない。

「偶有性」という言葉をご存知だろうか。「偶然の出会い」みたいな意味を持つ言葉。

ソフトウェアのソリューションは、「偶有的な複雑性」を解決するものであって、汎用的な複雑性は解決できない。それくらい、ソフトウェアは、複雑だ、ということ。






この記事が気に入ったらサポートをしてみませんか?