-
瀑布模型
-
特点:
-
开发阶段严格按照线性方式进行
-
阶段间有因果关系
-
每个阶段需评审确认
-
允许反馈
-
强调文档
-
-
适用场所:需求易于完善定义的软件
-
缺点:
-
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
-
开发过程中很难响应客户的变更要求
-
早期的错误可能要等到开发后期的测试阶段才能发现,进而带来 严重的后果
-
-
-
快速原型模型
-
优点:
-
加强用户和软件人员之间的沟通,明确系统的需求
-
尽早得到系统可用性的反馈信息,及时修改以获得完整、正确需求
-
-
缺点:
-
用户会由于看到的原型系统不完善,而对产品产生怀疑
-
可能为了快速开发原型系统,而采用未经充分论证的技术(如操作系统平台、主要的算法)导致质量低下
-
-
-
增量模型
-
优点:
-
整个产品被分解成若干个构件逐步交付,用户可以不断地看到所开发软件的可运行中间版本
-
将早期增量作为原型有助于明确后期增量的需求
-
降低开发风险
-
重要功能被首先交付,从而使其得到最多的测试
-
-
缺点:
-
需要软件具备开放式的体系结构,以便各个构件逐步进入
-
需求难以在增量实现之前详细定义,因此增量与需求的准确映射以及所有增量的有效集成可能会比较困难,容易退化为边做边改方式,使软件过程的控制失去整体性
-
-
-
螺旋模型
-
优点:(风险驱动)
-
关注软件的重用
-
关注早期错误的消除
-
将质量目标放在首位
-
将开发阶段与维护阶段结合在一起
-
-
缺点:
-
需要风险评估的经验
-
只适应内部大规模软件开发
-
-
-
形式化方法模型
-
优点:
-
由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性
-
-
缺点:
-
开发人员需要具备一定技能并经过特殊训练
-
形式化描述和转换是一项费时费力的工作,成本高,质量不一定高
-
现实应用的系统大多数是交互性强的软件,但是这些系统难以用形式化方法进行描述
-
-
-
基于组件的开发模型
-
优点:
-
充分体现软件复用的思想
-
实现快速交付软件
-
利用开源组件与软件
-
-
缺点:
-
商业组件的修改受到限制,影响系统的演化
-
-