●瀑布模型
是将软件生存周期中的各个活动规定为依线性顺序连接的若干个阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序;以项目阶段评审和文档控制为手段有效地对整个开发过程进行指导;
其优点是:
容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试;
其缺点是:
客户必须能够完整、正确、清晰地表达他们的需要;在开始的2~3个阶段中,很难评估真正的进度状态;当项目结束时,出现大量的集成和测试工作;直到项目结束之前,都不能演示系统的能力;需求或设计中的错误往往只有到了项目后期才能够被发现,对项目风险控制能力较弱,从而导致项目常常延期完成,开发费用超出预期。
●V模型
是瀑布模型的一个变体,描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。
其特点是:
将测试分级,并且与开发阶段对应
其优点是:
纠正了不重视测试阶段重要性的错误认识,将测试分等级,并和前面的开发阶段对应起来;
其缺点是:
仍将测试作为一个独立的阶段,并没有提高模型抵抗风险的能力;
●原型模型
开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计方式对其进行建模,并构件原型。
原型:
是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。
其优点是:
利于增加软件人员和用户对系统需求的理解;原型的最终版本可作为产品或者最终系统的一部分;
其缺点是:
文档容易被忽略;建立原型的许多工作被浪费;项目难以规划和管理。
●增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征,假设可以将需求分段为一系列增量产品,每一增量可以分别开发。
其特点:
第1个增量往往是核心产品;客户对每个增量的使用和评估,都作为下一个发布增量的新的特征和功能;增量模型强调每一个增量均发布一个可操作的产品;
其优点是:
具有瀑布模型的所有优点;第一个可交付版本所需要的成本和时间很少;每次开发增量比较小的系统,所以每次承担的风险不大;由于很快发布第一个版本,因此可以减少用户需求的变更;运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。
其缺点是:
如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
●螺旋模型
采用一种周期性的方法来进行系统开发,结合原型方法和瀑布模型;每一周期都包括制定计划、风险分析、实施工程和评审4个阶段,进行迭代
其优点是:
客户始终参与,和管理层有效地交互;强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解。
其缺点是:
需要具有相当丰富的风险评估经验,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间。
●喷泉模型
是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。软件开发过程的特点是:各个阶段是相互迭代和无间隙。
其优点是:
模型的各个阶段没有明显的界限,开发人员可以同步进行开发;是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程;
其缺点是:
由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理;此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
●统一过程(UP,UnifiedProcess)
是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。
典型代表:
RUP是由Rational公司开发并维护,和一系列软件开发工具紧密集成。RUP蕴含了大量优秀的实践方法,如:迭代式软件开发、需求管理、基于构件的架构应用、建立可视化的软件模型、软件质量验证、软件变更控制等。
在UP中过程被划分为4个阶段,初始阶段、细化阶段、构造阶段、移交阶段。
角色:
描述某个人或者一个小组的行为与职责。RUP预先定义了很多角色。
活动:
是一个有明确目的的独立工作单元。
工件:
是活动生成、创建或修改的一段信息。
●敏捷方法
敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法是用户能够在开发周期的后期增加或改变需求。