1.4.9 统一过程

统一过程(Rational Unified Process,RUP)是由原来Rational软件公司(Rational公司被IBM并购)创造的软件工程方法。简单的说RUP描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动。它可以为所有方面和层次的程序开发提供指导方针、模板以及事例支持,是一种重量级过程,特别适用于大型软件团队开发大型项目。

RUP中的软件生命周期在时间上被分解为4个顺序的阶段,分别是:初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition),如图1-10所示。水平轴代表时间,显示了过程动态的一面,是用周期、阶段、迭代、里程碑等术语描述。垂直轴代表过程静态的一面,是用活动、产品和工作流描述的。每个阶段又分为一个或多个迭代,每次迭代都是一个完整的开发循环,经历需求、分析、设计、实现和测试等活动,它的结果是产品的一个可执行版本,是正在开发的最终产品的一个子集,从一次次的迭代,不断成长,直到最后完成最终系统。每个阶段或迭代结束于一个主要的里程碑(Milestone),在里程碑这个时间点上,必须做出重要的决策并达到一些关键目标。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意,可以允许项目进入下一个阶段。

图1-10 统一过程图示

1.初始阶段

初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。生命周期目标里程碑评价项目基本的生存能力。

2.细化阶段

细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构作出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。细化阶段结束时第二个重要的里程碑:生命周期结构(Lifecycle Architecture)里程碑。生命周期结构里程碑为系统的结构建立了管理基准并使项目小组能够在构建阶段中进行衡量。此刻,要检验详细的系统目标和范围、结构的选择以及主要风险的解决方案。

3.构造阶段

在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。构建阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运作。此时的产品版本也常被称为“beta”版。

4.交付阶段

交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的结束重合。

本章案例一:

在信息高度发达的今天,酒店业务涉及的各个工作环节已经不仅仅是传统的住宿、结算业务,而是更广泛、更全面的服务性行业代表。酒店宾馆作为一个服务性行业,从客房的营销即客人预订开始,到入住登记直至最后退房结账,整个过程应该能够体现以宾客为中心,提供快捷、方便的服务,给宾客一种顾客至上的享受。提高酒店的管理水平,简化各种复杂操作,在最合理、最短时间内完成酒店业务规范化操作,这样才能令旅客舒适难忘,增加宾客回头率。而对酒店业内激烈的竞争形势,各酒店均在努力拓展其服务领域的广度和深度。虽然信息化不是酒店走向成功的关键因素,但它可以帮助那些真正影响成败的要素发挥更大的作用。因此,采用全新的酒店管理系统,将成为提高酒店管理效率,改善服务水平的重要手段之一。

本系统的基本信息有客房、餐饮、财务及人力资源等,用户登录系统后根据权限操作这些基本信息。要实现的功能模块包括4个方面:第一个方面是客房管理子系统,包括客房登记、客房预订、工作报表、信息查看及最重要的客房部经理管理模块;第二个方面是餐饮管理子系统,包括点单、埋单、预订、换台及最重要的餐饮部经理管理模块;第三个方面是财务管理子系统,包括财务预算的查看及发布审核、财务报表的生成等;最后一个方面是人力资源管理子系统,包括员工信息的录入、查看及绩效考核等。

【问题1】本系统适合采用增量模型开发吗?增量模型有什么优点?

【问题2】什么样的项目适合采用增量模型开发?

【问题3】本系统为什么适合使用增量模型?

参考答案:

【问题1】本酒店管理系统适宜采用增量式开发模型。

增量模型有如下优点:

(1)可以避免一次性投资太多带来的风险,首先实现主要的功能或者风险大的功能,然后逐步完善,保证投入的有效性。

(2)可以更快地开发出可以操作的系统。

(3)可以减少开发过程中用户需求的变更。

(4)一些增量可能需要重新开发(如果早期开发的需求不稳定或者不完整)。

【问题2】增量模型开发适合的项目:

(1)项目开始时,明确了大部分的需求,但是需求可能会发生变化的项目。

(2)对于市场和用户把握不是很准,需要逐步了解的项目。

(3)对于有庞大和复杂功能的系统进行功能改进时需要一步一步实施的项目。

【问题3】在增量开发过程中,软件描述、设计和实现活动被分散成一系列的增量,这些增量轮流被开发。先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。要求系统的总体设计在初始子集设计阶段就应做出设计。

(1)本酒店管理系统主要分为四大功能模块,其中以客房管理模块为核心,因此可以先基于客房管理功能做出一个最小的使用版本,再逐步添加其余的功能。这样一来,用户可以在先试用最小版本的同时,提出更多明确的需求,这有助于下一阶段的开发,大大减小了开发的风险。

(2)酒店管理系统需求中,要求系统有可扩充性。若使用增量式模型,可以保证系统的可扩充性。用户明确了需求的大部分,但也存在很多不详尽的地方。这样,只有等到一个可用的产品出来,通过客户使用这个产品,然后进行评估,将评估结果作为下一个增量的开发计划,下一个增量发布一些新增的功能和特性,直至产生最终完善的产品。

(3)“系统要求有可扩充性,在现有系统的基础上,通过前台就可加挂其他功能模块”,也说明用户可能会增加新的需求。

(4)对一个使用传统管理方式的酒店,要完全舍弃原有的管理方式,用酒店管理系统来进行管理是很不实际的,或者说需要一定的时间来转变。所以,可以从最基础的做起,逐步扩充其应用,让用户可以由简入繁,逐步对系统熟悉以致得心应手。所以,选用增量式模型来开发校务通系统。

(5)本项目具备增量式模型的其他特点:项目复杂程度为中等,预计开发软件的成本为中等,产品和文档的再使用率会很高,项目风险较低。