瀑布模型○
特点:1、阶段件具有顺序性和依赖性。2、推迟实现。3、引入基于文档的开发。
优点:强调了设计,避免了后期的混乱;因为有详细的文档,降低了维护费用。
缺点:客户在初期只能通过静态的规格说明去了解动态的软件产品;对一些要求快速开发的项目来说,产生了过多的文档;最后才进行交付,客户感觉速度慢;需求变更的维护成本很大。
适用:需求明确;架构易设计;系统的可靠性要求高;项目开发风险小。

具有子项目的瀑布模型○
和瀑布模型的比较特点:通过构架设计把系统分成多个子系统,从详细设计开始每个子系统按照自己的步调走。
和瀑布模型的比较优点:各子系统之间不需相互等待。
和瀑布模型的比较缺点:如果没有把握好子系统之间的依赖性,会产生混乱,难以集成。
和瀑布模型的比较适用:子系统间的依赖性少。

螺旋模型★
特点:每次迭代有六个步骤:1、确定目标、方案和约束条件;2、识别并解决风险;3、评价备选方案;4、开发本次迭代的可交付内容,并检查他们的正确性;5、规划下一个迭代过程;6、如果需要,开始新的迭代过程。
优点:各种风险的控制有力。
缺点:复杂、风险管理成本高。
适用:内部开发的大规模软件项目;产品开发目标不明确,各种风险很多很高。

迭代(渐进原型)模型★
特点:整个软件产品被分解为很多增量构件,开发人员逐次向客户交付这些构件。在第一次交付构件起,客户就能评价和学习软件产品。每次迭代有四个阶段:1、先启(最初概念);精化(设计和实施最初原型);构建(精化原型直到可以被接受*RUP和Steve McConnell的概念有点不同:RUP的原型可以被抛弃);产品化(完成和交付)。
优点:客户能很早对动态的软件产品提出意见;客户能够看到项目的实际进展,增加客户对项目的信心。
缺点:要求有较强的设计和实施能力,保证增加构件时不会破坏已经开发出的工作产品;难以把握迭代的次数和最终的交付期。
适用:需求不清晰,开发时间较充裕,设计能力较强或各子系统之间的耦合很低时,实现方案没有把握时。

阶段交付模型★
特点:和具有子项目的瀑布模型的区别是很像迭代(渐进原型)模型,它是逐次增量地交付产品;和迭代(渐进原型)模型的区别是它是在完整的构架设计后开始详细设计,并且它没有强调原型。
优点:和迭代(渐进原型)模型比较,它强调了构架设计,因此在集成方面的风险比迭代(渐进原型)模型低。
缺点:和迭代(渐进原型)模型比较,它弱化了了原形的概念,所以增加了实现的风险。
适用:需求比较清晰,实现比较有把握,设计能力稍不足的情况下适用。

延后实现的阶段交付模型●
特点:详细设计完成后,将系统分为了子构件,对子构件进行优先级的区分,分批实现,逐次增量地交付产品。
优点:和阶段交付模型比较,由于强调所有设计完成后才能开始实现,所以设计方面的风险能尽早排除。
缺点:和阶段交付模型比较,由于强调所有设计完成后才能开始实现,所以第一次可以交付的时间较晚。
适用:需求较清晰,设计能力不足时。