软件过程有3层含义:
- 个体含义:软件产品或系统在生存周期中的某一类活动的集合,如软件开发过程、软件管理过程等;
- 整体含义:软件产品或系统在所有上述含义下的软件过程的总体;
- 工程含义:解决软件过程的工程,应用软件的原则、方法来构造软件过程模型,并结合软件产品的jurisdiction要求进行实例化,以及在用户环境下的运作,一次进一步提高软件的生产率,降低成本。
1.能力成熟度模型(CMM)
CMM将软件过程改进分为以下5个成熟度级别:
- 初始级(Initial)
- 软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。
- 可重复级(Repeatable)
- 建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。
- 已定义级(Defined)
- 管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。
- 已管理级(Managed)
- 制定了软件过程和产品质量的详细度量标准。软件过程的产品质量都被开发组织的成员所理解和控制。
- 优化级(Optimized)
- 加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。
2.能力成熟度模型(CMMI)
CMMI提供了两种表示方法:阶段式模型和连续式模型。
1) 阶段式模型
阶段式模型地结构类似于CMM,它关注 组织的成熟度 。CMMI-SE/SW?IPPD 1.1版中有5个人成熟度等级。
- 初始的:过程不可预测且缺乏控制。
- 已管理地:过程为项目服务。
- 已定义地:过程位组织服务。
- 定量管理地:过程已度量和控制。
- 优化的:集中于过程改进。
2) 连续十模型
连续式模型关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级(Capacity Level,CL)。CMMI中包括6个过程域能力等级,等级号为0~5。能力包括共性目标及相关的共性实践,这些实践在过程域内被添加到特定目标和实践中。当组织满足过程域的特定目标和共性目标时,就说组织达到了那个过程域的能力等级。能力等级可以独立地应用于任何单独的过程域,任何一个能力等级都必须满足比它等级低的能力等级的所有准则。
对各能力等级的含义简述如下:
- CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标。
- CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
- CL2(已管理的):其共性目标集中于已管理的过程的制度化。根据组织级政策规定剁成的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审。
- CL3(已定义级的):其共性目标集中于一定一的过程的制度化。过程是按照组织的剪裁指南从组织的标准过程集中剪裁得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进上。
- CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的定量目标作为管理准则。
- CL5(优化的):使用两户(统计学)手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效。
3.统一过程
统一过程模型是一种“用例和风险驱动,以架构为中学你,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多小的“袖珍”项目,每个“袖珍项目”都包含争产软件项目的所有元素:计划、分析和设计、构造、继承和测试,以及内部和外部发布。
统一过程定义了4个技术阶段及其制品。
1) 起始阶段(inception phase)
其实阶段专注于项目的橱窗活动,产生的主要工作产品有构想文档(vision document)、初始用例模型、初始项目术语表、初始业务用例、初始风险评估、项目计划(阶段及迭代)、业务模型以及一个或多个原型(需要时)。
2) 精华阶段(elaboration phase)
精华阶段在理解了最初的领域范围之后进行需求分析和架构演进,产生的主要工作产品有用力模型、补充需求(包括非功能需求)、分析模型、软件体系街斗描述、可执行的软件体系结构原型、初步的设计模型、修订的风险列表、项目计划(包括迭代计划、调整的工作流、里程碑和技术工作产品)以及初始用户手册。
3) 构建阶段(construction phase)
构建阶段关注系统的构建,产生实现模型,产生的主要工作产品有设计模型、软件构件、继承的软件增量、测试计划及步骤、测试用例以及支持文档(用户轴测、安装手册和对于兵法增量的描述)。
4) 移交阶段(transition phase)
移交阶段关于与软件提交方面的工作,产生软件增量,产生的主要工作产品有提交的软件增量、β测试报告和综合用户反馈。
每次迭代产生包括最终系统的部分完成的版本和任何相关的项目文档的基线,通过逐步迭代基线之间相互构建,知道完成最终系统。在每个迭代中有5个核心工作流:
- 捕获系统应该做什么的需求工作流;
- 精华和结构化需求的分析工作流;
- 在系统构架内实现需求的设计工作流;
- 构造软件的实现工作流;
- 验证实现是否如期望那样工作的测试工作流。
随着UP的的阶段进展,每个核心工作流的工作量发生了变化。4个技术阶段由主要里程碑所终止。
- 初始阶段:生命周期目标。
- 精化阶段:生命周期架构。
- 构建阶段:初始运作功能。
- 移交阶段:产品发布。
统一过程的典型代表是RUP(Rational Unified Process)。RUP是UP的商业扩展,完全兼容UP,但比UP更完整、更详细。