软件工程与UML案例解析(第三版)
上QQ阅读APP看书,第一时间看更新

3.5 RUP统一软件开发过程

RUP(Rational Unified Process,统一软件开发过程),是由IBM Rational公司提出来的。它是一个通用的过程框架,适用面非常广,可以适用于不同种类的软件系统、应用领域、组织类型、性能水平和项目规模。它是一个演化的开发过程。

RUP是基于构件的开发过程,在开发过程中非常重视构件的应用。这意味着利用它开发的软件系统是由构件组成的,构件之间通过定义良好的接口相互联系。与其他软件过程相比,RUP具有三个显著的特点:

(1)它是用例驱动的过程

根据需求分析的用例来构建需要的系统行为。用例定义了系统功能的使用环境和上下文,每个用例描述的是一个完整的系统服务。

(2)它是迭代和增量式的过程

每次迭代都产生一个可执行的版本。每次迭代时,都选用一组还没有实现的用例来作为增量进行开发,优先识别并着手实现风险较大的用例。例如,集中所有的技术力量优先解决技术难度最大的用例。

(3)它是以基本架构为中心的过程

在开发之前,首先根据平台而不考虑用例来设计系统架构,然后,选用其中几个成熟的用例来修改或扩展先前的架构,用系统架构来概念化、建立管理和发展开发之中的系统。

3.5.1 RUP生命周期

问题引入

RUP是一种软件开发过程,包括开发过程、管理过程和支撑过程,它的生命周期是怎样的呢?

扫一扫 看视频

解答问题

与传统的一维瀑布开发模型不同,RUP软件开发生命周期是一个二维的开发模型。横轴表示软件过程的时间维,是过程展开的生命周期特征,体现开发过程的动态结构,被分成四个顺序阶段,分别是:先启阶段(Inception)、精化阶段(Elaboration)、构造阶段(Construction)、移交阶段(Transition)。每个阶段以一个主要里程碑结束。每个阶段结束时都要安排一次技术评审,以确定是否符合该阶段的目标。如果评审令人满意,则允许项目进入下一个阶段。纵轴表示内容维,体现开发过程的静态结构,描述按性质将活动逻辑地进行分组的工作流程,如图3-8所示。

分析问题

下面从时间维的四个阶段出发,对整个RUP统一软件开发过程作简要描述。

(1)先启阶段

这是开发生命周期的第一阶段。其主要目标是实现所有项目相关人员在项目的生命周期目标上达成一致,把开发的主要思想确定为现实的目标。其任务是为系统建立业务模型并确定项目的软件范围和边界条件,识别出系统的关键用例,确定至少一个体系结构方案,评估整个项目的整体成本和进度安排、评估潜在风险,准备项目的支持环境。这个阶段所关注的是整个项目的业务和需求方面的主要风险。主要包括以下几个基本活动。

图3-8 RUP生命周期开发模型

①明确项目规模。建立项目的软件规模和边界条件,包括验收标准,了解环境及重要的需求和约束,识别系统的关键用例。

②评估项目风险。针对软件开发涉及的风险,包括在软件开发中可能出现的风险和软件实施过程中外部环境的变化可能引起的风险等进行评估。

③制订项目计划。综合考虑备选构架,评估设计和自制或外购或重用方面的方案,从而估算出项目成本、进度和资源等。

④准备项目环境。评估项目和组织,选择开发工具,确定要改进哪些流程部分。

⑤阶段技术评审。在评审过程中,需要考虑项目的规模定义,成本和进度估算是否适中,估算根据是否可靠,需求是否正确,开发方和用户方对软件需求的理解是否达成一致,是否已确定所有风险,并且针对每个风险有相应的风险回避措施等问题。

初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。用来评价项目基本的生存能力,决定是继续该项目还是取消它。

(2)精化阶段

这是开发过程的第二阶段。该阶段的目标是建立系统架构的基线,为构造阶段中的大量设计和实施工作提供稳固基础。其主要任务是分析问题领域,建立健全的构架基础,淘汰项目中的最高风险元素。主要有以下五个活动:

①确定构架。确保构架、需求和计划足够稳定,充分减少风险,从而能够有预见性地确定开发所需的成本和进度安排。

②制订构造阶段计划。为构造阶段制定详细的迭代计划并为其建立基线。

③建立支持环境。为项目建立支持环境,包括开发环境,开发流程,创建模板、准则和准备工具等。

④选择构件。综合考虑备选构件,评估自制或外购或重用构件选择方案,以确定构造阶段成本和进度安排。

⑤阶段技术评审。在评审过程中,需要确定产品的需求、体系结构是稳定的;使用的关键方法已得到证实;已解决了主要的风险因素;已有足够详细和精确的构造阶段的迭代计划;项目团队相关人员已在选用的体系结构上达成共识;确定实际的资源花费与计划的花费相比是否可以接受。

精化阶段结束时是第二个重要的里程碑:生命周期体系结构(Lifecycle Architecture)里程碑。为系统的结构建立管理基准并使项目小组能够在构造阶段中进行衡量。此时,应检查详细的系统目标和范围、结构的选择以及主要风险的解决方案。

如果项目未能达到该里程碑,则可能应放弃或应该重新认真考虑该项目。

(3)构造阶段

这是开发过程的第三阶段。这个阶段以构架为基线,在此基础上构建软件。该阶段要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。其重点放在资源的管理和运作的控制,以降低成本,同时优化进度和质量,快速完成可用的版本。确定软件、环境和用户是否已经为部署软件做好准备。尽可能快地完成有用的产品版本(Alpha版、Beta版或其他测试发行版)。

构造阶段结束时是第三个重要的里程碑:初始操作能力(Initial Operational)里程碑。在该里程碑,产品已准备好交付给移交团队。已开发所有功能并已完成所有Alpha测试。除了软件外,还已开发了用户手册,并且有当前发行版的描述。

该里程碑决定了产品是否可以在Beta测试环境中进行部署。

(4)移交阶段

这是开发过程的第四阶段。确保软件已准备就绪,从而可以移交给最终用户使用。当基线已经足够完善,可以安装到最终用户实际环境中时,则进入交付阶段。移交阶段的重点是确保最终用户可使用软件。移交阶段的主要任务是进行Beta测试,按用户的需求确认新系统;获得用户对当前版本的反馈,基于反馈调整产品,如进行调试,性能和可用性的增强等;最终用户支持文档定稿;制作产品发布版本;培训用户和维护人员。

移交阶段的终点是第四个里程碑:产品发行(Product Release)里程碑。但是,软件开发生命周期并没有结束。此时,要确定软件目标是否实现,是否应该开始另一个开发周期。这是一个连续的过程,系统将不断地被改进,消除错误,添加新的功能或特性,进而增强系统的性能。在某些情况下,该里程碑可与下一周期的先启阶段的结束点相重合。

在每个阶段结束时都要进行一次技术评审,以确定完成该阶段的最终迭代后是否应该让项目进入下一个阶段。技术评审主要考虑的问题应该与项目管理有关,因为主要技术问题应该已经在该阶段的最终迭代以及随后的活动中得到解决。技术评审主要包含以下步骤:

(1)安排评审会议日程

技术评审会议的参与者必须包括外部人员(用户代表和领域专家)、项目管理团队和项目评审委员会。

(2)分发会议材料

在会议召开之前,应当及早将技术评审材料分发给评审人员,让他们有时间进行审阅并做好准备。

(3)召开评审会议

在会议期间,评审人员主要关注状态评估。在会议结束时,评审人员应做出是否批准的决定。技术评审会议的可能结果如下:

阶段被接受;

有条件接受;

阶段不被接受。

(4)记录会议决定

在会议结束时应该完成评审记录。其中包括重要的讨论或活动以及评审的结果。

3.5.2 RUP统一开发过程的核心工作流程

问题引入

从图3-8中了解到,RUP软件开发生命周期是一个二维的开发模型。在上节中已对其横轴——时间维相关内容有所了解,然而,它的纵轴——内容维又包含了哪些知识呢?

解答问题

RUP生命周期开发模型的纵轴描述了软件项目开发和组织管理中的核心工作流程,包括两部分内容:

核心过程工作流程。核心过程工作流程指的是在项目开发中的流程,包括业务建模、需求、分析与设计、实现、测试和部署等6个工作流程。

核心支持工作流程。核心支持工作流程指的是在组织管理中的流程,包括环境、项目管理、配置和变更管理等3个工作流程。

从图3-8所示的RUP统一开发过程生命周期中我们可以看出,这9个核心工作流程在项目开发过程中被轮流使用,在每一次迭代中以不同的重点和强度重复。

分析问题

下面将简述这些核心工作流程。

(1)项目管理(Project Management)

项目管理工作流程的目的是为软件密集型项目的管理提供框架,为项目的计划、人员配备、执行和监测提供实用指南;为管理风险提供框架。通过提供一些项目管理的环境,使这个任务更加容易完成。该工作流程侧重于迭代式开发流程的风险管理,贯穿整个生命周期,并针对特定的迭代计划,迭代地开发项目、监测项目的进度和各项指标。

项目管理工作流程所提供的主要工作产品有:业务案例、风险管理计划、工作计划书、风险列表、迭代评估、迭代计划、问题解决计划、测试计划书、系统集成计划书、子系统集成计划书、工作单、产品验收计划、评估计划、项目复审意见书和开发总结。

(2)环境(Environment)

环境工作流程的目的是向软件开发团队提供软件开发环境,包括过程和工具。环境工作流程集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。

环境工作流程提供的主要工作产品有:开发流程、开发案例、特定项目指南、特定项目模板、软件开发使用的硬软件工具、开发组织评估、用户手册指南等。

(3)需求(Requirements)

需求工作流程反映用户的需求,其目的是描述系统应该做什么,并使开发团队和用户就这一描述达成共识。为了达到这一目标,需要对系统需求和约束进行提取、组织、归纳和文档化。最重要的是要理解系统所要解决问题的定义和范围。

需求工作流程所提供的主要工作产品有:用例模型、软件需求规约、用户界面原型、词汇表、补充规范、愿景文档等。

(4)业务建模(Business Modeling)

其目的在于了解目标组织(将要在其中部署系统的组织)的结构及业务运作机制,以及目标组织中当前存在的问题并确定改进的可能性。确保客户、最终用户、领域专家和开发人员等所有项目参与人员对开发系统达成共识,导出支持目标组织所需的软件系统需求,建立业务用例模型、领域模型。

业务建模工作流程所提供的主要工作产品有:业务用例模型、领域模型、业务需求说明书、业务词汇表、补充业务规范、风险说明书、复审说明书等。

(5)测试(Testing)

测试工作流程要验证对象间的交互作用;验证软件中所有组件的正确集成;检验所有的需求已被正确地实现;识别缺陷,并确认在软件部署之前被发现并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低修改缺陷的成本。测试是针对系统的可靠性、功能和性能进行的。

测试工作流程的主要工作产品有:测试评估摘要、测试结果、测试套件(一组相关测试)、测试构想列表、测试策略、测试计划、测试脚本和测试数据、测试用例等。

(6)分析与设计(Analysis and Design)

分析与设计工作流程将用户需求转换为未来系统的设计,逐步开发健壮的系统构架,使设计与实现环境相匹配,优化其性能。分析与设计的结果是一个可选的分析模型和一个设计模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的包(Package)和子系统(Subsystem)。描述则体现了对象之间如何协同工作,以实现用例所包含的功能。

分析与设计工作流程所提供的主要工作产品有:系统分析模型(分析类)、用户界面原型、用例实现、设计类和设计包、软件体系结构文档、系统总体设计报告、系统设计模型、部署模型、数据模型、系统详细设计报告等。

(7)配置与变更管理(Configuration & Change Management)

配置和变更管理工作流程描述了如何在多个成员组成的项目团队中控制大量的工作产品。该工作流程提供了有效的准则来管理演化软件系统中的多个变体,跟踪软件创建过程中的版本,描述了如何管理并行开发、分布式开发,如何自动化创建工程。同时也阐述了对产品修改的原因、时间和人员,保持审计记录。

配置和变更管理工作流程所提供的主要工作产品有:变更请求、配置审计结果、配置管理计划、项目存储库和工作空间等。

(8)实现(Implementation)

实现工作流程的目的是实现子系统的分层结构,定义代码结构,以构件的方式实现类和对象,对已开发的构件按单元来测试,并且将各实现团队完成的结果集成到可执行系统中。

实现工作流程所提供的工作产品有:实现总结书、实现模型、系统集成书、代码审核意见书、源代码、用户使用手册、错误解决记录手册、构件及其说明等。

(9)部署(Deployment)

部署工作流程用来描述那些为确保最终用户可以正常使用软件产品而进行的活动。这些活动包括软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助等。

部署工作流程所提供的工作产品有:部署计划、产品(部署单元)、用户支持材料、培训材料、安装文档和发布说明。

RUP统一开发过程是一个迭代的增量式的开发过程,在RUP生命周期的每一个阶段都包含了这九个核心工作流,只是侧重的内容有所不同。在每个阶段所对应的核心工作流都有工作流明细、活动、以及输出工件等。

结论:对于大型而复杂的软件项目而言,比较适合于使用RUP统一开发过程,同时应用面向对象的软件开发技术,可以大大提高软件项目的成功率。