1什么是Rational统一过程(RationalUnifiedProcess,RUP)1.1什么是过程1.2什么是软件开发过程1.3什么是统一过程1.3.1统一过程是用例驱动的1.3.2统一过程是以构架为中心的1.3.3统一过程是迭代和增量的1.4关于RUP产品2RUP产品为软件开发过程所提供的主要实践指导2.1迭代的开发产品2.2需求管理2.3基于构件的体系结构2.4可视化软件建模2.5验证软件质量2.6控制软件的变更3过程简介3.1基本定义3.1.1二维结构3.1.2角色3.1.3活动3.1.4产物3.1.5工作流3.2循环或周期3.3阶段3.3.1初始阶段3.3.2细化阶段3.3.3构建阶段3.3.4交付阶段3.4迭代过程3.5核心工作流(Coreworkflows)3.5.1商业建模3.5.2需求3.5.3分析和设计3.5.4实现3.5.5测试3.5.6发布3.5.7项目管理3.5.8配置和变更管理3.5.9环境1什么是Rational统一过程(RationalUnifiedProcess,RUP)1.1什么是过程过程是为了达到一个确定的目标,需要什么人在什么时间以何种方式做何种工作的集合。1.2什么是软件开发过程软件开发过程是一个将用户需求转化为软件系统所需要的活动的集合。1.3什么是统一过程统一过程是一个软件开发过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保实现满足最终用户需求的高质量产品。统一过程不是一个简单的过程,而是一个通用的过程框架,可用于各种不同类型的软件系统,各种不同的应用领域,各种不同类型的组织,各种不同的功能级别以及各种不同的项目规模。统一过程是基于构件的,即所构造的软件系统是由软件构件通过明确定义的接口相互连接所建造起来的。(构件:系统中一个物理上可替代的部分,它符合并提供一组接口的实现)统一过程使用统一建模语言(UML)来制定软件系统的所有蓝图。(UML使用9个图来描述解决问题的5个不同侧面)统一过程的特点是:用例驱动,以构架为中心,迭代和增量的。1.3.1统一过程是用例驱动的软件系统是为了服务于它的用户而出现的,因此为了构造一个成功的软件系统,必须了解其预期的用户所希望和需要的是什么。用户——人,系统参与者。用例——是能够向用户提供有价值结果的系统中的一种功能。用例模型——系统的所有用例合在一起构成用例模型,它描述系统的全部功能,描述“系统应该为每个用户做什么?”该模型代替了传统的系统功能说明。用例不只是一种确定系统需求的工具,它们还能够驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。基于用例模型,开发人员可以创建一系列实现这些用例的设计和实现模型。开发人员可以审查每个后续建立的模型是否与用例模型一致。测试人员测试实现以确保实现模型的构件是否正确实现了用例。用例驱动表明开发过程是沿着一个流——一系列从用例得到的工作流前进的,用例被确定,用例被设计,最后用例又成为测试人员构造测试用例的基础。用例确实可以驱动过程,但不能孤立地选择用例,它们与系统构架是协调发展的。驱动用例系统构架选择用例驱动系统构架,反过来,系统构架影响用例的选择,因此,系统构架和用例会随着生命周期的延续而逐渐完善。1.3.2统一过程是以构架为中心的软件构架的作用实际上与建筑物构架所起的作用类似,它包含系统中最重要的静态和动态特征。构架是根据企业的需求逐渐发展起来的,受到用户和其他项目相关人员需求的影响,并在用例中得到反映。也受到其它因素的影响,如:软件应用平台(计算机体系结构、操作系统、数据库管理系统、网络通信协议)是否有可重用的构造块(图形用户界面框架),如何考虑实施问题,如何与遗留系统集成以及非功能性需求(性能,可靠性)等。用例与构架的关系:每一种产品都具有功能和表现形式两个方面,这里功能与用例相对应,表现形式与构架相对应。前面讲了,用例与构架之间相互影响。一方面,用例在实现时必须建立构架;另一方面,构架必须预留空间以实现现在或将来所有需要的用例,它们并行进化。构架设计师遵循下列步骤:(1)从不是专门针对用例的那部分构架(如平台)开始,创建一个粗略的轮廓。尽管这部分与用例无关,但在创建构架之前,必须对用例有个全面的了解。(2)其次,着手处理系统确定的重要用例子集,[这些用例代表了待开发系统的主要功能(核心功能),]详细描述每个选定的用例,并通过子系统,类和构件来实现。(3)随着用例的描述趋于完善,构架的更多部分便会显现出来。继续上述过程,直到确信得到一个稳定的构架为止。1.3.3统一过程是迭代和增量的开发一个商用软件产品是一项艰巨的任务,持续时间可能会很长。将这项工作划分为较小的部分或袖珍项目是切实可行的。(可能可并行开发)每个袖珍项目都是一次能够产生一个增量的过程。每次迭代,所谓是袖珍项目,是指在迭代过程中,根据一些用例继续完成后续的开发工作(分析、设计、实现和测试),并以可执行代码的形式来实现这些用例。迭代是指工作流中的步骤,而增量是指产品中增加的部分。开发人员基于两个因素确定在一次迭代过程中要实现的目标。一是,迭代过程要处理一组用例,这些用例合起来能够扩展所开发产品的可用性;二是,迭代过程要解决最突出的风险问题,后续的迭代过程建立在前一次迭代过程末期所开发的制品之上。1.4关于RUP产品RUP是Rational公司开发和维护的过程产品。RUP的开发团队同顾客、合作伙伴、Rational产品小组及顾问公司共同协作,确保开发过程持续地更新和提高以反映新的经验和不断演化的实践经验。RUP提高了团队生产力。对于所有的关键开发活动,它为每个团队成员提供了使用准则、模板、工具指导来进行访问的知识基础。而通过对相同知识基础的理解,无论你是进行需求分析、设计、测试项目管理或配置管理,均能确保全体成员共享相同的知识、过程和开发软件的视图。RUP的活动是创建和维护模型。RUP强调开发和维护模型--语义丰富的软件系统表达,而非强调大量的文本工作。RUP是有效使用UnifiedModelingLanguage(UML)的指南。UML是良好沟通需求、体系结构和设计的工业标准语言。UML由Rational软件公司创建,现在由标准化对象管理机构(OMG)维护。RUP能对大部分开发过程提供自动化的工具支持。它们被用来创建和维护软件开发过程(可视化建模、编程、测试等)的各种各样的产物--特别是模型。另外在每个迭代过程的变更管理和配置管理相关的文档工作支持方面也是非常有价值的。RUP是可配置的过程。没有一个开发过程能适合所有的软件开发。RUP既适用小的开发团队也适合大型开发组织。RUP建立简洁和清晰的过程结构为开发过程家族提供通用性。并且,它可以变更以容纳不同的情况。它还包含了开发工具包,为配置适应特定组织机构的开发过程提供了支持。2RUP产品为软件开发过程所提供的主要实践指导RUP以适合于大范围项目和机构的方式捕捉了许多现代软件开发过程的最佳实践。部署这些最佳实践经验--使用RUP作为指南--给开发团队提供了大量的关键优势。6个最佳实践的有效部署RUP描述了如何为软件开发团队有效的部署经过商业化验证的软件开发方法。它们被称为“最佳实践”不仅仅因为你可以精确地量化它们的价值,而且它们被许多成功的机构普遍的运用。为使整个团队有效利用最佳实践,RUP为每个团队成员提供了必要准则、模板和工具指导。1)迭代的开发软件2)需求管理3)使用基于构件的体系结构4)可视化软件建模5)验证软件质量6)控制软件变更2.1迭代的开发产品面对当今的复杂的软件系统,使用连续的开发方法:如首先定义整个问题,设计完整的解决方案,编制软件并最终测试产品,是不可能的。需要一种能够通过一系列细化,若干个渐进的反复过程而生成有效解决方案的迭代方法。RUP支持专注于处理生命周期中每个阶段中最高风险的迭代开发方法,极大地减少了项目的风险性。迭代方法通过可验证的方法来帮助减少风险--经常性的、可执行版本使最终用户不断的介入和反馈。因为每个迭代过程以可执行版本告终,开发团队停留在产生结果上,频繁的状态检查帮助确保项目能按时进行。迭代化方法同样使得需求、特色、日程上战略性的变化更为容易。2.2需求管理RUP描述了如何提取、组织和文档化需要的功能和限制;跟踪和文档化折衷方案和决策;捕获和进行商业需求交流。过程中用例和场景的使用被证明是捕获功能性需求的卓越方法,并确保由它们来驱动设计、实现和软件的测试,使最终系统更能满足最终用户的需要。它们给开发和发布系统提供了连续的和可跟踪的线索。2.3基于构件的体系结构该过程在全力以赴开发之前,关注于早期的开发和健壮可执行体系结构的基线。它描述了如何设计灵活的,可容纳修改的,直观便于理解的,并且促进有效软件重用的弹性结构。RUP支持基于构件的软件开发。构件是实现清晰功能的模块、子系统。RUP提供了使用新的及现有构件定义体系结构的系统化方法。它们被组装为良好定义的结构,或是特殊的、底层结构如Internet、CORBA和COM等的工业级重用构件。2.4可视化软件建模开发过程显示了对软件如何可视化建模,捕获体系结构和构件的构架和行为。这允许你隐藏细节和使用“图形构件块”来书写代码。可视化抽象帮助你沟通软件的不同方面,观察各元素如何配合在一起,确保构件模块一致于代码,保持设计和实现的一致性,促进明确的沟通。Rational软件公司创建的工业级标准UnifiedModelingLanguage(UML)是成功可视化软件建模的基础。2.5验证软件质量拙劣的应用程序性能和可靠性是戏剧性展示当今软件可接受性的特点。从而,质量应该基于可靠性、功能性、应用和系统性能根据需求来进行验证。RUP帮助计划、设计、实现、执行和评估这些测试类型。质量评估被内建于过程、所有的活动,包括全体成员,使用客观的度量和标准,并且不是事后型的或单独小组进行的分离活动。2.6控制软件的变更开发过程描述了如何控制、跟踪和监控修改以确保成功的迭代开发。它同时指导如何通过隔离修改和控制整个软件产物(例如,模型、代码、文档等)的修改来为每个开发者建立安全的工作区。另外,它通过描述如何进行自动化集成和建立管理使小队如同单个单元来工作。3过程简介3.1基本定义3.1.1二维结构横轴代表了制订开发过程时的时间,体现了过程的动态结构。它以术语周期(cycle)、阶段(phase)、迭代(iteration)和里程碑(milestone)来表达。纵轴表现了过程的静态结构:以用术语活动(activity)、产物(artifact)、角色(worker)和工作流(workflow)来描述。图2-1统一过程的二维结构迭代模型图开发流程定义了“谁”“何时”“如何”做“某事”。四种主要的建模元素被用来表达RUP:角色(Workers)——谁活动(Activities)——如何产物(Artifacts)——某事工作流(Workflows)——何时活动、产物、角色3.1.2角色角色定义了个人或由若干人所组成的小组的行为和责任。可以认为角色是项目组中个人戴的“帽子”。单个人可以佩戴多个不同的帽子。这是一个非常重要的区别。因为通常容易将角色认为是个人或小组本身,在RUP中,角色还定义了如何完成工作。所分派给角色的责任既包括某系列的活动,还包括成为产物的拥有者。人与角色3.1.3活动某个角色的活动是可能要求该角色中的个体执行的工作单元。活动具有明确的目的,通常表现为一些产物,如模型、类、计划等。每个活动分派给特定的角色。活动通常占用几个小时至几天,常常牵涉一个角色,影响到一个或少量的产物。活动应可以用来作为计划和进展的组成元素;如果活动太小,它将被忽略,而如果太大,则进展不得不表现为活动的组成部分。活动的例子:计划一个迭代过程,对应角色:项目经理寻找usecases和actors,对应角色:系统分析员审核设计,对应角色:设计审核人员执行性能测试,对应角色:性能测试人员3.1.4产物产物是被产生的、修改的或为过程所使用的一段信息。产物是项目的实际产品、项目产