瀑布模型
自上而下完成,软件开发进行到下一阶段之前彻底完成上一个阶段。
遵循以下顺序:
- 需求分析和规范
- 架构设计
- 实现和综合
- 验证
- 操作和维护
瀑布模型适合开发需求特别明确的任务,缺点是一旦需求发生变化,瀑布模型就会陷入困境。
螺旋模型
螺旋模型是瀑布模型加上原型发展而来,主要思路是遍历下面四个阶段,每次产生都新模型都是从之前到版本提炼出来。
- 第一阶段:确定本次迭代的目标和约束
- 第二阶段:评估各种备选方案并确认,化解风险
- 第三阶段:开发和验证本次迭代原型
- 第四阶段:计划下一次迭代
敏捷开发
螺旋和瀑布仍然不是最好的软件开发方法,2001年2月的敏捷宣言算得上软件工程的”改革里程碑”,核心价值观:
- 个体和互动高于流程和工具
- 工作的软件高于详尽的文档
- 客户合作高于合作谈判
- 相应变化高于遵循计划
敏捷开发在与客户合作的过程中,再项目原型里不断为客户增加新的功能,直到客户满意为止,允许客户在项目开发时改变他们想要的功能。敏捷开发的生命周期比较短,在不断和客户沟通的过程中迭代。
谬论:敏捷生命周期对软件开发来说是最好的。
敏捷很适合开发某些类型的软件,特别是saas应用,但并非对所有的软件来说都是最好的。例如,敏捷不适用于事关安全性的应用。