技术开发 频道

软件教父的心灵鸡汤

【IT168 技术文章】

    “中国正处在自己软件开发历史上的十字路口。”世界五大软件开发大师之一,面向对象技术、软件模式、UML架构构件语言、重构以及敏捷式软件开发这几方面公认的领导者之一、曾经影响了一代软件工程师的巨著—《重构》、《UML提炼》的作者—马丁.福勒(Martin Fowler),这样评价目前中国软件开发所处的位置。

    中国市场是目前世界上变化最快、增长最快的市场。在这种情况下,企业级软件自然也要应对适应迅速变化的要求,于是,在中国,软件开发所面临的挑战不是比别人低,而是更高:开发成本太高,需求变化又频繁,如何在这种情况下保证软件的质量?为了解答这一问题,以及由此而来的一系列人才培养、方法论、工具选择等困惑,中国计算机报执行总编卢山与世界软件开发领域的教父马丁.福勒,进行了一次促膝长谈。

    采访人:《中国计算机报》

    执行总编 卢山

    受访人:软件开发大师 马丁·福勒

    采访地点:中国计算机报社

    采访时间:2005年6月6日

    什么是决定软件成败的因素

    在一场ERP研讨会上,专家们对如何定义ERP的成功与失败争论不休。由于软件开发的不可预知性,软件的成败难以用一种标准来衡量,在软件教父的眼里,软件的成败,在开发阶段就已经注定了。

    卢山:您说过,“软件产业既是一个成功的行业,又是一个失败的行业。”那在您看来,决定软件成败的因素是什么?是人,是开发工具,还是方法论,或是其他?

    马丁:决定成败的原因远远不止一个,但我认为,最重要的一个原因,就是在开发过程中,开发团队与用户之间的沟通不够。

    卢山:但是沟通会带来需求的不断变化,沟通越多,需求越多,变化也会越多,这样是不是会加剧软件开发的难度?

    马丁:的确,软件开发过程中的不可预知性,是我们无法预测软件成功与否的原因。随着需求的变化,软件总是处在变化当中。正是为了软件开发的不可预知性,我们想出了各种各样的技术、工具以及流程,希望软件开发的过程变得越来越可以控制、预测。

    卢山:那这样的方法是否已经被找到?

    马丁:在其他的产业里,可以用简单的办法评价项目的进程及有效性,但是对于软件开发过程,很难用一种标准来衡量它的进度和有效性。正是由于很难有效判断哪种办法更好,使得软件技术、工具以及流程方面的很多讨论都被不断提出的概念所左右。上世纪60年代末期北约一个软件开发室提出了软件工程学,从电子工程学、技术工程学中提炼出方法,使得软件开发的流程更有预测性。但近年来有人发现,软件工程学里的一些基本假设是不正确的。他们使用了一些新的开发方法,也就是敏捷式开发。

    只有变化才是不变的

    现在看来,软件开发过程在不断地发生变化,但软件工程师所孜孜追求的,却是要掌握这些看似无序的变化当中不变的联系。是追寻不变之处,还是寻找适应变化的方法?也许,只有变化才是不变的。

    卢山:尽管软件开发无法避免变化,但这些变化是否能够通过一些方法来进行预测,并且加以克服?

    马丁:只有变化本身是不变的。一个项目在开发过程中,需求一定会出现变化,而需求的变化就从根本上推翻了软件工程学方法所建立的基础。软件工程学的拥护者们试图尽量减少或者控制系统将来发生变化的可能,但越这样做问题就越容易出现。既然我们没办法避免变化的发生,那么我们就应该找到一种新的方法,更有效地适应这种变化。

    卢山:这种方法就是敏捷开发?

    马丁:的确,这是敏捷式开发方法所希望达到的效果。正是由于对待变化的不同态度,敏捷式开发采用适应性方法,而传统的软件工程学采用预测性方法。

    适应性和预测性的区别存在于软件工程学对软件开发过程的描述中。在传统的工程学里,设计过程和构建过程一开始就分开进行,于是在最先开始的设计阶段,所有跟软件设计相关的重要决定就已做出了。但开发过程中不断发生的变化,使得这样的设计没法发挥作用。

    而敏捷开发使用的是一种迭代式、循序渐进的软件开发方法。软件的构建过程是由小量的迭代过程组成的,在这个过程中软件一直处于可使用状态。这种短周期的循环,使终端客户可以及时、快速地看到他们花钱构建的软件是一个什么样的结果,也使得客户可以更有效地参与到软件开发的过程中来。

0
相关文章