瀑布模型
瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
组成:包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。
优点:可强迫开发人员采用规范的方法;严格规定了各阶段必须提交的文档;要求每个阶段结束后,都要进行严格的评审。
缺点:过于理想化,缺乏灵活性,无法解决软件需求不明确或不准确地问题。
适用于:需求明确的项目
原型法
原型法的最大特点就是采用了一种动态定义需求的方法。这样,优势也就体现出来了,即不需要有明确的需求。
适用于:需求不够明确的项目
快速原型模型
快速原型是指快速建立起来的可以在计算机上运行的程序,或仅仅是一个演示界面。
是一种“抛弃式”的原型化方法。
演化模型
获取一组需求后,通过快速分析构造出该软件的一个初始可运行版本(即原型),然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进。
是一种“渐进式”的原型化方法。
增量模型
把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。
是一种“增量式”的原型化方法。
螺旋模型
螺旋模型综合了瀑布模型和演化模型的优点,增加了风险分析。
适用于:复杂的大型软件。
喷泉模型
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型。主要用于描述面向对象的开发过程。
适用于:面向对象的开发方法。
优点:开发过程具有迭代性和无间隙性。
各种模型的比较
每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点。下表列出了几种常见模型的优缺点。
模型 | 优点 | 缺点 |
瀑布模型 | 文档驱动 | 系统可能不满足客户的需求 |
快速原型模型 | 关注满足客户需求 | 可能导致系统设计差、效率低,难于维护 |
演化模型 | 有助于早期建立产品开发的配置管理 | 不加控制地让用户接触开发中尚未测试稳定的功能,可能对开发人员及用户都产生负面的影响 |
增量模型 | 开发早期反馈及时,易于维护 | 需要开放式体系结构,可能会设计差、效率低 |
螺旋模型 | 风险驱动 | 风险分析人员需要有经验且经过充分训练 |
喷泉模型 | 开发过程具有迭代性和无间隙性 | 不利于项目的管理. |