本书是对以Rational统一过程(RUP)为体现方式的现代软件开发实践的全面指导。书中提供了一系列的实践性建议和指导,软件开发从业人员将从中学会如何应对具有挑战性的开发项目——无论是小型项目还是大型项目——根据被验证的错误跟踪记录来使用一种迭代的、风险驱动的开发方法。\r\n 本书将会向读者介绍一些关键问题,这些问题涉及到迭代项目的计划和管理、构件设计及软件架构的基础知识,以及用况的正确应用等。所有的团队成员——从项目经理到系统分析员,从开发人员到测试人员——都将了解到如何把RUP快速地应用到自己的工作中。读者将会了解到RUP是一个灵活的、具有普遍适用性的过程框架,它可以通过适当裁减来满足各种类型和规模的开发项目的需要。\r\n 本书涵盖的核心内容包括:\r\n 如何使用RUP进行迭代开发、引入以架构为中心的方法、化解风险以及砍保软件质量;\r\n 与RUP的四个阶段(初始阶段、细化阶段、构造阶段和移交阶段)相关的任务;\r\n 在一个RUP项目中,项目经理、系统架构师、系统分析员、开发人员、测试人员以及过程工程师的角色和责任; \r\n 以最小的风险来增量地应用RUP;\r\n 引入RUP过程中的常见错误模式以及避免它们的方法。\r\n 读者可以通过本书快速掌握RUP,并轻松地发挥它的巨大能量来提高开发团队的生产效率。
序\r\n前言\r\n第1部分 RUP导论\r\n 第1章 Rational统一过程介绍 \r\n 1.1 什么是Rational统一过程 \r\n 1.2 RUP——一种方法 \r\n 1.3 RUP——良定义的软件工程过程 \r\n 1.4 RUP——可定制的过程产品 \r\n 1.5 结论 \r\n 第2章 RUP的灵魂:通向成功的指导 \r\n 2.1 尽早并且持续地化解重大风险,否则将带来很多麻烦 \r\n 2.2 确保满足客户的需求 \r\n 2.3 把注意力放到可执行软件上 \r\n 2.4 尽早在项目中适应变化 \r\n 2.5 在早期确定一个可执行架构 \r\n 2.6 使用构件构造系统 \r\n 2.7 建立高效团结的开发团队 \r\n 2.8 始终重视质量 \r\n 2.9 结论 \r\n 第3章 比较过程:RUP、敏捷方法与严格的政府标准 \r\n 3.1 如何比较过程? \r\n 3.2 敏捷开发方法:低规范度,迭代开发方法 \r\n 3.3 SEI CMM、SEI CMMI、ISO/IEC、DOD-STD、MIL-STD:为得到更高可预测性而采用高规范度的开发方法 \r\n 3.4 RUP:可适应不同规范度的迭代开发方法 \r\n 3.5 要使用什么样的迭代开发方法? \r\n 3.6 要达到多高的规范度? \r\n 3.7 你的过程需要怎样的RUP配置? \r\n 3.8 结论 \r\n 第4章 应用于个人的RUP:Deimos项目 \r\n 4.1 一个人完成的软件项目:Deimos项目 \r\n 4.2 承诺(星期一午餐时) \r\n 4.3 进一步工作(星期一的晚些时候) \r\n 4.4 增强功能(星期二) \r\n 4.5 更多的进展,更多的变化(星期三) \r\n 4.6 接近完成(星期四) \r\n 4.7 发布Beta测试版并移交(星期五) \r\n 4.8 结论 \r\n第2部分 一个RUP项目的生命周期\r\n 第5章 RUP的四个阶段 \r\n 5.1 一些常见的误解 \r\n 5.2 主要里程碑 \r\n 5.3 没有固定的工作流 \r\n 5.4 没有不变的制品 \r\n 5.5 项目的三种类型 \r\n 第6章 初始阶段 \r\n 6.1 初始阶段的目标 \r\n 6.2 初始阶段和迭代 \r\n 6.3 目标1:了解要创建什么样的系统 \r\n 6.4 目标2:确定系统的主要功能 \r\n 6.5 目标3:制定至少一个可行的方案 \r\n 6.6 目标4:了解与项目相关的成本、时间表和风险 \r\n 6.7 目标5:确定遵循什么过程和使用哪些工具 \r\n 6.8 项目回顾:生命周期目标里程碑 \r\n 6.9 结论 \r\n 第7章 细化阶段 \r\n 7.1 细化阶段的目标 \r\n 7.2 细化和迭代 \r\n 7.3 目标1:更明确的认识需求 \r\n 7.4 目标2:设计、实现、验证系统架构并建立架构基线 \r\n 7.5 目标3:化解主要风险,更精确地制定时间表和费用估算 \r\n 7.6 目标4:细化开发案例并搭建开发环境 \r\n 7.7 项目回顾:生命周期架构里程碑 \r\n 7.8 结论 \r\n 第8章 构造阶段 \r\n 8.1 构造阶段的目标 \r\n 8.2 构造和迭代 \r\n 8.3 目标1:降低开发成本并实现部分的并行开发 \r\n 8.4 目标2:迭代开发完整的产品,并准备把它交付给用户 \r\n 8.5 项目回顾:初始可执行能力里程碑 \r\n 8.6 结论 \r\n 第9章 移交阶段 \r\n 9.1 移交阶段的目标 \r\n 9.2 移交阶段的迭代和开发周期 \r\n 9.3 目标1:进行Beta测试以确保达到用户期望 \r\n 9.4 目标2:培训用户和维护人员来达到用户的自我依赖 \r\n 9.5 目标3:准备交付环境并转换数据库系统 \r\n 9.6 目标4:为投放市场作准备:包装、生产产品和进行演示 \r\n 9.7 目标5:与涉众合作完成交付工作 \r\n 9.8 项目回顾:产品发布里程碑 \r\n 9.9 结论 \r\n第3部分 RUP的应用\r\n……\r\n第4部分 对RUP基于角色的指导\r\n术语表 \r\n参考文献
每个软件开发团队都有意或无意地遵循某种过程。在一两个人或几个人组成的开发团队中,过程是很简单的。他们只产生很少的文档,分析和设计也不是很正规,项目的源代码在所有制品中占有很重要的地位。
在几十人甚至上百人的开发团队中,团队成员通常分布在不同的大厦甚至是世界各地,因而过程也有更多规定。他们要编写更多的正式文档,和涉众合作一起讨论项目的分析和设计,并通过会议、展示、文档和其他制品阐明分析和设计。项目的代码虽然也很重要,但只是系统众多制品中的一个组成部分。简单的过程和复杂的过程并不是对立的:每一个问题领域、每一种开发方式和每一个单独的项目都需要适合特定需求的开发过程。
也就是说,无论规模大小,所有成功的项目都有一些共同特征。相反,不成功的项目都不具备这些特征。通过观察一个成功的项目就会发现:团队成员合作得很好,每个开发人员都努力完成自己的活动和制品,同时与其他团队成员协调一致地工作。这种项目通常都很灵活、易于适应需求变更,并且它具有可预测性、可靠性,能够产生高质量的代码。总而言之,这些项目遵循的过程是开发工作方式的一部分,这个过程是不可见的,但是它的精神却通过团队成员生产的制品不断传递下去。
Rational统一过程(或叫做RUP)的灵魂体现了这个不可见的过程。RUP不断地发展,它浓缩了不同领域数以千计的项目经验。Per Kroll和Philippe Kruchten是最有资格以有效、务实的方法介绍RUP的人,他们在Rational软件公司创立并在世界范围内推广RUP的过程中起到了十分重要的作用。
有些开发人员抵制使用RUP,他们认为RUP只不过用来减少代码。事实上,RUP并非他们想像的那样,它可以帮助开发团队成员更好地配合,把主要精力放到开发有价值的代码上。Per和Philippe首先介绍了RUP的灵魂,然后阐明如何在不同类型和规模的项目中应用RUP。
在介绍了如何应用RUP后,本书讨论了更实际的问题,包括如何把RUP引入开发组和要避免哪些问题。本书首先让不同涉众接受RUP,然后分别从项目经理、系统分析员、系统架构师、开发人员和测试人员的角度介绍RUP。
成功项目的开发过程看起来很简单,但实际上有很多深层次的思想蕴含在其中。在本书中,Per和Philippe以易懂、实用的方法阐述了这些思想。读完本书,相信你的项目也将会体现RUP的灵魂。
Grady Booch
Rational软件公司首席科学家
2003年2月
Per kroll是Rational软件公司的主管,他负责开发和管理Rational统一过程。Kroll有15年的软件开发经验,并且作为RUP及其前身产品的培训师、教员和顾问,他有超过10年的工作经验。他的其他任务包括:认证合作伙伴,对提供RUP相关服务的Rational公司工作人员进行培训等。
Philippe Kruchten是Rational统一过程的首席架构师。Kruchten具有超过27年的开发大型、软件密集型系统的经验,这些项目覆盖通信、国防、航天、运输和软件开发工具等领域。他还是《Rational Unified Process,An Introduction》(中国电力出版社已出版其影印版《Rational统一过程引论》)一书的作者,该书已经被翻译成7种语言,并且它的两个版本的销量已经超过15万册。
Rational统一过程(Rational Unified Process,或RUP)①是由Rational软件公司研发并推广的一套软件工程过程框架。它凝结了众多领域成功的软件开发最佳实践经验的精华,很多计算机科学家曾为之共同努力。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概念的管理人员和想要了解RUP的实际应用的管理人员
·软件项目的实践者:要深入了解RUP并结合其特定角色应用RUP的项目经理、系统分析员、系统架构师、开发人员、测试人员和过程工程师
·要了解如何将RUP应用在其组织中的管理人员和过程工程师
本书的结构和内容 本书分为四个部分:介绍、浏览、应用和基于角色的指导。
第一部分介绍RUP。第1章解释了什么是RUP及开发和应用RUP的动机。第2章“RUP的灵魂”介绍了RUP的基本原理,它是通过总结很多成功的开发案例而得到的,并被精炼为几个简单的方针。理解这些原理有助于在项目中更好地应用RUP。第3章提供了一个比较不同过程的方法,并用这个方法对RUP和其他敏捷过程、传统的过程和像SEI CMM和SPICE这样的过程评估框架进行比较。这些比较有助于理解针对不同的项目选用什么样的RUP配置。第4章提供了一个应用RUP的小项目的例子:一个人在一个星期内完成的项目。抛开大型项目的规范,可以更好地认识RUP的本质。
第二部分通过讲述RUP的四个阶段更深入地描述了RUP。这四个阶段是:初始阶段、细化阶段、构造阶段和移交阶段。第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开发者网络(Rational Developer Network,RDN)的RUP知识中心上可以找到更多资源:http://www.rational.net。
研究机构可以联系Rational软件公司索取关于RUP的软件工程课程的信息:
http://www.rational.com/corpinfo/college_relations/seed/index.jsp
致谢
Ratioanl统一过程集中了数以千计的天才软件开发实践者经验的精华。我们能有机会和他们在一起工作来开发RUP产品并编写这本书,感到非常荣幸。
本书离不开RUP产品及其当前产品开发小组,他们是:Mike Barnard、Amanda Brijpaul、Susan Buie、Margaret Chan、Fionna Chong、Erin Curtis、Philip Denno、Carlos Goti、Debra Gray、Björn Gustafsson、Sigurd Hopen、Kelli Houston、Lars Jenzer、John Lambert、Bruce MacIssac、 Brysant Macy、Glenys MacIsaac、John Ringoen、Dan Shiffman、Paul Szymkowiak和Chinh Vo。
Rational小组和技术专家在很多年的研发及使用RUP的过程中积累了宝贵的经验。他们指出了RUP中哪些部分有效,哪些部分无效。我们很感谢这些专家提出的精辟见解,在这里特别感谢:Goran Begic、Thomas Bichler、Kurt Bittner、Anthony Crain、Sam Courtenay、Jérôme Desquilbet、Maria Ericsson、Carlos Goti、Jim Heumann、Joe Marasco、Pan-Wei Ng、Andy Phillipson、Gary Pollice、Leslee Probasco、Walker Royce、John Smith和Ian Spence。
还要感谢Grady Booch,他审阅了本书并为本书作序。
当一个法国人和一个瑞典人在一起写书时,书稿的语言必然有许多需要改进之处。Rational软件公司的编辑Catherine Southwood、Mike Perrow和Marlene Ellin以极大的热情和专业精神帮助我们解决了这个问题,还要感谢我们的编辑Kelly Sweeney和Joseph Fatton。
我们还要特别感谢我们的妻子Susan Kroll和Sylvie Kruchten,她们耐心地陪伴我们度过很多个用于编写此书的周末和夜晚。
最后,要感谢出版社的朋友:Mary O’Brien,Addison-Wesley产品与市场部的人员,其中包括Tyrrell Albaugh和Christopher Guzikowski,他们帮助本书顺利出版。