RUP生命周期模型是一个二维的软件开发模型,如图6-4所示,其中纵轴代表核心工作流,是静态的一面,是软件周期活动和支持活动;横轴代表时间,是过程动态的一面,它表示整个过程消耗的时间,用工作流程、周期、阶段、迭代和里程碑等名词描述。
图6-4 RUP过程模型
1.纵轴
纵轴表示的是在每次迭代过程中经历的工作流程(即有一定顺序的活动)。核心过程工作流程中描述了软件生命周期过程中的各个阶段。核心支持工作流程则是一直贯穿于生命周期活动中的管理部分的内容。
(1)业务建模:理解待开发系统所在的机构及其商业运作,确保所有人员对它有共同的认识,评估待开发系统对结构的影响;
(2)需求:定义系统功能及用户界面,为项目预算及计划提供基础;
(3)分析与设计:把需求分析结果转换为分析与设计模型;
(4)实现:把设计模型转换为实现结果,并做单元测试,集成为可执行系统;
(5)测试:验证所有需求是否已经被正确实现,对软件质量提出改进意见;
(6)部署:打包、分发、安装软件,培训用户及销售人员;
(7)配置与变更管理:跟踪并维护系统开发过程中制品的完整性和一致性;
(8)项目管理:为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架;
(9)环境:为软件开发机构提供软件开发环境。
2.横轴
从横轴来看,RUP把软件开发生命周期划分为多个迭代,每个迭代生成产品的一个新版本。整个软件开发的生命周期由4个连续阶段组成,分别是初始阶段、细化阶段、构造阶段和交付阶段,下面逐一进行解释。
(1)初始阶段。初始阶段的主要任务是定义最终产品视图和业务模型,确定系统范围。
RUP不是瀑布模型,初始阶段作为RUP的第一个阶段不需要完成所有需求或建立可靠预算和计划,这些内容是在细化的过程中逐步完成的。大部分的需求分析是在细化阶段进行的,并且伴以具有产品品质的早期编程和测试。因此大多数项目的初始阶段持续的时间相对较短,例如耗时一周或几周。
初始阶段主要的工作包括如下内容:
·简短的需求讨论会;
·确定大多数参与者、目标和用例名称;
·以摘要形式编写大多数用例;
·以详细形式编写10%~20%的用例;
·确定大多数质量需求;
·编写设想和补充性规格说明;
·列出风险列表;
·完成技术上的概念验证原型和其他调查;
·建立面向用户界面的原型;
·对购买/构建/复用构件的建议;
·对候选的高层架构和构件给出建议;
·制订第一次迭代的计划;
·列出候选工具列表。
如果这个时期过长,往往是需求规格说明和计划过度的表现。用一句话来概括初始阶段要解决的主要问题:是否就项目设想基本达成一致,项目是否值得继续进行认真研究。初始阶段完成的主要制品参见表6-1。
表6-1 初始阶段的制品
(2)细化阶段。细化阶段的任务主要是设计、确定系统的体系结构,制订工作计划及资源要求。(www.xing528.com)
细化阶段是最初的系列迭代,在这一阶段中,小组进行细致的调查、实现(编程和测试)核心架构,澄清大多数需求和应对高风险问题。在RUP中,“风险”包含业务价值。因此早期工作可能包括实现那些被认为重要的场景,而不是专门针对技术风险。
细化阶段通常由两个或多个迭代组成,建议每次迭代的时间为2~6周。除开发团队规模庞大之外,最好采用时间较短的迭代。每次迭代时间都是定量的,这意味着其结束日期是固定的。
细化不是设计阶段,不是要完成所有模型的开发,也不是创建可以丢弃的原型,与之相反,该阶段产生的代码和设计是具有产品品质的最终系统的一部分。
用一句话来概括细化阶段要解决的主要问题:构建核心架构,解决高风险元素,定义大部分需求,以及预计总体进度和资源。细化阶段完成的主要制品参见表6-2。
细化阶段的关键思想和最佳实践如下:
·实行短时间定量、风险驱动的迭代。
·及早编程。
·对架构的核心和风险部分进行适应性的设计、实现和测试。
·尽早测试、频繁测试、实际测试。
·基于来自测试、用户、开发者的反馈进行调整。
·通过一系列讨论会,详细编写大部分用例和其他需求,每个细化迭代举行一次讨论会。
第一次迭代结束时应该完成的任务如下:
·所有软件已经被充分测试。
·客户定期地参与对已完成部分的评估,从而使开发人员获得对调整和澄清需求的反馈。
·已经对(子)系统进行了完整的集成和固化,使其成为基线化的内部版本。
·迭代计划会议。
·对UI的可用性分析和工程正在进行中。
·数据库建模和实现正在进行中。
·举行另一个为期两天的需求讨论会。
表6-2 在细化阶段构建的制品
(续表)
(3)构造阶段。构造阶段构造产品并继续演进需求、体系结构、计划直至产品提交。
在此阶段将会涉及两个重要概念:①程序重构:指对程序中与新添功能相关的成分进行适当改造,使其在结构上完全适合新功能的加入。②模式:解决相似问题的不同解决方案。
此阶段要建立类图、交互图和配置图。例如,一个类具有复杂的生命周期,可绘制状态图;如果具有复杂的算法,可绘制活动图。提供的文档及模型如表6-3所示。
表6-3 提供的文档及模型
(续表)
(4)交付阶段
交付阶段,把产品提交给用户使用。
迭代式开发关键在于规范化地进行整个开发过程。在交付阶段,不能再开发新的功能(除了个别小功能或非常基本的功能以外),而只是集中精力进行纠错和优化工作。交付阶段的制品如表6-4所示。
表6-4 交付阶段的制品
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。