软工五大模型:
一、瀑布模型
将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自顶向下、相互衔接的固定次序,如同瀑布流水,逐级下落。
特点:
- 阶段间具有顺序性和依赖性
- 推迟实现的观点
- 质量保证的观点
缺点:
- 用户看到软件产品的时间靠后,因此开发的产品很可能不是建立在全面的、正确认识基础上的。
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 缺乏灵活性,修改的代价高
开发方法:明确规定每个阶段的任务,不同阶段的任务有不同级别的软件人员承担
二、增量模型
把待开发的软件系统模块化,分批分析、设计、编码、测试。相对于瀑布模型,开发人员不需要一次性将整个软件产品交到用户手中,而是可以分批次进行提交。
特点:
- 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
- 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
- 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
缺点:
- 周期长,成本高
- 整体上不如瀑布模型清晰
三、 快速原型模型
指模拟某种产品的原始模型,在其他产业中经常使用。软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。
重心:快速原型模型的重点是建立“快速原型”。
特点:
- 克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。
- 这种模型适合预先不能确切定义需求的软件系统的开发。
- 在结构上看,快速原型模型是不带反馈环的,使得采用这种模型的软件产品的开发基本上是线性顺序的。只有在产品发布运行之后才需要再来维护。
缺点:
- 所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
- 使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
四、螺旋模型
一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控 。
四个象限: 螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中
- 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
- 风险分析:分析评估所选方案,考虑如何识别和消除风险;
- 实施工程:实施软件开发和验证;
- 客户评估:评价开发工作,提出修正建议,制定下一步计划。
特点:
- 设计上的灵活性,可以在项目的各个阶段进行变更。
- 以小的分段来构建大型系统,使成本计算变得简单容易。
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
- 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
- 客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
五、喷泉模型
以用户需求为动力,以对象为驱动的模型,用于面向对象的软件开发过程。
特点:
- 各个阶段没有明显的界限,开发人员可以同步进行开发。
- 高开发效率,节约时间,适应面向对象的软件开发过程。
- 需要大量开发人员,不利于管理。
- 要求严格的管理文档,审核难度大。