めも: @hrk_floatさんに気付きを貰った話と、触発されて昔の論文を覗いてみた話

0
山本康彦@BluewaterSoft @biac

全部で40500命令のプログラム群。ただし、10500命令はコンパイラーなので、抜くと、30000命令。その内でテストプログラムが7500命令(製品コード対テストコードの比は3:1)。けっこうテストコード書いてるじゃん! さて、これは何時頃のプロジェクトの話でしょう?

2012-01-10 09:54:17
山本康彦@BluewaterSoft @biac

(続き) 答: "Production of Large Computer Programs" http://t.co/7cvEZXOL (PDF) これの初出は1956年! 米軍のSAGEシステムの話。たしかに、実際に動かしてデバッグしたらエライことになるw

2012-01-10 09:59:04
山本康彦@BluewaterSoft @biac

(続き) この論文のp13に出て来るFigure5。コーディングに10人年(not人月)とコンピューター0時間。当時の"Coding"という言葉には、コンパイルやデバッグ実行は含まれていなかった。

2012-01-10 10:05:29
山本康彦@BluewaterSoft @biac

(続き) Figure5、Codingの次がユニットテスト("Parameter Testing"となっている)で、先ほどの10500命令のコンパイラーと7500命令のテストコードも使われる。コーディング10人年に対して、ユニットテストに20人年。コーディングの倍の工数。

2012-01-10 10:08:08
山本康彦@BluewaterSoft @biac

(続き) Figure5、Codingの前の"Coding Specs"(「コーディング仕様書」と訳せばいいのかな)には30人年、コーディングの3倍の工数。なんでこうも、コーディングの工数が少ないのか?

2012-01-10 10:11:10
山本康彦@BluewaterSoft @biac

(続き) p12に、コーディングは理想的には"a simple mechanical translation"(単純で機械的な翻訳)である、とある。"Coding Spec"を「機械的に翻訳」すればコードになった、つまり"Coding Spec"が現代で言うソースコードに当たる。

2012-01-10 10:15:04
山本康彦@BluewaterSoft @biac

(続き) "Coding"の成果物の例が、p15のFigure7に載っているが、ご覧の通りアセンブラである。「何か」を「機械的に翻訳」してアセンブラが得られるなら、その「何か」とはソースコードのようなものであろう。

2012-01-10 10:17:30