《软件工艺》—第1章“足够好”的软件开发方法的危害

简介:

本节书摘来自异步社区《软件工艺》一书中的第1章“足够好”的软件开发方法的危害,作者【美】Pete McBreen,更多章节内容可以访问云栖社区“异步社区”公众号查看。

“足够好”的软件开发方法的危害
软件工艺
在软件变得越来越重要的同时,它们是否也变得越来越臃肿、错误越来越多?我还记得,在过去的日子里,整个文字处理软件可以装进一张软盘;现在,我们已经看到不少的应用程序连一张光盘都装不下了。有很多打包的应用程序,它们每次发布新版本都会要求用户购买更多的内存或者更快的计算机,而且其中大多数的新特性根本不能很好地工作。

你的软件是否越来越好看,却越来越难用?有时,用户们甚至会想:开发者是不是花了太多的时间在应用程序的观感上,以至于忘记了考虑别人怎么使用这个程序。

项目是否用掉了比预先承诺更多的时间,而交付的成果却更少?“雾件”(vaporware)是软件工业给我们的词典加上的一个有趣的词汇。软件产品的前几个版本也许还能够快速发布,但每次发布改进版本所需要的时间越来越长,软件也变得越来越复杂。随着复杂度的上升,“将缺陷减少到可接受的程度”也会耗费越来越多的时间。

当你报告一个缺陷时,软件开发者是否显得对你的需要漠不关心?现实就是如此残酷:在“足够好”的开发方式中,这种冷漠是必要的利弊权衡。如果一个缺陷仅仅影响一小部分的用户,那么花费人力来修复这个问题就是不经济的。如果你够幸运的话,你将可以找到其他的办法来绕过这个错误,并继续等待下一个版本发布。

“足够好”的软件开发方式是有害的,因为它继承并发扬了“缺陷是不可避免的”这一荒诞不经的理论。事实正好相反:缺陷之所以存在,恰恰是因为我们采用了这种疯狂的开发方式。“足够好”的软件开发的特点就是:近乎疯狂地编码,在最短时间内得到一个“拥有全部特性”的应用程序,随后是一个若有若无的测试、排错阶段。开发者哪怕只是动一动“排除所有缺陷”的念头也会被认为是浪费力气,因为一大半的特性很可能就实现在现有的错误之上。由于“足够好”的开发方式将编码和测试分离成了两个截然不同的阶段,所以用这种方式开发出的应用程序中必定会包含大量的缺陷。

发布含有已知错误的软件,这不是一个好主意。即使所有已知的严重错误已经被修复了,“发布含有已知错误的软件”这种做法仍然会向用户传递错误的信息:开发者不知道如何修复软件中的错误,甚至开发者根本不关心软件的质量和可靠性。1在其他行业中,你不会看到这种情况。你可以随便找一家汽车代理商,他们会告诉你:如果有其他高可靠性的产品,销售低可靠性的产品会对自己的声誉造成多大的损害。

1 Mark Minasi,《软件阴谋》(The Software Conspiracy),McGraw-Hill,2000。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
1月前
|
数据安全/隐私保护 Windows
刚发现的5款实用性拉满的软件
每次分享实用的软件,都会给人一种踏实和喜悦的感觉,这也是我热衷于搜集和推荐高效工具软件的原因。
25 1
|
4月前
|
Linux 数据安全/隐私保护 Android开发
分享5款实用性拉满的小软件
如今,工作和学习都离不开电脑,所以电脑里的软件自然也是必不可少的,但是电脑软件那么多,不可能每个都装上吧,所以我们要装好用的、实用的,下面给大家分享5款好用到爆的软件,很多懂电脑的人都在用。
60 1
|
7月前
|
编解码 搜索推荐 定位技术
实用性拉满的5款软件,提高效率必备!
随着网络信息技术的发展,越来越多的人在办公时需要用到电脑了。如果你想提高办公效率,那么就少不了工具的帮忙,今天给大家分享5款办公必备的好软件。
40 0
|
9月前
|
存储 NoSQL Redis
系统为何如此脆弱
系统为何如此脆弱
61 0
|
设计模式 程序员 测试技术
系统困境与软件复杂度,为什么我们的系统会如此复杂
读 A Philosophy of Software Design 有感,软件设计与架构复杂度,你是战术龙卷风吗?
系统困境与软件复杂度,为什么我们的系统会如此复杂
|
设计模式 中间件 测试技术
系统困境与软件复杂度:为什么我们的系统会如此复杂?
很多人认为做业务开发没有挑战性,但其实正好相反,面向不确定性设计才是最复杂的设计。
1217 2
系统困境与软件复杂度:为什么我们的系统会如此复杂?
|
安全
各种安全问题(杂)
StringBuilder 的方法不是线程安全的 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
1097 0
|
安全 数据安全/隐私保护 网络安全

热门文章

最新文章