什么是RUP?

RUP(Rational Unified Process),统一软件开发过程,统一软件过程是一个面向对象且基于网络的程序开发方法论。

RUP是风险驱动的、基于Use Case技术的、以架构为中心的、迭代的、可配置的软件开发流程。

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

基本的概念,大概了解  RUP 究竟是个什么东西

核心概念

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

(1)角色:RUP预先定义了许多角色,角色描述了在项目开发中,一个人或者一个开发团队的工作职能与任务。

(2)活动:它是一个有明确功能的独立模块,反映了系统的某个功能。

(3)工件:是在活动进行过程中产生、创建或修改的一段信息,同时也是项目开发的文档资料

RUP 开发中会用到的专业名词,看解释可以明白其代表的含义

开发过程

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

这是使用 RUP 开发的基本过程,遵循该过程的每一个阶段进行对应的工作,每个阶段必须交出满意答卷才能进行下一阶段

初始阶段

(1)对需求有大概了解,确定系统中大多数角色和用例。

(2)划分主要子系统,给出系统的体系结构概貌

(3)分析整个项目进行中的业务和需求方面的主要风险,评价项目可行性。

(4)考虑时间、经费、技术、项目规模和效益等因素

(5)制定开发计划

(6)初始阶段结束时是第一个重要的里程碑:生命周期目标里程碑。生命周期目标里程碑评价项目基本的生存能力

细化阶段

(1)进行需求风险分析。考虑项目目标是否偏离用户需求

(2)进行技术风险分析。通过建立原型等方法,考虑所选技术方案可行性

(3)进行技能风险分析。考虑实施项目人员素质能否胜任项目要求

(4)进行政策风险分析。考虑政策性因素对项目的影响

(5)进行高层分析和设计,并作出结构性决策。

(6)产生简要体系结构,包括用例列表、领域概念模型和技术平台等

(7)为构造制定计划

(8)同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。

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

构造阶段

(1)构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量,迭代增量的开发一个完整的软件系统。

(2)在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。

(3)构建阶段结束时是第三个重要的里程碑:初始功能里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版

交付阶段

(1)交付阶段的重点是确保软件对最终用户是可用的。

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

(3)在交付阶段的终点是第四个里程碑:产品发布里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合

核心工作流

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

工作流是我们进行开发时会用到的工具,合理选择搭配这些工具可以帮助我们在每一个开发阶段事半功倍

(1)商业建模

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

(2)需求

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

(3)分析和设计

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

(4)实现

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

(5)测试

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

(6)部署

部署工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。

(7)配置和变更管理

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

(8)项目管理

软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。

(9)环境

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

开发模式实现

综上所述,结合开发过程与工作流之后,根据现实情况得出的实际开发过程与模型

(1)RUP的二维开发模型

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

(2)迭代开发模式

RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地发展,从一个迭代过程到另一个迭代过程到成为最终的系统

(3)裁剪

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

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

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

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

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

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

RUP开发十大要素

使用 RUP 开发要注意的一些事项

(1)开发前景

有一个清晰的前景是开发一个满足涉众真正需求的产品的关键。前景抓住了RUP需求流程的要点:分析问题,理解涉众需求,定义系统,当需求变化时管理需求。它是软件项目的一个清晰的、通常是高层的视图,能被过程中任何决策者或者实施者借用。它捕获了非常高层的需求和设计约束,让前景的读者能理解将要开发的系统。

(2)达成计划

在RUP中,软件开发计划(SDP)综合了管理项目所需的各种信息,也许会包括一些在先启阶段开发的单独的内容。SDP必须在整个项目中被维护和更新。

(3)标识和减小风险

在项目早期就标识并处理最大的风险。项目组标识的每一个风险都应该有一个相应的缓解或解决计划。风险列表应该既作为项目活动的计划工具,又作为确定迭代的基础

(4)分配和跟踪任务

对正在进行的活动和进化的产品的客观数据的连续的分析,通过定期的项目状态评估提供讲述、交流和解决管理问题、技术问题以及项目风险的机制。团队一旦发现障碍物,就为这些问题指定一个负责人,并指定解决日期。进度应该定期跟踪,如有必要,更新应该被发布。

(5)检查商业理由

商业理由从商业的角度提供必要的信息,以决定一个项目是否值得投资或继续进行

(6)设计组织构架

在RUP中,系统的构架是指一个系统关键部件的组织或结构,部件之间通过接口交互。要陈述和讨论软件构架,你必须先创建一个构架表示方式,以便描述构架的重要方面。在RUP中,构架表示由软件构架文档捕获,它给构架提供了多个视图。每个视图都描述了某一组涉众所关心的正在进行的系统的某个方面。

(7)构建和测试

在构建阶段的每次迭代中,组件不断的被集成到可执行、经过测试的版本中,不断地向最终产品进化。

(8)验证和评价结果

RUP的迭代评估捕获迭代的结果。评估决定了迭代满足评价标准的程度,还包括学到的教训和实施的过程改进。

(9)管理和控制变化

当变化发生时管理和控制项目的规模,并且贯穿整个生命周期。

(10)提供用户支持

在RUP中,部署流程的要点是包装和交付产品,同时交付有助于最终用户学习、使用和维护产品的任何必要的材料

RUP的优势

(1)迭代式开发

在软件开发的初期就想完全、准确地获得用户的需求基本是不可能的。实际上,设计者常常碰到的问题是需求在整个软件开发过程中经常会发生变化。而迭代式开发允许每次迭代开发过程中需求发生变化,它正是通过不断迭代来细化对问题的理解。这样,迭代式开发大大降低了项目开发的风险,提高了软件开发的效率

(2)需求管理

准确地确定系统的需求是一个连续渐进的过程,开发人员不可能在系统开发之前就完全详细地理解系统的全部需求。而RUP正是提供了如何获得、组织系统的功能和约束条件并将其文档化的方法

(3)便于复用的软件体系结构

组件是可复用的单位,为了达到软件复用的目的,可以由组件来组成系统。基于独立的、可替换的、模块化组件的体系结构的优点是它方便管理,并能有效地提高软件的重用性。RUP展示了如何设计一个灵活的、有很强适应性的、有利于理解和便于复用的软件体系结构

(4)有利于可视化建模

RUP常常和UML相互联系,这就有利于建立软件系统的可视化模型。RUP提供了对软件系统进行可视化建模的方法

(5)对软件质量进行验证

在RUP中,软件质量的评估不再是事后进行或单独小组进行的分离活动,而是贯穿于软件开发的过程中,这样就有利于及早发现软件中存在的不足

统一软件开发过程(RUP)分析相关推荐

  1. 【中级软考】软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型、RUP(Rational Unified Process 统一软件开发过程)、敏捷开发(开发方法,不是周期模型)

    文章目录 瀑布模型/改进的瀑布模型(Waterfall Model) 螺旋模型(Spiral Model) 增量和迭代模型(Incremental Model) 原型法(RAPId Prototype ...

  2. 在统一软件开发过程中使用UML

    如何在统一软件开发过程中使用UML? 起始阶段常用UML图 在起始阶段,通常有用例图.类图.活动图.顺序图等UML图的参与. 获取用户需求之后首先要将这些需求转化为系统的顶层用例图. 在确定了用例之后 ...

  3. 论软件开发过程RUP及其应用

    RUP (Rational Unified Process)是IBM公司一款软件开发过程产品,它提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发.RUP汲取了各种面 ...

  4. [架构之路-131]-《软考-系统架构设计师》-软件工程-1-软件工程方法大全(软件开发过程方法、软件开发过程模型、逆向工程、净室软件工程)

    前言: 第3章 软件工程 3.1 软件开发过程方法 3.1.1 什么是软件工程 软件工程是一门研究用工业硬件生产的工程化方法构建和维护有效.实用和高质量的软件的学科. 它涉及程序设计语言.数据库.软件 ...

  5. 软件开发过程(CMMI/RUP/XP/MSF)是与非?

       经常看到和听到大家在争论敏捷过程.RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由.争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程.关键是什么样的过程 ...

  6. 软件开发过程中的思维方式 -- 如何分析问题

    [这是 ZY 第 16 篇原创技术文章] 今天这篇文章不谈技术,想聊聊软件开发过程中的一些思维方式,以及如何去深入挖掘问题的核心,如何去看清问题的本质. 一.分析问题的重要性 我们在软件开发过程中,往 ...

  7. 举例说明层次分析的三大原则_20202021企业软件开发流程(3)软件开发过程和软件开发原则...

    知识点 1.软件过程就是软件开发过程中软件活动的集合. 2.软件过程各阶段定义 1)问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围. ...

  8. 基于UML的软件开发过程

    基于UML的软件开发过程 UML的概述 UML的定义 UML的组成 UML中的5类图形 类图 对象图 用例图 活动图 状态机图 顺序图 通讯图 交互图 构件图 部署图 UML的应用领域 为什么需要UM ...

  9. 《需求工程-软件建模与分析之读书笔记之三》

    <需求工程-软件建模与分析之读书笔记之三> 第14章<面向对象建模>采用了面向对象方法学的世界观,将系统看作是一系列对象的集合,每个对象具有独立的职责,完成独立的任务,对象之间 ...

最新文章

  1. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法
  2. 单例模式及getInstance()的用法
  3. linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
  4. c#利用WebClient和WebRequest获取网页源代码的比较
  5. 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
  6. Sympy常见多个变量【一行代码创建】
  7. TCP/IP总结(3)数据包
  8. zabbix的日常监控-自动发现端口并监测(服务器开启的所有端口或监控指定端口)(十三)...
  9. 堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)
  10. python海龟绘图_Python教学案例|海龟绘图三例
  11. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(oracle基础配置_04)
  12. 松下a6伺服驱动连接光栅尺_闭环伺服系统的数控贴条为什么要安装光栅尺?
  13. docker搭建linux集群,搭建mpi环境,并使用MTT benchmark测试集群性能
  14. [Android 测试] 性能回归测试之 MonkeyRunner使用、插件扩展、结合批处理
  15. 苹果macbookpro多少钱_买一套可用的苹果全家桶,要花多少钱?
  16. visio2013(64位)
  17. 删除指定位置的元素(数组)(PTA)
  18. 微软将推新AI聊天机器人Zo 可能是小冰的英文版
  19. 峨眉计算机学校,四川省峨眉山市职业技术学校
  20. 请注释你那该死的代码

热门文章

  1. 中间服务器代理解决跨域
  2. 一阶拟合算法C(六轴)
  3. Zookeeper(2) - 配置详解与启动原理
  4. 先验概率、后验概率以及共轭先验
  5. Linux 配置php
  6. 概率图模型(D分离)
  7. 5、标尺-参考线-网格
  8. 两化融合贯标之-申请表案例
  9. 题目: 哈夫曼编码大全
  10. 最简单的 Git 入门教程