ソースコードと相関と

システムの規模とソースコードの行数は、確かに正の相関性をもつ

誤差が大きい数字から導いた数字は当然誤差が大きい - プログラマーの脳みそ

と言ったのだけど、これは元ネタがあって「ソフトウェアコストの理解および制御」と題された1988年の論文だ。*1

ソフトウェアコストに対する最大の影響は、選択したプログラミング言語でのソース命令の数である。

 僕は最初、この文を読んだ時に「え?」と思った。ある種、ステップ数に近しいものがコスト≒規模のように言われたように思ってショックを受けたのだ。が、自分の理解が浅はかであったことをしばらくで理解する。ソフトウェアコストに関わる要因はいくつもあり、その中で誤差は大変大きいが、しかし大きな相関を示すのだ、と。誤差が大きいことと相関が強いことは別なのだ。

 そんなわけで、自分は暗黙に計測が極めて困難な「システムの規模」というパラメータが確かに存在すると信じていたわけだが、それが一瞬揺らいだ。

b:id:kilrey ソースコードの行数が示すのは開発の規模であって、システムの規模ではないと思う。

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/Nagise/20090608/1244473416

 なるほど、ソースコードの行数と「開発の規模」は正の相関を示すのかもしれない。いやいや、まてまて。もともとソフトウェアコストとソースコードの行数が「最大の影響」と言われて脊髄反射したのは品質の話だったろう。高品質で凝縮されたシステムの開発はコード行数に対して開発の規模が大きくなる。対してだらだらと共通化も気にせずに作られた業務システムなんかは行数も規模も無駄に大きくなるのが常だったじゃないか。

 そうか、これは疑似相関なんじゃないか?「システムの規模」という計測しがたい秘密の値があって、ソースコードも、開発規模も、「システムの規模」に相関しているからソースコードと開発規模に疑似相関が成り立つ…!

 というところまで考えて、なんか質量を説明するのにエーテルを持ち出した理論が物理学の歴史であったな、というのがふと頭に浮かび、「システムの規模」ってもしかしてエーテルなのかな、と思ったわけ。

 それでも、エーテルじみた「システムの規模」という計測しがたい数字というものを想定する方が、なにかと説明がうまくいくように思えるので、当面はエーテルの存在を信じることにする。ソースコードと開発の規模が疑似相関じゃなくて相関なんだとしたら、品質によってソースコードが縮むことをどうやって説明すればいいのかわからなかったからだ。

*1:http://www.amazon.co.jp/dp/4798110612に収録されている。日本語訳でしか僕は読んでない