介绍
统计过程模型(RUP)实际上应该是指“统一过程模型(Rational Unified Process, RUP)”,这是一个用于软件开发的迭代式框架。RUP 是由 Rational Software 公司开发的,现在是 IBM 的一部分。它的主要目的是提供一种灵活的、可定制的框架,用于指导软件开发过程,以帮助团队有效地开发高质量的软件。RUP 结合了多种最佳实践,如面向对象的分析和设计,以及其他一些关键的软件工程原则。
RUP的好处
提高了团队生产力。在开发过程中,为每个开发人员提供了必要的模板、准则和指导,并确保每个成员共享知识基础(共享同一个知识库、共享同一个开发过程、共享可视化建模、共享同一个建模语言)。
RUP的特征
RUP软件开发生命周期是一个二维的软件开发模型。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)
迭代式增量开发、用例驱动(use case-driven) 、以软件体系结构为中心
迭代式的优点:减低了开发风险、更好的跟踪需求、加快了工作进度。
(“迭代”,我们如何去理解呢?每次迭代都经历瀑布模型的过程,看似每次都一样,但迭代不同于重复。迭代并不是从零开始,而每次迭代都是对上一次迭代的细化,是在上一次的基础之上进行的。)
RUP 把软件开发生命周期划分为多个循环(Cycle),每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段(Phase)组成,每个阶段完成确定的任务。这4个阶段如下。
- 初始阶段(Inception):定义项目的范围和目标,确定项目的基本结构,包括关键用例和主要风险。
- 细化阶段(Elaboration):进一步分析需求,设计系统的架构,解决项目的高风险点。
- 构建阶段(Construction):重点进行系统的开发和测试,实现所有功能。
- 过渡阶段(Transition):将系统部署到用户环境中,进行最终的测试和修改,直至用户满意。
RUP 的核心元素包括
- 迭代式开发:将项目分解为多个小的、可管理的迭代,每个迭代都是一个小型项目。
RUP强调采用迭代和增量的方式来开发软件,把整个项目开发分为多个迭代过程。在每次迭代中,只考虑系统的一部分需求,进行分析、设计、实现、测试和部署等过程;每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,以此进行下去,直至最后项目的完成。
软件开发采用迭代和增量的方式有以下好处。
(1)在软件开发的早期就可以对关键的、影响大的风险进行处理。可以降低开支风险和产品进度滞后的风险,加快整个开发工作的进度。
(2)可以提出一个软件体系结构来指导开发。
(3)可以更好地处理不可避免的需求变更。方便适应用户需求的变化。
(4)可以较早得到一个可运行的系统,鼓舞发团队的士气,增强项目成功的信心。
(5)为开发人员提供一个能更有效工作的开发过程。
- 用例驱动:用例是驱动需求、设计、实现和测试的基础。RUP中的开发活动是用例驱动的,即需求分析、设计、实现和测试等活动都是用例驱动的。
- 面向架构:强调定义和维护一个健壯的架构。
RUP中的开发活动是用例驱动的,即需求分析、设计、实现和测试等活动都是用例驱动的。以体系结构为中心
RUP中的开发活动是围绕体系结构展开的。软件体系结构的设计和代码设计无关,也不依赖于具体的程序设计语言。软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构层次的设计问题包括系统的总体组织和全局控制、通信协议、同步、数据存取、给设计元素分配功能、设计元素的组织、物理分布、系统的伸缩性和性能等。
体系结构的设计需要考虑多方面的问题:在功能性特征方面要考虑系统的功能;在非功能性特征方面要考虑系统的性能、安全性和可用性等;与软件开发有关的特征要考虑可修改性、可移植性、可重用性、可集成性和可测试性等;与开发经济学有关的特征要考虑开发时间、费用、系统的生命期等。当然,这些特征之间有些是相互冲突的,一个系统不可能在所有的特征上都达到最优,这时就需要系统体系结构设计师在各种可能的选择之间进行权衡。
对于一个软件系统,不同人员所关心的内容是不一样的。因此,软件的体系结构是一个多维的结构,也就是说,会采用多个视图(View) 来描述软件体系结构。R U P采用如图5-4所示的“4+1”视图模型来描述软件系统的体系结构。在“4+1”视图模型中,
分析人员和测试人员关心的是系统的行为,会侧重于用例视图;
最终用户关心的是系统的功能,会侧重于逻辑视图;
程序员关心的是系统的配置、装配等问题,会侧重于实现视图;
系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于
进程视图;
系统工程师关心的是系统的发布、安装、拓扑结构等问题,会侧重于部署视图。
- 风险驱动:早期识别和解决项目中的高风险。
题
- RUP 的哪个阶段重点是定义项目的范围和目标?
- A. 初始阶段
- B. 细化阶段
- C. 构建阶段
- D. 过渡阶段
- RUP 框架的开发迭代性意味着什么?
- A. 项目从开始到结束是直线发展的
- B. 项目被分解为多个小的、可管理的部分
- C. 项目开发不需要计划
- D. 项目只有在最终阶段才开始编码
- 在 RUP 中,用例的主要作用是什么?
- A. 代码生成
- B. 驱动需求、设计、实现和测试
- C. 项目计划
- D. 风险管理
- RUP 强调的面向架构的方法主要目的是什么?
- A. 减少编码时间
- B. 增加项目成本
- C. 定义和维护健壮的系统架构
- D. 减少用户需求
- 在 RUP 中,哪个阶段主要关注系统的开发和测试?
- A. 初始阶段
- B. 细化阶段
- C. 构建阶段
- D. 过渡阶段
- RUP 的风险驱动原则主要强调什么?
- A. 忽视项目风险
- B. 项目的财务管理
- C. 早期识别和解决高风险
- D. 仅在项目末尾处理风险
答案及解析
- 答案:A。初始阶段是定义项目的范围和目标的阶段。
- 答案:B。迭代式开发意味着将项目分解为多个小的、可管理的部分。
- 答案:B。用例是驱动需求、设计、实现和测试的基础。
- 答案:C。面向架构的方法旨在定义和维护一个健壮的系统架构。
- 答案:C。构建阶段主要关注于系统的开发和测试。
- 答案:C。风险驱动原则强调早期识别和解决项目中的高风险。