深入浅出OOD(一)

2008-04-10 02:47:59来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

有物昆成,先天地生。萧呵!谬呵!独立而不改,可以为天地母。吾未知其名,字之曰道。吾强为之名曰大,大曰逝,逝曰远,远曰反。道大,天大,地大,王亦大。

——《道德经》,第二十五章

软件不软

60年代的软件危机,到今天传统软件工程方法处处碰壁的处境,都说明一个问题:软件不软(Software is Hard[Martin, 95]。说实话,软件是一块硬骨头,真正开发过软件的人都会有此感觉。一个应用总是包含无数错综复杂的细节,而软件开发者则要把所有这些细节都组织起来,使之形成一个可以正常运转的程序,这实在不是一件简单的事。

为什么会这样?举个例子来说:用户可以很轻松地说“我要一个字处理软件”,他觉得“字处理软件”这样一个概念是再清楚不过的了,根本不需要更多的描述;而真正开发一个字处理软件却是一件困难无比的事情——我曾经亲眼看到开发字处理软件的人们是怎样受尽折磨的。为什么表述一个概念很容易,而实现一个概念很困难?因为人们太擅长抽象、太擅长剥离细节问题了。

软件不软,症结就在这里:用户很容易抽象地表达自己的需求,而这种抽象却很难转化为程序代码。软件不软,因为很简单的设想也需要大量的时间去实现;软件不软,因为满足用户的需求和期望实在太困难;软件不软,因为软件太容易让用户产生幻想。

而另一方面,计算机硬件技术却在飞速发展。从几十年前神秘的庞然大物,到现在随身携带的移动芯片;从每秒数千次运算到每秒上百亿次运算。当软件开发者们还在寻找能让软件开发生产力提高一个数量级的“银弹”[Brooks, 95]时,硬件开发的生产力早已提升了百倍千倍。这是为什么?

硬件工程师们能够如此高效,是因为他们都很懒惰。他们永远恪守“不要去重新发明轮子”的古训,他们尽量利用别人的成果。你看到有硬件工程师自己设计拨码开关的吗?你看到有硬件工程师自己设计低通滤波电路的吗?你看到有硬件工程师自己设计计时器的吗?他们有一套非常好的封装技术,他们可以把电路封装在一个接插件里面,只露出接口。别人要用的时候,只管按照接口去用,完全不必操心接插件内部的实现。

而软件工程师们呢?在STL成为C 标准之前(甚至之后),每个C 程序员都写过自己的排序算法和链表,并认为自己比别人写得更好……真是令人伤心。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:软件开发中的矛盾——一个简单的例子

下一篇:UML谁的硬伤?