「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

百花齐放的统一软件过程

2010 年 3 月 25 日

20 世纪 90 年代,Rational 统一软件过程(RUP)作为一个集结了软件工程最佳实践的框架,被逐步建立起来。其中的一些理念,如迭代、简单、关注价值和定期反馈,都被认为对软件工程的成功至关重要。很多人都借鉴统一过程,在不同的项目领域构建了方法论。

统一软件过程背景介绍

设计 Rational 统一软件过程(RUP®)的初衷是想为软件工程提供一个框架。到 1997 年,Rational 软件公司宣称已经整合了 7 类最佳实践:

  1. 迭代式开发,并以风险作为迭代的主要驱动因素
  2. 管理需求
  3. 运用基于组件的构架
  4. 软件可视化建模
  5. 持续质量验证
  6. 变更控制
  7. 定制化

Rational 构建的框架包含相关过程和实践,可以运用在商业产品开发中,它主要包括 3 部分:

  • 一个指导开发的可裁剪的过程
  • 一些能使这些过程应用自动化的工具
  • 一些能加快实施过程和工具的服务

RUP 基于迭代理念,定义了一套能够贯穿项目生命周期的核心及辅助准则。下面的图表(参考驼峰图)显示了核心准则在四个阶段中可能的焦点和强度。

Image source 图片来源: http://en.wikipedia.org/wiki/File:Development-iterative.gif

除了核心准则,RUP®也定义了一些关于配置及变更管理、项目管理和环境支持的辅助原则。有关 RUP®的更多内容请参考这里

2003 年, IBM 收购了 Rational 软件公司,并继续对 RUP®进行商业开发和包装。

2002 年,RUP 框架最初的设计师 Philippe Kruchten 写了一篇名为“敏捷与 RUP ”的文章。文中他提到:

对于软件开发组织来说,在面临环境变化和环境施加的需求时,敏捷能够快速且恰当地应对、调整,并做出反应。敏捷过程就是对这一适应性水平的欣然拥抱和支持。因此,这绝不单单是过程规模或交付速度的问题;最主要的是灵活性。在本文中,我将阐述 Rational 统一软件过程(RUP®)作为一个过程框架如何带来灵活性。

他指出:除了那 7 个核心的实践,RUP®还基于一系列核心原则,包括

  • 只开发需要的东西。
  • 关注有价值的结果,而不是获得结果的过程。
  • 文档最小化。
  • 足够灵活。
  • 从错误中吸取教训。
  • 定期做风险回顾。
  • 为进度设定客观和可度量的条件。
  • 自动化需要大量人力投入且单调易错的工作。
  • 使用小而有自主权的团队。
  • 有计划。

他的结论是,RUP®提供的框架能够很好地支持敏捷技术及方法论。

离开 IBM 后,Kruchten 继而成为了不列颠哥伦比亚大学(University of British Columbia)电子和计算机工程系软件工程专业的教授。

核心统一过程

Rational 软件公司的创始人之一, Ivar Jacobson ,提出了核心统一过程( ESSUP )这一概念:

核心统一过程(EssUP) 是实践的集合,这些实践组成了完整软件开发周期的核心知识体系。这个以实践为中心的方法学包含了现有的最佳实践,并以此为基石。EssUP 中的实践整合了统一软件过程、敏捷和过程成熟度阵营的很多成功原则,从而充分汲取了它们各自所长:结构、敏捷和过程改进。

ESSUP 以核心实践集的形式发布,免费下载的文档中描述了关于每个实践的交付物、需要做的事情和关键技能,并且附有相应的指南。

开放式统一过程——一个精益的统一过程

OpenUP 同样定义了成功发布软件所需要的过程、实践、角色、工作产品和任务。OpenUp 要部署在 Eclipse 过程框架下。

OpenUP 是一种精益的统一过程,它在结构化的生命周期中使用迭代和增量式的方法。OpenUP 信奉务实主义和敏捷的思想体系,关注软件开发的协作性。它是一个与工具无关、不拘小节的过程,能够扩展运用到很多种类的项目中去。

Bjorn Gustafsson 在文章 Methods & Tools 中这么描述 OpenUP:

EPF 是一个始于 2006 年的开源新方案,主要内容来自 IBM Rational 中部分 RUP 的内容和技术。在初期,项目就已经有 20 多家公司积极参与,并且在 2007 年 9 月第一次发布。尽管只是个 Eclipse 项目,EPF 却可以为任何开发类型来创建过程描述,包括在 Eclipse 上的 J2EE 和使用微软 Visual Studio 的.NET。

在文章中,他介绍了 EPF 的背景以及 OpenUP 如何实施的。他断言:

新的 OpenUP 过程综合了来自 RUP 和敏捷方法论的最佳实践,形成了相较于二者更轻便、敏捷的选择。有 RUP 做根基,它能提供迭代式、递增的、用例驱动、风险驱动和以架构为中心的过程,同时也支持敏捷项目的工作习惯。对很多项目来说,OpenUP 过程提供的实践可以投入使用,但它依然为引入第三方和私有的实践提供了扩展基础,可以应用 EPF Composer 工具来为每个项目做裁剪,以得到最适合的过程。

企业统一过程

RUP 的另一个衍生品是 Scott Ambler 的企业统一过程

企业统一过程(EUP)在RUP 的基础上扩展了两个新的阶段:产品阶段和衰退阶段,这样就包括了软件项目开始之前和上线之后整个过程。EUP 的目的是使项目能够在更正式的环境中发布,这就要求监管和支持过程定义得更完备,且必须坚决执行。

EUP 的官网是这么介绍的:

尽管 RUP 定义了软件开发生命周期,EUP 则将它进行了扩展以覆盖整个信息技术(IT)的生命周期。扩展包括两个新的阶段,产品阶段衰退阶段,还有一些新的准则:运营和支持以及 7 个企业准则(企业商业建模资产组合管理企业架构战略重用人力管理企业行政软件过程改进)。

敏捷统一过程

在另一个极端,Ambler 也定义了敏捷统一过程,关注的是轻便的方法和一套能够用敏捷原则和价值观驱动的、最小化的实践。敏捷统一过程的网站提到,AgileUP:

是一个 Rational 统一软件过程(RUP)的简化版。它描述了一个简单易懂的方法,该方法通过使用敏捷技术和概念来开发商业程序软件,但它依然忠于 RUP。我努力让 AgileUP 在方法和描述上尽量简单。那些描述单刀直入,如果你需要更详细的内容,网上都有链接。方法则致力于敏捷技术,包括测试驱动开发(TDD)敏捷建模驱动开发(AMDD)敏捷变更管理以及数据库重构,这些都可以改进生产率。

在网站上,他阐释了 RUP 准则和 AgileUP 准则的不同之处。

AgileUP 的整个产品都是免费提供下载的,下载下来的 ZIP 会安装整套 HTML 页面,它们描述了阶段、准则、里程碑、角色和交付物,也同样提供了技术实践指南。


以上就是一些统一软件过程的变形和衍生产物。

你在用它们中的某个吗?你的感受如何呢?它们是怎样融入到敏捷世界当中的呢?

查看英文原文: The Various Flavors of Unified Process

2010 年 3 月 25 日 09:361895
用户头像

发布了 114 篇内容, 共 25.9 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

密码学系列之:blowfish对称密钥分组算法

程序那些事

加密解密 密码学 程序那些事 密码学和算法

共享存储设备,如何实现差异化IO分配策略

怀瑾握瑜

云计算 负载均衡 存储 数据中心 SSD

从工单到需求管理,企业如何快速响应客户反馈?

万事ONES

项目管理 需求管理 需求 ONES

百度一款前端图片合成工具库MI开源啦!

百度开发者中心

百度 开源 图片

HarmonyOS学习路之开发篇——Data Ability

爱吃土豆丝的打工人

Ability HarmonyOS Ability 鸿蒙 Ability Data Ability

EasyRecovery,拯救那些遗失的文件

淋雨

文件恢复 Easyrecovery破解 数据恢复软件 免费数据恢复

TcaplusDB华东客户Hands-on活动|10分钟玩转腾讯游戏核心数据库

数据人er

数据库 nosql tencentdb TcaplusDB

活久见!低访问量竟然也能导致系统问题

三石

mycat

从 Flutter 和前端角度出发,聊聊单线程模型下如何保证 UI 流畅性

昔年

事件驱动 Event 前端进阶 iOS 知识体系

数仓业务容错利器:物理细粒度备份恢复技术

华为云开发者社区

集群 数仓 Roach 物理细粒度 备份恢复

Python——双向队列 (deque)

在即

6月日更 六月日更

智能边缘时代 英特尔携手极视角赋能开发者 助推AIoT发展

新闻科技资讯

详解Apache Dubbo的SPI实现机制

vivo互联网技术

dubbo 服务器 spi

架构实战营 模块六课后作业

iProcess

架构实战营

一篇文章告诉你 GIS 存储如何选?

焱融科技

技术 分布式 云原生 高性能 容器存储

项目管理100问 | 为什么你的项目进度总是在延期?

万事ONES

项目管理 项目排期 ONES 项目开发

618大促又来了?3天2次大事故,不堪回首的加班经历……

数列科技

压力测试 全链路压测 大促 系统高可用 生产环境全链路压测

Go语言实现的23种设计模式之结构型模式

华为云开发者社区

设计模式 组合模式 go语言 结构型模式 适配器模式

JAVA面向对象(八)--封装

加百利

后端 Java· 6 月日更

MySQL 页完全指南——浅入深出页的原理

SH的全栈笔记

MySQL 数据库 innodb

云图说|初识云数据库GaussDB(for Cassandra)

华为云开发者社区

开源 Cassandra 云数据库 GaussDB(for Cassandra) 宽列数据库

浪潮云说 | 开源新势力—云溪数据库ZNBase

浪潮云

云计算

chia奇亚算力挖矿分发APP系统开发

薇電13242772558

区块链

ES6之set方法

法医

前端 ES6 6 月日更

推荐 3 款超好用的 Docker 图形化管理工具

学神来啦

Docker Linux 程序员 分布式 运维

34岁Android开发大叔感慨,已拿offer附真题解析

欢喜学安卓

android 程序员 面试 移动开发

34岁安卓开发大叔感慨,帮你突破瓶颈

欢喜学安卓

android 程序员 面试 移动开发

敏捷 vs 瀑布

星际行者

敏捷开发

云算力挖矿系统APP模式开发方案

系统开发咨询:I76-883I-5I52 邓森

掌握鸿蒙轻内核静态内存的使用,从源码分析开始

华为云开发者社区

鸿蒙 操作系统 内存 静态内存 鸿蒙轻内核

【Flutter 专题】128 图解 ColorTween 颜色补间动画 & ButtonBar 按钮容器

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6 月日更

百花齐放的统一软件过程-InfoQ