软件工程——五大模型

1.瀑布模型

瀑布模型也称软件生存周期模型或线性顺序过程模型,由W.Royce于1970年首先提出的,提供软件开发的系统化的和顺序的方法。它是将软件生存周期各活动规定为线性顺序连接的若干阶段的模型,包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。瀑布模型从需求分析开始,逐渐进行,直至通过测试并得到用户确认的软件产品为止。瀑布模型的上一阶段的输出结果是下一阶段的输入,如同瀑布流水,逐级下落。

1.瀑布模型表示瀑布模型表示如图1.1所示。该模型说明整个软件看法过程是按图中五个阶段进行的。每个阶段的任务完成之后,产生相应的文档,经过确认后的文档表明该阶段的工作完成了,可以进行下一阶段的工作。每个阶段均以上一阶段的文档作为开发的基础,如果某阶段的文档出问题,则可能需要追溯到前一些阶段,必要时还要修改前面已经完成的文档。
软件工程——五大模型

2.瀑布模型的优点①它提供了一个模板,模板使得分析、设计、编码、测试和维护的方法可以在该模板下有一个共同的指导。②虽然有不少缺陷,但比在软件开发中随意的状态要好得多。
3.瀑布模型的缺点①实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。②在通常情况下,用户难以表达真正的需求,而这种模式却要求如此,这种模型是不欢迎具有二义性问题存在的。③用户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时若发现大的错误,可能引起用户的惊慌,而后果也可能是灾难性的。④采用这种线性模型,经常在过程的开始和结束时,要等待其他成员完成后,才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵塞状态”。

2.快速原型模型

1.原型模型原型就是可以逐步改进成运行系统的模型。开发者在初步了解用户需求的基础上,凭借自己对用户需求的理解,通过强有力的软件环境支持,利用软件快速开发工具,构成﹑设计和开发一个实在的软件初始模型(原型,一个可以实现的软件应用模型)。利用原型模型进行软件开发的流程如图2-3所示。相对瀑布模型,原型模型更符合人们开发软件的习惯,是目前较流行的一种实用软件生存模型。

软件工程——五大模型

1)原型模型的优点
2. 开发人员和用户在“原型”上达成一致。这样一来,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,从而提高了系统的实用性﹑正确性及用户满意度。
3. 原型模型采用逐步求精的方法完善原型,使得原型能够快速开发,避免了像瀑布模型一样冗长的开发过程中难以对用户的反馈作出快速响应。
4. 原型模型通过“样品”不断改进,降低了成本。
5. 原型模型的应用使人们对需求有了渐进的认识,从而使软件开发更有针对性。另外,原型模型的应用充分利用了最新的软件工具,使软件开发效率大为提高。

2)原型模型的缺点虽然用户和开发者都非常喜欢原型模型,因为它使用户能够感受到实际的软件系统,开发人员能很快建造出一些内容。但该模型仍然存在着一些问题,其原因如下。
(1)用户看到的是一个可运行的软件版本,但不知道这个原型是临时搭建起来的,也不知道软件开发者为了使原型尽快运行,并没有考虑软件的整体质量或以后的可维护性问题。当被告知该产品必须重建才能使其达到高质量时,用户往往叫苦连天。
(2)开发人员常常需要在实现上采取折中的办法,以使原型能够尽快工作。开发人员很可能采用一个不合适的操作系统或程序设计语言,仅仅因为它通用或有名,也可能使用一个效率低的算法,仅仅为了实现演示功能。经过一段时间之后,开发人员可能对这些选择已经习以为常了,忘记了它们不合适的原因。于是,这些不理想的选择就成了软件的组成部分。虽然会出现问题,但原型模型仍是软件工程的一个有效典范。使用原型模型开发系统时,用户和开发者必须达成一致:原型被建造仅仅是用户用于定义需求,不宜利用它来作为最终产品,之后被部分或全部抛弃,最终的软件是要充分考虑了质量和可维护性等方面之后才被开发。

3.增量模型

增量模型也称为渐增模型。该模型融合了线性顺序模型的基本成分和原型实现模型的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的“增量”。例如,使用增量模型开发字处理软件时,第一个增量构件可提供基本的文件管理、编辑和文档生成功能;第二个增量构件提供更完善的编辑和文档生成功能;第三个增量构件实现拼写和语法检查功能;第四个增量构件完成高级的页面排版功能。当使用增量模型时,第一个增量往往是核心的产品,也就是说,第一个增量实现了基本的需求,但很多的补充的特征还没有发布。用户对每一个增量的使用和评估,都作为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

软件工程——五大模型

1.增量模型的优点
①人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。
②当配备的人员不能在设定期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给用户,对用户起到镇静剂的作用。
③具有一定的市场。
2.增量模型的缺点
自始至终开发者和用户纠缠在一起,直到完全版本出来。

4.螺旋模型

螺旋模型(Spiral Model)是一个演化软件过程模型,如图1.3所示,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来,使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐渐产生。螺旋模型被划分为若干框架活动,也称为任务区域。对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:
①确定目标、方案和限制条件。
②评估方案、标识风险和解决风险。
③开发确认产品。
④计划下一周期工作。

软件工程——五大模型
这是一个相对较新的模型,它的功效还需要经历若干年的使用才能确定下来。
1.螺旋模型的优点
对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。
2.螺旋模型的缺点
①需要相当的风险分析评估的技术,且成功就依赖于这种技术。
②显然,若存在一个没有被发现的大风险,将会出现问题,甚至可能导致演化过程失去控制。这种模型相对比较新,应用不广泛,其功效需要进一步的验证。

5.喷泉模型

喷泉模型(Fountain Model)是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目。喷泉模型如图1.4所示,该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界线,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。
软件工程——五大模型
1.喷泉模型的优点
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界线,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
2.喷泉模型的缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。