本节书摘来自华章出版社《软件工程方法与实践》一 书中的第2章,第2.3节,作者窦万峰,更多章节内容可以访问“华章计算机”公众号查看。
2.3 软件产品与过程
软件过程提高了软件工程活动的稳定性、可控性和有组织性,过程受到严格的约束,保证软件活动有序进行。软件工程师和管理人员根据需要调整开发过程和遵循该过程。从技术的角度来看,软件过程注重软件开发中采用的方法。
从软件工程师的观点来看,产品就是过程定义的一系列活动和任务的结果,即要交付的软件。产品依赖过程,软件团队会根据产品的特征以及自身特点选择特定的软件过程来开发该产品。
首先,当产品比较复杂,开发周期比较长(一般持续一年及以上),开发成本比较高时,团队就要选择重型软件过程,如螺旋模型或者统一过程模型等。因为当软件比较复杂时,软件需要大量的文档记录软件的分析和设计结果,以便与客户、开发者之间进行交流,从而理解问题并达到一致。其次,当软件持续周期较长时,开发人员中途会退出,其结果也会完全通过文档被保留下来,以便于后来者能够阅读文档,快速理解问题和投入到开发中。最后,随着项目不断进展,复杂的软件产品一般都经过多次更改和演化,后面的结果跟当初的设想肯定存在很大的差异,只有通过文档和相关的管理过程来保存这些更改和变化,才能适应软件产品的进化。
当产品较为简单或需求比较稳定时,一般开发周期也比较短(3个月以内),开发人员也比较少(一般4~8人),这样的软件就可以采用轻型软件过程,如极限编程方法或者瀑布模型即可。
软件过程并不能保证软件按期交付,也不能保证软件满足客户需求。软件过程本身也要进行评估,以确认满足了成功软件工程所必需的基本过程标准要求。软件过程评估作用如图2-1所示。
软件过程评估对现有的过程进行评估,并引发过程改进和能力与风险确定,以便完善软件过程。
常见的软件过程评估方法主要有以下几种。
用于过程改进的标准CMMI评估方法SCAMPI提供了一个过程评估模型,包括启动、诊断、建立、执行和学习。SCAMPI方法采用了卡内基梅隆大学软件研究所的CMMI作为评估的依据。
用于团队内部过程改进的CMM评估方法CBAIPI提供了一种诊断方法,用以分析软件或软件团队的相对成熟度。CBAIPI方法采用了卡内基梅隆大学软件研究所的CMM作为评估的依据。
SPICE标准定义了软件过程评估的一系列要求,目的是帮助软件开发团队建立客观的评价体系,以评估定义的软件过程的有效性。
软件ISO 9001:2000标准是一个通用标准,该标准用于评估软件产品、系统或服务的整体质量。该标准可直接应用于软件团队和公司。ISO 9001:2000标准采用“计划—实施—检查—行动”循环,将其应用于软件项目的质量管理环节。
随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程,包括个人软件过程(Personal Software Process,PSP)和团队软件过程 (Team Software Process,TSP)。
PSP是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位;PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。二者互相支持,互相补充,缺一不可。
按照PSP规程,改进软件过程首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。其次是度量产品质量,对目标进行分解和度量,使软件质量能够“测量”。然后是理解当前过程,查找问题,并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。
PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低的级别中的所有元素,并增加了新的元素。这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
TSP由美国卡内基梅隆大学软件工程研究所提供,可以帮助软件开发组织建立成熟和纪律性的工程实践,生产安全和可信的软件。TSP 支持CMM 中的16 个关键过程域,在实际应用中取得了良好的效果。实施TSP,是改进软件过程的有效途径之一。团队软件过程为开发软件产品的开发团队提供指导,TSP的早期实践侧重于帮助开发团队改善其质量和生产率,以使其更好地满足成本及进度的目标。TSP被设计为满足2~20人规模的开发团队,大型的多团队过程的TSP被设计为最多大约为150人的规模。
团队软件过程加上PSP帮助高绩效的工程师在一个团队中工作,以开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。通过TSP,一个组织能够建立起自我管理的团队来计划追踪他们的工作、建立目标,并拥有自己的过程和计划。这些团队可以是纯粹的软件开发团队,也可以是集成产品的团队,规模可以为3~20个工程师不等。TSP 团队在广泛领域里可能运用XP、RUP或其他方法。TSP使具备PSP的工程人员组成的团队能够学习并取得成功。如果组织运用TSP,它会帮助组织建立一套成熟、规范的工程实践,确保安全可靠的软件。
团队成员在PSP 的训练中,了解使用TSP 所需的知识和技能。这些训练包括如何制作详细的计划、收集和使用过程数据、制作挣值管理、跟踪项目进度、度量和管理产品质量以及定义和使用可操作的过程。
TSP 采用了循环递增的开发策略,整个软件生产过程由多个循环出现的开发周期组成,每个开发周期划分出若干个相对独立的阶段。每一次循环,都以启动阶段开始。在启动阶段,所有成员一起制定策略、过程和完成工作的计划。