本主题涉及软件过程、软件过程管理和软件过程基础设施的定义。
如上所述,软件过程是一组相互关联的活动和任务,它们将输入的工作产品转换为输出的工作产品。软件过程的描述至少包括所需的输入、转换工作活动和生成的输出。如图8.2所示,一个软件过程可能还包括它的进入和退出标准,以及将工作活动分解成任务,这些任务是服从管理责任的最小的工作单元。过程输入可以是触发事件,也可以是另一个过程的输出。在过程可以开始之前,应该满足进入标准。在成功结束过程之前,应该满足所有指定的条件,包括输出工作产品或工作产品的验收标准。
软件过程可以包括子过程。例如,软件需求确认是一个用来确定需求是否会为软件开发提供充分基础的过程;它是软件需求过程的一个子过程。需求验证的输入通常是软件需求说明书和执行验证所需的资源(人员、验证工具、足够的时间)。需求验证活动的任务可能包括需求评审、原型设计和模型验证。这些任务包括个人和团队的工作分配。需求验证的输出通常是一个经过验证的软件需求规范,它为软件设计和软件测试过程提供了输入。需求验证和软件需求过程的其他子过程经常以各种方式交叉和迭代;
图8.2。软件过程的要素
在软件开发或修改期间,软件需求过程及其子过程可能会被多次输入和退出。
软件过程的完整定义还可能包括角色和能力、IT支持、软件工程技术和工具,以及执行过程所需的工作环境,以及用于确定执行过程的效率和有效性的方法和度量(关键性能指标)。
此外,一个软件过程可能包括交叉的技术、协作和管理活动。
定义软件过程的符号包括用自然语言描述的构成活动和任务的文本列表;数据流图;状态图;BPMN;IDEF0;佩特里网;以及UML活动图。过程中的转换任务可以定义为过程;过程可以指定为一组有序的步骤,也可以指定为执行任务时要完成的工作的检查表。
必须强调的是,没有最好的软件过程或软件过程集。对于每个项目和每个组织环境,必须选择、调整和应用软件过程。不存在理想的过程或过程集。
1.1软件过程管理
软件过程管理的两个目标是实现完成软件过程和生产工作产品的系统方法所产生的效率和效果——无论是在个人、项目还是组织层面——以及引入新的或改进的过程。
过程的改变期望一个新的或修改的过程将提高过程的效率和/或有效性,以及产生的工作产品的质量。变更到一个新的过程,改进一个已经存在的过程,组织的变更,和基础结构的变更(技术的插入或者工具中的变更)是紧密相关的,因为所有这些通常都是以改进软件产品的成本,开发进度,或者质量为目标的。过程变更不仅对软件产品有影响;他们经常导致组织变更。变更过程或引入新过程可能会在整个组织中产生连锁反应。例如,IT基础设构建具和技术中的变更通常需要过程变更。
在第一次部署其他新过程时,现有过程可能会被修改(例如,在软件开发项目中引入检查活动可能会影响软件测试过程——参见软件质量知识领域和软件测试知识领域中的评审和审计)。这些情况也可以称为“过程演进”。“如果是广泛的修改,则很可能需要改变组织文化和业务模式,以适应过程的改变。”
1.2软件过程的基础设施
建立、实现和管理软件过程和软件生命周期模型通常发生在单个软件项目的层次上。然而,跨组织的软件过程和软件生命周期模型的系统应用可以为组织内的所有软件工作提供好处,尽管它需要组织层面的承诺。软件过程基础设施可以提供过程定义、解释和应用过程的策略,以及用于实现过程的过程描述。此外,软件过程基础结构可能提供资金、工具、培训,以及为建立和维护软件过程基础结构而被分配责任的人员。
软件过程基础结构是不同的,这取决于组织的大小和复杂性以及在组织内进行的项目。小型、简单的组织和项目有小型、简单的基础设施需求。大型、复杂的组织和项目必然具有更大、更复杂的软件过程基础设施。在后一种情况下,可能会建立各种组织单位(例如软件工程过程组或指导委员会)来监督软件过程的实现和改进。
一种常见的误解是,建立软件过程基础设施和实现可重复的软件过程将增加软件开发和维护的时间和成本。引入或改进软件过程是有成本的;然而,经验表明,通过提高效率,避免返工,以及更可靠和负担得起的软件,实现软件过程的系统改进往往会导致更低的成本。过程性能因此影响软件产品质量。
已完成
数据加载中