生存期模型主要有:瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。
1、瀑布模型(传统的软件周期模型)
瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入下一阶段,整个模型就像一个飞流直下的瀑布,如下图:
- 优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提供的文档;要求每一阶段结束后都要进行严格的评审。与她最相适应的开发方法是结构化方法。
- 缺点:不适应用户需求的变动
2、原型模型
2.1 快速原型模型
快速原型的用途是获知用户真正的需求,一旦需求确定,原型即被抛弃。主要用于需求分析阶段。不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。
- 特征:简化项目管理、尽快建立用户需求、加强用户参与和决策。
具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验与才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他能否从用户模糊描述中快速获取需求。
2.2 演化模型
在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初步模型逐步演化为最终产品的渐进过程。也就是说,快速原型是一种“抛弃式”的原型化方法,而演化模型是一种“渐进式”的原型化方法。
2.3 增量模型
增量模型主要用于设计阶段,把软件产品划分为一系列增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品,如图所示:
3、螺旋模型
螺旋模型综合了瀑布模型和原型模型中的演化模型中的优点,还增加了风险分析。螺旋线第一圈开始可能还是一个项目概念。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到生命周期结束。
4、喷泉模型
喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程中迭代和无间歇的特征。迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性是指开发活动之间不存在明显的边界,允许开发活动交叉、迭代的进行。
5、敏捷开发方法
5.1 迭代软件开发技术
统一开发流程RUP(Rational Unified Progress)是一个通用的软件流程框架,他是一个以架构为中心,用例驱动的迭代化软件开发流程,在RUP中,可以把软件开发生命周期分为四个阶段,每个阶段的结束标志就是一个重要的里程碑。
- 先启:确定项目开发的目标和范围
- 精化:确定系统架构和明确需求
- 构建:实现剩余的系统功能
- 产品化:完成软件的产品化工作,将系统移交给客户
5.2 极限编程(XP)
极限编程是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方法。xp由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生命周期。xp的核心是其总结的四大价值观:沟通、简单、反馈和勇气,它们是xp的基础,也是xp的灵魂。
5.3 敏捷建模
敏捷建模是一种轻方法论,其核心原则为:主张简单,拥抱变化。你的第二个目标是可持续性,简单的说,你在开发的时候,你要能想象到未来;递增的变化;令投资人的投资最大化;有目的的建模;多种模型;高质量的工作;快速反馈;软件是项目的主要目标;轻装前进。
AM补充原则为:内容比表示更重要;三人行必有我师;了解你的模型;了解你的工具;局部调整;开放诚实的沟通。
5.4 自适应软件开发
自适应软件开发的核心是三个非线性的、重迭的开发阶段:猜测,合作与学习。
5.5 水晶方法体系
水晶方法体系与XP一样,都有以人为中心的理念,但在实践上有所不同。水晶方法体系考虑到人们一般很难严格遵循一个纪律约束很强的过程,认为每一种不同的项目都需要一套不同的策略、约定和方法论。因此,与XP的高度纪律性不同,水晶方法体系探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。