统一软件开发过程——RUP

  RUP(rational unified process)是一个面向对象且基于网络的程序开发方法论。它是以面向对象方法为基础的方法,RUP坚持以用例驱动,以架构为中心,迭代和增量的开发方法。

  下面以思维导图为依据简单介绍一下RUP:

 

 1.六大经验

  1)迭代式开发

  RUP中的每一个阶段可进一步分解为迭代,一个迭代是一个完整的开发循环,每一次循环都可以产生一个执行文件,每一次循环都是一次增量开发直到形成最终产品。迭代式开发允许在每次迭代过程中需求发生变化,通过不断细化对问题加深理解。迭代式开发不仅可以降低风险,而且每次迭代过程都可以执行版本结束,一次鼓舞团队士气。

  2)管理需求

  RUP描述了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用证明了是捕获需求的有效方法。

  3)基于组件的体系结构

  基于独立的、可替代的、模块化组件的体系结构有助于管理复杂性,提高使用率。RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于复用的软件体系结构。

  4)可视化建模

 RUP往往和UML联系在一起,对软件系统建立可视化模型帮助人们提高管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。

  5)验证软件质量

 在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内建于过程中的所有活动,这样可以及早发现软件中的缺陷,提高软件质量节约软件成本。

  6)控制软件变更

  迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中,RUP描述了如何控制、跟踪、监控、修改以??品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。

 2.二维开发模型

 RUP软件开发生命周期是一个二维的软件开发模型。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期、阶段、迭代里程碑;纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动、产物、工作者和工作流。如图:

 

 3.核心概念

  RUP中定义的核心概念主要有角色、活动和工作:

  角色:描述某个人或者一个小组的行为与职责。RUP预先定义了很多角色。
  活动:是一个有明确目的的独立工作单元。
  工件:是活动生成、创建或修改的一段信息。

 

 4.裁剪

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

  1) 确定本项目需要哪些工作流

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

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

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

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

 5.开发过程

  RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段、细化阶段、构造阶段和交付阶段。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。

  1)初始阶段

 初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。

  2)细化阶段

 细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。

  3)构造阶段

 在构建阶段,所有剩余的构件应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。

  4)交付阶段

 交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。

 6.核心工作流

  RUP中有9个核心工作流,分为6个核心过程工作流和3个核心支持工作流。这些工作流在整个生命周期中被多次访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。

  1)商业建模

商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。

  2)需求

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

  3)分析和设计

 分析和设计工作流需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包和设计子系统,而描述则体现了类的对象如何协同工作实现用例的功能。设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。

  4)实现

 实现工作流的目的包括以层次化的子系统形式定义代码的组织结构,以组件的形式实现类和对象,将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。

  5)测试

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

  6)部署

 部署工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。

  7)配置和变更管理

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

  8)项目管理

 软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。

  9)环境

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

 

 

 

时间: 2024-10-28 03:32:34

统一软件开发过程——RUP的相关文章

软件开发过程RUP,CMM,XP

软件开发过程RUP,CMM,XP 考虑目前国内项目现况:需求调研先行,但需求不明确导致需求变更.中小公司缺乏过程规范指导,基本在CMM1即混乱状态.所以BSP采用的是X Process = CMM的体系+RUP的过程+XP的最佳实践软件开发过程并同时引用敏捷开发过程.应用X Process开发模式,使本系统开发过程达到CMM2-3. 20.3.1 应用RUP的过程BSP软件过程由项目启动.细化.构建.交付四个阶段组成. (1) 启动阶段 启动阶段定义项目计划.风险分析.项目前景.范围.约束:确定

软件开发过程管理系统、版本控制系统及它们之间的集成

前言:本篇文章对于软件管理系统与版本控制系统将作一定介绍,然后再介绍他们之间需要做的集成. 1.先来谈谈版本控制系统吧 Version Control System,简称VCS,属于软件配置管理(SCM)的一个部分.这个系统可能对于刚毕业的大学生来说比较陌生,几年前甚至对一些企业来说也比较陌生,简单来说这个系统主要是为了更好保存并调用文件(包括文本,代码,图像等)的各个版本.那为什么需要用这个系统来保存各个版本呢? 这个就需要追述到没有版本控制系统之前的历史了,那个时候也有程序员,也要写代码,一

国家开发银行统一软件环境USE解决方案

本文讲的是国家开发银行统一软件环境USE解决方案,近日,第四届中国SOA标准化研讨会成功召开,会议上来自各行业专家.用户.政府等相关人员,就SOA 标准以及发展进行了相关的探讨.以下是上海普元信息技术股份有限公司 战略技术总监钱军就国家开发银行统一软件环境USE解决方案做了详细的介绍. ▲上海普元信息技术股份有限公司 战略技术总监钱军 现在压在咱们这个IT程序员身上用户给他们三座大山,其实站在用户的角度看,我们的技术也给他们压力有三座大山,现在一个是技术,今天刚才用GTE,明天就SOA了,明天云

软件开发过程中的审查 (Review)

软件开发过程中的审查 (Review)   希望别人做些什么->定义出流程 希望别人做出正确的结果->定义出审查制度    软件开发项目中包括很多的审查动作,贯穿于整个开发过程.个人认为审查主要有以下目的: 1.尽早排查出潜在的问题(Potential Risk/Issue)   经过其他人的参与,以不同的视角提出不同的看法,会有类似头脑风暴的效果,集思广议来查找工程师未能注意的问题. 2.保持良好且有效的双向沟通   很多时候沟通并不充分,总有许多以为明白,实际并不明白的情况.组织管理人员需

[转]SCRUM软件开发过程----编写最好的软件

from: http://www.sawin.cn/doc/SE/SEThink/scrum.htm SCRUM软件开发过程 编写最好的软件 审校 林燕锋 [AKA] 译者 littledwarf 林燕锋 Allan bianh  sunshinezhou 胡庆培 [AKA] "The problem for engineers is that change translates into chaos, especially when a single error can potentially

Tiny软件开发过程管理暂时不再开源

悠然一直想做一个我不是级的TINY示例,但是这个东东工作量巨大,不是3下5除2可以搞得定的,于是这事儿也就放了下来,直到2015年8月,悠然觉得应该启动这个事情了,当时想得是利用群里的Tiny爱好者来开发,于是就发动了一下,结果有20多名同学准备加入,悠然非常开心,但是实际上也有一些问题,就是这些同学们热情是有的,但是无奈于都是社会中的同学,有的受工作影响,有的受家庭影响,有的受女朋友影响,实际进展不太有利. 正在此时,悠然所在公司的某个部门有十名按C语言招进来的应届毕业生,拟转到Java方向,

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发

Scrum 求助编辑百科名片:http://baike.baidu.com/view/1528674.htm    敏捷软件开发模型--SCRUM Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发.包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员. 目录 简介 Scrum创始人简介 历史 Scrum的特性 Scrum中的角色 Scrum会议 文档 展开 简介 S

[转载]SCRUM软件开发过程

这些天看到一本书<Agile Project Management with Scrum>,感觉很不错,于是在网上找了些相关的资料. SCRUM方法如下: 由Ken Schwaber和 Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行动,奋力实现同一目标──胜利).SCRUM方法最初实践于Easel公司(1993年),现已被数十家公司数百个项目开发中

从YH项目看软件开发过程

项目名称:基于YH收银系统的通用商业收银系统 项目成员:崔成龙,蒋倩兰,李祥,刘水镜 项目完成度:100%,开始进入维护工作 项目进行了5个月了,磕磕绊绊一路下来,今天终于结项了.虽然项目跟自己的预期差不太多,但是终归是有差距的.而且时间上花费的太多了,都疲了.看来以后需要采用"快速开发,产品迭代"的方式带领团队开发项目了. 在项目开发过程中,不断的学习,不断的探索,不断的实践,从思想上.技术上.解决问题的思路上都有了很大的提升,所谓困难多多,收获多多. 在开发之前,参考了很多软件开发