摘要:所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。
瀑布模型
瀑布模型(Waterfall Model)又称流水式过程模型,它将软件开发过程模仿旅游景点的阶梯瀑布,由上向下一个阶梯一个阶梯地倾泻下来,最后进入一个风平浪尽的大湖,这个大湖就是软件企业的产品库。
模型特点
- 前一个阶段的工作完成之后,才能开始后一段工作。
- 每个阶段需要完成规定的文档。
- 上一个阶段的输出文档是下一个阶段的输入文档
- 每个阶段都要对文档镜像评估,以便更早的查清问题
模型优点
- 开发的阶段性,各阶段具有顺序性和依赖性
- 强调早期调研和需求分析
- 提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
模型局限
- 瀑布模型是一个线性模型,对项目的推进有着严格的要求,必须等到所有开发工作后才能实现产品的交付,不能对软件系统进行快速构建,对于基于交付的开发不方便
- 瀑布模型适用于需求明确且无大的需求变更的开发,对于需求模糊的项目并不适用。
适用场景
适用于需求确定,无大的需求变更,工作能够采用线性的方式完成的软件
增量模型
增量模型(Incremental Model)融合了瀑布模型的基本成分和原型实现的迭代特征,它对软件的过程按照:整体上按瀑布迷信的流程实施开发,以便对项目的管理,但在实际开发过程中,则将软件系统按功能多增减构件,以逐个地创建与交付,直到全部增量构件创建完成,并集成到系统之中交付用户使用。
模型特点
- 当使用增量模型时,第一个增量往往是核心产品
- 客户对每个增量的使用和评估都是下一个增量发布的新功能
- 采用随时间进展交互进行,使得每个线性序列产生软件的一个可发布“增量”
模型优点
- 第一个可交付的成本和时间较少
- 开发的增量表示的小系统的风险较小
- 运行增量的投资,可以在项目才开始的时候对一两个增量投资
模型局限
- 管理发生的成本或者进度等可能会超出组织能力
- 没有对用户的变更要求进行规划,那么产出的出事增量可能造成后来增量的不稳定性
- 如果需求不像早期思考的稳定,就需要重新发布不稳定的增量
适用场景
项目在既定的商业要求期限之前不可能找到足够的开发人员的情况。
螺旋模型
对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。
模型特点
- 与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便;
- 使用螺旋模型进行软件开发,需要开发人员具有相当丰富的风险评估经验和专门知识。
模型优点
- 关注软件的重用;
- 关注早期错误的消除;
- 将质量目标放在首位;
- 将开发阶段与维护阶段结合在一起。
模型局限
- 开发人员需要有较强的风险评估的经验;
- 契约开发通常需要事先指定过程模型和发布产品。
适用场景
螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型适合用于庞大、复杂并且具有高风险的系统。
喷泉模型
喷泉模型(Water Fountain Model)是专门针对面向对象软件开发方法而提出的。“喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡。
在面向对象方法中,对象既是对现实问题中实体的抽象,也是构造软件系统的基本元素。 因此,建立对象模型在面向对象方法中,既可以用于分析,也可以用于设计,而且分析阶段所获得的对象框架模型可以无缝过渡到设计阶段,以作为软件实现的依据。
喷泉模型的过程方法所考虑的是,基于面向对象方法所带来的便利,对软件的分析、设计和实现按照迭代的方式交替进行,并通过进化的方式,使软件分阶段逐渐完整、逐步求精。
模型特点
- 喷泉模型是一种以用户需求为动力,以对象作为驱动力的模型,适合面向对象的开发方法
- 碰巧模型使得开发过程具有迭代性和无缝衔接,在迭代过程中不断地完善软件系统
模型优点
喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行,节省开发时间
模型局限
- 由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理;
- 喷泉模型要求严格管理文档,使得审核的难度加大。