软件生命周期模型:
软件需求工程
软件设计
- 软件体系结构设计
- 软件详细设计
- 人机交互设计
软件实现/构造
软件测试
软件交付
软件维护
软件过程模型:
- 对软件生命周期模型的进一步详细说明,对各个阶段的任务对象做进一步说明
- 同一软件生命周期模型中可能存在不同的软件过程模型(软件生命周期模型只是界定了软件开发不同阶段之间的顺序)
构件修复模型:
含义:
- 开发人员根据个人的分析和理解直接构造软件的第一个版本,交付给用户
- 不断修复用户在使用过程中发现的缺陷,直到修复所有缺陷
- 进入维护阶段
缺点:
- 随着复杂度提升,开发活动会无法有效进行
- 没有分析需求的真实性
- 质量低
- 可维护性低
适用场景:
- 软件规模小
- 软件质量要求低
- 软件后期的维护要求也低
瀑布模型:
含义:
- 按软件生命周期模型将软件开发组织成绣球开发,软件设计,软件实现,软件测试,软件交付,软件维护等活动,并规定了它们自上而下,相互衔接的开发活动次序(前一个环节的结果作为下一个环节的输入)
- 允许出现反复和迭代,严格的线性不是瀑布模型的主要特点
缺点:
- 对文档期望过高
- 对开发活动是线性假设
- 客户参与度不够
- 里程碑粒度过粗
适用范围:
- 复杂度适中
- 需求非常成熟
- 所需技术非常成熟
增量迭代模型:
含义:
- 在项目的早期界定项目的目标和范围
- 将后续开发活动组织为多个迭代,并行的瀑布式开发活动
优点:
- 并行缩短了开发时间
- 渐进交互加强了用户反馈,风险降低
- 适用性好
缺点:
- 需要完整清晰的项目前景和范围
- 迭代的构件不能破坏已经构造好的系统,需要软件系统是一个开放式的体系结构
适用范围:
- 成熟稳定领域的大规模软件系统开发
演化模型(需求驱动):
含义:
- 早期明确系统的核心需求,建立并交付核心系统
- 根据用户反馈并行迭代的组织瀑布式开发活动进行精化,增强系统
优点:
- 适用性好
- 并行开发缩短了开发时间
- 渐进交互加强了用户反馈,风险降低
缺点:
- 项目范围等计划无法在早期确定
- 后期容易蜕变为构件修复模型
适用范围:
- 不成熟不稳定领域的大规模软件系统开发
原型模型:
含义:
在真正的产品构造前,向用户提供不完整的系统原型用于解决需求不确定问题
- 抛弃式原型:原型不会出现在产品中
- 演化式原型:原型会成为产品的一部分
采用逐步求精的思想安排后续的开发活动
优点:
- 渐进交互加强了用户反馈
- 适用于新颖领域
缺点:
- 开发成本高
- 舍不得原型,导致低质量
适用范围:
- 存在大量不确定性的新颖领域
螺旋模型:
含义:
- 按照风险解决的方式来组织软件开发活动
优点:
- 降低风险
缺点:
- 开发成本高
- 舍不得丢弃原型,导致产品质量低
- 模型过于复杂,不利于管理
适用范围:
- 高风险的大规模软件系统
RUP(统一过程的软件生命周期——4个阶段):
阶段:
- 初始阶段:定义项目前景和范围
- 细化阶段:设计软件体系结构,构建核心体系结构原型
- 构造阶段:软件详细设计与实现
- 交付阶段:产品交付给用户
注:
RUP可以是风险驱动,也可以是需求驱动。
优点:
- 大小项目皆可
- 有软件工程工具支持
- 合理有效
缺点:
- 没有考虑软件维护问题
- RUP的裁剪配置工作较难