软件工程———软件过程模型

摘要:所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。

瀑布模型

瀑布模型(Waterfall Model)又称流水式过程模型,它将软件开发过程模仿旅游景点的阶梯瀑布,由上向下一个阶梯一个阶梯地倾泻下来,最后进入一个风平浪尽的大湖,这个大湖就是软件企业的产品库。

模型特点

  • 前一个阶段的工作完成之后,才能开始后一段工作。
  • 每个阶段需要完成规定的文档。
  • 上一个阶段的输出文档是下一个阶段的输入文档
  • 每个阶段都要对文档镜像评估,以便更早的查清问题

模型优点

  • 开发的阶段性,各阶段具有顺序性和依赖性
  • 强调早期调研和需求分析
  • 提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导

模型局限

  • 瀑布模型是一个线性模型,对项目的推进有着严格的要求,必须等到所有开发工作后才能实现产品的交付,不能对软件系统进行快速构建,对于基于交付的开发不方便
  • 瀑布模型适用于需求明确且无大的需求变更的开发,对于需求模糊的项目并不适用。

适用场景

适用于需求确定,无大的需求变更,工作能够采用线性的方式完成的软件

增量模型

增量模型(Incremental Model)融合了瀑布模型的基本成分和原型实现的迭代特征,它对软件的过程按照:整体上按瀑布迷信的流程实施开发,以便对项目的管理,但在实际开发过程中,则将软件系统按功能多增减构件,以逐个地创建与交付,直到全部增量构件创建完成,并集成到系统之中交付用户使用。

2

模型特点

  • 当使用增量模型时,第一个增量往往是核心产品
  • 客户对每个增量的使用和评估都是下一个增量发布的新功能
  • 采用随时间进展交互进行,使得每个线性序列产生软件的一个可发布“增量”

模型优点

  • 第一个可交付的成本和时间较少
  • 开发的增量表示的小系统的风险较小
  • 运行增量的投资,可以在项目才开始的时候对一两个增量投资

模型局限

  • 管理发生的成本或者进度等可能会超出组织能力
  • 没有对用户的变更要求进行规划,那么产出的出事增量可能造成后来增量的不稳定性
  • 如果需求不像早期思考的稳定,就需要重新发布不稳定的增量

适用场景

项目在既定的商业要求期限之前不可能找到足够的开发人员的情况。

螺旋模型

对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

4

模型特点

  • 与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便;
  • 使用螺旋模型进行软件开发,需要开发人员具有相当丰富的风险评估经验和专门知识。

模型优点

  • 关注软件的重用;
  • 关注早期错误的消除;
  • 将质量目标放在首位;
  • 将开发阶段与维护阶段结合在一起。

模型局限

  • 开发人员需要有较强的风险评估的经验;
  • 契约开发通常需要事先指定过程模型和发布产品。

适用场景

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型适合用于庞大、复杂并且具有高风险的系统。

喷泉模型

喷泉模型(Water Fountain Model)是专门针对面向对象软件开发方法而提出的。“喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡。

在面向对象方法中,对象既是对现实问题中实体的抽象,也是构造软件系统的基本元素。 因此,建立对象模型在面向对象方法中,既可以用于分析,也可以用于设计,而且分析阶段所获得的对象框架模型可以无缝过渡到设计阶段,以作为软件实现的依据。

喷泉模型的过程方法所考虑的是,基于面向对象方法所带来的便利,对软件的分析、设计和实现按照迭代的方式交替进行,并通过进化的方式,使软件分阶段逐渐完整、逐步求精。

5

模型特点

  • 喷泉模型是一种以用户需求为动力,以对象作为驱动力的模型,适合面向对象的开发方法
  • 碰巧模型使得开发过程具有迭代性和无缝衔接,在迭代过程中不断地完善软件系统

模型优点

喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行,节省开发时间

模型局限

  • 由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理;
  • 喷泉模型要求严格管理文档,使得审核的难度加大。
------- 本文结束  感谢您的阅读 -------