Code Complete 02 - 软件隐喻

病毒、木马、虫子(bug)等形象的隐喻描述了具体的软件现象,借助于这些隐喻我们可以深刻地理解软件开发过程。

隐喻的作用更像是启发式方法,而不是算法。算法是一组定义明确的指令,用来完成特定的任务。算法是可以预测的、确定的且不易变化的。一个告诉你如何从A点到B点的算法,会直接告诉你具体每一步怎么走。而启发式方法是一种帮助人们寻找答案的技术,但它的答案是偶然性的,因为启发式方法只告诉你如何查找,并不会告诉你要找什么。它并不会告诉你如何直接从A点到B点,它甚至可能连A点和B点在哪儿都不知道。

以建房子作为软件构建的隐喻。对于建房子,首先,必须确定想要建什么样的房子,这类似于软件开发中的问题定义。其次,必须和建筑师探讨总体设计并通过审批,这类似于软件架构设计。再次,画出详细的蓝图,然后雇一个承包商,这类似于详细的软件设计。最后确定地点,打地基,架房屋,安墙板和房顶,接通水、点、煤气等,这类似于软件构建。当房子大部分完工后,庭院设计者、油漆工和装修工入场,这类似于软件的优化过程。在整个过程中,各种监理来检查现场、地基、框架、布线和其他需要检查的地方,这类似于软件评审(review)和审查(inspection)。

在建房子时,不会试图去做可以直接买的成品。会买洗衣机、烘干机、电冰箱以及冷藏柜。还可以买预先定制的橱窗、餐桌、窗户等。如果正在开发软件系统也会这样做,将广泛使用高级语言所提供的特性,而不是自己写操作系统层级的代码,还可以使用现成的程序库,比如一些容器类、科学函数、用户界面类和数据库访问组件等。总之,如果有现成的,通常就不值得亲自动手写代码。

然而,如果正在建一栋拥有一流家具的高档住宅,那么可能会定制橱柜及其配套的洗碗机、冰箱和冰柜等,也可能会定制不同形状和特别尺寸的窗户。在软件开发中,也有类似的定制,如果正在开发一流的软件产品,那么可能自己动手写科学函数,获得更快的速度或更高的准确度,可以自己动手构建容器类、用户界面组件和数据库访问组件,使得产品各部分可以无缝衔接并在界面和体验上完全一致。

在建筑中,如果是盖仓库或者工具棚,完全不同于建医疗中心或核反应堆,就需要完全不同的规划、设计和质量保证。同样在软件开发中,可能通常只用灵活的、轻量级的开发方法,但有时必须得用严格的、重量级的方法来实现系统所需要的安全目标和其他目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Encarta1993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值