软件生命周期模型选择及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)适用范围①用户核心需求非常清楚;②项目人员不足;③产品可以分割成不同的阶段分别完成。