从IT方法论来谈RUP
在《从IT方法论来谈Scrum》中我谈到了6Ways方法框架,本篇仍用6Ways方法框架来概括的谈谈RUP方法。
软件开发过程描述了软件构造、部署和维护的一种方法。统一过程(Unified Process)是一种流行的构造面向对象系统的软件开发过程。RUP(Rational Unified Process)是对UP的详细精化,并且已经被广泛采纳。有些人可能一看到RUP提供这么多流程和工件,觉得不够敏捷,我认为RUP本身其实是一个方法框架,本身也可以采纳一些现在敏捷实践。采用什么方法重要,但采用方法后的执行更重要,对RUP来说,如果我们做得好就是敏捷,做不好就可能瀑布了。
The way of thinking
软件开发中成功的项目比例很少,原因很多,如:没有正确的理解用户需求、没有能力处理需求的改变、模块不能集成、软件很难维护和扩展、很晚才发现重要的项目缺陷、不好的软件质量、不能接收的软件性能等。基于导致项目失败的这些原因,RUP认为下面这些最佳实践可以改善软件的开发状况:
- 在早期迭代中解决高风险和高价值的问题 不断的让用户参与评估、反馈和需求 在早期迭代中建立内聚的核心架构 不断地验证质量:提早、经常和实际的测试 可视化软件建模(使用UML) 仔细的管理需求 实行变更请求和配置管理
The way of working
迭代是UP最重要的思想。RUP重要的概念之一:周期(cycles),如下图由多个周期构成一个软件开发生命周期。

对于每个周期,下图展现了更为详细的不同阶段(Phase)和流程:

四个阶段
- 初始阶段(Inception):预见项目的范围、构想和业务案例 (Lifecycle Objective)
- 初始阶段不是一个需求阶段,而是类似与可行性阶段,项目相关人员是否就项目的构想达成基本的一致,项目是否值得继续进行认真的研究 时间不应超过一周,只需要确定这个项目是否值得认真研究,而不是真正去深入研究项目(这个工作留待细化阶段进行)如果预选就决定项目必须进行,而且项目明显是可行的,那么初始阶段会很短,可能只包含一次需求研讨会,并为第一次迭代执行计划,然后就快速的进入细化阶段 主要实践活动-用例建模 对于迭代开发的一个关键理解在于:过程中的工件在初始阶段只是部分完成,在之后的迭代中在逐步精化提炼。例如,用例模型可以列举大多数所需的用例和参与者,但其中可能只有10%的用例会被详细描述,这样就足以建立起有关系统的范围、目标和风险的高层的大致构想。 主要工件:是否意味着大量的文档?工件是可选的,只需要从下面选择对项目确实有价值的工件,放弃哪些不必要的工件,工件的关键不是文档或图表本身,而是其中蕴含的思想、分析和前期准备。
- 构想和业务案例:描述高层的目标和约束、业务案例,并提供一个执行摘要 用例模型:描述功能需求和相关的非功能需求 补充规范:描述其他需求 术语表:关键的领域术语 风险列表和风险管理计划:描述业务、技术、资源和进度的风险,以及如何减轻这些风险或该如何应对 原型和概念验证:阐明构想,验证技术问题。 迭代计划:描述在第一次细化迭代中该作什么 阶段计划和
- 计划:对细化阶段的持续时间和工作量进行低精度的猜测。开发涉及的工具、人员、培训和其他资源 开发案例:描述为本项目定制的统一过程的步骤和工件。在统一过程中,总需要为项目定制一些步骤或工件
细化阶段(Elaboration):已精化的构想,核心架构的迭代实现,高风险的解决,大多数需求和范围的识别,更为现实的评估。 (Lifecycle Architecture)
- 细化阶段不是一个需求或设计阶段,而是一个迭代实现核心架构并降低高风险的阶段
构造阶段(Construction):迭代实现遗留下来的风险较低和比较容易的元素,准备部署 (Initial Operational Capability) 移交阶段(Transition):beta测试,部署 (Product Release)

多个流程
- 业务建模:在开发单独的应用时,业务建模包括领域对象建模。在从事大规模业务分析或业务过程再工程时,业务建模包括跨越整个企业的业务过程的动态建模。 需求:对应用的需求分析,如写出用例和识别非功能性需求 分析和设计:设计的所有方面,包括总体架构、对象、数据库、网络连接等。分析强调的是对问题和需求的调查研究,而不是解决方案。设计强调的是满足需求的概念上的解决方案,而不是其实现。分析和设计可以被概括为:作正确的事(分析)和正确的做事(设计)。 实现:编程和构建系统,而不是部署系统 测试 配置和变更管理 项目管理 环境:指建立工具并为项目定制过程,也就是说,设置工具和过程环境。
1-5为核心工作流程,6-8为支持工作流程
The way of controlling
- 如何计划和管理迭代:需要多少迭代?每次迭代多长时间?每次迭代的目的是什么?如何跟踪每次迭代情况?
The Phase Plan (Project Plan):一个粗略的计划,每个开发项目只有一份项目计划。包括了一个周期(cycle)内所有的环节(有时也可以包含多个周期)。计划包含主要里程碑的时间,要求的资源。如果能够明确分几个iteratio,则需要标识时每个小里程碑的时间和目的。
- The Iteration Plan:迭代计划,包含当前迭代的详细计划,包括时间、任务和资源分配,在当前迭代后半期还需要包含下一个迭代的计划

- 风险管理 度量
The way of modeling
RUP在不同流程中会由不同模型支持,下图为模型和流程对应图:

对于每个模型,RUP描述who在when时how做what。RUP使用五个主要元素来表达:
角色: the who
活动: the how
工件:the what
工作流: the when
规程(Disciplines): 组合前面四种元素
下图为其中一个示例:


The way of supporting
Rational (现IBM)提供了对RUP的工具支持。
The way of communicating
RUP定义了一系列流程和工件,这些工作作为各角色间沟通的主要内容,用例和架构是RUP的两个重要内容。
- 用例驱动开发:使用用例表达需求,对业务进行描述。用例作为整个开发流程的基础。 架构为中心流程:架构使用多个、协调一致的视图来表达系统,作为概念、构建、管理和演进系统的主要工件
其他
IBM Rational Unified Process
developerWorks 中国 RUP资源 RUP搜索
如何做一个成功的架构师——玩转RUP
Enterprise Unified Process(EUP) 一个RUP的扩展
Agile Modeling and the Rational Unified Process (RUP) EUP 引入了许多企业级别的规程,包括操作和支持以及七个企业规程:企业业务建模、组合管理、企业架构、战略重用、人员管理、企业管理、软件流程改进。RUP 与 EUP 之间的一个基本区别在于后者处理完整的 IT 生命周期。RUP 仅处理该生命周期的软件开发部分。
Making the Unified Process Work in Practice
The Agile Unified Process (AUP)
统一过程 UP/AUP/RUP 资源
RUP presentation
书籍
The Rational Unified Process: An Introduction, Third Edition
Applying UML and Patterns:An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)
编写有效用例
UP和XP
- UP建议增量的编写用例和非功能性需求文档(XP不是) UP建议在迭代开始,主要编程之前绘制更多的可视化设计图(例如耗时半天或一天),XP建议用一点点时间来做可视化设计(例如30分钟)
从IT方法论来谈RUP的更多相关文章
- 菜鸟入门Linux之路(方法论浅谈)
Linux是为人熟知的OS之王,已"统治"世界.要想学好绝非易事. 作为菜鸟,可以与Linux亲密接触的方法很多,如视频.书籍.各种企培资料等等,如今的在线教育也如火如荼. 总结说 ...
- IT168关于敏捷开发采访
1.我们知道敏捷开发是一套流程和方法的持续改进,通过快速迭代的方式交付产品,从而控制和降低成本.但是在实行敏捷初期,往往看不到很好的效果.这里面,您觉得问题主要出在哪?团队应如何去解决问题?金根:我认 ...
- 开放产品开发(OPD):开篇
OPD?这是什么玩意?google一下.忘记说了,最近google被封锁的厉害,那就百度一下吧.可惜,OPD找不出是什么.你今天你找不到是正常的,因为之前还没有OPD,而现在才开始有OPD这个东东.相 ...
- 数据挖掘的标准流程-CRISP-DM
1.起源 CRISP-DM (cross-industry standard process for data mining), 即为"跨行业数据挖掘过程标准".此KDD(know ...
- iOS应用架构谈(一):架构设计的方法论
当我们讨论客户端应用架构的时候,我们在讨论什么? 其实市面上大部分应用不外乎就是颠过来倒过去地做以下这些事情: 简单来说就是调API,展示页面,然后跳转到别的地方再调API,再展示页面. 那这有什么好 ...
- iOS应用架构谈:架构设计的方法论
缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会 ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- 淘宝前端工程师:国内WEB前端开发十日谈
一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...
- iOS应用架构谈 开篇
iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS app的第二版架构大部分内容是 ...
随机推荐
- java开发--struts2 标签库使用
在工程中使用struts2标签 一.struts2标签定义文件在struts2-core-2.0.11.1\META-INF 下面,文件名为struts-tags.tld 二.如果工程使用了servl ...
- android 广播的使用
在Activity中,注册广播的一个Demo. 总共分3步 第一步:定义一个BroadcastReceiver广播接收类: private BroadcastReceiver mBroadcastRe ...
- 机器人学 —— 机器人感知(Kalman Filter)
对于机器人感知任务而言,经常需要预判物体的运动,保证机器人在物体与自身接触之前进行规避.比如无人机与障碍物的碰撞,足球机器人判断足球的位置.预判的前提是对当前状态进行准确的估计,比如足球的速度,障碍物 ...
- URAL 1250 Sea Burial 简单Floodfill
问这个人掉落的海域包含几个岛屿. 八方向相连为同一片海域,四方向相连为同一个岛屿.与边界相连的岛屿不算. 方法:在给定地图外面填充一圈".",从这个人掉落的地方开始进行floodf ...
- SQL经典问题 找出连续日期及连续的天数
转自:http://bbs.csdn.net/topics/360019248 如何取到每段连续日期的起始终止日期以及持续天数及起始日期距上一期终止日期的天数,能否用一句sql实现?备注:数据库环境是 ...
- sed文本处理知识点整理
参考资料:http://man.linuxde.net/sed <鸟哥的私房菜> sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用.sed 后面接的操作 ...
- OTP【转】
转自:http://baike.baidu.com/link?url=58z3oZfEMvNRiDUmWrxtzfDhv--UZ1jaW4rBHg1d9kIWd6HQaYZ96DH8QAFopSZBK ...
- sizeof()与strlen()的区别
首先需要说明的是sizeof和strlen都可以求长度,但是却有很大的区别,简单来说可以概括为以下几点: 1.sizeof是一个关键字,而strlen确实一个函数. 2.sizeof求的是字节长度,而 ...
- 矩形嵌套 南阳理工ACM
描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1, ...
- ACdream 1735 输油管道 (排序)
http://acdream.info/problem?pid=1735 官方题解:http://acdream.info/topic?tid=4246 因为主干线是平行于x轴的直线,那么跟x坐标其实 ...