Zero Lee的专栏

建造原型的代价

   编写原型也是编写代码。原型具有与编写代码相同的惯性和成本,但是缺乏真正的软件产品所要求的可靠性、稳定性。软件的原型类似于建筑工程中的脚手架,而真正的软件和石墙类似,具有永久、可维护、可扩展的特性。经理们不愿舍弃能够工作的代码,即便是原型代码。他们说不出脚手架和石墙的区别。
   编写原型要比编写真正的程序快得多。编写原型的费用很低,因而极具吸引力。但是只有通过真正的程序才能建造可靠的产品,而原型是脆弱的平台。原型是应该抛弃的实验程序,但是实际上很少如此。经理们查看原型后会问:“我们不能将它用于产品吗?”对于程序员来说,通俗的回答是很困难的。经理们奢望通过使用原型来节约数以月计的编程时间。
   良好编程的精髓在于后期的满足感。先期辛勤工作,后期收获。多数手工工作都非常昂贵。而程序一旦编写完毕,就可以运行百万次而不需要额外成本。最昂贵的程序是只运行一次的程序,最便宜的程序是运行百万次的程序。但是,便宜程序中的任何问题也会出现百亿次。软件的经济原理让多数人感到陌生:最便宜程序的编写成本最为昂贵,最昂贵程序的编写成本最为低廉。
   编写大的程序有些像堆砌一叠砖块。将1000块叠放起来,需要及其精确的放置每一块砖。如果第998块砖偏移了1/4英寸,将余下的两快摆上去不会有什么问题。但是如果第5块就没有摆好,摆放10块以上的砖几乎不可能的。
   软件也具有这样的特性。对于软件基础部分的变动要比对上面部分的变动敏感得多。现实当中,多数程序员起始于错误的起点,随着进程而不断修正行进路线。因而,程序充满着修改过的痕迹。很多功能需求是在编程开始之后才发现的。这些功能被强行加入到程序中。程序修改的痕迹与叠放砖块的偏移类似。将一个按牛从对话框的一侧移到另一侧,就像摇晃一下第998块砖,但是修改描述所有按钮的代码,就像摇晃第5块砖。面向对象编程技术和封装技术是专门让程序免于修改伤痕的防范技巧。但是确切地说,面向对象技术只是将1000块砖分割成10组100块砖,不是根本的解决之道。
   水平高的程序员在编写大程序之前,花费很多时间和精力做准备工作。单配置编程环境就需要几天的时间。还需要选择合适的程序库,定义数据项。还必须对存储恢复系统作出分析,对其进行定义、编码和测试。
   随着编程工作的展开,程序员们必然会发现计划中的错误、假设中的缺陷。他们面临两个选择,或者从头再来,或者对程序中有问题的部分打补丁,引入新的“伤痕”。选择前者的成本非常高,不过选择后者,“伤痕”将限制程序的规模——叠加砖块的高度。

posted on 2006-12-22 10:55 Zero Lee 阅读(562) 评论(2)  编辑 收藏 引用 所属分类: Experience and Thought

评论

# re: 建造原型的代价 2006-12-22 12:19 pengkuny

长见识了,叠砖论精辟!  回复  更多评论   

# re: 建造原型的代价 2006-12-22 14:17 LOGOS

[quote]面向对象技术只是将1000块砖分割成10组100块砖,不是根本的解决之道[/quote]
有理。
原型代码确实是为了扔掉而扔掉的。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理