RUP(统一过程)
Posted 左直拳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RUP(统一过程)相关的知识,希望对你有一定的参考价值。
一、UP与RUP
UP(Unified Process,统一过程)是一种通用过程框架,可以广泛用于各种软件系统,包括不同应用领域、组织架构的系统,也不分系统的性能水平,项目规模。UP基于构件,使用UML建模。所谓的统一,是因为UP:
1)提供在开发组织中分派任务和责任的纪律化方法,确保进度和成本的前提下,高质量地满足用户需求,方法统一;
2)对所有的关键开发活动,为所有团队成员提供了使用准则、模板和工具指导,知识统一;
3)在项目建设过程中,确保全体成员对相同基础知识有一致的理解,共享相同的知识、过程和开发软件的视图,思想和见解统一。
RUP(Rational Unified Process)是Rational公司开发和维护的过程产品。它完全兼容UP,但比UP更加完整、详细。或者说,Rational实现了让UP落地。请注意,Rational公司也是UML的创造者。基本上,可以将UP与RUP等同。以下统称为RUP。
二、RUP的三个特点
RUP具有三个显著的特点:
1)用例驱动
2)以架构为中心
3)迭代和增量
1、用例驱动
用例是RUP方法论中一个非常重要的概念。简单地说,一个用例就是系统的一个功能。在系统分析和系统设计中,用例被用来将一个复杂的庞大系统分割、定义成一个个小的单元,这个小的单元就是用例。然后以每个小的单元为对象进行开发。按照RUP过程模型的描述,用例贯穿整个软件开发的生命周期。在需求分析中,客户或用户对用例进行描述,在系统分布和系统设计过程中,设计师对用例进行分析,在开发实现过程中,开发编程人员对用例进行实现,在测试过程中,测试人员对用例进行检验。
2、以架构为中心
构架设计是系统设计的一个重要组成部分。在构架设计过程中,设计师必须完成对技术和运行平台的选取,整个项目的基础框架的设计,完成对公共组件的设计,如审计系统、日志系统、错误处理系统、安全系统等。设计师必须对系统的可扩展性( Extensibility)、安全性(Security)、可维护性( Maintainability)、伸缩性(Scalability)、可重用性(Reusability)和运行速度(Performance)提出可行的解决方案。
所以说,要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注,并最终被RUP采纳。Philippe Kruchten提出的4+1视图方法为软件架构师“征服需求”提供了良好基础,如图所示。
一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。也就是说,架构要涵盖的内容和决策太多了,超过了人脑"一蹴而就"的能力范围,因此采用"分而治之"的办法从不同视角分别设计;同时,也为软件架构的理解、交流和归档提供了方便。
3、迭代和增量
RUP强调软件开发是一个迭代模型,它定义了四个阶段:初始、细化、构建、交付。其中每个阶段都有可能经历以上所提到的从商务需求分析开始的各个步骤,只是每个步骤的高峰期会发生在相应的阶段,例如开发实现的高峰期是发生在构造阶段。实际上这是一个二维模型,它的实现在很大程度上提供了及早发现隐患和错误的机会,因此被现代大型信息技术项目所采用。
三、RUP的四个阶段
1、技术评审
RUP中的软件过程在时间上被分解为初始、细化、构建和移交4个阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经满足。如果评审结果令人满意,就可以允许项目进入下一阶段。
2、迭代模型
如前所述,RUP的软件过程是一个迭代过程。通过初始、细化、构建、移交4个阶段就是一个开发周期,每个周期即产生一代软件。循环往复地重复这4个阶段,产品将演化出新一代产品,直至产品退役。当然每个周期的侧重点将放在不同的阶段。
3、初始阶段
任务是为系统建立业务模型并确定项目的边界。识别所有与系统交互的外部实体,定义系统与外部实体交互的特性,关注项目风险。实现过程如下:
1)明确项目规模,确定项目边界,制订验收标准,了解环境、主要需求及约束条件,识别关键用例。
2)评估项目风险
3)评估项目进度、人员配备、成本,制订项目计划。
4)阶段技术评审,检查初始阶段的目标是否完成,并决定项目是继续进行还是取消。
4、细化阶段
分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。架构需要对范围、主要功能和非功能需求做出决策,并搭建项目环境。打造可执行原型,其中必须包含关键用例。
实现过程如下:
1)确定架构
2)制订构建阶段计划,并建立基线
3)建立支持环境,包括开发环境、开发流程等
4)选择构件
5)阶段技术评审,检验系统目标和范围,架构选择,风险解决方案等
5、构建阶段
开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
本阶段的开发工作,尽量拆分构件开发,并行进行。
阶段结束时进行技术评审,评审产品是否可以进行beta测试。
6、移交阶段
本阶段重点是确保软件对最终用户是可用的。需要进行beta测试,制作发布版本,文档定稿,人员培训,收集反馈等。技术评审评审目标是否已实现,用户是否满意,有无必要开启新一轮迭代和演化?
7、二维模型
这个二维模型应该怎么理解呢?我是这么理解的:
初始、细化、构建和移交4个阶段是一个迭代。每个阶段侧重点不一样,比如初始阶段,任务是确定项目边界,评估项目风险,制订项目计划,但在其他阶段,随着项目的推进,认识的加深和变化,可能又要回过头来重新评估一下风险,或修订计划。即每个阶段的工作内容在一个迭代周期里都有可能会反复进行,大的迭代里又有小的迭代。
四、RUP的优缺点
1、优点
1)RUP将项目管理、业务建模、分析与设计等统一起来,贯穿整个开发过程;
2)为团队成员提供了使用准则、模板和工具指导,形成最佳实现方案,并基于共同的基础知识,使所有团队成员思想统一,沟通更易,这是项目成功的关键因素;
3)增强开发人员的预见性,提高了软件质量,并缩短了开发时长
4)RUP可用于开发所有类型的软件系统,应用广泛
2、缺点
过于庞大和复杂,不能快速适应需求变化,每各需求变更都要经历复杂的过程和许多额外的工作。对于较小的公司和项目,敏捷方法可能更合适。
以上是关于RUP(统一过程)的主要内容,如果未能解决你的问题,请参考以下文章