1.瀑布模型
所有阶段像瀑布一样自上而下,不出现往上走的箭头
瀑布模型的特点:
1.阶段具有顺序性和依赖性
前一个阶段结束,后一个阶段才能开始,前一个阶段输出的文档是后一个阶段的输入文档
2.推迟实现观点
尽量让编码靠后,让前期的工作做扎实.磨刀不误砍柴工,降低返工的概率,提升效率
3.质量保证观点
瀑布模型坚持两个重要的做法:
(1)每个阶段必须完成完整、准确的文档.
(2)每个阶段结束前对文档评审.尽可能在本阶段完成本阶段的问题,不要带到下一个阶段.
瀑布模型缺点:
(1) 若发现问题难以返回去修改,但软件开发是很复杂的,难免会出现各种问题,这需要改进,增加反馈环
(2)不适合需求模糊的系统
(3)开发初期难彻底弄清软件需求
2.快速模型
对瀑布模型进行改进,在需求分析阶段增加一个原型开发的工作,通过开发系统原型和用户一起验证系统需求是否准确,经过多次循环直到认为需求已经明确,再进行下一段的活动
1.主要特点:
(1)"逼真"的原型可以让用户迅速做出反馈
(2)循环回溯和迭代:不像是瀑布模型那样简单的线性模型,而是非线性模型
(3)使用快速开发工具.如果没有快速工具,模型开发和系统开发差不多难度,那就没有什么意义了。
2.分类:
快速模型根据对原型的处理不同分为两类
(1)渐进型:对原型进行补充和修改获得最终系统
(2)抛弃型:原型废弃不用,作为需求分析的工具来使用
3.存在问题
原型是快速开发出来的,一般来说架构、效率、性能都不是很好,所以大部分情况下都应该抛弃重新开发.有些时候舍不得抛弃影响软件质量
4.适用项目
(1)功能要求不太清楚的,特别对操作要求不清楚的
(2)一般为定制开发
(3)初次开发类似项目
3.演化开发模型
传统模型的假设实际上并不都成立,大多数系统在部分需求明确的情况下开始开发的。所以有了演化开发模型,是让所开发的软件在迭代点中逐步完善
3.1增量模型
所谓增量就是小而可用的软件,第一个增量通常是软件核心
大家经常见到各种工具软件有 很多版本,不断更新升级。把软件看做一系列相互联系的增量,每次迭代完成一个增量.如我们经常玩得王者农药或者wps
1.特点:
(1)在前面增量的基础上开发后面的增量
(2)每个增量的开发可用瀑布模型或快速原型模型
(3)每个增量开发的顺序性和总体的迭代相结合
2.适用范围:
(1)工具类、产品类软件(增加新的功能),一般没有特定的客户,功能性能的确定由设计者自行设计,当然现在很多软件都有用户反馈,根据用户的需求增加一些功能。
(2)对软件市场的销售有信心,从而可以持续增加更新。就像做生意,买了一块地,当然是想持续做下去,有信心可以做下去。
3.2螺旋模型
最中间的的这个圆圈相当于最开始开发的原型版本,然后对原型进行评估,有没有继续开发的价值,如果有就进行第二次循环,加功能,完成测试等等,完成一个新的循环,新的螺旋.再进行评估…
一个螺旋式周期:
(1)计划:确定计划,选择方案,选定完成目标的策略
(2)风险分析:从风险的角度分析该策略
(3)开发:启动一个开发活动
(4)评审:评价前一步的结果,计划下一轮的工作
一些软件还仅仅是一些想法,
只是试探性开发,
等到真认为具有开发价值的时候再去正式开发
1.特点:
(1)瀑布模型(顺序性,边开发边复审)+快速原型(迭代性)
(2)增加风险分析阶段:用于发现控制风险
2.适用范围:
适用范围比较窄,对软件功能需求,性能需求都不清楚,仅仅是一个试探性开发.或者对软件市场,应用前景没有把握.
3.3构件集成模型
一般是专业领域很强的软件开发公司用,专于一类软件的开发,比如专门做银行领域的软件的或者专门做管理信息系统的开发的.在开发中为了降低成本,提高效率,尽量利用构件库进行开发,在开发的过程中也尽量将开发的模块通用化,成为构件.开发时在构件库中寻找构件是否可以使用.
构件:在某个领域内具有通用性(万金油),可以复用的软件部分,将可以复用的构件储存起来形成构件库
1.特点:
(1)面向对象开发
(2)基于构件库
(3)融合螺旋模型的特征,是一个迭代模型
(4)支持软件开发的迭代方法,新完成的构件可以成为下一个开发的构件库的成员
(5)软件复用
2.适用范围:
(1)对一类软件进行了大量的研究,设计了积木式的构件,对不同的用户进行量身定制
(2)本身使用使用大量构件的软件开发
5.喷泉模型
喷泉模型主要用于采用对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。
优缺点:
1、喷泉模型的优点
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
2、喷泉模型的缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。