RUP简介华迪实训基地Version:1.02Hwadee华迪实训内容课程授课内容信息反馈3Hwadee华迪实训课程总课时:120分钟授课大纲:0:20RUP模型0:45RUP生命周期0:45RUP核心工作流0:20角色0:20工件共计:150分钟4Hwadee华迪实训目标了解RUP5Hwadee华迪实训词汇表6Hwadee华迪实训RationalUnifiedProcess(RUP)是由Rational公司开发的软件开发过程模型,RUP分析了软件开发中出现的各种问题,利用总结出的六个最佳实践(BestPractices),建立了以迭代开发为基础的软件开发过程模型。RUP不仅提供了一套方法学,更重要的是同时提供了实施的基础——各种开发、管理工具。适用项目类型:RUP适合采用面向对象技术进行分析和设计的项目,并且要求项目采用迭代化的方式进行开发7Hwadee华迪实训RUP模型结构8Hwadee华迪实训本图显示了随着时间的变化重点进行变化。例如,在早期迭代,我们花费更多的时间在需求上,而在后期迭代,我们花费更多的时间在实施上。水平轴表示时间,显示过程展开时的生命周期表现。生命周期划分为四个阶段,每个阶段可以有多个迭代。四个阶段根据开发生命周期中不同的关键里程碑划分为:wInception,先启阶段wElaboration,精化阶段wConstruction,构造阶段wTransition,产品化阶段9Hwadee华迪实训垂直轴表示工作流,通过将活动以自然的方式进行逻辑分组。wBusinessModeling,业务建模wRequirements,需求wAnalysis&Design,分析和设计wImplementation,实施wTest,测试wDeployment,部署wConfiguration&ChangeManagement,配置与变更管理wProjectManagement项目管理wEnvironment,环境10Hwadee华迪实训RUP生命周期RUP的软件生命周期从时间上分为四个阶段,每个阶段包括一个主要的里程碑。阶段是两个主要里程碑的分隔,在各个阶段结束时,执行评估阶段目标是否满足以决定是否进入下一个阶段。RUP是一个风险驱动的生命周期模型,为了有效地控制风险,RUP以渐进的方式进行演进,首先解决高风险的问题,这主要是通过迭代来实现。在每个阶段可以划分为多个迭代,每个迭代确定一个内部里程碑(或一个发布)。11Hwadee华迪实训下面是RUP生命周期所使用的一些基本概念:阶段(Phase)在两个主要项目里程碑之间的时间,这个时间内一个良好定义的一系列的目标被满足,工件被完成,可以决定进入或不进入下一个阶段RUP的生命周期包括四个阶段:Inception(初始化阶段)、Elaboration(精化阶段)、Construction(构造阶段)、Transition(移交/产品化阶段)里程碑(Milestone)一个迭代正式结束的点。.迭代(Iteration)一个明确的基于计划和评估标准的活动序列,一般情况下将产生一个发布(内部或外部)。12Hwadee华迪实训角色(Role)角色定义在一个软件工程组织中,个体或一起作为团队工作的众多个体的行为和职责,角色是代表指定职责的一类人员。角色具有执行工作的活动,一个活动是角色所作的在项目环境中提供有价值结果的事情。在RUP中每个参与项目的人员都被赋予一个或多个角色,RUP通过角色来明确职责。13Hwadee华迪实训活动(Activity)活动是一个工作单元,由一个扮演相应角色的个体执行。活动有一个清晰的目的,通常是创建或更新某个工件,如模型、类或计划。每个活动安排给一个制定的角色。活动的粒度一般是几个小时或几天,通常与一个角色相关,影响一个或小数量的工件。14Hwadee华迪实训工件(Artifact)工件是过程的工作产品:角色利用工件执行活动,在执行活动的过程中产生工件。工件可以是模型、模型元素或文档。15Hwadee华迪实训工作流(Workflows)在RUP中工作流用于描述组织开发活动的过程,它包括两个级别:w核心工作流(Disciplines)w工作流明细(WorkflowDetail)核心工作流显示了产生一个特定的工件集的所有活动。核心工作流是相关的角色、活动、工件的概要级的描述。在更详细的级别——“工作流明细”,描述了角色怎样合作,怎样利用和生成工件。核心工作流由很多工作流明细组成,而工作流明细由很多角色参与的活动组成,活动是最小的工作单位。16Hwadee华迪实训演进的生命周期RUP的生命周期化分为四个阶段,对应于每个阶段有一个里程碑。当一个里程碑的目标达到时,就进入到下一个阶段。同瀑布化的流程不同,RUP的阶段并不是按照需求、分析、设计、编码这些工程活动划分阶段。RUP是根据里程碑来划分阶段,当然在不同的阶段,软件工程的重点仍然是相同的,如在项目的早期Inception阶段,其重点的工程活动是需求,而在项目后期的Construction阶段,编码是重要的工程活动。而在每个阶段都可能进行各种工程活动。17Hwadee华迪实训演进的生命周期对于周期较长或阶段较长的项目,如果只在阶段的里程碑处进行评估,可能会产生较大的问题,为了更好的控制项目,开发组织希望尽早地确定项目的风险、解决项目的问题,尽早作出关于继续/终止的决定。为了达到这一目标,迭代是一种较好的策略,RUP通过阶段划分为一个或多个迭代,并将阶段的里程碑分配到各个迭代中,优先将风险大的问题分配到早期迭代,这样就能更好地控制风险。18Hwadee华迪实训阶段(Phases)RUP将软件工程活动生命周期化分为四个阶段,每个阶段有不同的里程碑,这四个阶段是wInception,先启阶段wElaboration,精化阶段wConstruction,构造阶段wTransition,产品化阶段19Hwadee华迪实训Inception先启阶段里程碑:生命周期目标里程碑先启阶段末是第一个重要的项目里程碑,即生命周期目标里程碑。此时,检查项目的生命周期目标,并决定继续进行项目还是取消项目20Hwadee华迪实训Elaboration,精化阶段里程碑:生命周期构架精化阶段结束是第二个重要的项目里程碑——生命周期构架里程碑。在这一点,需要检查详细的系统目标和范围,选择的构架,以及主要风险的解决情况。21Hwadee华迪实训Construction,构造阶段里程碑:最初的操作性能在最初操作性能里程碑,产品随时可以移交给产品化团队。此时,已开发了所有功能,并完成了所有Alpha测试(如果有测试)。除了软件之外,用户手册也已经完成,而且有对当前发布版的说明。22Hwadee华迪实训Transition,产品化阶段里程碑:产品发布里程碑产品化阶段末是第四个重要的项目里程碑,即产品发布里程碑。此时,您确定是否达到目标,以及是否应该开始另一个开发周期。有时候,该里程碑可能与下一周期的先启阶段末重合。产品发布里程碑是活动:项目验收评审成功完成的结果23Hwadee华迪实训剪裁:对于一个标准的软件项目,这四个阶段是不能缺少的,但有的项目如果不需要达到相应的阶段里程碑,那么这个阶段则可以考虑去掉。例如一个接受用户的需求分析结果进行开发的项目,就可以考虑不需要Inception阶段;如果项目只负责设计,而将编码/实施由其它人来处理,只应当考虑去掉Construction阶段24Hwadee华迪实训迭代(Iterations)RUP并没有严格定义迭代的数量,也没有定义迭代的目标,这部分由项目团队根据项目的情况进行决定,但是项目的生命周期确定后,需要确定:w迭代的数量w迭代的周期w迭代的目标迭代的工作范围25Hwadee华迪实训工作流RUP的工程活动由工作流组成,最顶层的组织为核心工作流,每个核心工作流包括多个工作流明细,工作流明细由活动组成。活动包括具体的工作步骤,并且活动可以在其它工作流中重用。26Hwadee华迪实训BusinessModeling,业务建模业务建模的目的是:w了解目标组织(将要在其中部署系统的组织)的结构及机制。w了解目标组织中当前存在的问题并确定改进的可能性。w确保客户、最终用户和开发人员就目标组织达成共识。w导出支持目标组织所需的系统需求。为实现这些目标,业务建模工作流程说明了如何拟定新目标组织的前景,并基于该前景来确定该组织在业务用例模型和业务对象模型中的流程、角色以及职责。27Hwadee华迪实训Requirements(需求)需求工作流程的目的是:w与客户和其他涉众在系统的工作内容方面达成并保持一致。w使系统开发人员能够更清楚地了解系统需求。w定义系统边界(限定)。w为计划迭代的技术内容提供基础。w为估算开发系统所需成本和时间提供基础。w定义系统的用户界面,重点是用户的需要和目标。28Hwadee华迪实训Analysis&Design(分析和设计)分析设计的目的在于:w将需求转换为未来系统的设计。w逐步开发强壮的系统构架。使设计适合于实施环境,为提高性能而进行设计。29Hwadee华迪实训Implementation(实施)实施的目的包括:w对照实施子系统的分层结构定义代码结构、w以构件(源文件、二进制文件、可执行文件以及其他文件等)的方式实施类和对象、w对已开发的构件按单元来测试,并且w将各实施员(或团队)完成的结果集成到可执行系统中。30Hwadee华迪实训Test,测试测试的目的在于:w核实对象之间的交互。w核实软件的所有构件是否正确集成。w核实所有需求是否已经正确实施。w确定缺陷并确保在部署软件之前将缺陷解决。31Hwadee华迪实训Deployment(部署)部署工作流程用来描述那些为确保最终用户可以正常使用软件产品而进行的活动。部署工作流程描述了三种产品部署的模式:w自定义安装w“市售”w通过Internet使用软件在每个实例中,都强调要在开发场所对产品进行测试,并在产品最终发布之前进行Beta测试。尽管部署活动主要集中于产品化阶段,但在较早的一些阶段中也会有一些为部署进行计划和准备的活动。32Hwadee华迪实训Configuration&ChangeManagement(配置与变更管理)配置与变更请求管理控制对项目工件的变更,并且维护项目工件的完整性。在控制由参与同一个项目的许多人员所生成的大量工件时,配置管理系统至关重要。如果进行控制,就有助于避免混乱情况(其代价通常都很大)的发生,并确保生成的工件不会由于下列问题而发生冲突:33Hwadee华迪实训Configuration&ChangeManagement(配置与变更管理)w同时更新。当两个或更多的角色分别对同一个工件进行操作时,最后进行变更的那个角色将破坏前一个角色的工作。根本的问题是:如果系统不支持同时更新,则会导致系列变更并使开发流程减慢速度。w有限通知。由多个开发人员共享的工件中的某个问题得到了纠正,但有些开发人员并未收到变更通知。多个版本。多数大程序是以演进式发布版的方式开发的。一个发布版可能为客户所用,另一个发布版正在测试,而第三个发布版则尚在开发之中。如果在这些版本的任何一个版本中发现了问题,则需要将修复方案通报给所有这些版本。除非对变更进行慎重的控制和监测,否则可能会引起混乱,并且由于混乱而需要进行修复和返工,而这往往成本很高。34Hwadee华迪实训Configuration&ChangeManagement(配置与变更管理)配置管理系统直接带来的一些好处是:该系统w支持开发方法,w维护产品完整性,w确保已配置产品完整性和正确性,w为开发产品提供一个稳定的环境,w基于项目策略限制对工件的变更,和提供有关变更工件的原因、时间和人员的审计记录。35Hwadee华迪实训Configuration&ChangeManagement(配置与变更管理)剪裁:配置管理系统是整个开发流程中的核心部分,它必不可少。因此Configuration&ChangeManagement(配置与变更管理)不能以删除核心工作流程的方式裁剪。36