科技时代新浪首页 > 科技时代 > 业界 > 第十届中国国际软件博览会专题 > 正文

图文:思特沃克首席科学家Martin Fowler发言


http://www.sina.com.cn 2006年06月01日 12:10 新浪科技
科技时代_图文:思特沃克首席科学家Martin Fowler发言
图为思特沃克首席科学家Martin Fowler于2006中国软件产业发展高峰论坛上发言
点击此处查看全部科技图片

  新浪科技讯 6月1日,在信息产业部、国家发改委、科技部、国信办和北京市人民政府支持下,以“展示十五软件产业成果,宣贯十一五软件规划,走自主创新,软件强国之路”为主题的2006年第十届中国国际软件博览会(简称“软博会”)在北京展览馆正式开幕。当天上午,2006中国软件产业发展高峰论坛也同期举办。思特沃克公司首席科学家Martin Fowler于会上发言演讲。以下为其现场发言实录:

  主持人:作为一个软件企业,特别是跨国公司的企业,讲好多中国的市场,中国的用户,以及在中国的发展。这也就是我们要说的,中国的软件企业融入到国际,国际的跨国企业也应该融入到中国的软件产业中来。下面我们有请思特沃克公司首席科学家Martin Fowler.

  公司代表:我们公司是位于美国的一家技术咨询和服务公司,我们主要为

世界500强企业提供软件咨询服务、还有定制软件开发服务。我们在全球6个国家、美国、英国、
澳大利亚
、印度、加拿大、中国都有分公司,中国的分公司是去年2月份成立的,我们的核心理念采用先进的技术和方法来改变中国信息的方式。

  Martin Fowler:很抱歉,今天我身体不是很舒服,所以就要坐下来。

  今天我要谈到的是敏捷开发方法怎么样实现软件价值。首先会讲一个在很多年在实际项目中发生的故事,在ThoughtWorks公司在这些年以来不断的在实际当中总结出来的一个方法。我们为一家运输公司定制软件,当时为他们的几位领导做了演示。这个敏捷开发过程当中,把已经做好的工作进行实际的演示,我们可以给业务人员展示逐步交互出来的过程。这个项目具体当中,我们做的主要工作是把各个来源不同的数据集中在一个中心的地方展现给客户。开发的团队做到中间的时候,把现在已经做的工作,就是怎么样展示给客户,来给最终的客户做演示。看到演示的时候,有一个业务人员问到,能不能把某几个数据集成在一起展示给他。经过交谈以后,开发的小组和业务人员完全理解了他们想要什么样的数据。但是用户界面已经设计好客户想要的这个功能很难融入到已经设计好的界面当中。其实一个可行的方法就是每天晚上把这些数据收集起来,然后以EMAIL的方式发给客户。开始在计划项目的时候,客户想要的信息,完全没有被设计到这个程序里面去。这个时候会使整个项目的开发时间延长。敏捷开发里面很重要的理念就是说业务人员在设想功能的时候,一定要看到功能的本身,来看到他能够给业务带来的价值。

  敏捷开发是90年代逐步形成的一个开发理念。它产生的背景是当时软件开发的业界对不够灵活而且过程复杂的一种反应。我谈到敏捷开发的时候,更主要的会谈到传统的开发方式两个最主要的不同方面。

  这两个方面都在我刚才提到的故事里面得到了体现,第一个不同就是传统的软件开发方式是以预测为主的,而敏捷式开发是以适应性为主的。传统的软件开发方法就是开始把用户所想要的功能详细的记录下来,这些需求被固定下来,然后以此作为基础,计划整个项目的开发。这种方式很重要的一点就是尽量的减少在整个项目的实施过程中需求的变化。在这个里面,我刚才讲的需求变化,对开发的团队来说是很不好的事情。我刚才提到的传统开发的里面,完成是按照计划的方式来一步一步实行下来的。

  成功就意味着完成按时间,按成本,把客户最初的要求交付出来就叫做成功。敏捷开发的前提就是说几乎不可能让客户和业务人员最开始把业务的功能详细的定义出来。不管是业务人员也好,或者是终端用户也好,他很难预测到将来拿到软件的时候哪些可以给他带来价值。我刚才讲的例子中,这些业务人员不是通过一个简单的问询就能拿产生最大价值的数据。所以敏捷开发的方式是在整个项目开发的过程中,允许而且鼓励客户用一种可以控制的方式来改变它的需求。敏捷式的开发一个软件价值的衡量从他市纪委业务实现了多少价值衡量项目的成功,而不是按时间、按计划完成。

  敏捷式开发也会在开始做一个详细的计划,但是这个计划是在开发当中不断的根据情况来进行调整、变化的。敏捷开发认为,在一个项目开发的过程当中,真正给客户带来价值的东西不一定是在项目的初期就已经预测到,或者是定义好的功能。敏捷开发允许一个团队使用一种可以控制的方式来按照这种方法来进行开发。

  另外一个敏捷式开发方法和传统式开发方法不同的是,在敏捷式开发当中是以人为主的开发方法。传统的开发方法核心的一点就是定义一个方法,或者一个过程,把过程详细定义好以后,任何人都可以在过程中间按照这个方法来实施这个软件。主要意思就是说,只要按照这个过程,这个流程一步一步的执行下去,不管是谁都可以把这个软件做好。敏捷式开发认为,在软件的开发过程当中,最关键最主要的一点是开发人员本身的素质和能力。不仅仅是一个人员在技术上的素质,而且是怎么样跟团队中其他的人进行合作,进行交流。敏捷开发在这个过程当中很重要的一点就是不断的建立起一套机制,使得项目中的所有人都可以不断的进行交流和合作。在我刚才讲的例子当中,很重要的一点能够使开发人员和业务人员直接对话,来讨论这个软件能给业务带来什么价值。开发人员知道什么样的数据可以被系统所采集,什么样的数据可以提供给客户,但是业务人员本身完全不知道什么样的数据是可能实施的,什么样的数据是不可能实施的。没有业务的支持,开发人员完全不知道各种各样可能采集的数据,哪些对业务、对价值有用处。这个例子当中最核心的一点就是说业务和技术之间非常紧密的合作和交流。通过把业务的支持和技术的支持结合在一起,从而真正为实现软件所能够给业务提供的价值。作为一个结果,敏捷式的软件开发是尽量的找到各种各样可能的机会使得类似的交流和合作能够发生。在这个过程当中,一个很重要的手段就是叫做迭代式的开发。

  迭代式开发在软件开发的历史上,有很多次成功的案例。但是出于某些原因,并没有成为主流的类似瀑布式开发方法一样的方法。这两种之间的区别是他们怎么样把一个项目分割成小块来进行逐步实施。那么传统的瀑布式开发所注重的是通过它来区分项目阶段的方式什么样的人来做什么样的工作。一个非常典型的方法就是说,架构设计由架构人员来做,软件开发由程序员来做,测试由测试人员来做。迭代式的开发是把软件开发过程分割另外成一种方式,开始的时候,出发点是一系列对需求很高层的分析,对所有需求大概的描述,而不是有所有细节最仔细的描述。把项目分成不同的阶段,每个阶段就会把需求的一小部分完全的实施。在每一次迭代结束的时候,你得到的是一个完全可以投入使用,唯一你需要做的就是你这个软件所要完成的功能并不是整个软件所有的功能,每一次迭代都会在软件的基础上不断的加入新的功能,直到你认为所有的功能可以满足你的功能为主。这种迭代式的开发可以减少软件开发中的风险。在故事开发的过程当中,在最后的测试集成的阶段总是风险最高的阶段。最后这两个阶段在通常情况下在初期很难预测到到底花多少时间,需要什么样的资源。这就是绝大部分软件最后不得不延时的原因。通过迭代式开发的方法,在初期就对软件进行测试,进行集成,减少了在最后发生延时的风险。在这个过程当中,你很早就开始来做测试和集成的工作,而且不断的在做,这样就知道到底花了多少的时间和遇到什么问题。

  还有一个很重要的原因,就是迭代式开发,是一个比较好的方法,就是在很早的时候就是使软件给业务带来价值。在我讲的过程当中,就是很早就能够给客户展示出来,能够让他看到带来的价值。很多的经验告诉我们,作为一个人来讲,很难来想象一个软件可以带来什么样的价值,更愿意看到可以使用的软件的时候,才能认识到这个软件带来什么样的使用价值。就是在每一次迭代的时候,把做出来的结果演示给客户,使他们能够看到软件实现的功能。这给业务人员提供了一个机会,使他能够在看到演示的时候,看到有可能新的,能够提供更多有价值的方法。另外一个好处就是使得软件能够在很早的时候就可以把其中的一部分功能投入到使用当中。对于一个业务来说,即使是一个没有完成的软件,即使所有的功能没有实现,但是已经实现的功能已经可以带来很多的价值。在我刚才讲的过程当中,软件只有很少的一部分功能被构建出来。这个系统离最终所有功能完成上限还很远。但是仅仅是把这一项功能实现,而且让业务人员使用起来已经带来最大的使用价值。在这么多年不断的实践当中,ThoughtWorks发生了很多类似的案例。在遇到项目开始的时候,软件看起来都是非常的庞大,计划非常长远,我们会把这些庞大的功能群打散成一个一个比较小的模块,使得我们能够真正的控制这个项目。但即使这样,在开始早期的迭代过程当中,迭代的结果已经可以给业务带来很大的价值。

  另外一个例子,我们最近给投资银行做的项目,这个项目本身是计划8个月后完成,但是通过迭代式的开发,两个月的时候已经有部分功能,已经上线给客户带来价值。这一部分功能已经可以让客户使用,而且为客户带来真正的经济效益。整个项目所有的预算,所有的投资在这一部分功能上线后的几个星期就收回来了。

  我最想说的最核心的一点,就是为了使软件实现最大的价值很重要的一点就是非常的灵活,第二能够使技术人员和业务人员不断的进行紧密的交流。确实需要合适的项目管理和控制项目需求的方法,使得项目的需求和过程能够得到有效的控制。你也需要很多技术上的最佳实践,使得能够不断的来解决。通过使用技术上和管理上最佳实践,我们发现使用这种方法交付的软件比传统的软件交付方式给客户带来更多的价值。在全球范围内,使用敏捷式开发,有很多的人员在使用这种软件开发方法。

  在美国和欧洲有很多敏捷式的技术会议在不断的举行,还有一个独立的非营利性的机构,就是敏捷联盟,可以提供很多这方面的信息,如果你想继续来了解这方面的信息,可以来看一下敏捷联盟的网站。还有一个在我的个人网页上,有一个文章叫新方法,我相信它已经被翻译成中文了。我们在中国也看到了很大的正在增长使用敏捷开发方法的社区。谢谢大家!

发表评论

爱问(iAsk.com)



评论】【论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5595   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Inc. All Rights Reserved

新浪公司 版权所有