- 瀑布模型:适合二次开发和明确需求的开发,顺序:计划、需求分析、设计、编程、测试、维护;它的变体是V模型,等于每阶段加上测试计划;
- 增量模型:适合产品按照分批完成,第一批一般是核心功能,而且发布快,每增量一次走一次顺序;
- 原型模型:适合不明确的需求,从客户模糊的描述得到真实的需求,之后被抛弃;
- 演化模型:同样适合不明确的需求,但不同是从描述得到真实的需求,不会抛弃,逐步演变成最终软件产品;
- 螺旋模型:适合大型项目;结合瀑布和演化优点,顺序:计划、风险分析、实施工程、客户评估,作为一个螺旋,再若干迭代;
- 喷泉模型:适合面向对象的项目,以用户需求为动力,以对象作为驱动的模型,开发具有迭代性和无间隙性(分析设计编码边界不会很明显);
- V模型:适合传统信息系统的项目:开发中有很多测试级别;
- 需求分析时,写验收测试和系统测试
- 概要设计时,写集成测试的测试计划
- 详细设计时,写单位测试的测试计划
- 快速应用开发(RAD):适合系统模块化较多的项目,不适合技术风险高的项目
- 迭代模型:需求确实不明确,经常更换的。
- 基于构件模型:
- 螺旋的特点,演化的本质,不同是以预先构件,打包好软件;
- 有领域工程,应用系统工程,其一目的是可复用构件性,领域体系结构;其二目的是使用构件组装系统
- 统一工程
- 以用例和风险驱动,以架构为中心,迭代并增量,由多个小项目组成;
- 有4个阶段:起始阶段(生命周期目标)、精化阶段(生命周期架构)、构建阶段(初始运行功能)、移交阶段(交付客户)。
- 敏捷方法
- 由极限编程、水晶法、并列争求法、自适应软件开发、敏捷统一过程
- 极限编程4个价值观:沟通、简单性、反馈、勇气,5个原则:快速反馈、简单性假设、逐步修改、更改和优质工作,12个最佳实践(计划,小型发布,隐喻,简单设计,重构,结队编程。。。。)
- 水晶法每个软件都需要不同的策略,约定,方法
- 并列争求法,用30天做一次冲刺的迭代方法,按优先级实现产品
- 自适应软件开发,6个原则。一个使命;特征是客户价值的关键;“重做”与“做”同样关键;变化不被是为改正,是实际情况的调整;确定交付时间使开发者考虑到关键需求;风险页包含再其中
- 敏捷统一过程:采用“大型上连续”,“小型上迭代”,统一工程的4个阶段
- McCabe算法公式:V(G)=E-N+2 (E是线数量,N是结点数量)