阅读笔记-软件工程的银弹
(最近看了两篇关于“银弹”的文章,做一点笔记,其中,英文基本上是引用原文)
一.No Silver Bullet: Essence and Accidents of Software Engineering
这篇是Fred Brooks在1987年所发表的一篇关于软件工程的经典论文。
(链接:http://www.cs.umd.edu/class/spring2003/cmsc838p/General/NoSilverBullet.html)
所谓“银弹”,按我对这篇文章的理解,或许是一个可以让软件迅猛发展的神奇的东西。在外国的传说中,银弹可以杀死狼人。搁在中国来说,银弹就是一种可以制服任何妖魔鬼怪的法器。至于“没有银弹”,我查了一下维基百科(http://en.wikipedia.org/wiki/No_Silver_Bullet):“所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。”
在文章中,作者一开始就指出了不能再对“银弹”抱有期待,而且语气还很坚定,类似下面的句子经常出现:
"No such faith comforts the software engineer"
"I do not believe we will find productivity magic here"
并写道:
“The first step toward the management of disease was replacement of demon theories and humours theories by the germ theory.”
说的大概就是我们应该从科学的角度具体地分析软件工程的本质,不要妄想软件产业的发展可以一蹴而就。后面还提出:”anomaly is not that software progress is so slow, but that computer hardware progress is so fast” 我觉得这个观点还挺有趣的,或许正是因为硬件产业的快速发展,人们才会对软件产业的发展速度有焦虑。这就是对比的力量啊。
后面的内容有很多都没有看懂,毕竟是大家之作,写得很专业。下面摘录我印象比较深的几点:
1.“The complexity of software is an essential property, not an accidental one.”
软件的复杂性是本质属性,而复杂性指的是软件实体中没有任何两个部分相同,并且随着组成元素的增加,复杂性的增加通常还是非线性的。而复杂性也会带来一系列的问题:项目延期、成员间交流困难等。(作者列困难就列了两大段排比啊。)
2. “Past Breakthroughs Solved Accidental Difficulties“
作者认为已经取得的一些进步和成就,诸如高级语言、分时技术和统一的开发环境等解决的只是偶然.
3. " The most radical possible solution for constructing software is not to construct it at all"
这句话让我想到的是软件的复用性。如果类似的软件已经存在,那么就不用自己完全从头开始构建,可以把别人的买来,把需求不一样的地方加以改进和增加。
4." Requirements refinement and rapid prototyping. The hardest single part of building a software system is deciding precisely what to build."
软件构建的目的就是要实现相应的功能,而功能是由需求所决定的,所以需求定义得清晰明确对于软件构建是十分重要的。可是现实情况是,很多时候可能连用户自己都不能准确地定义自己的需求,大多情况下是一种模糊的描述。而且,需求是变化的,并且变化的频率也许比软件开发的频率要高得多。所以网上流传的段子:程序猿今天又要加班,因为老板的需求又变了o(╯□╰)o
5 ."Whereas the difference between poor conceptual designs and good ones may lie in the soundness of design method, the difference between good designs and great ones surely does not. Great designs come from great designers. Software construction is acreative process."
“good”和”great”是不一样的。创造力很重要。
二. There Is a Silver Bullet
这个是 Brad J Cox在04年写的一篇文章(链接:http://www.drdobbs.com/there-is-a-silver-bullet/184407534/),上面那篇“没有银弹”是87年的,时隔17年有人对“银弹”问题又发表的不同的看法。
我觉得下面几段体现了作者的重要观点,特摘录在此:
“But if you view these same facts from a new perspective, a more optimistic conclusion emerges. The software crisis is not an immovable obstacle but an irresistible force--a vast economic incentive that will grow toward infinity as the global economy moves into the information age.
To turn Brooks' own metaphor in a new direction, there is a silver bullet. It is a tremendously powerful weapon, propelled by vast economic forces that mere technical obstacles can resist only briefly. But as Brooks would agree, it is not a technology, a whiz-bang invention that will slay the software werewolf without effort on our part or vast side effects on our value systems and the balance of power between software producers and consumers.
The silver bullet is a cultural change rather than a technological change”
我对这几段的理解:作者觉得软件危机是促进经济发展的诱因。而“银弹”这种强大的武器则有经济作为基础,当然,要让”银弹”发挥威力还牵涉到经济学(生产者和消费者)、文化(价值体系)等方面的问题。
其实我觉得说的挺抽象的,文化转变?这是一个很宏大的命题。
后面提到了范式,面向对象技术等,基本上没怎么看懂,就没怎么做笔记了。(不过范式让我想到了离散。附上范式paradigm的维基百科http://en.wikipedia.org/wiki/Paradigm)