一分钟了解统一软件开发过程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 个穴位:五行、危险穴位、补邪和特殊穴…...

WEB渗透权限维持篇-禁用Windows事件日志
往期文章WEB渗透权限维持篇-DLL注入\劫持-CSDN博客 WEB渗透权限维持篇-CLR-Injection-CSDN博客 WEB渗透权限维持篇-计划任务-CSDN博客 WEB渗透权限维持篇-DLL注入-修改内存中的PE头-CSDN博客 WEB渗透权限维持篇-DLL注入-进程挖空(MitreT1055.012)-CSDN博客 WEB渗透权限维…...

【设计模式】Template Method伪代码
1. 不好的代码 1.1 lib.cpp class Library{ public:void Step1(){//...}void Step3(){//...}void Step5(){//...} };1.2 app.cpp class Application{ public:bool Step2(){//...}void Step4(){//...} };int main() {Library lib();Application app();lib.Step1();if(app.Ste…...

关于2023.9.2~2023.9.10学习总结与教训
关于2023.9.2~2023.9.10学习总结与教训 语文古诗文与古诗基础阅读作文 数学几综卷子 英语物理政治总结待寻找的学习方法需应用的学习方法 语文 古诗文与古诗 背诵岳阳楼记和醉翁亭记的经验告诉我,应该在背诵时附以抄写同时在背下来后还应该去默写纠错,…...

NLTK:Python自然语言处理工具包及其参数使用详解
NLTK(Natural Language Toolkit)是一个领先的平台,用于构建处理人类语言数据的Python程序。它提供了易于使用的接口,用于超过50个语料库和词汇资源,如WordNet,以及一套文本处理库,用于分类、标记…...

php 之 php-fpm 和 nginx结合使用
php-fpm php-fpm是php面试必问的一个小考点,聊这个之前还是要铺垫一下,cgi 和 fastcgi。 CGI,通用网关接口,用于WEB服务器(比如 nginx)和应用程序(php)间的交互,简单的…...

数学建模笔记——TOPSIS[优劣解距离]法
数学建模笔记——TOPSIS[优劣解距离法] TOPSIS(优劣解距离)法1. 基本概念2. 模型原理3. 基本步骤4. 典型例题4.1 矩阵正向化4.2 正向矩阵标准化4.3 计算得分并归一化4.4 python代码实现 TOPSIS(优劣解距离)法 1. 基本概念 C. L.Hwang和 K.Yoon于1981年首次提出 TOPSIS(Techni…...

证书学习(四)X.509数字证书整理
目录 一、X.509证书 介绍1.1 什么是 X.509证书?1.2 什么是 X.509标准?1.3 什么是 PKI?二、X.509证书 工作原理2.1 证书认证机构(CA)2.1 PKI 的基础——加密算法2.2 PKI 证书编码三、X.509证书 结构3.1 证书字段3.2 证书扩展背景: 我们在日常的开发过程中,经常会遇到各种…...

氚云,低代码领风者如何破解行业的“中式焦虑”?
To B生意“难做”,很多公司的苦恼都难以掩盖。 上半年,一个“中国软件行业全军覆没”的帖子引发热烈讨论,评论竟是赞同的居多。那些以实现上市为目标的SaaS公司,或者已经上市的、主营业务为To B的企业,其整体的业绩状…...

“深入解析:MySQL半同步复制的配置指南与实践技巧“
本次配置是在已搭建好主从复制的架构中进行配置 配置环境 操作系统 master节点 slave节点 centos7 8.0.37 8.0.37 配置半同步复制 配置master 安装master半同步复制插件 INSTALL PLUGIN rpl_semi_sync_source SONAME semisync_source.so; 在MySQL的配置文件中添加配置…...

第四届长城杯部分wp
还是太菜了,要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的,所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目,在登陆页面我用admin和1登陆成功了,但是按照正常的应该是…...