一分钟了解统一软件开发过程RUP的那点事

曾经几乎一统天下的统一软件开发过程RUP(Rational Unified Process)即使是现在看来,它也是一套非常先进并完整的理论体系加工具集合。虽然目前来看,敏捷开发方法似乎更优秀,但是到今天为止,几乎大部分的政府和国企项目中都在使用RUP,所以了解它也是一件必然的事情。
那么统一软件开发过程RUP到底是什么呢?
所谓的统一软件开发过程,便是将9个核心工作流在项目中迭代使用。这9个核心工作流分别是:
业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境
业务建模
业务建模(Business Modeling)是为了用来理解和描述业务流程、角色、责任和业务目标用的。它关注于如何优化和改进业务操作。比如:创建一个业务流程图以改进客户服务流程,定义角色和职责以提高效率。
这里用一个ERP的销售报价流程为例:

需求
需求(Requirement)是为了描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织和文档化;最重要的是,要能理解系统所解决问题的定义和范围。
那么该怎么来描述需求呢?我这里有个小技巧,不知道大家有没有写过用户故事,我觉得这是一种非常棒的需求描述方式,它的格式也是固定的:“作为一个 [角色],我希望 [功能],以便 [目标/利益]。”
就比如上面的商品估价可以这么写:
商品估价:
- 作为一个 财务人员,
- 我希望 系统允许对商品估价进行手动调整,
- 以便 我可以根据市场变化和业务需求调整商品的价格策略。
除了用户故事以外,原型法也是常见的需求描述手段。
原型法通过构建可视化模型(原型)来展示和测试系统的功能和界面。这有助于用户更直观地理解系统,并提供反馈。
- 原型法 可以在 用户故事 的基础上进行,帮助细化和验证用户故事中的需求。
- 用户故事 可以作为原型设计的基础,确保原型中展示的功能符合用户的实际需求和期望。
至于需要写到什么程度,要和客户达成多少共识,这个和实际情况,项目工期,团队规模,客户约定都有关系,并不可以一概而论。
分析和设计
分析和设计(Analysis & Design)便是将需求转化成未来系统的设计方法。
这里我只用面向对象的分析和设计来进行说明:
- 面向对象分析(OOA) 聚焦于需求和对象建模,帮助理解和定义系统的需求。
主要包括用例图、类图、对象图等,这些图示帮助描述系统的功能和对象之间的交互。
- 面向对象设计(OOD) 聚焦于如何实现这些需求,通过详细设计来创建系统的结构和功能。
主要包括类图、时序图、状态图等,描述系统的内部结构和对象之间的交互细节。
至于需要写到什么程度,这个也和实际情况有关,理论上虽然是越详细越好,但是往往在实际项目建设中会受限于经费和时间影响,只能选择一部分来进行设计。
实现
- 组织代码:定义代码的层次结构和组织方式。
- 开发组件:使用源文件、二进制文件和可执行文件等方式来实现类和对象。
- 测试和集成:对开发的组件进行单元测试,并将它们整合起来,确保它们能够共同工作,形成一个可执行的系统。
测试
- 验证互动:检查对象之间的交互是否如预期。
- 检查集成:确保所有的软件组件能够正确集成。
- 需求确认:验证所有需求是否已经正确实现。
- 缺陷识别:发现和处理缺陷,最好是在软件正式发布前。
- 迭代测试:在整个项目开发过程中反复测试,以尽早发现缺陷,减少修改缺陷的成本。测试通常从可靠性、功能性和系统性能三个方面进行。
部署
- 软件打包:将软件打包为最终用户可以使用的格式。
- 安装:将软件安装到用户的环境中。
- 提供帮助:为用户提供必要的支持和帮助。
- 其他活动:可能包括进行测试版发布、迁移现有软件和数据等。
配置和变更管理
- 控制产物:管理项目中多个产物的版本和变体。
- 跟踪版本:记录和跟踪软件开发过程中的不同版本。
- 审计记录:保存关于产品修改的详细记录,包括修改的原因、时间和责任人员。
项目管理
- 平衡目标:协调和管理可能产生冲突的目标。
- 管理风险:识别和应对项目中的风险。
- 克服约束:解决项目执行中的各种限制和障碍。
- 提供框架:为项目的规划、人员配备、执行和监控提供实用的准则。
环境
- 提供开发环境:为开发团队提供必要的软件开发工具和过程。
- 配置项目:支持项目开发过程中所需的活动。
- 开发规范:指导如何在组织中实现开发过程,提供逐步的指导手册。
软件开发过程RUP中的每一个工作流都有许多的方法论和工具组,我不可能讲全它们,否则我都可以写三本书了:《系统分析师》、《系统架构师》、《项目管理师》,这里我只是简单的介绍了一下各个工作流和其中用到的少量工具,希望大家喜欢。
相关文章:
一分钟了解统一软件开发过程RUP的那点事
曾经几乎一统天下的统一软件开发过程RUP(Rational Unified Process)即使是现在看来,它也是一套非常先进并完整的理论体系加工具集合。虽然目前来看,敏捷开发方法似乎更优秀,但是到今天为止,几乎大部分的政府…...
Goby 漏洞发布|(CVE-2024-45195)Apache OFBiz /viewdatafile 代码执行漏洞【已复现】
漏洞名称:Apache OFBiz /viewdatafile 代码执行漏洞(CVE-2024-45195) English Name:Apache OFBiz /viewdatafile Code Execution Vulnerability(CVE-2024-45195) CVSS core: 8.0 漏洞描述: Apache OFBiz是一个开源…...
js的书写位置和css的书写位置的区别?为什么要这样写?
JavaScript 和 CSS 的书写位置有以下区别: CSS 通常写在 <style> 标签中,或者在外部样式表文件中(<link rel"stylesheet" href"styles.css">)。CSS 主要用于控制页面的视觉样式和布局,…...
Python一些可能用的到的函数系列132 ORM-sqlalchemy连clickhouse
说明 继续ORM的转换 通过ORM,可以: 1 用几乎一样的方式来操作不同的数据库2 可以提供One的处理模式 内容 同步方式 这种方式更简单,适合处理小批量任务。这种操作严格来说,不是严格的One,而是MiniBatch,…...
华为 HCIP-Datacom H12-821 题库 (12)
有需要题库的可以看主页置顶 V群进行学习交流 1.设备使能 BGP 自动聚合功能后,可将 10.1.1.1/24 和 10.2.1.1/24路由聚合成以下哪一项? A、10.2.1.0/24 B、10.0.0.0/14 C、10.0.0.0/8 D、10.1.1.0/24 答案:C 解析: 暂无解析 2.关…...
pointpillar部署-TensorRT实现(三)
模型后处理 __global__ void postprocess_kernal(const float *cls_input,float *box_input,const float *dir_cls_input,float *anchors,float *anchor_bottom_heights,float *bndbox_output,int *object_counter,const float min_x_range,const float max_x_range,const flo…...
Java学习中,为什么会混淆类方法和实例方法,应该怎么办?
在Java学习过程中,初学者经常会混淆类方法(静态方法)和实例方法。这种混淆源于它们之间的概念和使用方式具有一定的相似性,但却在本质上存在较大的区别。理解并掌握两者的区别和应用场景,是掌握Java面向对象编程思想的…...
【人工智能学习笔记】4_3 深度学习基础之循环神经网络
循环神经网络(Recurrent Neural Network, RNN) 是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network),循环神经网络具有短期记忆能力 RNN核心思想 RNN的结构 一个典型…...
解锁生活密码,AI答案之书解决复杂难题
本文由 ChatMoney团队出品 介绍说明 “答案之书智能体”是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人成长感到迷茫,它都能倾听您的心声,并给…...
Android Radio2.0——公告监听设置(四)
上一篇文章我们介绍了广播公告的注册及监听设置,这里我们来看一下广播公告添加监听的调用流程。 一、添加公告监听 1、RadioManager 源码位置:/frameworks/base/core/java/android/hardware/radio/RadioManager.java /*** 添加新的公告侦听器* @param enabledAnnouncemen…...
EMR Spark-SQL性能极致优化揭秘 Native Codegen Framework
作者:周克勇,花名一锤,阿里巴巴计算平台事业部EMR团队技术专家,大数据领域技术爱好者,对Spark有浓厚兴趣和一定的了解,目前主要专注于EMR产品中开源计算引擎的优化工作。 背景和动机 SparkSQL多年来的性能…...
【VUE】实现当前页面刷新,刷新当前页面的两个方法(如何在一个页面写一个方法提供给全局其他地方调用)(如何重复调用同一个路由实现页面的重新加载)
实现前端某个页面刷新,非F5整个系统刷新,只刷新内容部分,按具体需求可以采用一下两个方式实现 方法一:路由快速切换实现页面重新加载 特点:只刷新页面而不是整个系统,样式会重新加载 本质:如何…...
【科研小小白】灰度化处理、阈值、反色、二值化、边缘检测;平滑;梯度计算;双阈值检测;非极大值抑制
什么是灰度化处理? 灰度化处理是将彩色图像转换为灰度图像的过程。在彩色图像中,每个像素通常由红(R)、绿(G)、蓝(B)三个通道组成。每个通道的取值范围通常在0到255之间。通过灰度化…...
数字经济时代,零售企业如何实现以消费者为中心的数字化转型?
在数字经济时代,零售企业正面临着前所未有的挑战与机遇。随着消费者行为的数字化和多样化,传统的零售模式已难以满足市场需求。为了在激烈的市场竞争中立于不败之地,零售企业必须实现以消费者为中心的数字化转型。这一转型不仅仅是技术的升级…...
微积分复习笔记 Calculus Volume 1 - 1.5 Exponential and Logarithmic Functions
1.5 Exponential and Logarithmic Functions - Calculus Volume 1 | OpenStax...
代码随想录 刷题记录-24 图论 (1)理论基础 、深搜与广搜
一、理论基础 参考: 图论理论基础 深度优先搜索理论基础 广度优先搜索理论基础 dfs dfs搜索可一个方向,并需要回溯,所以用递归的方式来实现是最方便的。 有递归的地方就有回溯,例如如下代码: void dfs(参数) {…...
MyBatis 缓存机制详解:原理、应用与优化策略
一、MyBatis 缓存概述 1.1 什么是缓存? 缓存是一种提高系统性能的技术,通过将常用的数据保存在内存中,减少对底层数据源(如数据库)的访问次数,从而加快数据读取速度。 在 MyBatis 中,缓存的主要目的是通过存储查询结果,减少对数据库的直接查询次数,提升系统性能。 …...
跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准
随着物联网、大数据、云计算等技术的飞速发展,视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础,其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…...
美团OC感想
OC感想 晚上十点拿到美团意向了 到家事业部。,日常实习没过,暑期实习没过,秋招终于意向了,晚上十点发的,整整激动到一点才睡着,不仅因为这是秋招的第一个意向,更因为这是我一直心心念念想去的地…...
搜维尔科技:AcuMap - 针灸模拟VR训练解决方案
AcuMap第一个针灸VR训练解决方案。全面且医学上准确的人体映射,其中 14 条经络和 361 个穴位以 3D 形式可视化。您还可以在虚拟人体模型上模拟针刺。主要特点 - 可视化 14 条经络及其分支 - 基于 4 个主要类别的 361 个穴位:五行、危险穴位、补邪和特殊穴…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
