最近学习软件工程,发现项目开发中最经常用的开发模型还是:
瀑布模型(Waterfall Model)
可行性研究与计划 |
需求分析 |
设计 |
编码 |
运行维护 |
测试 |
测试已经开始 |
返回上级,再….. |
l 所有过程模型的鼻祖。---- Royce,1970
l 瀑布模型把软件开发过程划分成若干阶段,每个阶段的任务相对独立,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度。在软件生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行严格的审查,经确认之后才开始下一阶段的工作。---- 项目是按照一定的顺序执行。
l 瀑布模型是文档驱动的,各个阶段不连续也不交叉。
特点:
l 阶段间具有顺序性和依赖性。
l 推迟程序的物理实现。
l 质量保证:每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
l 易于组织,易于管理:因为你可以预先完成所有计划。
l 是一种严格线性的、按阶段顺序的、逐步细化的过程模型(开发模式)
适用场合:
l 当有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适。
l 当你对一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,瀑布模型也特别合适。
l 对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。
l 在质量需求高于成本需求和进度需求的时候,它尤为出色。
l 当开发队伍的技术力量比较弱或者缺乏经验时,瀑布模型更为适合。
缺陷:
l 在项目开始的时候,用户常常难以清楚地给出所有需求;用户与开发人员对需求理解存在差异。
l 实际的项目很少按照顺序模型进行。
l 缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是非常困难的,导致“阻塞状态”。反馈信息慢,开发周期长。
l 虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的”,但是在需求被很好地理解的情况下,仍然是一种合理的方法。