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