- 描述了开发的主要阶段
- 定义了每一个阶段要完成的主要过程和活动
- 规范了每一个阶段的输入和输出(提交物)
- 提供了一个框架,可以把必要的活动映射到该框架中
- 最适用于很小且简单的项目
- 成本可能很低
- 易于使用,人员只需要很少的专业知识,任何写过程序的人都可以使用
- 对于一些非常小的、开发完后就会很快丢弃的软件可以采用
- 对于规模稍大的项目,采用这种模型是很危险的。由于缺乏预先的计划并且通常伴随着不正规的开发方式,容易导致代码碎片,交付的产品重量也很难保证。且因为设计没有很好地文档化,因此代码维护困难。
- 每一阶段都以验证/确认活动作为结束,其目的是尽可能多地消除本阶段产品中存在的问题。
- 在随后的阶段里,尽可能对前面阶段的产品进行迭代。
- 容易理解、管理成本低。
- 它不提供有形的软件成果,除非到生存周期结束时。但文档产生并提供了贯穿生命期的进展过程的充分说明。允许基线和配置早期接受控制。前一步作为下一步被认可的、文档化的基线。
- 客户必须能够完整、正确和清晰地表达其需要。但在系统开发中经常发现用户与开发人员沟通存在巨大差异、用户提出含糊需求又被开发人员随意解释,以及用户需求会随着时间推移不断变化等问题。
- 可能要花费更多的时间来建立一些用处不大的文档。
- 在开始的两个或者三个阶段,很难评估真正的进度状态。
- 在一个项目的早期阶段,过分强调了基线和里程碑处的文档。
- 开发人员一开始就必须理解其应用。
- 当接近项目结束时,出现了大量的集成和测试工作。
- 直到项目结束之前,都不能演示系统的能力。
- 第一个可交付版本所需要的成本和时间是很少的。
- 开发由增量表示的小系统所承担的风险是不大的。
- 由于很快发布了第一个版本,因此可以减少用户需求的变更。
- 允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。
- 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定。
- 如果需求不像早起考虑到的那样稳定和完整,那么一些增量就可能需要重新开发、重新发布。
- 管理发生的成本、进度和配置的复杂性,可能会超出组织的能力。
- 在需求不能予以规范时,可以使用这一演化模型。
- 用户可以通过运行系统的实践,对需求进行改进。
- 与瀑布模型相比,需要更多用户/获取方的参与。
- 演化模型的使用仍然处于初步探索阶段,因此具有较大的风险,需要有效的管理。
- 该方法的使用很容易成为不编写需求或设计文档的接口,即使需求或实际可以很清晰的描述。
- 用户/获取方不理解方法的自然属性,因此当结果不够理想时,可能产生抱怨。
- 开发需求,具备完备功能的、可交付的、可支持的增量的实现就是基于这些需求。包括功能需求和界面需求。
- 用于为一个项目或一个项目的某些部分确定技术、成本和进度可行性。
- 市场和成本的竞争压力
- 交付环境的日趋复杂和标准化
- 产品线工程的出现,其中,应系统地规划和执行多个相关软件产品的开发和演化,在产品线的所有成员中复用部分设计和实现。
- 迭代化开发,提前认知风险
- 需求管理,及早达成共识
- 基于构件,搭建弹性构架
- 可视化建模,打破沟通壁垒
- 持续验证质量,降低缺陷代价
- 管理变更,有序积累资产
- 初始阶段:活动主要集中在需求工作中,有不少部分工作延续到分析与设计工作流。该阶段的工作几乎不涉及实现和测试工作流。
- 细化阶段:构造构架基线,确定生存周期构架里程碑。
- 构造阶段:行程系统的初步可运行能力,确定在用户环境中初步运行的软件产品,即最初操作性能里程碑。
- 移交阶段:完成产品发布,即产品发布里程碑。该阶段工作流的混合成都依赖于验收测试或β测试的反馈。
- 管理工作流:控制过程并保证获得所有项目相关人员的取胜条件。
- 环境工作流:自动化过程并进化维护环境。
- 配置与变更工作流:自动化过程并进化维护环境。
- 业务与需求工作流:分析问题空间并进化需求制品。
- 设计工作流:解决方案建模并进化构建和设计制品。
- 实现工作流:构建编程并进化实现和实施制品。
- 测试与评估工作流:评估过程和产品质量的趋势。
- 部署工作流:将最终产品移交给客户。
- 一个对于全部重要工作的描绘
- 一个用于分配职责的清晰的任务分解
- 一个用于进度安排、预算和开支跟踪的框架
- 它们过早地围绕产品设计进行了结构化
- 它们过早地在过于详细或过于简单的细节上进行了分解、计划和预算
- 它们是针对具体目的,项目间横向的比较通常很难或者根本不可能
- 第1级WBS的元素是工作流(管理、环境、需求、设计、实现、评估和实施)
- 第2级是为生存周期的阶段而定义的(初始、细化、构造和移交)
- 第3级元素是为生产各阶段制品的活动而定义的。
- 规模。更大型的项目需要更多层次和子结构。
- 组织结构。包含子承包商或跨多个组织实体的项目可能会引进对不同工作分解结构的分配限制。
- 定制开发程度。
- 业务环境。
- 经验。
- 软件开发初期遇到的主要问题是技术问题,因此编码修正模型、瀑布模型、增量模型主要规避的风险是技术风险。
- 为了规避需求风险出现了演化模型,对风险范围的不断扩充衍生了螺旋模型。
- 统一过程模型很好地总结了传统生存周期模型的优势与问题,集结了软件工程实践中的最佳经验,提出了自己的过程模型框架。
- MSF模型对产品级开发活动的组织提供了一种值得借鉴的思路。