主要的开发模型有瀑布模型、增量模型、螺旋模型、喷泉模型、智能模型、V模型、快速应用开发模型、构件组装模型、敏捷方法和统一过程等。
瀑布模型也称生命周期模型,是结构化方法中最常用的开发模型。
它把软件开发过程分为软件计划、需求分析、软件设计、编码实现、软件测试和运行维护六个阶段。 自上而下,相互衔接。
瀑布模型适合于需求明确或很少变更的项目。
优缺点:
优点:有利于大型软件开发过程中人员的组织和管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。
缺点:由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。风险增加;前期错误扩散到后期,导致项目开发失败;完全确定需求比较困难。
(1)演化模型
变换模型,在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本,重复这一过程,直到演化成最终的软件产品。
(2)螺旋模型:增加了风险分析
将瀑布模型和变换模型相结合,综合楼两者的优点,并增加了风险分析。
(3)喷泉模型:面向对象的开发方法
为软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。迭代、无间隙特性。
(4)智能模型
是基于知识的软件开发模型,它综合楼上述若干模型,并与专家系统结合在一起。 该模型应用基于规则的系统,采用规约和推理机制。
(5)增量模型:每个增量发布一个可操作的产品
融合了瀑布模型的基本成分(重复的应用)和原型实现的迭代特征。
增量模型强调每一个增量均发布一个可操作的作品,这是与原型实现最大的不同。
增量模型采用的将功能细化、分别开发的方法适用于需求经常改变的软件开发过程。
(6)迭代模型
迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。
迭代模型适用于项目事先不能完整定义产品所有需求、计划多期开发的软件开发。
在现代的开发方法中,例如XP,RUP等,无一例外地都推荐、主张采用能显著减少风险的迭代模型。
(7)构件组装模型
基于构件的软件开发(Component Based Software Development,CBSD)模型是利用模块化方法,将整个系统模块化,并在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。
CBSD模型融合了螺旋模型的许多特征,本质上是演化型的,开发过程是迭代的。
螺旋模型:增加了风险分析;喷泉模型面向对象的开发方法;增量模型与瀑布模型和原型法最大的不同在于,每一次增量的发布是一个可操作的产品。迭代模型适合于需求不完全确定的,计划多期开发的软件开发。构件组装模型利用模块化的方法,复用构件。
以测试为中心的开发模型。
需求分析(验收测试)--概要设计(系统测试)--详细设计(集成测试)--编码(单元测试)
快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短的开发周期。
RAD是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。
RAD模型的活动期:业务建模、数据建模、过程建模、应用程序生成、测试与交付。
与瀑布模型相比,RAD采用基于构件的开发方法,复用已有的程序结构或使用可复用构件,或者创建可复用的构件。在所有情况下,均使用自动化工具辅助进行软件开发。
RAD模型通过大量使用可复用构件加快了开发速度,对信息系统的开发特别有效。
缺陷:并非所有应用都适合RAD.RAD模型对模块化要求比较高;开发者和客户必须在很短的时间完成一系列的需求分析;RAD只能用于信息系统开发,不适合技术风险很高的情况。
敏捷软件开发简称敏捷开发。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重人的作用。
原则:
从开发者的角度,主要的关注点有短平快会议(Stand Up)、小版本发布(Frequent Release)、较少的文档(Minimal Documentation)、合作为重(Collaborative Focus)、客户直接参与(Customer Engagement)、自动化测试(Automated Testing)、适应性计划调整(Adaptive Planning)和结对编程(Pair Programming);
从管理者的角度,主要的关注点有测试驱动开发(Test-Driven Development)、持续集成(Continuous Integration)和重构(Refactoring)。
XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学且充满乐趣的软件开发方法,适用于小型或中型软件开发团队,并且客户的需求模糊或需求多变。
统一过程(Unified Process,UP)是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。
UP是基于构件的,在为软件系统建模时,UP使用的是UML。
与其他软件过程相比,UP具有三个显著特点:用例驱动、以基本架构为中心、迭代和增量。
UP中的软件过程分解为4个顺序的阶段:初始阶段、细化阶段、构件阶段和交付阶段。每个阶段后都有评审。
UP的工作流程分为两个部分,即核心工作流程与核心支持工作流程。