软件不是摩天大楼

还没有读者喜欢这个。

Michael Daconta 在 GCN 上发表了一篇简短的号召,呼吁软件行业行动起来。以下是要点:

尽管我信奉自由市场和竞争的好处,但行业有责任在基础层面上共同努力,从根本上构建安全性、质量和可靠性,以提高该领域的专业水平。本质上,信息技术行业必须效仿其他工程学科,否则技术灾难和网络安全漏洞将会恶化。

Daconta 对软件开发人员可用的平台和方法数量感到不安,并预见到不久的将来会出现越来越多的选择和颠覆;IPv6 和 64 位计算似乎尤其让他担忧。我们已经四分五裂、杂乱无章,面对所有这些混乱的创新,我们怎么可能期望生产出可靠且有用的软件?当然,答案是控制。大量的控制。具体而言,有三项建议:

  • 软件开发人员的许可证
  • 由 NSF 和 DARPA 开发的新的、可靠的分层软件平台
  • 像对待工程一样对待软件,而不是艺术。

天哪。我几乎不知道从哪里开始。让我们试着想象一下五年后的软件开发世界,这些建议都已落实到位。软件开发现在是一项需要许可证的活动。就像建筑师或机械工程师一样,你必须通过考试,或许还要交保证金才能从事这项工作。可能有一个像美国律师协会或美国医学协会这样的专业协会来管理资格认证。这种许可制度实际上是一个非常好的主意,因为所有软件都必须按照一些非常具体的方法进行开发,并有大量的测试和文档作为支持。因此,与其让任何会使用编译器的傻瓜编写软件,不如让他们花一两年时间学习编写代码的正确方法。这个过程很繁琐,但编译出来的每一段软件都是完美的。至少,是我们所知道的完美。当然,许可和形式化方法之所以成为可能,是因为我们有一个政府主导的平台,我们必须在这个平台上构建。任何想在政府部门运行软件的人都必须在这个堆栈上运行。听起来 Daconta 似乎希望为 NASA 式的代码开发 争取广泛的授权。你可能已经明白我的意思了。另一种讲述方式可能是:现在有一个政府拥有的平台,每个政府项目都必须使用,从云到移动电话。任何构建在该平台上的软件都必须在部署之前接受严格的独立测试。想象一下 ISO 9000 和通用准则生了一个有牙齿的婴儿。任何编写软件的人都必须获得在美国这样做的许可。结果,可用编程人才的数量锐减。政府软件开发的成本自然上升。人才库进一步萎缩,因为想要使用最新硬件或软件的开发人员不再为机构或承包商工作——他们已经回到私营部门,在那里他们可以享受自由市场的成果。政府软件平台迅速开始显得老旧,因为平台上唯一的开发人员是那些受雇使用它的人。人们真正想使用的平台在开放市场上,悠闲地创新,不受政府机构的约束。由于政府不再能够使用大多数商业上可用的软件,它现在又回到自己编写软件的业务中。更准确地说,它又回到了聘请系统集成商代表其编写软件的业务中。这又回到了 20 世纪 70 年代。预算爆炸,创新停滞不前。各机构竭尽全力也只能勉强维持现状。当然,系统集成商很高兴。他们现在为少数经过培训且愿意在这个强制性政府平台上工作的程序员开出了离谱的薪水。让我们希望有更好的方法。这当然不会削弱 Daconta 暗示的问题。软件可靠性当然是值得关注的问题。但是,没有单一的解决方案或一套政策处方可以解决这个问题。我不认为对软件开发施加额外的控制是有意义的,当然不是对所有情况都适用。对于那些非常重要的工作:驾驶飞机、控制核反应堆等等,已经有健全的认证制度和方法。我的游戏机或台式电脑不需要那种程度的审查。重要的是要注意,这些健全的认证只评估软件本身,而不是制造软件的人。这就是软件的伟大之处:我们可以在最终产品分发之前对其进行检查。我真的不介意我的软件是由一个聪明的 7 岁孩子编写的。如果它能完成它应该做的工作,对我来说就足够了。这种注重结果而不是手段的做法,是你无法对建筑物或飞机做到的。对于软件,我们可以以更小的代价改变我们的想法。我们可以在软件交付到客户手中之前对其进行彻底的测试和审查。当我们确实发现缺陷时,修补软件比修补 777 或摩天大楼要容易得多。我们应该利用这一事实,而不是仅仅因为我们知道如何管理僵化和不灵活的东西,就试图使软件变得僵化和不灵活。因为软件具有这些独特的属性,我们有自由根据具体情况对软件施加或多或少的审查。这正是我们已经在做的事情,通过像卡内基梅隆大学联邦资助的 软件工程研究所 这样的项目。因此,在 Daconta 看到混乱和无序的地方,我看到了创造力和创新。有很多机会可以提高我们软件的可靠性,但这些机会都与我们获得特定代码的过程无关。例如,David Wheeler 的 OpenProofs 等项目可以提供我们所需的工具,以在数学上确保软件正在做我们想要做的事情。Linux 测试项目 为 Linux 做了这件事,并且在很大程度上受到了政府通用准则授权的启发。事实上,这应该是流程的工作方式。政府应该设定可靠性和保证的要求,并允许私营部门通过创新来实现这些要求。如果我们只创造我们能够完全理解的软件,我们就会失去创造力、创新能力,以及利用数百万软件开发人员的集体智慧和聪明才智的能力。我们永远无法消除软件中的风险,但我们可以管理这种风险,不是通过更严格的控制,而是通过鼓励尽可能多的聪明人来解决这个问题。

标签
User profile image.
我是 Red Hat 美国公共部门集团的首席战略师,我在那里与系统集成商和政府机构合作,鼓励在政府中使用开源软件。我是 Open Source for America 的创始人之一,入选了 Federal Computer Week 2010 年的 Fed 100,并且我被投票选为 FedScoop 50 行业领导者之一。

1 条评论

我完全同意你的看法。人们对像我这样称自己为软件“工程师”的人感到不满,因为他们讨厌这个术语在其他行业中意味着非常具体的东西。坦率地说,如果我认为有人会认真对待我,我很乐意称自己为软件艺术家。 :-)

Creative Commons License本作品根据知识共享署名-相同方式共享 3.0 未本地化许可协议获得许可。
© . All rights reserved.