软件过程模型也称为软件开发模型,它是软件开发的全部过程、活动和任务的结构框架。

典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型等。

瀑布模型(Waterfall Model)

瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。

Waterfall Model

瀑布模型的缺点:

  • 客户在看到软件之前可能并不确切他们的需求,因此会改变需求,从而导致重新设计,开发和测试,增加成本。
  • 瀑布模型的开发周期过长。

增量模型(Incremental Model)

增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。该模型采用随着日程时间的进展而交错的线性序列,每一個线性序列产生软件的一个可发布的“增量”。

Incremental Model

演化模型(Evolutionary Model)

演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。演化模型特别适用于对软件需求缺乏准确认识的情况。典型的演化模型有原型模型和螺旋模型等。

原型模型(Prototype Model)

原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

Prototype Model

原型模式开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速指定原型开发的计划,确定原型的目标和范围,采用快速射击的方式对其进行建模,并构建原型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一轮中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。

根据使用原型的目的不同,原型可以分为探索型原型、实验型原型和演化型模型等。

  • 探索型原型的目的是要弄清目标的要求,确认所希望的特性,并探讨多种方案的可行性。
  • 实验型原型的目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考查方案是否合适、规格说明是否可靠等。
  • 演化型原型的目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目的系统。

螺旋模型(Spiral Model)

螺旋模型将瀑布模型和演化模型结合起来,加入两种模型均忽略的风险分析,弥补了两种模型的不足。

每个螺旋中期分为 4 个工作步骤

  1. 制定计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。
  2. 风险分析。分析所选的方案,标识风险,消除风险。
  3. 实施工程。实施软件开发,验证阶段性产品。
  4. 用户评估。评估开发工作,提出修正建议,建立下一个周期的开发计划。

Spiral Model

喷泉模型(Water Fountain Model)

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。

喷泉模型使开发过程具有迭代性和无间隙性。迭代意味着模型中的开发活动常常需要重复多次,在迭代过程中不断地完善软件系统。无间隙是指开发活动(如分析,设计,编码)之间不存在明显的边界。

Water Fountain Model

参考链接