每个软件开发团队都有意或无意地遵循某种过程。在一两个人或几个人组成的开发团队中,过程是很简单的。他们只产生很少的文档,分析和设计也不是很正规,项目的源代码在所有制品中占有很重要的地位。在几十人甚至上百人的开发团队中,团队成员通常分布在不同的大厦甚至是世界各地,因而过程也有更多规定。?且嘈锤嗟恼轿牡担蜕嬷诤献饕黄鹛致巯钅康姆治龊蜕杓疲⑼ü嵋椤⒄故尽⑽牡岛推渌破凡鞣治龊蜕杓啤O钅康拇胨淙灰埠苤匾皇窍低持诙嘀破分械囊桓鲎槌刹糠帧<虻サ墓毯透丛拥墓滩⒉皇嵌粤⒌模好恳桓鑫侍饬煊颉⒚恳恢挚⒎绞胶兔恳桓龅ザ赖南钅慷夹枰屎咸囟ㄐ枨蟮目⒐獭?也就是说,无论规模大小,所有成功的项目都有一些共同特征。相反,不成功的项目都不具备这些特征。通过观察一个成功的项目就会发现:团队成员合作得很好,每个开发人员都努力完成自己的活动和制品,同时与其他团队成员协调一致地工作。这种项目通常都很灵活、易于适应需求变更,并且它具有可预测性、可靠性,能够产生高质量的代码。总而言之,这些项目遵循的过程是开发工作方式的一部分,这个过程是不可见的,但是它的精神却通过团队成员生产的制品不断传递下去。Rational统一过程(或叫做RUP)的灵魂体现了这个不可见的过程。RUP不断地发展,它浓缩了不同领域数以千计的项目经验。PerKroll和PhilippeKruchten是最有资格以有效、务实的方法介绍RUP的人,他们在Rational软件公司创立并在世界范围内推广RUP的过程中起到了十分重要的作用。有些开发人员抵制使用RUP,他们认为RUP只不过用来减少代码。事实上,RUP并非他们想像的那样,它可以帮助开发团队成员更好地配合,把主要精力放到开发有价值的代码上。Per和Philippe首先介绍了RUP的灵魂,然后阐明如何在不同类型和规模的项目中应用RUP。在介绍了如何应用RUP后,本书讨论了更实际的问题,包括如何把RUP引入开发组和要避免哪些问题。本书首先让不同涉众接受RUP,然后分别从项目经理、系统分析员、系统架构师、开发人员和测试人员的角度介绍RUP。成功项目的开发过程看起来很简单,但实际上有很多深层次的思想蕴含在其中。在本书中,Per和Philippe以易懂、实用的方法阐述了这些思想。读完本书,相信你的项目也将会体现RUP的灵魂。GradyBoochRational软件公司首席科学家2003年2月虽然目前有数以千计的项目有效的使用Rational统一过程,但是一些开发团队仍然不敢轻易使用它。他们认为实施一个新的软件开发过程可能会很困难。本书的目的就是要告诉读者RUP实际上是很简单的。本书解释了RUP的基本软件开发原理,并指导读者在自己的开发组织中应用它。通过阅读本书,读者将会学到:·Rational统一过程的根本原理,数以百计的成功软件项目证明它是有效的;·在实践中如何通过遍历RUP项目的各个阶段应用这些原理;·在RUP项目中,项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师担当的角色和职责;·如何以最小的风险不断采用并配置统一过程;·如何辨别失败项目的特征,如何避免失败。Rational统一过程(RationalUnifiedProcess,或RUP)①是由Rational软件公司研发并推广的一套软件工程过程框架。它凝结了众多领域成功的软件开发最佳实践经验的精华,很多计算机科学家曾为之共同努力。RUP在多年的实际应用过程中,被广泛应用在不同领域。它提供了一整套严格的方法来分配并管理软件开发组织中的任务和责任。通过应用RUP,软件开发团队可以生产出满足最终用户需求的高质量的软件产品,并且可以有效地控制项目的进度和预算。RUP指导软件开发者如何有效地应用现代软件最佳实践:迭代开发、以架构为中心进行开发的方法、在开发过程的每一个阶段化解风险及持续地验证软件质量等。虽然有数以千计的项目正有效地使用RUP,但是一些开发团队仍然不敢轻易使用它,他们认为实施一个新的软件开发过程?赡芑岷芾选J导噬希琑UP并不困难也不复杂。编写本书的目的就是要告诉读者RUP实际上是很简单的。本书解释了RUP的基本软件开发原理,并指导读者在自己的开发组织中应用它。本书还告诉读者如何在一个开发组织或项目中量身定制RUP过程配置。为什么写这本书在帮助软件企业应用RUP的十几年时间和开发RUP产品的六年时间中,我们有机会了解到RUP中哪些部分是很有效的,哪些不是。我们看到过很多成功应用RUP的例子,同时也看到了一些项目和开发团队在应用它时遇到的挑战。我们有幸与很多软件开发实践的先行者一同工作,并且通过日常的工作从他们身上学到了很多宝贵的经验。最近,我们看到了很多软件公司“过分地”应用了RUP。是的,事实确实是这样。我们觉得有必要写一本关于RUP的书,不仅要告诉读者应该去做什么,生产什么样的产品,并且要告诉读者如何正确地应用它,应该避免做什么。我们要给读者解释如何在实践中应用RUP,在一个特定项目中什么时候应用RUP的哪些部分。我们想帮助读者理解如何在不同规模和不同类型的项目中应用RUP。在这本书中,我们想和读者分享我和同事们在多年的实践中积累的宝贵经验。我们的目的是为项目经理、系统分析员、系统架构师、开发人员、测试人员、过程工程师和其他的团队成员以及涉众提供一个易懂的关于RUP的指导。我们通过提炼使用RUP的多年实际经验来达到这个目的,告诉每个角色要了解哪些最本质的内容,解释在RUP中如何扮演他们的角色。这本书不是RUP产品自身的替代品。这本书提供了几百页的实际开发指南,而RUP产品提供了长达几千页的指导,包括关于角色和活动的诸多方面的指导,同时还提供了可以加快开发进度的模板。并且它紧密地结合了开发工具、搜索引擎、图形导航和其他一些基于网络的特性。与本书不同的是,RUP是不断发展的,始终为应用项目提供最新的指导。最后,本书还指导读者结合特定的需求定制RUP的框架。从本书中可以学到什么通过阅读本书,读者将会学到:·RUP的基本原理,数以百计的成功软件项目证明它是有效的;·在实践中如何通过遍历RUP项目的各个阶段应用这些原理;·在RUP项目中,项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师担当的角色和职责;·如何以最小的风险不断采用并配置RUP;·如何辨别失败项目的特征,如何避免失败。读者对象本书是为下列读者编写的:·正在使用或准备使用RUP的开发团队的所有成员,包括需要引入并大致了解RUP概念的管理人员和想要了解RUP的实际应用的管理人员·软件项目的实践者:要深入了解RUP并结合其特定角色应用RUP的项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师·要了解如何将RUP应用在其组织中的管理人员和过程工程师本书的结构和内容本书分为四个部分:介绍、浏览、应用和基于角色的指导。第一部分介绍RUP。第1章解释了什么是RUP及开发和应用RUP的动机。第2章“RUP的灵魂”介绍了RUP的基本原理,它是通过总结很多成功的开发案例而得到的,并被精炼为几个简单的方针。理解这些原理有助于在项目中更好地应用RUP。第3章提供了一个比较不同过程的方法,并用这个方法对RUP和其他敏捷过程、传统的过程和像SEICMM和SPICE这样的过程评估框架进行比较。这些比较有助于理解针对不同的项目选用什么样的RUP配置。第4章提供了一个应用RUP的小项目的例子:一个人在一个星期内完成的项目。抛开大型项目的规范,可以更好地认识RUP的本质。第二部分通过讲述RUP的四个阶段更深入地描述了RUP。这四个阶段是:初始阶段、细化阶段、构造阶段和移交阶段。第5章介绍?绾斡τ玫椒ǎ赋稣馑母鼋锥沃谐<奈蠼狻5?6~9章分别对这四个阶段做了详细的介绍。我们把注意力集中到每个阶段的目的上,并且指导读者如何达到这些目的。这有助于在实际项目中集中精力完成最重要的活动。另外,从时间顺序——应用在实际项目中的顺序——的角度描述了RUP的活动,让读者理解在一个项目中,什么时候执行哪些活动。采用RUP需要开发组织有一些预备知识。第三部分提供了支持流水线型实现的一些重要领域的基础知识。第10章介绍RUP产品,解释如何对其进行扩展和配置以适用于特定的项目或开发团队。第11章简要介绍了有助于实现包含增量展示、试验性项目和培训课程的过程的一些策略。经验表明,项目经理完成从瀑布模型到迭代开发的转变是很困难的。第12章指导项目经理如何计划RUP项目。这么多年以来,我们见过很多使用RUP的成功案例和失败案例。第13章描述了一些失败的案例,并指导开发者避免重蹈覆辙。RUP产品提供广泛的软件开发活动的指导。第四部分,第14~18章对软件项目中的五种主要角色分别提供指导,这五种角色是:项目经理、系统分析员、系统架构师、开发人员和测试人员。分别站在每种角色的角度上解释RUP,描述他们的任务、需要具备的素质和主要活动,并推荐相应的读物和培训教材。本书没有一个独立的章节介绍过程工程师的工作:这个角色的描述包含在第10章和第11章中。如何阅读本书根据读者在软件组织中的角色和希望从本书学到的内容来分,我们推荐下面的阅读方法:·如果只是想对RUP有一个基本的认识,阅读第1、2、4章。·如果想对RUP有一个全面的了解,通读第1~9章。·如果想根据特定的角色详细了解RUP:——项目经理,阅读第1~14章。——系统分析员,阅读第1~9、13和15章(可选读第8、9章)。——系统?芄故Γ亩恋?1~9、13和16章。——开发人员,阅读第1~9、13、17章(可选读第6章)。——测试人员,阅读第1~9、13、18章。——过程工程师,阅读第1~11、13章。·对于执行官(executive)如果想对RUP有一个大概的认识,并了解采用RUP需要做哪些工作,阅读第1、2、4章和第11章。更多的信息本书的最新信息,包括更新、相关文章、论坛和作者演讲时间表可以在以下网址找到:brhttp://www.rupmadeeasy.com。RUP产品的附加信息,包括数据表和产品演示版本可以在Ratioanl软件公司的主页上找到:http://www.rational.com/products/rup。对于已经使用RUP产品的读者,在Rational开发者网络(RationalDeveloperNetwork,RDN)的RUP知识中心上可以找到更多资源:http://www.rational.net。研究机构可以联系Rational软件公司索取关于RUP的软件工程课程的信息:http://www.rational.com/corpinfo/college_relations/seed/index.jsp致谢Ratioanl统一过程集中了数以千计的天才软件开发实践者经验的精华。我们能有机会和他们在一起工作来开发RUP产品并编写这本书,感到非常荣幸。本书离不开RUP产品及其当前产品开发小组,他们是:MikeBarnard、AmandaBrijpaul、SusanBuie、MargaretChan、FionnaChong、ErinCurtis、PhilipDenno、CarlosGoti、DebraGray、BjörnGustafsson、SigurdHopen、KelliHouston、LarsJenzer、JohnLambert、BruceMacIssac、BrysantMacy、GlenysMacIsaac、JohnRingoen、DanShiffman、PaulSzymkowiak和ChinhVo。Rational小组和技术专家在很多年的研发及使用RUP的过程中积累了宝贵的经验。他们指出了RUP中哪些部分有效,哪些部分无效。我们很感谢这些专家提出的精辟见解,在这里特别感谢:GoranBegic、ThomasBichler、KurtBittner、AnthonyCrain、SamCourtenay、JérômeDesquilbet、MariaEricsson、CarlosGoti、JimHeumann、JoeMarasco、Pan-WeiNg、AndyPhillipson、GaryPollice、LesleeProbasco、WalkerRoyce、JohnSmith和IanSpence。还要感谢GradyBooch,他审阅了本书并为本书作序。当一个法国人和一个瑞典人在一起写书时,书稿的语言必然有许多需要改进之处。Rational软件公司的编辑CatherineSouthwood、MikePerrow和MarleneEllin以极大的热情和专业精神帮助我们解决了这个问题,还要感谢我们的编辑KellySweeney和JosephFatton。我们还要特别感谢我们的妻子SusanKroll和SylvieKruchten,她们耐心地陪伴我们度过很多个用于编写此书的周末和夜晚。最后,要感谢出版社的朋友:MaryO’Brien,Addison-Wesley产品与市场部的人员,其中包括TyrrellAlbaugh和ChristopherGuzikowski,他们帮助本书顺利出版。