摘
要 本文提出了一个基于CMM的对日软件过程管理解决方案,并通过对一个典型的对日软件开发项目的实施,验证了本方案在提升对日软件过程管理能力方面的成效。
关键词 CMM; KPA; 软件外包; 对日软件开发; 解决方案
1 引言
软件外包已经成为全球IT行业的大趋势,我国由于地缘、文化、历史传承等多方面的优势,迅速成为日本软件制造、服务的外包基地。但是日本企业普遍有一个特点,就是对质量要求相当严格,可以说是精益求精。因此如何提升企业在对日软件开发上的软件过程管理能力是对日软件出口企业亟待解决的问题。CMM作为软件过程改进的指南及评估标准,已经得到了众多国家软件产业界的认可,并且在北美、欧洲和日本等国家及地区得到了广泛的应用。CMM正是解决我国众多对日软件出口企业软件过程管理能力的利器。
2 CMM简介
CMM(Capability Maturity Model,能力成熟度模型)是由美国卡内基梅隆大学的软件工程研究所(SEI:Software
Engineering Institute)开发的软件过程持续改进模型。最初是受美国国防部委托,开发一种模型,用以评估软件承包商能力,并且给出帮助软件组织改进软件过程的过程能力成熟度框架。而后,随着逐步地完善及扩展,现在它已成为在全世界推广实施的一种软件评估标准,用于软件开发过程和软件开发能力的评估和改进。
CMM把软件开发机构按照不同开发水平划分为5个级别:Initial(初始化)、Repeatable(可重复)、Defined(已定义)、Managed(已管理)和Optimizing(优化中)。它是一个由低到高的演进框架。
3 对日软件过程管理的CMM解决方案
3.1 CMM解决方案概述
本文中,作者针对对日软件开发企业所面临的问题,结合国内外已有的研究成果以及作者本人在对日软件外包企业多年的软件开发和管理经历,提出了对日软件开发的CMM解决方案。
本方案在CMM2级和3级的基础上对若干KPA进行了裁减和修改,尤其是针对对日软件开发过程中的某些重点问题对某些若干关键过程域(KPA,
Key Process Area )的关键实践进行了提炼、合并形成了新的关键过程——变更管理过程,作为对日软件外包项目中的一个关键过程域,它将对变更进行更为系统和有效的管理。本方案重点研究了对日软件外包项目中的需求管理、变更管理、项目计划和跟踪、质量保证、配置管理及培训等若干过程。每个过程都体现了若干个关键过程域在实际对日软件开发过程中的应用。重点通过对每个过程的责任人、输入、入口准则、过程活动、出口准则及输出等几个方面的描述,达到解决该过程中现存问题的目的。
3.2 CMM解决方案在实际对日软件外包项目中的应用分析
本节以一个实施了本方案的典型的对日软件外包项目为例,通过数据的分析与比较,验证了本方案在提升对日软件出口企业软件过程管理能力方面的成效。
3.2.1 测试数据分析
本项目有效代码行共81528行,在集成测试全部完成后一共发现1521个缺陷,其中通过代码复查发现缺陷940个,占总缺陷数的61.8%。在最后交付后由日方进行的系统测试中发现了14个缺陷,仅占总缺陷数的0.92%。通过代码复查来查找和排除缺陷大大提高了单体测试和集成测试的工作效率,同时也降低了错误在后期被发现的可能性。经过统计,我们发现通过代码复查缺陷发现率为9个/小时,而单体测试中缺陷发现率为4.5个/小时。代码复查的缺陷修复率达到3.3分钟/个,而单体测试则要13.2分钟/个。由此可见代码复查是非常有效的一种错误排除手段。
本项目的缺陷分布图如图1所示。
同时,通过对缺陷报告的统计,我们得出了下面的缺陷严重程度分布图,其中A类缺陷最为严重,可能导致整个系统的瘫痪。B类缺陷将使得某一特定功能无法完成。C类缺陷可以通过其他类似功能的途径来避免。D类缺陷属于轻微缺陷,不影响到业务功能的实现。通过图2我们可以看出本项目主要的缺陷都集中于D类缺陷。
图1 不同阶段缺陷数分布图
图2 缺陷类型分布图
3.2.2 重要指标比较
经过本案在项目开发过程中的实施,本项目在质量、成本、进度三方面都较以前的项目有了较大的进步。第一,产品质量得到提高,代码的缺陷率及返工次数大大减少,缺陷的危害性也得到降低。第二,开发效率显著提高,这使得项目成本得到了很好的控制。第三,开发过程的透明化使得项目进度非常容易控制。为了增强说服力,此处挑选了另两个未经本案实施的对日软件外包项目,在几个重要度量指标上将这三个项目作了一番比较。
首先介绍一下此三个项目的基本情况:
表3.1 项目简介
|
本例 |
项目1 |
项目2 |
项目名 |
Smile系统 |
马自达设备管理系统 |
X-CRM系统 |
项目规模 |
中 |
大 |
小 |
开发时间 |
4个月 |
6个月 |
1.5个月 |
总工数 |
81.2人月 |
112.5人月 |
6人月 |
开发工具 |
Bea Weblogic
Oracle 10g
Jsp/Servlet |
Bea Weblogic
Oracle 10g
Jsp/Servlet |
Tomcat3.2.3
SQLServer2000
Jsp/Servlet |
有效代码 |
81528行 |
164060行 |
16000行 |
缺陷分布 |
复查:940
UT:499
IT:68
ST:14 |
复查:1350
UT:1053
IT:541
ST:79 |
复查:未复查
UT:189
IT:30
ST:35 |
1)遗留缺陷率
遗留缺陷率代表了一个软件的交付质量,是评判一个软件好坏的重要指标。此三个项目的遗留缺陷率是通过软件交付后日方的系统测试(ST)所测出的缺陷比上总代码行数而得出。从图3可以看出本项目的遗留缺陷率要明显低于另两个项目,日方系统测试所发现的缺陷平均每万行代码不到三个,同时没有发现任何重大的缺陷,因此本项目也非常顺利地通过了日方的验收。而项目2在交付后仍发现了较多的缺陷,可以说是一个失败的项目。
2)无缺陷比率
无缺陷比率是在给定的阶段内没有缺陷的产品部件所占的百分比。通过无缺陷比率曲线可以看出在整个开发过程中软件质量是如何提高的。高质量的软件它的缺陷比率曲线应当呈一个递增状态,到最后达到一个高的质量标准。此处我们根据每个测试阶段无缺陷的程序数所占的百分比来计算出这三个项目的无缺陷比率。
从图4可以看出本项目的无缺陷比率呈一个上升的趋势,说明随着项目的推进,项目的质量在得到不断地提升。虽然在前期的代码复查中发现了较多的问题,但这使得后期遗留下来的问题得以减少,从而降低了整个测试阶段的成本。相比较来看,项目2未进行代码复查的工作(因此Review阶段的无缺陷比率是100%),导致单体测试时发现了较多的缺陷,同时在软件交付后仍遗留了较多的缺陷。项目1则介于两者之间,由于它没有执行严格的软件过程控制,因此对于整体质量的把握并不是很好。但由于采取了诸如代码复查等控制质量的措施,使得它的整体质量也呈一个较好的走势。
图4 无缺陷比率
3)缺陷数/KLOC
在测试阶段发现的缺陷数/KLOC体现了产品在这个阶段开始和结束时的质量水平。经验表明,如果一个产品在集成测试中的缺陷数/KLOC小于0.5,在系统测试中小于0.2,那么它通常不会再有什么遗留的问题。本项目的缺陷数/KLOC在集成测试中为0.8,系统测试为0.17,从集成测试的数据来看仍显得略微偏高。但相比另两个项目,进步还是明显的。从下图来看,本项目的缺陷数/KLOC呈一个稳步下降的趋势,不过由于集成测试阶段发现的缺陷较多,我们可以推测本项目在系统集成方面做得并不是很好。项目1的缺陷数/KLOC虽然也呈递减趋势,但在每个阶段的缺陷数仍比较多。项目2则在质量上存在着更为严重的问题,不仅每个阶段的缺陷数较多,而且在系统测试阶段又有略微的上升。由于产品交付后仍存在着较多的缺陷,因而这个项目是不成功的。
4)生产率
通过本方案的实施,本项目不仅在软件质量(缺陷率)上得到了很好的控制,同时在生产效率上也有了较大的提高。
图6 生产率
4 结论
本方案在CMM能力成熟度模型的基础上,结合对日软件外包项目独有的特点,针对其在开发过程中所存在的问题,在保证目标完整性的前提下对CMM中的KPA加以修改和裁剪,同时创新性地对若干KPA进行提炼及合并,提出了基于CMM理论的对日软件外包项目的软件过程方法,并通过在一个典型的对日软件外包项目中的实际应用的数据分析与比较,得出本方案在提升对日软件出口企业软件过程管理能力方面的成效。随着企业开展CMM活动的深入,今后的研究重点将放在CMM更高的成熟度级别在对日软件外包项目的过程管理中的实施应用。
参考文献
[1] Pankaj Jalote. CMM In Pratice-Process for Executing Software
Projects at Infosys. Addision Wesley Longman. Oct 1999
[2] Humphrey, W.S. The Team Software Process. Software Engineering
Institute. Carnegic Mellon University. 2000
[3] 郑人杰,王纬,王方德,蔡愉祖等.基于软件能力成熟度模型(CMM)的软件过程改进——方法与实施.清华大学出版社.2003
[4] 对日软件工程师.东软集团.2003
|