一边是某咨询公司在项目管理培训中宣讲:“CMM2级企业不适合实施6sigma,应该等到CMM4级之后,度量体系比较完善时再进行。”一边是2004 年世界软件工程大会上,各国专家达成共识:“CMM/CMMI与6sigma能够结合,互相促进”。我们怎么办?我以前主张:争执暂放一边,抓紧时间边实践边改进,否则结果就很可能是:“我们在进步,但是我们与竞争对手相比更加落后。”有些同事接受了我的看法,于是又有一问:“你有没有在软件中实施 6sigma的成功案例?”6个月前我还没有,但是现在我有了几个典型案例,它们各具特色,让我们在此一一分享。
一、6sigma能帮助解决软件技术问题吗?
第一个项目是在去年年末,参加一个事业部的6sigma优秀项目发布会看到的。项目名称是《XX网管系统提高告警吞吐率》,问题是在大量告警上报时, UNIX服务器的告警处理吞吐率仅为8条/秒,同时占用CPU达90%,导致其它模块的操作基本上不能进行。用户对此非常不满,要求我公司尽快解决此问题,提高吞吐率到至少48条/秒,而系统成本不能有较大幅度增加。如何解决这个问题?一个解决方案是提高硬件的配置,从而提高处理性能,但是这样做会大大增加采购成本,而性能并不会有极大的提升,实际上降低了产品的可销性,这样的投入收益比极不合算,此方案被拒绝。项目组在花了大量时间和精力,仍然寻找不到合适的解决办法之后,想到了6sigma。大家知道,6sigma项目的选择就是那些“难度大、影响力大”的问题,于是这个项目组的成员将此问题立项,期待6sigma能在黑暗中带来曙光。
除去定义与测量阶段,此项目的分析思路是这样的:首先是头脑风暴鱼骨图,罗列所有大家能想到的可能原因;然后将这些原因按照告警的逻辑处理流程组织成 FMEA,进行RPN分析,筛选出RPN值大于100的少数因素,作为潜在的关键因子;之后对这些潜在因子逐一试验,进行确认。整个项目的突破就出现在第一个因子的试验中,其试验数据如图1所示,横坐标表示输入的告警流量,纵坐标表示告警处理延时。图中的曲线显示有周期性的拐点,而在拐点之后,告警流量增加,服务器的处理延时反而有较大的降低。这个现象如果没有针对此原因的试验,没有这些数据是无法看到的。分析这个现象的原因,难不到我们的软件工程师,很快就得出了结论:TCP协议参数设置不当。修改此参数后,重新做同样的试验,得到数据如图2所示,可见其告警吞吐率基本上与输入流量呈线性关系增长,瓶颈已经消除。这不仅仅是确认了此因子是关键因子,同时也验证了改进措施的有效性。另外几个因子也是类似的,通过针对每一种可疑因子的试验,或确认此因子为关键因子,或筛选影响不大的因子;然后针对每个关键因子寻找技术上的解决办法,就更不在话下了。此项目的成功为公司创造了每年166万的收益。
回顾这个项目,又应验了一句老话:“解决难题经常是99%的努力在于寻找关键原因所在,而修改只需要1%的努力。”6sigma本身并不提供技术解决方案,但是它的思路引导我们向着正确的方向迈进,而数据是保障我们方向正确的重要依据。此项目虽然是软件项目,但是问题本身Y是可以清晰度量的,这也是它能够适应6sigma特色,得以成功的一个原因。
图1 某项目针对关键因子一的告警处理流量试验数据图
图2 某项目修改了协议参数后的告警处理吞吐率图
二、主观判断的结果有说服力吗?
这个案例是黑带项目《降低异常代码故障率》,它从CQ分析的主要故障类型之一:异常代码故障率居高不下而来,这体现出负责人主动从失误中学习和进步的精神,也给很多仍然为找不到合适项目的同事一个启示:CQ库是一个很方便的项目宝库。
此项目对于故障分类的测量系统分析,是离散数据做测量系统分析的典型。在研发过程中,我们经常遇到“只可意会不可言传”的情形,大家都是主观判断“拍脑袋”,这样的分析如何具有说服力?主观判断不等于拍脑袋,这个项目可以作为参考,感觉上的东西通过制定一定的准则,能够将大家的主观判断达到基本一致和准确的标准。以下摘自此项目负责人的总结文章:
在确定了故障的分类规则后,对于故障进行分类,对于同一个故障不同的研发人员分类可能出现不同的结果。出现这种问题可能是有两个原因:(1)故障分类的标准还不够明确,参加故障分类的研发人员对于故障理解不同。(2)参加故障分类的研发人员没有能力按分类标准对故障进行分类。解决的办法是在故障分类前进行测量系统分析,确认故障分类标准是否已经明确,参加分类故障的研发人员是否具备了故障分类能力。
文章来源于领测软件测试网 https://www.ltesting.net/