一.软件生存周期过程的概念
- 软件过程:开发逻辑时获取正确软件的关键
- 开发所涉及的活动—软件生存周期过程
二.软件生存周期
- 软件生存周期:软件产品或系统的一系列活动的全周期。从形成概念开始,历经开发、交付使用、在使用中不断修订和演化,直到最后被淘汰
- 软件生存周期过程:
- 软件生存周期中的一系列相关过程
- 为了表述软件开发需要做什么,引入了以下三个概念:过程是活动的集合,活动是任务的集合,任务是把输入转换为输出的操作
- ISO/IEC系统地给出了软件开发所需的任务
三.软件生存周期过程的分类
- 过程分类
- 基本过程:是指那些与软件生存直接相关的活动集
- 支持过程:按照有关各方按其目标所从事的一系列支持活动集
- 组织过程:是指那些与软件生存组织有关的活动集
- 基本过程
- 获取过程、供应过程、开发过程、运行过程、维护过程
- 支持过程
- 文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程、问题解决过程
- 组织过程
- 管理过程、基础设施过程、改进过程、人力资源过程、资产管理过程、复用程序管理过程、领域软件工程过程
- 各类过程之间的关系
- 组织过程和支持过程为基本过程所提供支持
四.软件生存周期模型(软件开发模型)
- 定义:一个包含软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。
五.常见的软件生存周期模型
- 瀑布模型
- 瀑布模型将软件生存周期的各项活动规定为固定顺序而连接的若干阶段工作
- 瀑布模型规定了每一个阶段的输入,以及本阶段工作成果,作为输出传入下一阶段
- 项目的开发依次经过:需求、设计、编码和单元测试、集成以及维护
- 通过每一阶段,提交以下产品:软件需求规约、设计文档、实际代码、测试用例、最终产品等
- “反向”步骤流表示对前一个可提交产品的重复变更(又称为“返工”)
- 优点
- 在决定系统怎么做之前,存在一个需求阶段,鼓励对系统“做什么”进行规约(在设计之前规约)
- 在建造构件之前,存在一个设计阶段,鼓励规划系统结构(即编码之前的设计)
- 在每一阶段结束时进行复审,允许获取方和用户的参与
- 前一步工作产品可作为下一步被认可的、文档化的基线,允许基线和配置早期接受控制
- 不足
- 客户必须能够完整、正确和清晰地表达他们的需求
- 缺乏灵活性
- 在一个项目的早期阶段,过分地强调了基线和里程碑的文档,可能要花费更多的时间,用于建立一些用处不大的文档
- 直到项目结束之前,都不能演示系统的能力,增加了项目的风险
- 增量模型
- 该模型有一个假设,即需求可以分段,成为一系列增量产品,每一增量可以分别地开发
- 优点
- 具有瀑布模型的所有优点
- 第一个可交付版本所需要的成本和时间是很少的
- 开发由增量表示的小系统所承担的风险是不大的
- 由于很快发布了第一个版本,因此可以减少用户需求的变更
- 允许增量投资,即在项目开始时,可以仅对一个或两个增量投资
- 缺点
- 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定
- 如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布
- 管理发生的成本、进度和配置的复杂性,可能会超出一些组织的能力
- 演化模型
- 定义:是一种有弹性的过程模式,由一些小的开发步组成,每一步历经需求分析、设计、实现和验证,产生软件产品的一个增量。通过这些迭代,完成最终软件产品的开发
- 针对
- 事先不能完整地定义需求的软件开发
- 用户的核心需求,开发核心系统
- 根据用户的反馈,实施活动的迭代
- 喷泉模型
- 特征:迭代、无缝