瀑布模型:
开发顺序:可行性分析、需求分析、概要设计、详细设计、编码、测试、维护
特点:开发各个阶段比较清晰,上一项开发活动的输出是这一次开发活动的输入,阶段间具有顺序性和依赖性,开发活动不可逆转,不适应需求的变化,需要文档较多,惧怕需求变更
快速原型模型:
首先构造\参照一个原型,在该原型的基础上,逐渐完成整个系统的开发
loop:
快速分析 --> 需求说明 --> 构造原型 --> 运行原型 --> 用户评价修改
适合小型、灵活性高的系统,前提是有一个展示性的产品原型,可能限制创新
螺旋模型:
将开发过程分为几个螺旋周期
制定计划 --> 风险分析 --> 开发 --> 客户评估
螺旋模型是一种风险驱动的方法体系,需要有丰富的风险评估经验,多次迭代会增加开发成本
敏捷开发:
敏捷开发以用户需求为核心
项目被划分为多个子项目
功能模块增量交付,快速迭代
很短时间做出核心功能,之后快速迭代、逐步完善
增量模型
把软件看做一系列相互联系的增量,在开发过程各次迭代中,每次完成其中的一个增量,每个模块都是完整可用的

优点:较短时间能向用户提供部分完工的产品,可以分批次提交软件
缺点:灵活性大于瀑布模型,但容易退化为边做边改模型
软件测试
黑盒测试方法
- 等价类划分
- 边界值分析
- 错误猜测
- 判定表法
- 因果图
白盒测试方法
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 组合覆盖
- 路径覆盖