软件过程模型

是指软件生命周期所涉及的一系列相关过程,由关于软件项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、 文档、模型、编码、测试、手册等)组成。是软件整个生命周期中从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。软件过程不仅涉及工程开发,而且还涉及工程支持和工程管理。

瀑布模型

  • 上一阶段结束,下个阶段才能开始
  • 每个阶段均有里程碑和提交物
  • 上一阶段输出时是下一阶段的输入
  • 每个阶段均需V&V(验证和确认)
  • 侧重文档与产出物

适用场合

  • 软件项目较小,各模块间接口定义非常清晰
  • 需求在项目开始之前已经被全面了解,产品定义非常稳定
  • 需求在开发中不太可能发生大的改变
  • 使用的技术非常成熟,团队成员很熟悉这些技术
  • 负责各个步骤的子团队位于不同位置,难以做到频繁交流
  • 外部环境不可控因素少

增量过程模型

增量模型

  • 采用随着日程时间的进展而交错的线性序列,每个线性序列产生软件的一个可发布的增量
  • 软件被作为一系列的增量来设计、实现、集成的测试

快速应用开发RAD

  • 侧重于短开发周期的增量过程模型,通过基于构件的构建方法实现快速开发
  • 多个团队并行开发,先启动的团队提交物作为后启动团队的输入

演化过程模型

  • 循环、反复、不断调整当前系统以适应需求变化。
  • 需求得变更频繁,需求要在非常短的时间内实现,以充分满足用户需求,投入市场

快速原型法

  • 双方通过沟通,明确已知需求,并大致勾画出以后再进一步定义的东西
  • 迅速策划一个原型开发迭代并进行建模
  • 快速设计产生原型,对原型进行部署,由客户和用户进行评价
  • 原型系统不断调整以逼近用户需求

螺旋式过程模型

  • 制定计划
  • 风险分析
  • 实施工程
  • 客户评估

形式化过程模型

  • 使用严格的数学形式来刻画每一阶段的产物(需求、设计、程序、测试)
  • 应用一系列形式化方法在各阶段产物之间进行自动/半自动的转换

面向复用的软件过程

主要思想是复用

针对一个新的软件系统,不是从一无所有开始入手,而是通过使用已有软件单元来构造系统

主要过程

  • 需求分析
  • 体系结构设计
  • 构件获取
  • 构件修改与测试
  • 构件组装
  • 集成测试