宝信软件是一家宝钢旗下的上市公司。宝信软件研发部成立于2000年,在2001年启动了以CMM3为模型的过程改进。后续历经CMM4、CMM5,在2006年12月,通过了CMMIV1.1 成熟度5级评估。
在2007年年初,宝信软件研发部设有一位总经理、3位总监,共有约120位员工,主要开发方向有三块:信息安全、实时监控、开发平台。以上三个方向对应于三个室,另外有独立的测试室和过程控制室,每个室有一位室经理。过程控制室有EPG(Engineering ProcessGroup,工程过程组,是在CMMI中推进过程改进的小组的默认名称)组长、专职QA(QualityAssurance,质量保证。本文QA是指过程方面的质量保证工程师,不是指测试工程师)和专职CM(Configuration Management,配置管理,指配置管理工程师)。在过程控制室,兼职EPG由每个室派出1~2位的资深人员组成,EPG一共约10人。研发部设置如下图所示。我时任过程控制室经理兼EPG组长。
在规范方面,经过了多年CMM/CMMI改进,宝信软件研发部积累了完整的组织标准过程集,主要如下。
●三种生命周期模型及其裁剪指南——瀑布型生命周期模型、原型法生命周期模型、增量生命周期模型,后两种生命周期模型是与瀑布型生命周期模型为基础的。
●两种需求分析方法——用例分析和传统需求规格说明书分析,一种设计方法——面向对象,四种开发语言的编码规范,覆盖黑盒白盒的测试规范。
●各类流程,比如评审和同行评审、缺陷跟踪、变更管理、供应商管理、度量规范、决策分析、风险管理、质量保证等。
●各类文档的模板,比如计划、需求、设计、方案分析报告、测试报告等。
●对于同行评审、生产率、工期偏差开展了统计过程控制,建立了工期、质量的预测模型。收集项目数据,形成了过程能力基线(多个关键指标的基准值,比如生产率,用于后续估算及整体观察组织情况)。
●以上各种对应的培训材料。
下面重点介绍在敏捷导入中发生关系的几个方面。
宝信研发瀑布型生命周期模型源自于传统瀑布型生命周期,分为计划、需求、设计、编码、测试、发布共6个阶段,其中计划、需求、设计三个阶段以通过里程碑评审为阶段退出标志,编码阶段以打首轮BUILD基线(要求所有的需求项全部跟踪到已解决状态)为退出标志,测试阶段以满足发布标准为退出标志,发布阶段以最后结题为退出标志。对宝信研发瀑布型生命周期的总工期并没有限制条件。宝信研发原型法生命周期模型相当于双重瀑布,对原型的要求降低,在两个瀑布之间加入了原型发布和反馈环节。宝信研发增量生命周期模型相当于多重小瀑布的叠加,每个增量版本的工期推荐为2~4个月。
用例分析方法是来自于Rational公司的RUP(Rational Unified Process),要求在需求评审时,展现全面的用例图和用例规约。传统需求规格说明书分析方法则是要求书写需求规格说明书,简称SRS(Software Requirement Specification)。宝信研发当时为了方便跟踪和度量需求,融合源自于微软某个MSF版本中的功能点UBD(U-User Service,B-Business Service,D-Data Service,与MVC架构模式是对应的)划分,以及IFPUG的功能点分析方法,得到了宝信功能点方法,宝信功能点的定义是“一个功能点是对最终用户在业务逻辑上有意义的最小活动单元”,分为三类:U-用户服务User Service、B-业务服务Business Service、D-数据服务Data Service。宝信功能点是可以从SRS和用例规约中提取出来的,这样,宝信功能点既有实体功能点对应,也是软件规模的度量单位。
宝信功能点的内容是后续设计、编码、测试的依据,宝信功能点的状态用于跟踪管理,宝信功能点的数量说明了软件规模的大小。所以宝信功能点在宝信研发定量管理体系中处于基石的地位。
宝信研发的设计方法采纳了面向对象的设计方法,主要参考自OOAD(面向对象的分析和设计)中的OOA,与所选开发语言无关,要求识别到主要类及其主要方法,画出类图。详细设计在宝信研发设计方法中是可选的,对应于OOAD中的OOD,要求考虑具体开发语言,利用所选开发语言特性,识别多数类和多数方法。在实际中,只有个别项目组选择了做详细设计,所以主体上2007年宝信研发设计方法对应于OOAD的OOA。
同行评审被认为是对软件质量影响巨大的过程,跟踪度量各阶段同行评审,并选择了代码同行评审作为统计过程控制过程。维护了各类同行评审检查表,并跟踪同行评审活动,保留检查表执行记录。选择同行评审的缺陷密度和评审速度作为统计过程控制的指标。
在过程绩效建模方面,识别了同行评审平均缺陷密度、工期压力系数、TCF技术复杂系数、ECF环境复杂系数、代码平均增长速度、交流复杂系数、功能点挣值、已经投入工作量、已经过去的工作日、计划工期、估算功能点数等作为建模因子,利用复杂的统计学方法得到了数学模型,即过程绩效模型,并开发了工具。对于项目组,每周将过程中数据代入数学模型中,可以得到对当前版本工期、缺陷和生产率的预测。如果预测值超出控制限范围,那么识别为问题,并采取措施;如果接近控制限范围,那么识别为风险来处理。
通过以上分析可以看出,在CMMI的指导下,宝信研发已经建立了系统化、全面的组织过程资产库。在高成熟度建设方面,根据CMMI5的要求,开展了比较全面的定量管理。
对于开展基于CMMI的过程改进,主要有以下两大目标。
目标1:满足CMMI能力成熟度等级要求。
目标2:提升组织真正绩效。
在安排了外部正式评估并且确定了评估日期的背景下,基于CMMI的过程体系建设的首要目的是满足CMMI,次要目的才是追求提高组织真正绩效。在满足CMMI2或3级时,以上两个目的重合度是很好的,目标1的实现快速地拉动了目标2的达成,但在CMMI4或5级,在有些实践方面,目标1的实现对目标2的带动效应明显要比在CMMI2或3时要小。