RUP:用例驱动、以架构为中心的迭代增量开发模式

 

1 RUP特点

Rational Unified Process(RUP),即Rational统一过程,二维的开发模型,涉及九大工作流,是一种为了满足这些需求而生的开发模式。RUP是一个用例驱动、以架构为中心的迭代增量开发模式,可以帮助我们更好地进行软件开发

用例驱动

在RUP中,用例是驱动软件开发的主要力量。用例是一种以用户的视角描述系统功能的方法,通常以一组交互的形式表达,定义了系统如何响应外部事件。通过对用例的描述和分析,开发者可以明确系统必须提供的功能,并通过这些用例来驱动设计、实现和测试。

以架构为中心

架构是系统的基础。一个好的架构可以为系统提供稳定、可扩展、可维护的基础。RUP强调以架构为中心进行开发,这意味着在开发过程的早期阶段,就需要定义并达成一致的系统架构,之后的开发工作都围绕这个架构展开。

迭代增量开发

在RUP中,软件开发被划分为多个小的、可管理的部分,这些部分被称为迭代。每个迭代都包含了需求分析、设计、实现、测试等所有的开发步骤。通过这种方式,开发团队可以逐步增加功能,不断修正和改进系统,而不是一次性完成所有开发工作。

2.RUP的生命周期

RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流, 这9个核心工作流如下。'

(1)业务建模(business modeling):理解待开发系统所在的机构及其商业运作,确保 所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机 构的影响。

(2)需求(requirements):定义系统功能及用户界面,使客户知道系统的功能,使开 发人员理解系统的需求,为项目预算及计划提供基础。

(3)分析与设计(analysis & design):把需求分析的结果转化为分析与设计模型。

(4)实现(implementation):把设计模型转换为实现结果,对开发的代码做单元测试, 将不同实现人员开发的模块集成为可执行系统。

(5)测试(test):检查各子系统的交互与集成,验证所有需求是否均被正确实现,对 发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。

(6)部署(deployment):打包、分发、安装软件,升级旧系统;培训用户及销售人员, 并提供技术支持。

(7)配置与变更管理(configuration & change Management):跟踪并维护系统开发过 程中产生的所有制品的完整性和一致性。

(8)项目管理(project management):为软件开发项目提供计划、人员分配、执行、 监控等方面的指导,为风险管理提供框架。

(9)环境(environment):为软件开发机构提供软件开发环境,即提供过程管理和工 具的支持。

需要说明的是表示核心工作流的术语discipline,在RUP 2000以前用的是core workflow这个术语,但在最新的版本中已改为用discipline.discipline的中文意义较多, 根据RUP的定义,discipline是相关活动的集合,这些活动都和项目的某一个方面有关, 如这些活动都是和业务建模相关的,或者都是和需求相关的,或者都是和分析设计相关 的等等。

RUP把软件开发生命周期划分为多个循环(cycle),每个cycle生成产品的一个新 的版本,每个cycle依次由4个连续的阶段(phase)组成,每个阶段完成确定的任务。 这4个阶段如下。

初始(inception)阶段:定义最终产品视图和业务模型,并确定系统范围。

细化(elaboration)阶段:设计及确定系统的体系结构,制定工作计划及资源 要求。

构造(construction)阶段:构造产品并继续演进需求、体系结构、计划直至产品 提交。

移交(transiticm)阶段:把产品提交给用户使用。

每一个阶段都由一个或多个连续的迭代(iteration)组成。迭代并不是重复地做相同 的事,而是针对不同用例的细化和实现。每一个迭代都是一个完整的开发过程,它需要 项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对核心工作流中的行为 进行裁剪。

在每个阶段结束前有一个里程碑(milestone)评估该阶段的工作。如果未能通过该 里程碑的评估,则决策者应该做出决定,是取消该项目还是继续做该阶段的工作。

3.RUP中的核心概念

RUP中定义了如下一些核心概念,理解这些概念对于理解RUP很有帮助。

角色(Role)~who的问题:角色描述某个人或一个小组的行为与职责。RUP预 先定义了很多角色,例如体系结构师(architect)、设计人员(designer)、实现人 员(implementer)、测试员(tester)和配置管理人员(configuration manager)等, 并对每一个角色的工作和职责都做了详尽的说明。

活动(activity) how的问题:活动是一个有明确目的的独立工作单元。

制品(artifact) what的问题:制品是活动生成、创建或修改的一段信息。也

有些书把artifact翻译为产品、工件等,和制品的意思差不多。

工作流(workflow) when的问题:工作流描述了一个有意义的连续的活动

序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。

RUP 2003对这些概念有比较详细的解释,并用类图描述了这些概念之间的关系,除 了 role、activity、artifact和workflow这4个核心概念外,还有其他一些基本概念,如工 具教程(tool mentor)、检查点(checkpoints)、模板(template)和报告(report)等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/438602.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAN|对抗| 生成器更新|判别器更新过程

如上图所示,生成对抗网络存在上述内容: 真实数据集;生成器;生成器损失函数;判别器;判别器损失函数;生成器、判别器更新(生成器和判别器就是小偷和警察的关系,他们共用的…

kubernetes基础操作(pod生命周期)

pod生命周期 一、Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: ◎pod创建过程 ◎运行初始化容器(init container)过程 ◎运行主容器(main container&#xff…

记录一次病毒启动脚本

在第一次下载软件时,目录中配了一个使用说明,说是需要通过start.bat 这个文件来启动程序,而这个 start.bat 就是始作俑者: 病毒作者比较狡猾,其中start.bat 用记事本打开是乱码,但是可以通过将这个批处理…

spring揭秘24-springmvc02-5个重要组件

文章目录 【README】【1】HanderMapping-处理器映射容器【1.1】HanderMapping实现类【1.1.1】SimpleUrlHandlerMapping 【2】Controller(二级控制器)【2.1】AbstractController抽象控制器(控制器基类) 【3】ModelAndView(模型与视…

java入门基础(一篇搞懂)

​ 如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论,感谢您的支持!!! 首先给大家推荐比特博哥,java入门安装的JDk和IDEA社区版的安装视频 JDK安装与环境变量的配置 IDEA社区的安装与使…

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5,传去服务器后,使用http访问一切正常。但是当开启了https(SSL)后,后台竟然无法登陆进去了。 输入账号密码后,点击登陆,跳转到/e/admin/ecmsadmin.php就变成页面一片…

SpringBoot基础(三):Logback日志

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 SpringBoot基础(二):配置文件详解 SpringBoot基础(三):Logback日志 目录 一、日志依赖二、日志格式1、记录日志2、默认输出格式3、springboot默认日志配置 三、日志级别1、基础设置2、…

golang-基础知识(流程控制)

1 条件判断if和switch 所有的编程语言都有这个if,表示如果满足条件就做某事,不满足就做另一件事,go中的if判断和其它语言的区别主要有以下两点 1. go里面if条件判断不需要括号 2. go的条件判断语句中允许声明一个变量,这个变量…

FPGA-UART串口接收模块的理解

UART串口接收模块 背景 在之前就有写过关于串口模块的文章——《串口RS232的学习》。工作后很多项目都会用到串口模块,又来重新理解一下FPGA串口接收的代码思路。 关于串口相关的参数,以及在文章《串口RS232的学习》中已有详细的描述,这里就…

单调队列与单调栈<2>——单调栈

单调栈的定义 单调递增栈 栈中元素从栈底到栈顶是递增的。 单调递减栈 栈中元素从栈底到栈顶是递减的。 单调栈的核心内容 我们从左到右遍历元素,构造单调栈(从栈顶到栈底递增或减):在 i 从左往右遍历的过程中,我…

手写堆排序

手写堆排序 摘要:本文记录使用go语言实现堆排序 堆的构建 堆性质: 对于每个小堆,父节点与两个子节点比较,父节点比左子节点大,也比右子节点大。 有五个数: 1,2,3,4,5 分别进行入栈。过程如下 (1) 堆为…

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第3关Git 基础知识

任务编号 任务名称 任务描述 1 破冰活动 提交一份自我介绍。 2 实践项目 创建并提交一个项目。 破冰活动 提交一份自我介绍。 每位参与者提交一份自我介绍。 提交地址:https://github.com/InternLM/Tutorial 的 camp3 分支~ 安装并设置git 克隆仓库并…

[深度学习][python]yolov11+deepsort+pyqt5实现目标追踪

【算法介绍】 YOLOv11、DeepSORT和PyQt5的组合为实现高效目标追踪提供了一个强大的解决方案。 YOLOv11是YOLO系列的最新版本,它在保持高检测速度的同时,通过改进网络结构、优化损失函数等方式,提高了检测精度,能够同时处理多个尺…

CSS选择器的全面解析与实战应用

CSS选择器的全面解析与实战应用 一、基本选择器1.1 通配符选择器(*)2.标签选择器(div)1.3 类名选择器(.class)4. id选择器(#id) 二、 属性选择器(attr)三、伪…

欧几里得算法--(密码学基础)

根基:gcd(a,b)gcd(b,a mod b) 先举个例子吧,gcd(16,6)gcd(6,4)gcd(4,2)gcd(2,0)2 学习这个定理的时候我想了几个问题. 第一个问题:为什么求出的就一定是他们两个数的公约数? 这个问题很简单我们只需要通过几何来计较即可&#x…

Electron 使⽤ electron-builder 打包应用

electron有几种打包方式,我使用的是electron-builder。虽然下载依赖的时候让我暴躁,使用起来也很繁琐,但是它能进行很多自定义,打包完成后的体积也要小一些。 安装electron-builder: npm install electron-builder -…

python基础语法2

文章目录 1.顺序语句2.条件语句2.1 语法格式 3.缩进与代码块4.空语句 pass5.循环语句5.1 while循环5.2 for循环 5.3 continue与break 1.顺序语句 默认情况下,python的代码都是按照从上到下的顺序依次执行的。 print(hello ) print(world)结果一定是hello world。写…

【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯打造个人IP爆款文案提示词使用方法 💯CSDN爆款技术文案提示词使用方法 💯高效教案设计提示词使用方法 💯小结 💯前言 在这…

zookeeper 服务搭建(集群)

准备3台虚拟机,ip分别是: 192.168.10.75 192.168.10.76 192.168.10.77 准备3个节点 mkdir /usr/local/cluster cd /usr/local/cluster git clone https://gitee.com/starplatinum111/apache-zookeeper-3.5.9-bin.git 重命名文件夹 mv apache-zookeeper…

【学习笔记】手写一个简单的 Spring IOC

目录 一、什么是 Spring IOC? 二、IOC 的作用 1. IOC 怎么知道要创建哪些对象呢? 2. 创建出来的对象放在哪儿? 3. 创建出来的对象如果有属性,如何给属性赋值? 三、实现步骤 1. 创建自定义注解 2. 创建 IOC 容器…