目录
1.说明
- 1.软件统一过程(Rational Unified Process,RUP)是Rational软件公司创造的软件工程方法。
- 2.RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。
- 3.RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、模版以及事例支持。
- 3.RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、
2.RUP 的生命周期
2.1 核心工作流
- 1.RUP 软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流。
- 2.业务建模(Business Modeling):理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
- 3.需求(Requirements):定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
- 4.分析与设计(Analysis&Design):把需求分析的结果转化为分析与设计模型。
- 5.实现(Implementation):把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
- 6.测试(Test):检查各子系统之间的交互、集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
- 7.部署(Deployment):打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
- 8.配置与变更管理(Confguration & Change Management):跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
- 9.项目管理(Project Management):为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
- 10.环境(Environment):为软件开发机构提供软件开发环境,即提供过程管理和工具的支持。
- 11.需要说明的是表示核心工作流的术语 Discipline,其的中文意义较多,根据 RUP 的定义,Discipline 是相关活动的集合,这些活动都和项目的某一个方面有关,如这些活动都是和业务建模相关的,或者都是和需求相关的,或者都是和分析设计相关的,等等。
2.2 4个阶段
-
1.RUP 把软件开发生命周期划分为多个循环(Cycle),每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段(Phase)组成,每个阶段完成确定的任务。
-
2.这4个阶段如下。
-
3.初始(inception)阶段:定义最终产品视图和业务型,并确定系统范围。
-
4.细化(elaboration)阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
-
5.构造(construction)阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
-
6.移交(transition)阶段:把产品提交给用户使用。
-
7.每一个阶段都由一个或多个连续的迭代(Iteration)组成。
-
8.迭代并不是重复地做相同的事而是针对不同用例的细化和实现。
-
9.每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对核心工作流中的行为进行裁剪。
-
10.在每个阶段结束前有一个里程碑(Milestone)评估该阶段的工作。
-
11.如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续做该阶段的工作。
3.RUP 中的核心概念
- 1.角色(Role):Who的问题。角色描述某个人或一个小组的行为与职责。RUP预先定义了很多角色,如体系结构师(Architect)、设计人员(Designer)、实现人员(Implementer)、测试员(tester)和配置管理人员(Configuration Manager)等,并对每一个角色的工作和职责都做了详尽的说明。
- 2.活动(Activity):How的问题。活动是一个有明确目的的独立工作单元。
- 3.制品(Artifact):What的问题。制品是活动生成、创建或修改的一段信息。也有些书把Artifact翻译为产品、工件等,和制品的意思差不多。
- 4.工作流(Workfow):When的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
- 5.RUP 2003对这些概念有比较详细的解释,并用类图描述了这些概念之间的关系,除了角色、活动、制品和工作流这4个核心概念外,还有其他一些基本概念,如工具教程(ToolMentor)、检查点(Checkpoints)、模板(Template)和报告(Report)等。
4.RUP 的特点
4.1 说明
- 1.RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。下面对这些特点做进一步的分析。
4.2 用例驱动
- 1.RUP中的开发活动是用例驱动的,即需求分析、设计、实现和测试等活动都是用例驱动的。
4.3 以体系结构为中心
-
1.RUP中的开发活动是围绕体系结构展开的。
-
2.软件体系结构的设计和代码设计无关,也不依赖于具体的程序设计语言。
-
3.软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。
-
4.体系结构层次的设计问题包括系统的总体组织和全局控制、通信协议、同步、数据存取、给设计元素分配功能、设计元素的组织、物理分布、系统的伸缩性和性能等。
-
5.体系结构的设计需要考虑多方面的问题:在功能性特征方面要考虑系统的功能;在非功能性特征方面要考虑系统的性能、安全性和可用性等;与软件开发有关的特征要考虑可修改性、可移植性、可重用性、可集成性和可测试性等;与开发经济学有关的特征要考虑开发时间、费用、系统的生命期等。
-
6.当然,这些特征之间有些是相互冲突的,一个系统不可能在所有的特征上都达到最优,这时就需要系统体系结构设计师在各种可能的选择之间进行权衡。
-
7.对于一个软件系统,不同人员所关心的内容是不一样的。
-
8.因此,软件的体系结构是一个多维的结构,也就是说,会采用多个视图(View)来描述软件体系结构。
-
9.RUP采用如图5-4所示的“4+1”视图模型来描述软件系统的体系结构。
-
10.在“4+1”视图模型中,分析人员和测试人员关心的是系统的行为,会侧重于用例视图;最终用户关心的是系统的功能,会侧重于逻辑视图;程序员关心的是系统的配置、装配等问题,会侧重于实现视图;系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于进程视图;系统工程师关心的是系统的发布、安装、拓扑结构等问题,会侧重于部署视图。
4.4 迭代与增量
- 1.RUP 强调采用迭代和增量的方式来开发软件,把整个项目开发分为多个迭代过程。
- 2.在每次迭代中,只考虑系统的一部分需求,进行分析、设计、实现、测试和部署等过程;每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,以此进行下去,直至最后项目的完成。
- 3.软件开发采用迭代和增量的方式有以下好处。
(1)在软件开发的早期就可以对关键的、影响大的风险进行处理。
(2)可以提出一个软件体系结构来指导开发
(3)可以更好地处理不可避免的需求变更。
(4)可以较早得到一个可运行的系统,鼓舞发团队的士气,增强项目成功的信心。
(5)为开发人员提供一个能更有效工作的开发过程。
5.例题
5.1 例题1
- 1.题目
1.RUP强调采用(C)的方式来开发软件,这样做的好处是(A)。
问题1
A.原型和螺旋
B.螺旋和增量
C.迭代和增量
D.快速和迭代
问题2
A.在软件开发的早期就可以对关键的,影响大的风险进行处理
B.可以避免需求的变更
C.能够非常快速地实现系统的所有需求
D.能够更好地控制软件的质量
- 2.解析
1.RUP的三个核心特点是:以架构为中心,用例驱动,增量与迭代。其中增量与迭代的好处是:
2.降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
3.降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
4.加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
5.由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。
5.2 例题2
- 1.题目
2.RUP(Rational Unified Process)软件开发生命周期是一个二维的软件开发模型,其中,RUP的9个核心工作流中不包括(C)。
A.业务建模
B.配置与变更管理
C.成本
D.环境
- 2.解析
RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。
1、商业(业务)建模(Business Modeling):商业建模工作流描述了如何为新的目标组织实现一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程、角色和责任。
2、需求(Requirements):需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。
3、分析和设计(Analysis & Design):分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。
4、实现(Implementation):实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
5、测试(Test):测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。
6、部署(Deployment):部署工作流的目的是成功的生成版本并将软件分发给最终用户。
7、配置和变更管理(Configuration & Change Management):配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。
8、项目管理(Project Management):软件项目管理平衡各种可能产生冲突的目标、管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
9、环境(Environment):环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。