软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段或机动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。常见的软件生存周期模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。
(一)瀑布模型 特点:
阶段间的顺序性和依赖性 推迟实现的观点
质量保证的观点(文档驱动性) 优点
可强迫开发人员采用规范的方法 严格地规定了每个阶段必须提交的文档
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证 缺点
周期长:顺序推进,环环审查
需求难以准确把握(不能准确提出和沟通、不能快速适应变化的需求),
导致返工甚至推倒重来
无法预测新引入模块的影响 最终的形式难以预料 不适合需求模糊的系统
瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。从本质来讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,开发进程从一个阶段“流动”到下一个阶段,这也是
瀑布开发名称的由来。
瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。
(二)演化模型(适用于大型软件的开发) 优点
能在较短的时间内向用户提交部分功能的构件;
逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新软件可能给用户带来的冲击。
缺点
增量构件的划分依赖于系统功能的构成和软件开发人员的经验; 要求软件系统的体系结构具有高度的可扩充性和开放性。
演化模型是一种全局的软件(或产品)生存周期模型。属于迭代开发风范。 模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->„„
即根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。采用演化模型的开发过程,实际上就是从初始的原型逐步演化成最终软件产品的过程。演化模型特别适用于对软件需求缺乏准确认识的情况。
(三)螺旋模型
螺旋模型的每一个周期都包括需求分析、风险分析、工程实现和评审4个步骤。螺旋模型主要适用于内部开发的大规模软件项目。当风险过大时,可方便的终止项目。
特点
瀑布模型+快速原型+风险分析 迭代过程 优点
强调可选方案和约束条件有利于已有软件的重用; 有助于把软件质量作为软件开发的一个重要目标; 减少过多测试或测试不足带来的风险;
维护只是模型的另一个周期,在维护和开发之间并没有本质区别。 缺点
需耗费大量资金和时间用于风险评估;
要求开发人员具有丰富风险评估经验和有关知识; 开发过程比较复杂;
给过程管理和控制带来了一定的难度。
螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动: (1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件; (2)风险分析:分析评估所选方案,考虑如何识别和消除风险; (3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。 螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
(四)喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
当客户需求稳定,能够采用线性的方式完成的时候,瀑布模型就比较好用而有效。瀑布模型适合于结构化方法,也就是面向过程的软件开发方法。软件项目或产品选择瀑布模型必须满足下列条件:能够事先完整定义需求的系统开发工作,在开发时间内需求没有或很少变化;分析设计人员应对应用领域很熟悉;低风险项目(对目标、环境很熟悉);用户使用环境很稳定;用户除提出需求以外,很少参与开发工作。尽管瀑布模型招致了很多批评,但是它对很多类型的项目而言依然是有效的,如果正确使用,可以节省大量的时间和金钱。
原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。同时,原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈作出快速的响应。
采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。此外,增量能够有计划地管理技术风险。
螺旋模型是将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型是一种以风险为导向的生命期模型。
因篇幅问题不能全部显示,请点此查看更多更全内容