软件工程(Rational统一过程)

Rational统一过程(Rational Unified Process,RUP)是由Rational软件公司推出的一种完整而且完美的软件过程。

RUP总结了经过多年商业化验证的六条最有效软件开发经验,这些经验被称为“最佳实践”。

1,最佳实践

(1)迭代式开发

通常,采用线性顺序的开发方法不可能开发出当今客户的需要的大型复杂软件系统。事实上,在整个软件开发过程中客户的需求会经常发生变化,因此需要一种能够通过一系列细化,若干个渐进的反复过程而得出有效的解决方案的迭代方法。

迭代式开发允许每次迭代过程中需求都可以有变化,这种开发方法通过一系列细化来加深对问题的理解,因此能更容易地容纳需求的变更。

也可以把软件开发过程看着一个风险管理过程,迭代式开发通过采用可验证的方法来减少风险。采用迭代式开发方法,每个迭代过程以完成可执行版本结束,这不仅使最终用户可以不断地介入和提出反馈意见,而且开发人员有因随时有一个可交付的版本而提高士气。

(2)管理需求

在开发软件过程中,客户需求将不断发生变化,因此,确定系统的需求是一个连续的过程。RUP描述了如何提取,组织系统的功能性需求和约束条件并把它们文档化。

(3)使用基于构件的体系结构

所谓构件就是功能清晰的模块或子系统。系统可以由已经存在的,由第三方开发商提供的构件组成,因此构件使软件重用成为可能,RUP提供了使用现有的或新开发的构件定义体系结构的系统化方法,从而有助于降低软件开发的复杂性,提高软件的重用率。

(4)可视化建模

为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。由于应用领域不同,模型可以有文字、图片或数学表达式等多种形式,一般来说,可视化的图形形式更容易理解。

(5)验证软件质量

某些软件不受欢迎的一个重要原因,是其质量低下。在Rational统一过程中,软件质量评估不再是事后型的或由单独小组进行的孤立活动,而是内建在贯穿于整个开发过程的、由全体成员参与的所有活动中。

(6)控制软件变更

在变更是不可避免的环境中,必须具有管理变更的能力,才能确保每个修改都是可接受的而且能被追踪的。RUP描述了如何控制、跟踪和监控修改,以确保迭代开发的成功。

2,RUP软件开发生命周期

RUP软件开发生命周期是一个二维的生命周期模型。

(1)核心工作流

·  业务建模:深入了解使用目标系统的机构及其商业运作,评估目标系统对使用它的机构的影响。

·  需求:捕获客户的需求,并且使开发人员和用户达成对需求描述的共识。

·  分析与设计:把需求分析的结果转化成分析模型与设计模型。

·  实现:把设计模型转换成实现结果(形式化地定义代码结构;用构件实现类和对象;对开发出的构件进行单元测试;把不同实现人员开发出的模块集成为可执行的系统)。

·  测试:检查各个子系统的交互与集成,验证所有需求是否被正确地实现了,识别,确认缺陷并确保在软件部署之前消除缺陷。

·  部署:成功地生成目标系统的可运行版本,并把软件移交给最终用户。

·  配置与变更管理:跟踪并维护在软件开发过程中产生的所有制品的完整性和一致性。

·  项目管理:提供项目管理框架,为软件开发项目制定计划、人员配备、执行和监控等方面的实用准则,并为风险管理提供框架。

·  环境:向软件开发机构提供软件开发环境,包括过程管理和工具支持。

(2)工作阶段

RUP把软件生命周期划分为四个阶段:

·  初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。

·  精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。

·  构件阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详尽地测试所有功能。

·  移交阶段:把开发出的产品提交给用户使用。

(3)RUP迭代式开发

迭代计划的特点:

  • 一个迭代是总体项目计划的一个阶段
  • 需要明确的交付目标(或可以运行的系统)
  • 多个比较明确的角色的参与
  • 可以串行也可以并行
  • 体现了 RUP 架构驱动、关注风险的特点
  • 实现快速交付,缩短大项目的交付周期
  • 提高客户参与度和项目的可视化

迭代计划的开发考虑的因素:

  • 总体项目计划
  • 项目规模大小、周期
  • 需求明确程度和技术风险
  • 团队成熟度和规模
  • 项目所处的阶段,在同一个项目的不同的阶段可以采用不同的迭代计划方法

开发特征

1.在进行大规模的投资之前就解决了关键的风险分析。

2.使得早期的用户反馈在初始迭代中就能出现。

3.对各个目标里程碑提供了短期的焦点(阶段性的中心)。

4.对过程的测量是通过对实现的评定(而不仅仅是文档)来进行的。

5.可以对局部的实现进行部署。

 

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

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

相关文章

软件工程(敏捷过程和极限编程)

1,敏捷过程 为了使软件开发团队具有高效工作和快速响应变化的能力,17位著名的软件专家于2001年2月联合起草了敏捷软件开发宣言。 敏捷软件开发宣言由下述4个简单的价值观声明组成。 (1)个体和交互胜过过程和工具 优秀的团队成…

软件工程(可行性研究讲解)

可行性研究 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。(只是寻找客户所提需求的解决方案,能干还是不能干的问题。) 可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程。 GB…

软件工程(系统流程图讲解)

系统流程图是概括地模型物理系统的工具。 基本符号 系统符号 系统流程图的习惯画法是使信息在图中从顶向下或从左到右流动。 例子 某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零…

软件工程(数据流图)

数据流图有4种基本符号: 正方形或(立方体)表示数据的源点或者终点; 圆角矩形(或圆形)代表变换数据的处理; 开口矩形(或两条平行横县)代表数据存储; 箭头表…

Python二级笔记(10)

知识点: 1,线性表的链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。 2,软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心。 3&#x…

Qt图形界面编程入门(6)

类的私有继承方式 ①基类公有成员和保护成员都作为私有成员被派生类继承,派生类自身的函数可直接访问他们,但是派生类对象则只能通过本类的公有函数间接地访问它们。 ②基类的私有成员成为派生类中更加封闭的私有成员,派生类内部成员函数也…

Qt图形界面编程入门(7)

派生类的构造函数和析构函数 基类的构造函数和析构函数不能被继承。 在派生类中,如果派生类新增的成员进行初始化,就必须加入新的构造函数。与此同时,对所有从基类继承下来的成员的初始化工作还是由基类的构造函数完成,必须在派…

Python二级笔记(11)

知识点: 1,在栈中,栈顶指针top动态反映了栈中元素的变化情况,在循环队列中,队尾指针和队头指针的动态变化决定队列的长度,在链式存储结构中.无论是循环链表还是线性链表,插入和删除元素时&…

Python二级笔记(12)

知识点: 1,机器周期的同步标准是指CPU访问存储器一次所需要的时间 2,int()函数可以将整数字符串转换成整数,也可以将浮点数转化为整数,但是不能将其他字符串转换成整数。 3,当max(函数的参数是字典时&am…

Python二级笔记(13)

知识点: 1,机器数,不管是正数还是负数,其补码的符号位取反即是偏移码。 2,循环队列是队列的一种顺序存储结构 3, break语句会跳出break所在的最内层循环; try中 的语句出错时会被捕获异常,执行except下的…

Python二级笔记(14)

知识点: 1,在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发不重复地访问到表中其他所有的结点。 单向链表只有从头指针开始,沿各结点的指针扫描链表中的所有结点。 双向链表从任何一一个结点位置出发就可以访问到表中其他所有结…

Python二级笔记(15)

知识点: 1,数据流图(DFD)的作用是支持系统功能建模 2,一个数据库可以有多个外模型(也称子模式或用户模型),但概念模型和内模式(物理模式)只能有一个。 3&a…

Linux基础(管道符、重定向、转义字符与环境变量)

1、输入输出重定向 简而言之,输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也…

软件工程(数据流图例题详解)

假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述的数据:零件编号,零件名称,订货数量,目前价格,主要供…

软件工程(数据流图的命名、用途和自动化边界)

数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。因此,给这些成分起名字时应该仔细推敲。 命名 1.为数据流(或数据存储)命名 (1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。 (2)不要使用空洞的…

Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下的编程语言工具,曾称霸一时的Symbian手机操作系统就是…

Qt图形界面编程入门(创建一个简单的程序)

1,手工编码方式 利用手工编码方式建立“Hello Qt!”程序 第一步: 得到界面 2,无UI的向导方式 从图中,我们发现向导为窗口程序提供了3个基类,分别外QMainWindow、QWidget、QDialog,3个基类的区…

Linux基础(Vim编辑器与Shell命令脚本)

1、Vim文本编辑器 Vim文本编辑器有三种模式 命令模型:控制光标移动,可对文本进行复制、粘贴、删除和查找得等工作。 输入模式:正常的文本录入 末行模式:保存或退出文档,以及设置编辑环境。 在每次运行Vim编辑器时&…

Python二级笔记(17)

操作题: 1,接收用户输入的一个浮点数,输出这个浮点数的小数部分各字符的和,以10为宽度,靠右显示,,采用星号*填充。 代码: s input("请输入一个小数:") s s[::1] cs () for c in…

Python二级笔记(18,19合集操作篇)

操作题: 1,键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为25个字符,等号字符()填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输…