软件开发模型
这部分是之前准备复试的时候所做的笔记,主要参考是这个视频
瀑布模型(Waterfall Model)
又称为线性模型,每完成一步都需要验证来保证该步的正确性,后一步是基于前一步是正确的基础上。
但实际开发过程中不可能不犯错误,且开发过程中需求可能会调整,故瀑布模型是带反馈环的:
当发生错误或者需求变更时,返回前面阶段修正后再继续
优点是过程简单,缺点是无法适应变更
- 回溯性差,需求变更代价高昂
- 开发人员经验丰富。
- 软件项目风险较低。瀑布模型不具有完善的风险控制机制
快速原型模型
快速建立一个能基本反应用户主要需求的原型系统,然后让用户在其上实践后提出进一步的意见
原型为了获取全面准确的用户需求,获取后便是瀑布模型
原型有两种
- 追加型(throw away)
- 废弃型(add on)
主要优点是不带反馈环,软件产品的开发基本是线性顺序进行的
可理解为错误与需求变更都在原型阶段完成了,后续阶段再出现的可能性较小,因此可以基本实现线性顺序开发
增量模型(Incremental Model)
又称渐增模型,把软件模块化,每个模块作为一个增量组件来分批次的分析、设计、编码和测试。
开发过程是递增式的过程。
不是瀑布模型的一次性提交,而是分批次进行提交
第一个增量往往是实现基本需求的核心产品,交付用户使用后,经过评价形成下一个增量的开发计划(对核心产品的修改和新功能的发布)。如是不断重复迭代,直到产生最终的完善产品
- 分批次的提交软件产品,用户可以及时了解软件项目的进展
- 以组件为单位开发降低了软件开发的风险。一个开发周期内的错误不会影响整个系统
- 开发顺序灵活,可以灵活安排构件实现优先顺序的优先级
- 功能逐步增加,使用户有充裕的时间去适应与学习新产品,从而减少新的软件可能带给用户组织的冲击。
螺旋模型(Spiral Model)
用于风险较大的大型项目开发,综合瀑布模型和快速原型模型并加入前二者忽略的风险分析
优点是将风险分析扩展到各个阶段中,大幅降低开发过程的风险,
缺点是控制和管理复杂,可操作性不强,对项目管理人员的要求比较高
简单理解,其就是快速原型模型基础上在其每一步都加上风险分析
喷泉模型(Fountain Model)
喷泉指的是面向对象方法的迭代(各阶段多次重复进行以更好的的实现需求,类似于每个阶段的过程都是迭代模型)和无间隙性(各阶段没有明显界限,并常在时间上相互交叉,并行进行)
主要用于面向对象的软件项目
所谓喷泉的得名看图更好理解
迭代模型(Iterative Model)
将整个软件开发过程分解为一系列独立的迭代周期。每个迭代周期都包含了需求分析、设计、编码、测试和评审等活动,周期结束时产生一个可交付的软件版本
前一次迭代中收集的反馈和经验是指导下一次迭代的重要依据,每次迭代都可以增加新的功能或修复已知问题,若干次迭代后最终产生一个可交付的软件版本。
简单说就是反复开发优化。
其可以灵活响应变化,提高软件质量和客户满意度(客户可根据每次迭代的结果来提出意见),但其也可能导致过度的迭代和范围膨胀(得陇又望蜀,欲壑难填满)