软件过程模型
软件过程模型
瀑布模型
又称为经典生命周期模型,以文档作为驱动、适合于软件需求很明确的软件项目或二次开发的模型。
优点:
- 容易理解,管理成本低。
缺点:
- 必须能够完整、正确和清晰地表达需要
- 变更需求困难
- 很难评估真正的进度
- 对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算
- 任务之间存在依赖性,开发团队的一些成员要等待另一些成员工作完成。
V模型
瀑布模型的一个变体,强调在各个阶段进行测试和验证,以提升软件质量。
优点:
- 相较于瀑布模型提升了软件质量
缺点:
- 更耗费人力和时间
增量模型
先开发出一个初始的实现,听取用户的使用意见,通过不断修改直到产生一个充分的版本
适合小型项目或需要快速上线的项目
优点:
- 可以更经济、更容易、更快速的变更
- 交付和部署更快
- 用户可以更早的使用软件并创造价值
缺点:
- 如果没有对用户的变更需求进行规划,致缺乏整体规划,导致功能堆砌
- 越往后变更越困难,成本逐渐上升
演化模型
原型模型
一个软件系统的最初版本,用于验证概念、适用设计选型、发现更多的问题和可能的解决方法。
原型是为定义需求服务的,在需求明确后,原型需要丢弃(至少部分丢弃)。
适用于需求不明确时
优点:
- 有助于启发和验证系统需求
缺点:
- 开发快没有文档,不利于维护
- 容易忽略性能、安全、可靠性等要素
螺旋模型
将过程(项目阶段)用螺旋线表示,每个螺旋线构成一个回路,每个回路由不同的风险驱动,根据这些风险,在每个阶段规划可选的策略方案。
是一种风险驱动型的过程模型
结合了原型的迭代性质和瀑布模型的系统性和可控性特点。
优点:
- 实现风险管理,降低变更风险
- 支持用户需求的动态变化
缺点:
- 需要开发人员具有相当丰富的风险评估经验和专门知识
- 过多的迭代次数会增加开发成本,延迟提交时间
喷泉模型
以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法
该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的
优点:
- 功能需求、功能模块间的关系、数据流等描述清楚
缺点:
- 开发阶段是重叠的,开发过程中需要大量的开发人员,不利于项目的管理。
- 需要严格的管理文档,使得审核的难度加大。
基于构件的开发模型
利用预先包装的构件来构造应用系统
快速开发
本质上是演化模型,需要以迭代方式构建软件
形式化方法模型
建立在严格数学基础上的一种软件开发方法,其主要活动是生成计算机软件形式化的数学规格说明。
敏捷方法
极限编程(XP)
极限是指将我们认同的有效软件开发原理和实践应用到极限,频繁地去实践
尽可能早地、持续地对有价值的软件的交付来使客户满意
使用户能够在发开周期后期改变需求
极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接
水晶法
认为每一个不同的项目都需要一套不同的策略