| xirtam's profilexirtam的共享空间BlogNetwork | Help |
|
|
November 08 《梦断代码》章节小节第一眼看到这么书时,觉得就其章节标题的形式来说更类似于一本小说,而非软件工程类的书籍。随着阅读的深入,觉得这本书确实提出了不少关于软件项目中的许多非常实实在在的问题,我就每章的核心问题做了总结摘要(未完结,继续更新中……) 第零章:软件时间 讲了一个例子:作者四十岁时,曾负责一个软件开发项目。在精心策划及格月之后,希望给软件增加动态特性。现在却濒临绝境。 没日没夜几个星期之后,主力程序员宣告工作完成,夏威夷度假去了。剩下他的老板,技术副总裁独自一人琢磨数据库与页面的程序对接问题,下周一必须更新那些新闻。 六个人通宵修改,在周一早上发布了站点“改进版”。
软件时间:在做软件的时候,时间总是时快时慢。一切顺利,就忘记了时间;事有不和谐,举步维艰。 编程以及那个不在处于萌芽期。但目前还是很难做到按时限、按预算做出计算机软件;很难让软件可靠而安全;很难把软件做得易于学习使用,且具备按需修改的灵活性…… 现实是:根据国家标准和技术血会2002年的研究,软件错误每年造成美国59,500,000,000美元的经济损失,三分之二的项目明显延误或超出预算,甚至干脆无疾而终。
计算机先驱Maurice Wilkes回忆起1949年他在英国剑桥巩固中欧的情形,在拖着打孔纸带上楼给雏形计算机EDASC装载程序时,他看到了未来:“我强烈的意识到,生命中剩下的好日子,都将耗费在给自己的程序找错误上头。” 在现代如见领域多有建树的专家Fredrick Brooks在1987年写了一篇题为《No Silver Bullet》的著名论文。Brooks在论文中称,无论编写计算机程序如何的令我们倍感挫折,也永远无法找到一种魔法般的突破----我们只能期待渐次前行。
我觉得第零章主要提出了关于软件时间的问题,以及说明了没有特效药来解决这个问题。
文章开头依然是一个现实的例子,关于程序员落后于进度的问题。 1.建造之前,没有一个蓝图,所以会碰到很多没有预料到得问题,更不可能预计花多少时间。 2.每个人完成自己任务的时间取决于他人所花的时间。 3.遇到了黑洞式的缺陷——无法确定多长时间可以修复——充满了不可知因素的时间陷阱(应在软件缺陷列表特别警示次标记出来)。
对于软件时间导致的问题,最早也是做好的诊断来字Fredrick Brooks于1975年写的《The Mythical Man-Month》。其中有一则Brooks’ law:“往已延误的项目中补充人力,只会使其继续延误。”这一法则在其面世后三十年间声望日隆! 在这本书中提及:所谓“人月”,是一种科学管理概念,它假定生产力可被拆分为不连续、无差异、可替换的单元。Brooks观察到“只有在任务能分派给许多相互间无需沟通的工作这事,人和月才是可互换品。” Brooks 发现,制作软件的大量工作受困于“序列约束”,它限制了任务分解的程度:完成某项任务是吹其他任务的先决条件,这与人力投入多少无关。 最后,Brooks以不同个体程序员生产力的巨大差异来完成对人月神话的反驳——极好的程序员能在规定时间内完成于十倍于普通程序员的工作量,而且完成质量也五倍于普通程序员。人与人之间劳动效果如此不同,则衡量标准也无从谈起。
开源软件让编程世界错以为Brooks’ law将成弃履。程序员Eric S.Raymond在1997年撰写的论文《大教堂与集市》中,提及“只要有足够多的beta版测试人员和开发者队伍,几乎所有问题都会很快被发现,而且走过有人知道该怎么修复。”Raymond声称:这种由网络互助力的开放式单点复查方式颠覆了Brooks的残酷悖论。 但《大教堂与集市》并未真正驳倒Brooks’ law,也没有解决软件开发中的时间难题:他只是描绘了另一个编程世界,在那儿,时间无关大局,因为志愿者们为乐趣和自我而协同工作,不求物质回报。
本章则是关于软件时间的残酷问题,以及比较具有代表性的观点的碰撞。
软件项目:努力改变世界,改变人们生活。 微软的Exchange太过强大,然后P2P风靡起来(服务器只是个中间人,中间人可以被踢出局)。 莲花公司,一个小公司,做了个几百万人争相购买的软件产品,陡然暴长。莲花公司有个叫Agenda的项目,哦那个来管理大量各种信息。 Agenda突破了计算机的严格逻辑于人类的语言不详之间的阻隔。他的创建者认定一些原则:用户不用关心软件的额存储结构,只管输入数据就好;用户应该能够容易的扩展和修改数据结构、添加新分类、且不会导致数据丢失;用户应该能够用自己创建的新方式查看数据——也可以在自己创建的视图中操作和修改数据。 二十年后的今天,我们使用的软件中也只有少数能做到上述几点。Agenda早有独门秘籍让用户随意输入。好评如潮,但由于:公司急功近利,老总闪人,非图形操作等等原因,最终被莲花公司遗弃了。老总还是放不下这个孩子,后话再说…… 使用计算机管理信息大潮的梦想,自计算机发明之初就有了。恩格巴特是个代表人物,他发愿尽余生之力来做一个“增长人类智慧的框架”,他召集了一班研究人员,开始突破概念和技术的限制。鼠标,链接,和音键盘等等等都是其作品。 你凭什么认为自己与众不同? 软件灾难。 如果程序员太过在意过往那些软件灾难留下的教训,就一行代码也写不下去。但又多数人在做新软件时,都乐于忘记过去、盲信未来,坚信这次会不同。 本章就做软件要做什么样的软件进行了讨论,以“Agenda之魂”作为章节标题深有含义…… TrackbacksThe trackback URL for this entry is: http://cid-410d0743deb1165e.spaces.live.com/blog/cns!410D0743DEB1165E!137.trak Weblogs that reference this entry
|
|
|