软件过程模型优缺点
一、瀑布模型
1、优点
1)它是一种线性的开发模型,具有不可回溯性。
2)过程模型简单,执行容易。
3)将复杂的软件开发过程明确分解为几个顺序的步骤,降低开发软件的复杂性。
2、缺点
1)无法适应变更,由于开发模型是线性的用户只有等到整个过程的末期才能见到开发成果,从而卡增加了开发的风险。
2)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重后果。
二、快速原型模型
1、优点
1)可以得到比较良好的需求定义,容易适应需求的变化。
2)开发人员和用户在“原型”上达成一致。
可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。
3)缩短了开发周期,加快了工程进度,降低成本。
2、缺点
1)不宜利用原型系统作为最终产品。
采用原型模型开发系统,用户和开发者必须达成一致。
2)不利于开发人员的创新。
三、增量模型
1、优点
1)将待开发的软件系统模块化。
可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
2)以组件为单位进行开发降低了软件开发的风险。
一个开发周期内的错误不会影响到这个软件系统。
3)开发顺序灵活。
开发人员可以对构件的实现顺序进行优先级排序,先完成需求稳定的核心组件。
当组件的优先级发生变化时。
还能及时第实现顺序进行调整。
2、缺点
1)要求待开发的软件系统可以被模块化。
如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。
四、螺旋模型
1、优点
1)将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
2、缺点
1)模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。
2)过多的迭代次数会增加开发成本,延迟提交时间。
五、喷泉模型
1、优点
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。
该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。
其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
2、缺点
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。
此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
六、基于组件的开发模型
1、优点
1)用现有的组件和系统框架进行产品开发,可靠性相对新研发组件高。
2)开发简单,降低了开发成本和风险。
2、缺点
任何基于组件技术的系统,在开发前期都会面临一定的风险。
对于组件式软件开发而言.对象技术不是必需的,但是又不能完全脱离对象技术,而且组件技术还离不开体系结构,大多数组件技术对于组件都有一定的限制。
七、统一软件开发过程模型
1、优点
1)有利于更好地理解需求、设计出合理的系统架构,并最终交付一系列渐趋完善的成功。
2)每个阶段结束时都要进行阶段评估,这样可以及早发现软件中的缺陷。
2、缺点
1)对开发人员的素质要求较高。
2)过高的时间和成本,强调文档写作而不是软件开发。
八、敏捷模型
1、优点
1)敏捷确实是项目进入实质开发迭代阶段,用户很快可以看到一个基线架构版的产品。
2)注重市场快速反应能力,也即具体应对能力,客户前期满意度高。
2、缺点
1)注重人员的沟通,忽略文档的重要性,若项目人员流动大太,会给维护带来不少难度。
2)不适用于大型项目和大型项目组。
具体案例分析:
1、已被广泛使用的某个产品,要开发新版本,包含了一组新功能,技术含量很高,规定了紧迫的最后期限并已对外公开:
由于该项目是要发布新版本,所以可以使用面向复用的软件过程。
又由于需求明确而固定不变且时间紧迫,所以可以使用敏捷过程。