软件生命周期模型选择及WBS分解指南

软件生命周期模型选择及WBS分解指南

一、概述

同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为“软件生命周期”。软件生命周期模型,通俗说就是,软件开发过程中所遵循的模式,即把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。

软件生命周期模型和项目开发过程有非常紧密关系,它是经过多次实践总结出来适合于不同项目使用的经典、有效的软件开发方法,它按照软件生命周期的各个阶段划分任务,依照一定的规则和步骤,有效地进行软件开发。

选用恰当的软件生命周期模型进行软件开发,可以提高产品质量;降低项目管理难度;缩短开发进度;便于项目状态跟踪;为过程改进和度量提供基线;改善组织级的过程弱势,提高过程能力成熟度级别。

为了便于分类汇总和统计各种生命周期模型的指标和数据,结合公司软件开发过程的实际,我们选择了常用的几种基本模型进行了描述,项目开发小组在进行项目策划时,可以根据模型的适用前提、优缺点和项目的实际需要进行选择,并在《项目实施计划》中,参加评审。

二、软件生命周期模型

常用的软件生命周期模型有:瀑布模型、迭代模型、增量模型、原型模型等。

以上所提到的件生命周期模型病不存在孰优孰劣的问题,每一种模型在实际工作中都有所应用。只要选择了最适合的,并按照此模型的流程来开发软件,都会取得成功。

需要强调的是,不管采用什么模型,项目实施中有四项活动是必不可少的——需求、设计、编码和测试。不管是有意识还是无意识,这些活动都会出现在项目过程中。这也是最重要的四项活动,其他的活动其实都是为这些活动服务的,不管是配置管理、风险管理,还是评审等等。

以下对各种常用的软件生命周期模型的设计思想、WBS划分(Work Breakdown Structure,即工作分解结构)、优缺点、使用范围进行分析。

1、瀑布模型

(1)基本思想

瀑布模型(Waterfall Model)是最基本也最常用的一种生命周期模型,又称线性模型。

瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。瀑布模型可以应用于软件工程开发、企业项目开发、产品生产以及市场销售等领域。

瀑布模型的突出特征是文档驱动。从需求分析到系统维护,每一项活动的工作成果就是此项活动所产生的工作文档,以及在此基础上形成的产品。

采用瀑布模型的项目依照该模型选定的阶段顺序进行,每一个阶段的工作产品都是下一个阶段工作的输入,每一个阶段只有在上一个阶段通过检查,确认完成后才开始新的阶段工作,所以项目必须有明确的阶段里程碑,在每个阶段结束时都要进行里程碑评审,以判定是否可以开始下一阶段的工作。例如:在项目策划没有完成时,需求分析和设计工作就不能进行,同样,在需求分析和设计没有完成时就不开始编码。瀑布模型中,每个阶段完成后,可以在下一个阶段修改上一个阶段的工作产品,但是必须按照基线变更进行管理,如果发生变更,需要回溯前面所有阶段的工作产品,以便使工作产品保持一致。

(2)WBS划分

图1 瀑布模型的思想示意图

说明:

图中标记为的阶段为选定的里程碑,该阶段完成时需进行里程碑评审活动,并对其输出进行严格

的变更控制。

(2)WBS划分

此表仅作为参考,需根据项目所选定的标准过程的活动和任务进一步细化。

(3)优缺点

该模型的优点:

①阶段分明、活动明确,为软件开发工作提供一种结构化、有序的方法;

②过程控制可见性较强:按照顺序开展每一个阶段的工作,每一阶段是在上一阶段彻底完成的情况下

才启动,可以保证每一个阶段的开发质量都有保证,减少了返工;

③开发过程中的各项文档降低了沟通的成本,有利于及早发现问题,降低项目的阶段成本;

④文档多,过程记录比较全,有利于后期维护。

该模型的缺点:

①不能回溯:项目从开始到发布可见的版本需要较长的周期,用户直到项目开发晚期才能了解产品的

真实面貌和质量,不易变更;如果必须回溯,则回溯成本很大。

②缺乏灵活性,不能跨阶段操作;

③文档多,花费较多成本。

(4)适用范围

①产品定义(或项目需求)和技术方案非常明确、用户的需求有很好的了解;

②对质量的要求高于对成本和进度的要求;

③工期相对较宽裕;

④开发队伍技术力量较弱或缺乏经验;

⑤维护项目。

2、迭代模型

(1)基本思想

迭代模型是RUP(Rational Unified Process,统一软件开发过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。

图2 迭代模型的思想示意图

说明:

迭代模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

①制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

②风险分析:分析评估所选方案,考虑如何识别和消除风险;

③实施工程:实施软件开发和验证;

④客户评估:评价开发工作,提出修正建议,制定下一步计划。

迭代模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。

使用迭代模型进行软件开发,项目活动包含以下几个阶段:

①初始阶段

初始阶段有时也称先启阶段。初始阶段的目标是为系统建立商业案例并确定项目的边界。为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。

②细化阶段

细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目的,必须在理解整个系统的基础上,对体系结构做出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。

③构造阶段

在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。

④交付阶段

交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。

图3 迭代模型的几个阶段

(2)WBS划分

实际采用迭代模型中,项目阶段仍可参考瀑布执行。迭代模型实施重要的关键点是架构设计(概要设计)、制定迭代开发计划。

(3)优缺点

与传统的瀑布模型相比较,迭代模型具有以下优点:

①降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭

代的花费;

②降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不

至于在开发后期匆匆忙忙;

③加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率;

④由于用户的需求并不能在一开始就做出完全的界定,它们通常是在后续阶段中不断细化的。因此,

迭代过程这种模式使适应需求的变化会更容易些。

迭代模型的缺点:

①风险管理成本较高:迭代模型本身强调风险,但风险管理本身也存在成本问题;如果风险管理成本

过大,将会严重影响项目的利润;

②对项目组成员的要求非常高:在风险分析、进度管理等方面,需要有较高层次的人员配置及丰富的

项目管理和项目实施的经验。这对于开发队伍技术力量较弱或缺乏经验的团队很难实施。

(4)适用范围

①在项目开发早期需求可能有所变化;

②分析设计人员对应用领域很熟悉;

③高风险项目;

④用户可不同程度地参与整个项目的开发过程;

⑤使用面向对象的语言或统一建模语言(Unified Modeling Language,UML);

⑥使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose 是非常受欢迎的物件软体开发工具);

⑦具有高素质的项目管理者和软件研发团队。

3、增量模型

(1)基本思想

增量模型是通过对用户需求的判断,在定义了用户要求和系统需求,进行总体构架设计后,采用序列化地创建产品的方法进行开发的过程。每一个线性序列产生软件的一个可发布的“增量”,第一个建立的增量完成预计功能/性能的一部分(往往包含了核心功能,即实现了基本的需求),下一个增量实现另外的部分,增加更多的功能/性能,然后与前面实现的增加进行集成,如此循环,直到系统完全实现。

增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。其实现过程简图如下所示:

图4 增量模型的思想示意图

说明:

在策划阶段,项目经理需要与客户协商确定增量的数目、规模、每一增量发布的时间表,在概要设计

阶段需要考虑各增量集成的顺序、接口等问题,制定集成策略。

增量循环的循环体可以根据项目的实际情况进行控制。

增量模型本质上是迭代的,但其强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。

(2)WBS划分

(3)优缺点

该模型的优点:

①在达到初始需求之前可降低成本:采用增量模型可以灵活分配人员,刚开始不用投入大量人力资源。

如果核心产品很受欢迎,则可增加人力实现下一个增量;

②可快速生产出可使用的系统:它提供了一种先推出核心产品的途径,这样即可先发布部分功能给客

户,对客户起到镇静剂的作用;

③能够有计划地管理技术风险。

该模型的缺点:

①系统集成难度大:由于各个构件是逐渐并入已有的软件体系结构中的,各增量的集成难度增大,所

以在概要设计阶段需要制定详细的集成策略;

②项目管理风险加大:在开发过程中,需求的变化是不可避免的,增量模型的灵活性可以使其适应这

种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。

(4)适用范围

①用户核心需求非常清楚;

②项目人员不足;

③产品可以分割成不同的阶段分别完成。

4、原型模型

(1)基本思想

原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。同时,原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈做出快速的响应。相对瀑布模型而言,原型模型更符合人们开发软件的习惯,使目前较流行的一种实用软件生存期模型。

原型模型是一种用户需求驱动的方法,使得用户在系统生存周期的设计阶段起到积极的作用;它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。

图5 原型模型的思想示意图

原型模型根据其最终保留情况分为非抛弃型和抛弃型两种:

非抛弃型原型是先根据用户的最主要的要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。

原型模型从需求收集开始,软件开发组与目标用户一起定义软件的总体目标,标识出已知的需求,并规划出进一步定义的区域。然后是“快速设计”。快速设计建立软件中对用户可见的部分,即“原型”。原型由用户评估,并据此进一步精化用户需求。逐步调整原型使其满足用户的要求,同时也使开发组对该软件有更好的理解,这个过程是迭代的,每一个迭代完成后均可生成一个可用的产品版本。

抛弃型原型模型一般用来描述和验证用户需求,可以采用与实际开发所不同的开发工具,建立模拟的数据库系统,从而达到与用户交流的最好效果。到用户需求确定之后即不再继续开发此原型。

与非抛弃型原型模型的主要区别在于:

①目的不同,抛弃型原型模型的目的是为了与用户更好的沟通;

②手段不同,抛弃型原型模型采用的技术手段与正式开发可以完全不同;

③结果不同,抛弃型原型模型的工作产品不会在软件研发中使用或大量使用,而多用于开发demo及验证用户需求的复合性。

使用原型模型进行软件开发,项目活动包含以下几个阶段:

①确定用户需求阶段

软件项目负责人员根据用户意向或市场调研等前期准备的资料、文档,对用户需求进行分析,编写用户需求文档。

②建造/修改原型阶段

项目组根据原型评价结果对设计原型进行建立、修改和完善,并记录相关过程。

③运行/评价原型阶段

项目负责人协同市场人员与用户对设计原型进行评价和讨论,明确设计原型中要保留的和需去除的原型设计部分,提出需要进一步补充和完善的需求内容。重复上述过程,直至用户需求全部明确为止。各阶段需要遵循的项目标准过程参见PD《项目标准过程裁剪指南》。

图6 原型模型开发的几个阶段

(2)WBS划分

非抛弃型原型模型的WBS划分

(3)优缺点

该模型的优点:

①符合人们认识事物的规律,系统开发循序渐进,反复修改,确保较好的用户满意度;

②开发周期短,费用相对少;

③由于有用户的直接参与,系统更加贴近实际,易学易用,减少用户的培训时间;

该模型的缺点:

①开发过程管理要求高,整个开发过程要经过“修改—评价—再修改”的多次反复;

②用户过早看到系统原型,误认为系统就是这个模样,易使用户失去信心;

③开发人员易将原型取代系统分析;

④缺乏规范化的文档资料,不利于系统的后期维护。

(4)适用范围

该模型适合于:

①处理简单过程明确、涉及面窄的小型系统;

②大型系统的需求阶段,用原型去跟用户交流,需求分析会更加明确和细化。

该模型不适合于:

①大型、复杂系统,难以模拟;

②存在大量运算、逻辑性强的处理系统;

③管理基础工作不完善、处理过程不规范的系统;

④大量批处理的系统。

三、软件生命周期模型的选择

在众多的开发模型和过程方法中,企业应选择什么样的开发模型,应从以下几方面进行慎重考虑:

1、实施推广的难度

虽然各种开发模型的内容极其丰富,定义项目各个阶段的活动,并提供了一大堆的文档模板,但是各个开发模型的实施最终还是依靠人。项目管理团队的管理能力和系统开发团队的技术能力决定了所选择开发模型的实施难度。选择一个适合项目团队特点的开发模型尤为重要。

2、项目管理的侧重点

以上各个开发模型的过程特点也各不相同,如瀑布模型是文档驱动型的,迭代模型是风险驱动型的,增量模型是任务驱动型的,原型模型是需求驱动型的。

项目不同,其侧重点也不同,如侧重于进度、质量、成本控制、风险管理等等。根据项目的侧重点,可以选择不同的开发模型。

总之,选择一个合适的生命周期模型,并应用正确的方法,对于任何软件项目的成功是至关重要。企业在选择开发模型应从项目时间要求、需求明确程度、风险状况等选择合适的生命周期模型。

相关文档
最新文档