目录
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.由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。