《软件工艺》—第1章软件工程的当代解读-阿里云开发者社区

开发者社区> 人工智能> 正文

《软件工艺》—第1章软件工程的当代解读

简介:

本节书摘来自异步社区《软件工艺》一书中的第1章软件工程的当代解读,作者【美】Pete McBreen,更多章节内容可以访问云栖社区“异步社区”公众号查看。

软件工程的当代解读
软件工艺
在过去的30年中,软件工程社群一直用“工程学”这个略显呆板的比喻来看待软件开发过程。现在,软件工程已经成为了计算机专业学生的一门必修课。在各个大学的计算机系中,软件工程也是一个活跃的研究领域。人们最关注的是软件工程项目中那种确定的、可重复的开发方式。按照IEEE的定义,这种方式就是:

软件工程是指采用一种有组织、有纪律、可计量的方式来开发、使用及维护软件,也即在软件领域中对工程学的采用。1

对于强调安全性的软件系统,这种有组织、有纪律、可计量的开发方式已经被证明是非常有效的。例如,为航天飞机编写软件的团队就使用这种开发方式,并成功地获得了缺陷率极低的软件系统:

在这个程序的最后3个版本(平均代码长度为420 000行)中,每个版本只有一个错误;在其最后11个版本中,总共只有17个错误。同等复杂度的商用程序将会有5 000个错误。2

但是,在这样的过程中,其他的约束条件则不得不被放松:

金钱不是关键的约束条件:项目组每年3 500万美元的预算对于NASA来说不过是九牛一毛。但是,这个预算额就意味着每行代码价值1美元。这使得该项目组成为了全美国最值钱的软件组织。3

从工程学的角度来说,这是一个恰当的利弊权衡。面对性命攸关的软件,人们毫无疑问会慷慨地用一切资源来确保系统不出错。但是,对于那些出错的代价相对较低的软件,又应该如何去开发呢?

“足够好的软件”——庶民的软件工程
对于某些软件来说,快速地开发出具有丰富功能的应用程序才是最重要的。这种观点的核心思想是:用户能够容忍程序中的错误,因为他们能够得到很多无法从其他地方获得的有用功能。正如Edward Yourdon所说:“我将在6个月之内交付一个系统,其中会有5 000个错误——但你一定会非常高兴!”4

实际上,“足够好的软件”只不过是软件工程思想的一个衍生物,它的出现完全合乎逻辑。它体现出了人们在资源、进度、功能和缺陷等各方面作出的工程学权衡。航天飞机的软件最重视安全性,因此必须尽可能地减少其中的缺陷,并同时接受项目组为了提高质量而提出的资源、进度方面的要求;另一方面,打包的商用软件(例如文字处理软件、Web浏览器等)则要求开发者快速实现大量的功能,因此开发者就会很自然地作出“节省排除已知缺陷的时间从而压缩进度”的工程学权衡。这种权衡的核心思想是:对于某些类型的已知缺陷,花时间去排除它们并不经济。

1《IEEE标准计算机词典》(IEEE Standard Computer Dictionary),ISBN 1-55397-079-3,IEEE,1990。
2《他们编写了好的产品》(They Write the Right Stuff),Fast Company,http://www.fastcompany.com/online/06/writestuff.html
3《他们编写了好的产品》。
4 Edward Yourdon,《美国程序员的繁荣与复兴》(Rise and Resurrection of the American Programmer),Prentice-Hall,1996。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章