1.软件过程定义
本主题涉及软件过程、软件过程管理和软件过程基础设施的定义。
如上所述,软件过程是将输入工作产品转换为输出工作产品的一组相互关联的活动和任务。软件过程的描述至少包括所需的输入、转换工作活动和生成的输出。如图8.2所示,软件过程还可以包括其进入和退出标准,并将工作活动分解为任务,这些任务是受管理责任约束的最小工作单元。过程输入可以是触发事件,也可以是另一个过程的输出。在流程开始之前,应满足进入标准。在一个过程成功结束之前,应满足所有规定的条件,包括输出工作产品或工作产品的验收标准。
在表8.1中,级别0表示软件过程未完全执行或可能未执行。在1级,软件过程正在执行(能力评级),或者成熟度1级组中的软件过程正在执行,但是临时的、非正式的。在2级,软件过程(能力评级)或成熟度2级过程的执行方式为管理层提供对中间工作产品的可视性,并可以对过程之间的转换施加某种控制。在第3级,单个软件过程或成熟度级别3组中的过程加上成熟度级别2中的一个或多个过程被很好地定义(可能在组织策略和过程中),并在不同的项目中重复。过程能力或成熟度的3级为整个组织的过程改进提供了基础,因为过程是以类似的方式进行的。这允许跨多个项目以统一的方式收集性能数据。在成熟度级别4,可以应用定量度量并用于过程评估;可以使用统计分析。在成熟度级别5,应用了持续过程改进的机制。
连续和分阶段表示可以用来确定软件过程改进的顺序。在连续表示中,不同软件过程的不同能力水平为确定软件过程改进的顺序提供了指导。在阶段性表示中,满足成熟度级别上的一组软件过程的目标是为成熟度级别完成的,这为改进下一个更高级别的所有软件过程提供了基础。
4.软件测量
本主题讨论软件过程和产品度量、度量结果的质量、软件信息模型和软件过程度量技术(参见工程基础KA中的度量)。
在实施新过程或修改当前过程之前,应获得当前情况的测量结果,为当前情况和新情况之间的比较提供基线。例如,在引入软件检查过程之前,应该测量修复测试发现的缺陷所需的工作。在引入检验过程后的初始启动期之后,检验加测试的综合工作量可以与之前单独测试所需的工作量进行比较。如果流程发生变化,也会有类似的考虑。
4.1. 软件过程与产品度量
软件过程和产品度量与确定软件过程、活动或任务的效率和有效性有关。软件过程、活动或任务的效率是实际消耗的资源与在完成软件过程、活动或任务时预期或期望消耗的资源的比率(参见软件工程经济学中的效率)。工作量(或等效成本)是大多数软件过程、活动和任务的主要资源度量;它以工时、人日、员工周或员工月工作量等单位或欧元或美元等等效货币单位度量。
有效性是软件过程、活动或任务产生的实际输出与预期输出的比率;例如,在软件测试期间检测和纠正的实际缺陷数量与可能基于类似项目的历史数据检测和纠正的预期缺陷数量(见软件中的有效性)工程经济学。请注意,软件过程有效性的度量要求度量相关的产品属性;例如,度量在软件测试期间发现和纠正的软件缺陷。
在测量产品属性以确定过程有效性时必须小心。例如,通过测试检测和纠正的缺陷数量可能无法达到预期的缺陷数量,因此提供了误导性的低有效性度量,或者是因为被测试的软件比通常的质量更好,或者是因为引入了一个新引入的上游检查过程减少了软件中剩余的缺陷数量。
在确定软件过程有效性时可能很重要的产品度量包括产品复杂性、总缺陷、缺陷密度、需求质量、设计文档和其他相关工作产品。
还要注意,效率和有效性是独立的概念。一个有效的软件过程在实现期望的软件过程结果时可能是低效的;例如,与预期相比,花费在发现和修复软件缺陷上的工作量可能非常大,并导致低效率。
一个有效的过程在完成输入工作产品到输出工作产品的期望转换时可能是无效的;例如,在测试过程中没有发现并纠正足够数量的软件缺陷。
软件过程、活动或任务执行方式的低效和/或低效的原因可能包括以下一个或多个问题:输入工作产品不足、人员缺乏经验、缺乏足够的工具和基础设施、学习新过程、复杂产品或不熟悉的产品域。软件过程执行的效率和有效性也受到诸如软件人员流动、进度变化、新的客户代表或新的组织政策等因素的影响(无论是积极的还是消极的)。
在软件工程中,执行一个过程、活动或任务的生产率是所产生的产出除以所消耗的资源的比率;例如,发现和纠正的软件缺陷的数量除以所付出的工时(见软件工程经济学中的生产率)。生产力的准确度量必须包括用于满足软件过程、活动或任务的退出标准的全部工作;例如,在软件开发生产力中必须包括纠正在软件测试期间发现的缺陷所需的工作。
生产力的计算必须考虑到工作完成的环境。例如,如果团队成员纠正他们在软件开发人员的单元测试或跨职能敏捷团队中发现的缺陷,那么纠正发现的缺陷的努力将包括在软件团队的生产率计算中。或者生产率计算可能包括软件开发人员的工作或独立测试团队的工作,这取决于谁修复了独立测试人员发现的缺陷。注意,这个例子指的是开发人员团队或测试人员团队的工作,而不是个人。由于影响软件工程师个人生产力的因素很多,在个人水平上计算的软件生产力可能会产生误导。
软件过程和工作产品度量的标准化定义和计数规则对于在组织内跨项目提供标准化度量结果、填充可分析的历史数据存储库以确定需要改进的软件过程是必要的,建立基于累积数据的预测模型。在上面的例子中,软件缺陷的定义和测试工作的工作时间加上缺陷和工作的计数规则对于获得满意的测量结果是必要的。
软件过程制度化的程度很重要;未能制度化软件过程可以解释为什么“好”的软件过程并不总是产生预期的结果。软件过程可以通过在本地组织单元内或跨企业的较大单元采用而制度化。
4.2. 测量结果的质量
过程和产品测量结果的质量主要取决于测量结果的可靠性和有效性。不满足这些质量标准的度量可能导致错误的解释和错误的软件过程改进计划。软件度量的其他理想特性包括易于收集、分析和表示,以及因果之间的强相关性。
软件工程管理KA中的软件工程度量主题描述了实现软件度量程序的过程。
4.3. 软件信息模型
软件信息模型允许对软件过程和软件产品属性进行建模、分析和预测,为相关问题提供答案,实现过程和产品改进目标。所需的数据可以收集并保存在存储库中;可以分析数据并构建模型。在软件项目期间和项目完成后,对软件信息模型进行验证和细化,以确保足够的准确度,并了解和理解其局限性。软件信息模型也可以为软件项目以外的上下文开发;例如,软件信息模型可以为应用于整个组织的过程开发,例如组织级的软件配置管理或软件质量保证过程。
分析驱动的软件信息模型构建包括开发、校准、将输入变量转换为期望输出的假设;例如,产品的大小和复杂程度可以转化为开发软件产品所需的估计工作量,使用从过去项目的观察数据中得到的回归方程。通过调整模型中的参数来校准模型,以匹配过去项目的观测结果;例如,非线性回归模型中的指数可以通过将回归方程应用于不同的过去项目集(而不是用于开发模型的项目)来改变。
一个模型是通过比较不同的相似数据集的计算结果和实际结果来评估的。有三种可能的评估结果:
- 为不同数据集计算的结果与该数据集的实际结果相差很大,在这种情况下,导出的模型不适用于新的数据集,不应用于分析或预测未来的项目;
- 为新数据集计算的结果与该数据集的实际结果接近,在这种情况下,对模型的参数进行微小调整以提高一致性;
- 新数据集和后续数据集的计算结果非常接近,无需对模型进行调整。
对模型的持续评估可能表明,随着模型应用环境的变化,需要随着时间的推移进行调整。
目标/问题/度量(Goals/Questions/Metrics,GQM)方法最初用于建立度量活动,但也可以用于指导软件过程的分析和改进。
它可以用来指导分析驱动的软件信息模型的建立;从软件信息模型得到的结果可以用来指导过程改进。
以下示例说明了GQM方法的应用:
- 目标:在六个月内将平均变更请求处理时间减少10%。
- 问题1-1:基线变更请求处理时间是多少li>
- 指标1-1-1:开始日期变更请求处理时间的平均值
- 指标1-1-2:开始日期变更请求处理时间的标准偏差
- 问题1-2:当前变更请求处理时间是多少li>
- 指标1-2-1:当前变更请求处理时间的平均值
- 指标1-2-2:变更请求处理时间的标准偏差
4.4. 软件过程度量技术
软件过程度量技术用于收集过程数据和工作产品数据,将这些数据转换为有用的信息,并对这些信息进行分析,以确定需要改进的过程活动。在某些情况下,可能需要新的软件过程。
过程度量技术还提供了度量过程改进计划效果所需的信息。过程测量技术可用于收集定量和定性数据。
4.4.1. 定量过程测量技术
定量过程测量技术的目的是收集、转换和分析定量过程和工作产品数据,这些数据可用于指示哪里需要过程改进,以及评估过程改进计划的结果。定量过程测量技术是用来收集和分析数据的数字形式,数学和统计技术可以应用。
定量过程数据可以作为软件过程的副产品来收集。例如,软件测试中发现的缺陷数量和花费的工时可以通过直接测量来收集,缺陷发现的生产率可以通过计算每个工时发现的缺陷得到。
质量控制的基本工具可用于分析定量过程测量数据(例如,检查表、帕累托图、直方图、散点图、运行图、控制图和因果图)(见工程基础KA中的根本原因分析)。此外,可以使用各种统计技术,从中位数和平均数的计算到多元分析方法(见工程基础KA中的统计分析)。
使用定量过程测量技术收集的数据也可以用作仿真模型的输入(参见工程基础KA中的建模、原型和仿真);这些模型可以用来评估各种方法对软件过程改进的影响。
正交缺陷分类(ODC)可用于定量过程测量数据的分析。ODC可用于将检测到的缺陷分类,并将每个类别中的缺陷与一组缺陷产生的软件过程或软件过程联系起来(参见软件质量KA中的缺陷描述)。例如,软件接口缺陷可能源于不充分的软件设计过程;改进软件设计过程将减少软件接口缺陷的数量。ODC可以为应用根本原因分析提供定量数据。
统计过程控制可以用来跟踪过程的稳定性,或缺乏过程的稳定性,使用控制图。
4.4.2. 定性过程测量技术
定性过程测量技术包括访谈、问卷调查和专家判断可用于增强定量过程测量技术。群体共识技术,包括德尔菲技术,可以用来获得利益相关者群体之间的共识。
5.软件工程过程工具
计算机辅助软件工程(CASE)工具可以加强集成过程的使用,支持过程定义的执行,并为人类执行定义良好的过程提供指导。简单的工具,如文字处理器和电子表格,可用于准备过程、活动和任务的文本描述;这些工具还支持多个软件过程(如干系人需求分析、软件需求规范、软件体系结构,以及软件过程的结果,如文档、软件组件、测试用例和问题 告。
本指南中的大部分知识领域描述了可用于管理该KA中的流程的专用工具。具体而言,请参阅软件配置管理KA,以了解可用于管理软件产品的构建、集成和发布过程的软件配置管理工具的讨论。其他工具,如用于需求管理和测试的工具,在适当的KAs中进行了描述。
软件过程工具可以支持涉及地理上分散(虚拟)团队的项目。越来越多的软件过程工具通过云计算设施以及专用基础设施提供。
项目控制面板或仪表板可以显示软件项目的选定过程和产品属性,并指示在控制范围内的度量和需要纠正措施的度量。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!