software-history

4 posts

IBM 的 Zero-Defect Process 實現了每 KLOC 0.1 個 Bug。業界還是拋棄了它。

IBM 的 Cleanroom engineering 達到了比業界平均水準好 100 倍的 defect rate,然後消失在歷史中。它的消失與是否有效毫無關係。

IBM 的 Cleanroom software engineering process 實現了每千行程式碼 0.1 個 defect。當時的業界平均水準在 10 到 50 之間。該 process 被文件化,在多個專案和語言之間 replicate,並經過獨立驗證。然後它消失了。 不是因為更好的 method…

Donald Knuth希望程式讀起來像文學作品。編譯器另有打算。

Literate programming承諾程式碼應該首先為人類編寫,其次才是為機器。四十年後,幾乎沒有人這樣寫。以下是軟體文件化中最優雅的理念為何未能改變我們工作方式的原因。

1984年,Donald Knuth發表了一篇提出根本性反轉的論文。程式不應該是為編譯器編寫、為人類添加註解的。它們應該被寫作為人類的文學作品,編譯器從中提取可執行部分。他稱之為literate programming,並以此方式建構了TeX。 這個想法很美。它在現代軟體開發中也幾乎完全缺席。…

Fagan Inspections 在測試前發現90%的缺陷。然後我們不再使用它。

Michael Fagan 在 IBM 設計的結構化審查流程,能在程式碼進入編譯器之前捕獲幾乎全部缺陷。但它也消耗了專案總工時的15%–20%。本文解釋軟體史上最有效的審查方法為何消失,以及團隊究竟失去了什麼。

1976年,Michael Fagan 在 IBM Systems Journal 上發表了一篇論文,描述了一種審查流程,其有效性使之成為軟體品質的金標準。Fagan Inspections 在尚未執行任何測試之前,就能捕獲全部缺陷的60%到90%。NASA…

NASA 同時執行了 27 份相同的程式。漏洞們集體投票。

N-version programming 曾宣稱獨立團隊會犯下獨立的錯誤。Knight 與 Leveson 在 1986 年的實驗證明了相反的事實,NASA 也默默退出了這條路。

1980 年代初期,NASA 面對一個至今仍困擾著安全關鍵工程領域的問題:你該如何容忍那些還沒被發現的漏洞?他們的答案是 N-version programming。把同一份規格交給三個獨立團隊。同時執行三份程式。對輸出結果進行投票。如果其中一個團隊寫出了漏洞,另外兩個會以多數票壓過它。…