软件开发模型是软件开发全过程、软件开发活动以及他们之间关系的结构框架。它是一种策略,这种策略是由软件工程师在具体的实践工程活动当中设计并提炼出来,能够覆盖软件生命周期的基本阶段,确定设计的方法、过程及工具。
软件开发模型也成软件生命周期模型(Life Cycle Model),典型的软件开发模型有:大爆炸模型、边写边改模型、瀑布模型、快速原型模型、螺旋模型、敏捷开发模型。以下简单介绍几种:
(1)瀑布模型(Waterfall Model)
瀑布模型的软件开发过程与软件生命周期是一致的并且它是由文档驱动,两相邻阶段之间存在因果关系,需要对阶段性的产品进行审批。瀑布模型假定用户的需求是不变的,因此缺乏灵活性。
(2).快速原型模型(Rapid Prototype)
快速原型模型在功能上等价于产品的一个子集。根据客户的需要在很短的时间内解决用户最迫切的需要,此时只是部分功能的实现,快速原型模型最重要的目的是确定用户真正的需求并支持需求的动态变化。一般不会单独使用,而和瀑布模型或螺旋模型一起使用。
(3).螺旋模型
螺旋模型是瀑布模型和快速原型模型的有机结合,它是由风险驱动的,它强调了其他模型所忽略的风险分析,适合较大的系统,但是缺乏对风险的评估。
(4).迭代模型
迭代模型是统一软件开发过程(RUP,Rational Unified Process)推荐的软件开发模型。迭代模型指在进行较大规模的项目任务时,将迭代开发分为若干次,每次迭代都要从项目的管理及计划、分析、设计、实现到运作整个过程。如图,纵向就是每次迭代,而横向就是每次迭代要经过的阶段。
(5).敏捷开发模型
敏捷开发模型是一种以人为核心、迭代、循序渐进的开发框架。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。
在上文介绍的瀑布模型、快速原型模型、螺旋模型、迭代模型等软件开发模型中可以看出,在软件工程实际运用中,只采用单一一种模型显然不能适应项目负责的需求变化,采用各种模型组合开发的形式在实际运用中较为广泛,而敏捷开发模型是多种软件开发项目管理方法的集合,其中包括了极限编程(XP)、迭代增量化模式(Scrum)等十几种软件开发模型。