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 份相同的程序。Bug 们抱团投票。

N-version programming 曾承诺独立团队会犯独立的错误。Knight 和 Leveson 在 1986 年的实验证明了相反的事实,NASA 悄然放弃了这条路线。

20 世纪 80 年代初,NASA 面临着一个至今仍在困扰安全关键工程领域的问题:如何容忍那些尚未发现的 bug?他们的答案是 N-version programming。将同一份规范交给三个独立团队。并行运行三个程序。对输出结果进行投票。如果其中一个团队写出了 bug,另外两个团队会通过多数票将其压倒。…