诗的功夫在诗外 - CMMI5000八个领域里的新思路

Donald Reinertsen是我敬重的一位产品大师,他写的三本书都极大引发了我的共鸣。虽然他专注的不是软件,但其所提出的创造新产品开发的原则与实践,特别是在不确定开发环境下“FLOW”的管理方法,堪称解决一些软件开发问题的灵丹妙药,为新一代精益软件开发提供了一套系统的方法论。这里给大家简单介绍几个貌似和软件工程、CMMI不相干,但其实能给我们带来创新启发的领域。
T1
经济学
软件度量做得差的最主要原因一般都是没从经济角度考虑问题。如果没有把开发周期、软件产品成本、开发成本、产品价值、风险等相关联的变量整合在一个经济框架内,开发过程的重要决策自然不会基于经济指标。所谓经济指标无非就是哪种选择会让经济价值最大化。想当然的替代指标显然不会引起决策者重视的,度量数据没人真正使用一点不奇怪。
经济学可以帮助我们建立CMMI/5000高成熟度框架,可以纠正高成熟度的一个突出问题:那就是过于片面的强调减少变异(variation),而非通过控制变异(variation)使价值最大化,尤其是在不确定开发环境下。
CMMI 2.0对价值追求的强调,给经济学融入软件开发提供了一个极好的机会。
统计学
统计思维在软件开发中的应用是CMMI高成熟度的一个要求,统计技术给理解和有效管理过程变异提供了丰富的工具。
统计学和经济学的结合可以让我们把关键过程变异指标和经济指标紧密结合,这也是统计技术如何有效用在软件开发中的关键考虑。我坚信统计学必定会在软件开发和质量控制中大放异彩。
近十年来,我一直强调统计技术在软件中的应用必须跳出六西格玛的框架,我很认可Donald Reinertsen的观察:六西格玛强调的是随机变量,它可以帮助我们理解、管控重复的生产和制造流程。而在产品开发(软件开发)领域,我们面对的却是随机过程。相信CMMI圈子里,其实也有不少人意识到这一点。有机会我会在CMMI研究院年会上进一步指出这个问题,并给出改进建议。特别希望能看到升级后的5000,在高成熟度方面有所突破、创新。
队列理论
这是一个被软件工程,CMMI/5000严重忽略的领域。一直以来,软件开发仅强调提升效率(实际做事时间:需求分析、设计、开发、测试等),却完全不看等待时间。整个开发周期是所有处理时间和等待时间之和,无论你用敏捷还是瀑布,无形的等待队列在开发过程中比比皆是。队列理论建立了明确的资源使用率(如人员饱和程度)和等待时间的量化关系,提供了缩短等待时间的分析手段,这是缩短开发周期高性价比的有效做法。
队列理论已成为新一代精益软件开发的重要理论基础。
精益制造
精益方法是丰田的重大贡献,也是软件精益看板的重要来源。由于制造业的经济价值和软件开发的经济价值有根本的不同,在将其应用在软件开发过程时,我们需要充分考虑二者的差异并做出调整。
计算机操作系统
操作系统曾是我爱教的一门课,其各种资源(如CPU)调度算法(Scheduling Algorithm)是我最喜欢的教学内容。对同时支持多个系统维护的软件团队来讲,合理的任务排序是至关重要的管理活动。固定的人员,不可预测的任务源源不断,拍脑袋或先到先做(FIFO– First in First out)的调度方式都不可能合理。软件团队面临的是混合优先级的工作流(mixed-priorityworkflow),经过验证的操作系统的调度方法能让我们做到CMMI2.0讲的“Do more with less”.
T2
控制工程
在不确定的软件开发过程中,及时调整能力是项目成败的关键。这就要求我们及时收集、分析反馈,这是一个动态过程。反馈科学不是我们想象的那么简单,而这恰恰是控制工程领域的强项。软件开发过程经常是以月甚至年为单位的,这就给控制工程领域的反馈实践的应用提供了用武之地。
互联网
在极不稳定复杂环境下管理流量,互联网做得最为成功。如果你认真研究下互联网的通信协议,它在控制Batch Size和WIP方面有许多可借鉴的精妙做法,如“Sliding Window Flow Control”方法等。这些方法也被新一代精益软件所借鉴,让开发流(flow)顺畅的跑起来。
战役学
估计任正非和Donald Reinertsen应该不相识,但他们许多理念高度一致,正所谓英雄所见略同。两人都有军事背景,都把先进的战役理念用在产品开发中。战争充满了极大的不确定性,机会稍纵即逝,能及时适应者往往是胜利的一方,这和软件产品竞争场景如出一辙。一方面需要下放决策权,保证及时调整适应变化的,同时把控好全局,这里面有很大的学问。战役学给出了许多很实用、有效的方法,Don在其书中用了一整章做了详细的阐述,如果你熟悉网上流传的任总内部讲话,也会看到华为的应用实践。
我以一个软件过程改进从业经验多年的老大爷身份给大家的建议是:诗的功夫在诗外,CMMI的功夫在CMMI外!如果想在软件工程、CMMI的应用方面做出些有价值的东西,不能把自己仅仅局限于CMMI的几百条实践里,那只能做些评估驱动的改进。更重要的是要深入掌握、借鉴相关和其他领域的方法,充分发扬拿来主义,从而打造更广更深的天地。(来源:老丛讲桌)

发布了2 篇原创文章 · 获赞 0 · 访问量 2440

猜你喜欢

转载自blog.csdn.net/ipmc2017/article/details/104814466