目录
1、瀑布模型(文档驱动)(带反馈环)
2、快速原型模型(不带反馈环)
3、增量模型
4、螺旋模型(风险驱动)
5、喷泉模型
6、统一过程(用例驱动)
7、基于构件的开发模型
8、敏捷过程
软件是计算机系统中与硬件相互依存的另一个部分,包括程序、数据、及其相关文档的完整集合。
其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能够正确地处理信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。
软件生存期模型也被称为软件过程模型,是从软件项目需求定义直至软件运行维护为止,跨越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架。
特点:
1)阶段间具有顺序性和依赖性
必须等前一阶段的工作完成之后,才能开启后一阶段的工作。
前一阶段的输出文档就是后一阶段的输入文档。
2)推迟实现的观点
瀑布模型在编码之前设置了系统分析和系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要要的指导思想
3)质量保证的观点
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误
瀑布模型的优点
可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交出的所有产品都必须是经过验证的。
瀑布模型的缺点
由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
瀑布模型只适用于项目开始时需求已确定的情况
适用情况
开始时需求已确定
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品功能的一个子集。
快速原型模型的优点:
有助于满足用户的真实需求。
原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。
软件产品的开发基本上是按线性顺序进行。
原型的用途是获知用户的真正需求,一旦需求确定了,原型可以抛弃,当然也可以在原型的基础上进行开发。
区别:与瀑布模型的主要区别是:获取用户的需求方法不同
适用情况:
1、需求在开发前不清晰
2、需求减少,项目需求的不确定性带来的风险
3、研发新产品
增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。
增量模型的优点
(1)能在较短时间内向用户提交可完成一些有用的工作产品,即从第1个构件交付之日起,用户就能做一些有用的工作。
(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。
(3)项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。
(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试
缺点:可能不能集成到一起的风险
适用情况:
1、软件产品可以分批次地进行交付
2、待开发的软件系统能够模块化
3、软件开发人员对应用领域不熟悉,难以一次性的进行系统开发
4、项目管理人员把握全局的水平较高
螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险
螺旋模型的优点(风险驱动)(包含瀑布模型和原型模型)
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
减少了过多测试或测试不足所带来的风险。
在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别
螺旋模型的缺点
螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识
适用情况:
1、特别适用于庞大、复杂并具有高风险的系统。
2、适用于内部开发的大规模软件项目
喷泉模型是典型的面向对象生命周期模型。
“喷泉”一词体现了迭代和无间隙特性。
统一过程是UML进行面向对象软件工程的框架
RUP是一种迭代的以构架为中心的用例驱动的软件开发方法
(1)统一过程的核心过程工作流
6个核心工作流:即业务建模、需求、分析与设计、实现、测试、部署
3个核心支持工作流:即配置与变更管理、项目管理、环境
四个阶段:初始阶段、细化阶段、构造阶段、移交阶段
基于构件的软件工程(CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统的过程。
步骤:
(1)对于该问题领域的基于构件的可用产品进行研究和评估。
(2)考虑构件集成的问题。
(3)设计软件架构以容纳这些构件。
(4)将构件集成到架构中。
(5)进行充分的测试以保证功能正常。
宣言:
个体和交互胜过过程和工具
可工作软件胜过宽泛的文档
客户合作胜过合同谈判
响应变化胜过遵循计划。
适合以下特征的软件开发项目:
(1)提前预测哪些需求是稳定的、哪些需求会变化非常困难。
(2) 对很多软件,设计和构建是交错进行的。
(3) 从制订计划的角度来看,分析、设计、构建和测试并不像我们所设想的那么容易预测。
极限编程:(XP)
极限编程(XP)是使用最广泛的敏捷过程。XP使用面向对象方法作为推荐的开发范型,包含了策划(需求获取)、设计(简洁)、编码(单元测试)和测试(客户测试)4个框架活动的规则和实践。
其他的敏捷过程模型:自适应软件开发(ASD)、Scrum、敏捷建模(AM)、敏捷统一过程(AUP)