第三章 我国小型软件企业如何实现CMM重复级
3.1 影响CMM成功实施的五大因素
CMM在我国小型软件企业中的应用,受到五个方面的影响,这五个方面是:资金,市场的需求,决策者的认识,员工的水平,实施CMM的具体技术。
这五个方面中,资金问题是首要的,是决定性的。在有了充足的资金后,才能考虑其它的方面。市场的需求是实施CMM的动力,只有市场有需求,企业才会有动力。决策者的认识和员工的水平则是企业实施CMM的内部因素,实施CMM的具体技术是外部因素。
3.1.1 资金问题
资金问题是制约我国小型软件企业发展的主要问题。分析我国小型软件企业的现状可以看出,多数小型软件企业年收入在150左右,企业的资金不是特别的充足,但也是有富余的。如何利用有限的资金来实施CMM是小型软件企业首先应该考虑的问题。
实施CMM给企业带来的开支主要在这三个方面:增加员工,增加工作量,技术支持。实施CMM重复级需要配置相应的工作组,增加工作人员将带来资金的投入,如何配置工作组,使得投入的资金最少,这是企业应该考虑的问题。实施CMM需要额外的文档和工作流程,这可能是企业以前所没有做的,这样就会增加企业的工作量,从而增加了资金的投入。技术方面,由于企业要在实施CMM的过程中提高过程能力,需要外界的技术指导,这也会带来企业的开销。
小型软件企业应该积极地看待资金的问题。资金问题是不可避免的,不可能把资金的增加降为零,我们应该研究的,是在成功实施CMM和资金投入最少这两个方面需找平衡点,即在资金投入最少的情况下成功达到CMM重复级的要求。
从给企业带来资金增加的三个方面来看,有以下几个原则。配置工作组的时候,尽量沿用本公司的员工,这样既可以减少新员工的薪金和培训费用的开支。另外,增加新的员工时,应尽量聘用对CMM比较熟悉的人员。增加工作量几乎是不可避免的事情,CMM正是通过增加工作量来规范工作过程,提高工程能力的。对CMM的裁剪是减少工作量的方法。裁剪对小型企业来说是相当重要的,它是减少资金投入最有效的方法。裁剪的方法将在下文中关于实施CMM的具体方法中阐述。技术支持方面,可通过咨询公司得到,如果有免费的渠道,则能为企业省下一笔开支。
3.1.2 市场的需求
所有公司的最终目的是为了盈利,而盈利则是通过市场的需求达到的。软件企业实施CMM的根本动力就是市场的需求。只有CMM能给企业带来利润,企业才会有动力实施CMM。
从上文所述的例子,印度的Atos Origin India(AOI)公司从实施CMM开始,在财政以及各个方面都取得了很好的效果。CMM能给软件企业带来巨大的利益,这在软件行业发达的国家已经得到验证。在我国,软件行业正在走向成熟,需要借鉴国外成功的经验,而CMM正是很好的选择。
产品质量是市场竞争的主要因素,CMM体系在保证质量方面是独具一格的。CMM强调软件过程,而且认为:只有好的过程,才会后好的结果;同时,成熟的软件过程,也必然会带来好的产品。因为过程改进本身也包含的很多质量保证方面的内容,所以,CMM对质量保证也是相当有效的。
CMM是一个不断进化的体系,这对我国发展中的软件企业来说是很适合的。同时这个体系也是指导软件企业逐步发展的模版。我国政府也提供了相应的政策,以鼓励我国软件企业实施CMM。从外部环境来看,社会已经为软件企业营造了很好的氛围。
3.1.3 决策者的认识
企业实施CMM是整个企业的大事,决策者必须充分认识到实施的重要性,才有开始实施的必要。决策者必须对实施CMM提供足够的预算,满足人员和资金的需求。还应对员工进行培训,使企业的员工对CMM都有深刻的认识。过程改进本身是管理的改进,重点是对管理层的改进,企业领导是CMM最为关键的部分。
领导层必须真正学习理解软件过程管理和改进的重要性,亲自领导与参与。针对CMM的实施,要抽调企业中有管理能力、组织能力和软件开发能力的骨干人员,保证过程管理的人员配备,确实把此项工作当成企业生存和发展的大事来抓。
3.1.4 员工的水平
员工的水平决定了CMM的实际执行效果。对软件工程认识不深的员工,往往会抵触编码以外的工作,他们不了解软件工程的重要性,只是把软件开发认为是一种很随意的事情,其实这也正是不成熟的软件组织的重要特征。加大对员工的培训,使他们能够理解企业对改进过程的所做的工作,这样他们才能积极地配合,提高工作的积极性。
另外,员工还应该对CMM体系有充分的认识,使员工对所要做的工作有一定的了解。在实际工作中,再对员工进行指导,进一步提高员工的水平。
3.1.5 实施CMM的具体技术
如果前四个条件能够达到的话,特别是前两个硬性的条件能够达到的时候,实施CMM的技术问题则是一个较为容易的问题。同时,实施的具体方法,也会对资金等问题造成影响,如合理的技术运用,会节约相当多的资金等。
国内目前有很多关于CMM的咨询公司,这种公司提供了很便利的服务,如果资金允许的话,可以与咨询公司联系。但选择咨询公司有两个缺点:资金和质量。
选择咨询公司是需要额外的资金投入的,这就要结合企业的实际情况了;很多不正规的咨询公司鼓吹三个月过重复级,这种急功近利的做法,最终受到损害的还是软件企业本身。
下面介绍一下关于实施前应该清楚的问题:
根据企业情况制定计划
小型软件企业,人员和资金都十分有限,因此根据自己企业的实际情况制定计划是十分必要的。
在实施CMM重复级的过程中,要分清哪些实践是不适合的,不适合的实践对最后的评估是不构成影响的。在关键实践的完成顺序上,也应该结合自己企业的实际情况,不能生搬硬套。
IDEAL模型
IDEAL是Initiating,Diagnosing,Establishing,Acting和Learning的缩写,它提供了按照CMM模型进行过程改进的一种方法。它强调了,进行成功的过程改进所必须进行的步骤。如图4。具体内容请参考文献[1]和文献[3]。
图4:IDAEL模型示意图
配置工作组
在CMM的实施过程中,工作组的成立是CMM的一个关键步骤。有几个重要的组织是必不可少的,这些组织包括软件工程过程组、软件工程组、系统工程组、系统测试组、需求管理组、软件项目计划组、软件项目跟踪与监督、软件配置管理组、软件质量保证组、培训组。
在CMM的实施中组织机构的设置必须完善,但不等于说每一个机构必须是独立的。有些组织很小时,机构可以适当合并,成员可以身兼数职。但对那些关键实践要求独立性时,组织必须十分小心。例如,软件质量保证组的独立性就是必须考虑的,否则在技术上或机构上出现的偏差,会无目的地影响到软件过程、项目质量和风险决策的正确性。
在这里还要提到一点,那就是物理组和逻辑组。在CMM中有两种组织,一种叫物理组织,它是客观存在的,例如项目组、技术部等,有众多专职人员;另一种叫逻辑组织,就是说它的人员可以是兼职的,很多逻辑组只需一两个人就可以了。
3.2 根据CMM的要求实施CMM重复级
CMM重复级包括六个关键作用领域,它们分别是:需求管理,软件项目计划,软件项目跟踪和监督,配置管理,软件质量保证和软件子合同管理。关于这六个KPA及其关键实践的详细介绍,请参考文献[1]。本节将结合联想集团软件事业部实现CMM重复级的实践经验,对CMM重复级的其中五个KPA的实施方法作具体分析(由于软件子合同管理对多数小型软件企业不适用,故本文不再讨论)。
3.2.1 需求管理(Requirements Management)
需求管理的目的是为了在客户和处理客户需求的软件项目之间建立共识。在项目实施过程中,最突出的现象就是项目组成员没有完全理解需求,软件需求不稳定,客户经常变更需求,无法有效控制需求变更,需求变更往往造成项目延期和费用超支。
CMM重复级要求的需求管理的基本流程可如图5所示。该流程描述了软件工程组开始获取原始需求,汇总为系统需求,分配系统需求,复审软件需求。软件需求必须文档化,形成需求文档,此文档必须经过相关的组和个人的评审,然后纳入配置管理,为需求文档建立基线。
图5:需求管理工作流程
根据图5所示流程,根据公司和项目的具体情况安排具体工作,大致需要以下步骤:
1.通过访谈,从客户处获取原始需求,形成需求文档。
2. 分析软件需求形成文档,与客户共同确认需求,向客户展示文档,获得客户认可。
3. 建立基线的需求必须通过相关组的审查,包括:系统分析组、设计组、编码组、测试组、质量保证组、配置管理组、文档管理中心及个人。
4. 通过审查后,将需求文档纳入配置管理,为需求创建基线。
5. 客户确认后如需变更,项目小组成员向其说明变更的影响,并有可能增加费用及时间,尽量控制客户的需求。需求变更的流程按配置管理的变更流程执行。
6. 一旦需求发生变更,项目计划、活动、工序随之变更,并重新提交相关组和个人复审。
7. 实际项目需求管理中应用的文档有: 项目需求管理流程定义、项目需求复审流程定义、项目需求及状态跟踪流程定义、需求获取表格、需求状态报告、需求复审报告、需求变更报告、需求跟踪报告。
联想集团在实施需求管理的时候,主要包括了3个流程:
1、分配需求确认。其目的是在分配需求被纳入到软件项目之前,软件项目组对其进行确认。此过程应该在软件工程组正式进行项目之前进行。参加此过程的小组包括:软件工程组,测试组,质量保证组和配置管理组。此过程的入口条件是已经获得分配需求说明书。该过程的流程如图6所示:
分配需求评审
责任人批准分配需求
与进行系统需求分配的组进行组建协调
分配需求进入基线
不通过
图6:联想集团的分配需求确认流程
2、分配需求控制。其目的是保证分配需求在软件开发过程中是一致的。此过程的前提是本阶段工作产品起草、修改完毕,并经过SQA的审核。此过程的主要活动就是对本阶段的工作产品进行评审,评审活动要有那些将被评审的工作产品作为自己工作的输入的工程人员参加。
3、分配需求的变更。因为分配需求在确定后即被配置管理纳入基线,所以对分配需求的变更,应改走基线变更的流程。联想把这部分内容,纳入到了配置管理的部分。
3.2.2 软件项目计划(Software Project Planning)
软件项目计划的目的在于建立合理的计划,执行软件工程和管理软件项目。软件项目计划管理在软件开发过程中处于十分重要的地位,它体现了对客户需求的理解,是开展项目活动的基础,是软件项目跟踪与监控的基础。
CMM重复级软件项目计划根据纳入配置管理后的软件需求进行项目估算,并形成项目计划文档。项目计划文档经复审后纳入配置管理,由项目开发人员遵循,并据此跟踪检查计划的执行。项目计划文档在复审过程中,如果项目计划对风险估算不足或存在其它问题,就需要对项目计划文档重新修正,以获得项目组和高层管理者的支持。
在项目实施过程中,比较常见的情况一种是制定的软件项目计划内容简单,无法具体到每一个迭代或每周,可变性太大;或者制定了详细的软件项目计划,但实际执行根本就不按照计划实施。
软件项目计划的实际应用模式如下:
1. 拟定项目计划文档,拟定计划的进度表。
2. 项目经理根据项目软件需求进行估算,确定进行项目选择的生命周期、项目规模、所需的人员、时间、进度、资源、风险等内容。将估算的结果形成估算过程文档,并拟定软件开发计划。
3. 软件开发计划内容包含:软件项目计划、迭代计划、进度时间表、配置管理计划、质量保证计划、需求管理计划、项目评测计划、风险管理计划、产品验收计划、问题解决计划、测试计划。
4. 估算过程文档和软件项目计划文档必须通过相关组的审查,以获得相关 组及个人的支持,包括:系统分析组、设计组、编码组、测试组、质量保证组、 配置管理组、文档管理中心及个人。
5. 在高层管理者复审通过后,项目经理指定人员或参与拟定软件开发计划其它部分,并由相关组和个人复审。
6. 配置管理人员将软件开发计划文档纳入配置管理。
7. 实际项目中应用的文档有:制定项目计划流程定义、项目估算流程定义、项目评估表、资源评估表、软件开发计划模板、进度时间表、制订软件开发计划的指南。
联想软件事业部关于软件项目计划有如下流程:
1. 制定软件项目计划和项目跟踪和监督计划。它包括如下子活动:任务划分,估计,列出工作产品清单,资源描述,提出质量计划,项目管理制度,提出评审计划,提出培训计划,提出风险管理计划,制度项目跟踪与监督计划。最后由项目经理或指定人员做出完整的项目计划。
2. 同行评审。同行评审是CMM3的关键作用领域,当很多企业在实施CMM重复级的时候就开始实现同行评审。实施CMM要根据实际情况,灵活制定计划。联想运用同行评审是为了发现和更正《项目计划》和《项目跟踪和监督计划》的缺陷而进行的。评审小组由项目经理、项目组核心成员及2-3名其他项目的项目经理组成。其形式可以是正式会议或是非正式交流,评审的过程中,发现缺陷及时记录并更正。最后生成同行评审报告。
3. 指定其他相关计划。包括《软件配置管理计划》,《软件质量保证计划》、《分包计划》和《测试计划》,所有计划提交项目经理,并获得项目组全体成员和各相关小组的认同。
4. 评审。由主管副总经理、项目经理、相关小组负责人和用户组成的评审小组对软件开发计划进行评审。
本文地址:http://com.8s8s.com/it/it37112.htm