热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

软件研发的6sigma案例解析(转)

软件研发的6sigma案例解析一边是某咨询公司在项目管理培训中宣讲:“CMM2级企业不适合实施6sigma,应该等到CMM4级之后,度量体
软件研发的6sigma案例解析
一边是某咨询公司在项目管理培训中宣讲:“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特色,得以成功的一个原因。

200467100650.jpg

图1 某项目针对关键因子一的告警处理流量试验数据图

200467100719.jpg

图2 某项目修改了协议参数后的告警处理吞吐率图

二、主观判断的结果有说服力吗?

这个案例是黑带项目《降低异常代码故障率》,它从CQ分析的主要故障类型之一:异常代码故障率居高不下而来,这体现出负责人主动从失误中学习和进步的精神,也给很多仍然为找不到合适项目的同事一个启示:CQ库是一个很方便的项目宝库。

此项目对于故障分类的测量系统分析,是离散数据做测量系统分析的典型。在研发过程中,我们经常遇到“只可意会不可言传”的情形,大家都是主观判断“拍脑袋”,这样的分析如何具有说服力?主观判断不等于拍脑袋,这个项目可以作为参考,感觉上的东西通过制定一定的准则,能够将大家的主观判断达到基本一致和准确的标准。以下摘自此项目负责人的总结文章:

在确定了故障的分类规则后,对于故障进行分类,对于同一个故障不同的研发人员分类可能出现不同的结果。出现这种问题可能是有两个原因:(1)故障分类的标准还不够明确,参加故障分类的研发人员对于故障理解不同。(2)参加故障分类的研发人员没有能力按分类标准对故障进行分类。解决的办法是在故障分类前进行测量系统分析,确认故障分类标准是否已经明确,参加分类故障的研发人员是否具备了故障分类能力。

对于故障分类进行的测量系统分析可采用离散测量系统分析。进行离散测量系统分析的基本步骤为:

1、 在需要分析的故障中随机抽取30个故障。
2、 多个开发经理按故障分类标准共同确定每个故障的分类结果。(作为“真值”——本文作者)
3、 让参加故障分类的研发人员按故障分类标准进行分类。(作为“测量值”——本文作者)
4、 一周后,让参加故障分类的研发人员重新按故障分类。
5、 进行离散测量系统分析,确定故障分类的准确性、重复性和再现性。

如果通过测量系统分析,发现故障分类的重复性有问题,同一个研发人员对于同一个故障的判定结果不相同,则一般是研发人员自身素质的问题,采取的措施是需要加强对分类标准的学习。如果不同研发人员之间的再现性有问题,则一般是由于分类标准不明确造成,需要进一步明确分类标准。若重复性、再现性都符合要求通过,基本可以保证故障分类的标准定义是明确的,参加故障分类的研发人员的技能已经符合要求。

实际上这种测量系统分析的方法并非第一次使用,去年我们研究所的一个绿带项目做法极其类似,其原理如图3所示。

200467100801.jpg

图3 某绿带项目的测量系统分析原理图示

这是一种典型的离散数据MSA的案例,在展示时,不少研发人员很吃惊:“原来MSA是可以这样做的”,或者“原来是可以这样得到量化数据的”。有很多人总是说研发过程中的数据量化不足,所以不适合做6sigma项目。其实不是6sigma不能用于研发领域,而是很多时候是我们没有找到正确的方法而已。所以多思考、多动手,这个从小老师就教我们的话,在工作中一样适用。

三、如何提高执行力?

记得前不久一位领导说:“我们公司从来不缺好的策划,我们缺的是好的执行。”软件中的问题有些就是执行的问题,如规范的执行不严格,流程不合理等等。有人会问:“如果解决方案就是执行的问题,可以依据其影响力选择合理化建议,或者团队项目来解决,并不适合做6sigma项目。”实际上,一来6sigma项目在开始时并不知道关键因子是什么,二来执行也不简单,知道和做到是两码事,正如一个黑带所言:“听到你会忘记,看到你会记住,做到你才会明白。”

言归正传,这个案例是另一个黑带项目《提高功能测试仪的软件研发效率》,研发效率的定义为单位软件的软件开发和维护人力成本。这个项目的特点首先是非常细致,每一个步骤都按照6sigma的思路、方法完整、清晰地描述,可以作为初学者的样板指导。然而对我而言,它更加重要的特点是它强大的执行力。在分析阶段,已经确认了三个关键因子:

1. 模块化程度不高;
2. 接口文档不规范;
3. 系统部、软件部、硬件部沟通机制不健全;

为了解决第一个问题,此项目提出建立10个模块的目标,而目前它只有3个模块;为了解决第二个问题,需要建立接口文档的模板,但是更重要的是得到使用者的认可和操作;而第三个问题更是需要三个部门的最高长官——部长来亲自沟通协调解决。以上这些,这个项目都做到了!怎么做到的?看看他的团队成员,有研究所的所长,一个产品总经理,三个相关部门的部长,还有相关的所有科长、开发经理,以及部分开发人员,这样的团队架构,还担心解决方案得不到执行吗?

案就是这么简单,每个项目负责人都需要慎重选择您的团队成员,力争让每个人各尽所长。团队中需要各种人员:首先是各方客户代表,然后是善于分析者,善于操作者,善于协调者,以及流程主管或组织负责人等等。记得以前有个项目,成员基本上都是项目经理,这样的团队沟通倒是通畅了,可是说到做具体的事情,大家都没有时间做,项目怎么进展呢?最后只有取消。想想有多少项目在到达终点之前倒下去,少有找不到解决办法的,但是做出来的方案无法兜售给使用方,从而不能达到项目目标,这倒是常见。为什么?多数是因为团队中没有使用方的代表,强加的东西谁都不喜欢。

也许有人会讲,其实说到执行,就是要把领导拉进来,搞定了领导,让领导出面推进执行和追踪,就一切OK了。这话不对,因为我们不可能把领导搞定的,只会是领导把我们搞定:选择项目一定要把握领导最关心的问题;即使不是最关心的,也要是在他的问题列表中位于前列的问题。如果你要做的就是领导非常想解决的问题,那么邀请他加入项目团队,请他做一些追踪工作自然顺理成章;然而如果选择的课题,在领导问题列表中远没有排在前列,让他分散精力,同时消耗他的资源来做事,他自然不肯。这就是目前我们强调自上而下产生项目的原因。目前,我们公司在一定程度上还是人治的社会,承认这个现实,并且主动调整我们的做法适应现状,才是做事的明智之举。

以上是我近期收集到比较典型和成功的软件6sigma项目。然而我不得不承认,在公司已经完成的上千个项目中,软件项目仍然是占非常少的比例。如果是因为没有成功的案例,影响到大家的信心,或者不知道怎么入手来做,希望本文能够为大家提供一些参考。CMM/CMMI与6sigma的结合和互相促进,在双方领域内都是新课题,还有很大的拓展空间。目前我们公司也有不少黑带身处EPG,选择的项目正是这个新课题。一年之后,我们再来回顾,希望能有更大的突破,让我们也在6sigma的历史上留下光彩的一笔。

参考资料:
《让失败成为成功的母亲》,徐金炉,2004-3。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7942439/viewspace-21412/,如需转载,请注明出处,否则将追究法律责任。


转载于:http://blog.itpub.net/7942439/viewspace-21412/


推荐阅读
  • 想搭建一个能够稳定支持每日500万页面浏览量(PV)的网站架构吗?了解500万PV的实际意义,以及如何计算服务器需要处理的并发请求量,是成功构建高效架构的关键。本文将从基础概念出发,深入探讨实现这一目标所需的技术细节和策略。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文详细介绍了如何利用Go语言和WebSockets技术构建一个高效的实时聊天系统。随着网络应用的日益复杂化,实时交互成为了提升用户体验的关键要素之一。通过本指南,开发者可以学习到最新的技术和最佳实践。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 三菱PLC SLMP协议报文详解
    本文详细解析了三菱PLC中使用的SLMP协议报文结构,包括其工作原理、通信流程及报文格式,旨在帮助工程师和技术人员更好地理解和运用这一协议。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文将详细探讨 Linux 系统中的 netstat 命令,该命令用于查看网络状态和连接情况。通过了解 IP 地址和端口的基本概念,我们将更好地理解如何利用 netstat 命令来监控和管理网络服务。 ... [详细]
  • 多核处理器技术的显著进展可追溯至IBM于2001年推出的双核RISC处理器POWER4,标志着服务器处理器迈入多核时代。随后,HP和Sun等公司也纷纷加入这一行列,推动了多核处理器在不同领域的广泛应用。 ... [详细]
  • 在系统运维类别中,了解如何通过邮件和RSS订阅博客更新,以便第一时间获取最新内容。 ... [详细]
  • 本文详细对比了Windows 7家庭高级版与旗舰版之间的主要区别,包括技术支持期限、硬件兼容性及特色功能等方面。 ... [详细]
author-avatar
搁浅几世琉璃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有