作业 | 什么是RUP?

来源:互联网 发布:java sql注入原理 编辑:程序博客网 时间:2024/06/07 13:12

上一周老师布置了一个作业让我们回去好好认识一下RUP。

今天来写作业了。

-------------------------------------------------------我是分割线-------------------------------------------------------------------

RUP=rational unified process,称为统一软件过程,是一个面向对象且基于网络的程序开发方法论。

看到这里表示很惊讶,因为在这个行业竟然还有能被统一的?!过程?


以下是百度的定义:

瑞理统一过程(RUP)是Rational软件公司(Rational公司被IBM并购)创造的软件工程方法。RUP描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程(也被称作厚方法学),因此特别适用于大型软件团队开发大型项目。


根据Rational(Rational Rose统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具--把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。


RUP最重要的它有三大特点:

1)软件开发是一个迭代过程,

2)软件开发是由Use Case驱动的,

3)软件开发是以架构设计(Architectural Design)为中心的。


迭代式开发

在软件开发的早期阶段就想完全、准确的捕获用户的需求几乎是不可能的。实际上,我们经常遇到的问题是需求在整个软件开发工程中经常会改变。迭代式开发允许在每次迭代过程中需求可能有变化,通过不断细化来加深对问题的理解。迭代式开发不仅可以降低项目的风险,而且每个迭代过程都可以执行版本结束,可以鼓舞开发人员。



--------------------------------------------------------------个人理解--------------------------------------------------------------

RUP是一个基于6个最佳开发实践的流程定义产品。

  6个最佳开发实践


  1、迭代始开发
  2、需求管理
  3、基于组建的体系架构
  4、可视化建模
  5、持续的质量管理
  6、配置管理

  RUP如何来实现6个最佳开发实践
  1、把软件开发过程看成是多次迭代开发的过程,并且把迭代开发分成4个阶段

  (1)Inception phase(开始阶段)
  定义出项目目标和范围
  (2)Elabration phase(细化阶段)
  制定计划、定义项目基线、确定系统的体系架构
  (3)construction phase(开发阶段)
  主要是编码、单元测试工作,是人工最密集的阶段。
  这个时候,虽然允许有小的需求加入进来,但是应该尽量避免大的需求变动。
  (4)Transition phase(发布阶段)
  将产品提交给用户适用。包括相关的培训等内容

  注意:每个阶段有若干次迭代组成。

  可以看出RUP虽然是基于迭代式开发,但是在整体的4个阶段划分上还是类时与瀑布式开发的软件过程。




RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明,由于它非常庞大所以对具体的开发机构和项目,用RUP时还要做裁剪,也就是要对RUP进行配置。RUP就像一个元过程,通过对RUP进行裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为以下几步:

1) 确定本项目需要哪些工作流。RUP的9个核心工作流并不总是需要的,可以取舍。

2) 确定每个工作流需要哪些制品。

3) 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要哪些工作流,每个工作流执行到什么程度,制品有哪些,每个制品完成到什么程度。

4) 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。

5) 规划工作流内部结构。工作流涉及角色、活动及制品,他的复杂程度与项目规模即角色多少有关。最后规划工作流的内部结构,通常用活动图的形式给出。


个人感觉这些较为核心的工作流,容易让人联想到传统的瀑布模型,但是他们的迭代过程又是完全不同的,工作流在整个生命周期中一次又一次被访问,在轮流使用的过程中,每一次迭代以不同的重点和强度重复。


这样就能解决以下这些问题:

降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。

因此,迭代过程这种模式使适应需求的变化会更容易些。