概念:当开发产品或构件系统时,遵循一系列可预测的步骤(即路线图)是非常重要的,它有助于及时交付高质量的产品。软件开发中所遵循的路线图就称为“软件过程”。
人员及责任:软件工程师及其管理人员根据需要调整开发过程,并遵循该过程。除此之外,软件的需求方也需要参与过程的定义、建立和测试。
重要性:软件过程提高了软件工程活动的稳定性、可控性和有组织性,如果没有过程约束,软件活动将失控并变得混乱。但是现代软件工程方法必须是“灵活”的。也就是要求软件工程活动、控制以及工作产品适合于项目团队和要开发的产品。
步骤:具体来讲,采用的过程依赖于所构造软件的特点。飞机电子系统的软件与网站的建设可能需要采用两种截然不同的软件过程。
工作产品:从软件工程师的角度来看,工作产品就体现为执行过程所定义的任务和活动的过程中,所产生的程序、文档和数据。
质量保证措施:有大量的软件过程评估机制,开发机构可以评估其软件过程的“成熟度”。然而,软件过程有效性最好的指标还是所构建产品的质量、及时性和长期生存能力。
【通用过程模型】
在软件过程中,技术工作的层次包括活动、活动由动作构成,动作有任务组成。
过程流(process flow)描述了在执行顺序和执行时间上,如何组织框架中的活动、动作和任务。
线性过程流(linear process flow)从沟通到部署顺序执行五个框架活动。
迭代过程流(iterative process flow)在执行下一个活动前重复执行之前的一个或多个活动。
演化过程流(evolutionary process flow)采用循环的方式执行各个活动,每次循环都能产生更为完善的软件版本。
并行过程流(parallel process flow)将一个或是多个活动与其他活动并行执行。
【明确任务集】
不同的项目需要不同的任务集。软件团队根据问题和项目的特点,选择任务集。
每一个软件工程动作都有若干个任务集构成,而每一个任务集都由软件工程工作任务、相关工作产品、质量保证点和项目里程碑等部分组成,需要选择最满足项目需要并适合开发团队特点的任务集。
任务集定义了为达到一个软件工作动作的目标所需要完成的工作。
【过程模式】
过程模式(process pattern)描述了软件工程工作中遇到的过程相关的问题,明确了问题环境并给出了针对该问题的一种或几种可证明的解决方案。通俗地讲,过程模式提供了一个模板——一种在软件过程的背景下统一描述问题解决方案的方法。
我们可以在不同抽象层次上定义模式。在某些情况下,模式可以描述一个与完整过程模型相关的问题(及其解决方案),在其他情况下,模式可以描述一个与框架活动或者框架活动中的一项具体任务相关的问题(及其解决方案)。
模式模板提供了描述模式的一般性方法。
过程模式提供了一种有效的机制,用以解决任何与软件过程相关的问题。模式使得软件工程组织能够从高层抽象开始(阶段模式),建立层次化的过程描述。高层抽象描述进一步细化为一系列步骤模式以描述框架活动,软件每一个步骤模式又进一步逐层细化为更详细的任务模式。过程模式一旦建立起来,就可以复用来定义各种过程变体——即软件开发队伍可以将模式作为过程模型的构建模块,定制特定的过程模型。
【过程评估与改进】
以改进为目标,评估力求理解软件过程的当前状态。
软件过程并不能保证软件按期交付,也不能保证软件满足客户要求,或是软件具备了长期质量保证的技术特点。软件过程模型必须与切实的软件工程实践相结合。另外,对过程本身也要进行评估,以确保满足了成功软件工程所必需的基本过程标准要求。
用于过程改进的CMMI标准评估方法(Standard CMMI Assessment Method for Process Improvement, SCAMPI)—— 提供了五步的过程评估模式:启动(initiating)