当软件开发遇到“零缺陷”
自打一接触“零缺陷”思想以来,作为GJB5000的推广者,我一直在思考如果把“零缺陷”的思想用于软件产品的质量管理,那么软件的开发效率会有多大的提高,开发和维护成本会有多大的降低。
最初我考虑的是把“零缺陷”质量管理思想中的“防错”的部分应用到软件开发中——建立软件质量问题数据库,每个软件开发之前都从中获取类似软件/模块开发过程中出现的质量问题及应对措施,在软件需求开发和设计阶段就采取措施规避之前出现的质量问题,那么几轮迭代下来,开发出来的软件产品不就可以实现“零缺陷”了吗?
这种想法稍显简单了点。实际上,零缺陷质量管理早就已经有了成熟的实施方案,我将其简化为以下几个步骤:
意识教育
无论多么NB的管理思想,都需要被人真心接受才有可能发挥作用。否则,这些管理制度就只能是“看上去很美”。所以,要让“零缺陷”的思想在软件开发中发挥作用,首先就是要通过质量宣传和教育,让软件开发和管理人员真心拥护它。
政策支持
组织在推进“零缺陷”在软件产品质量上的应用,必须给予政策上的支持。建立相应的管理制度,配套相应的奖惩措施,支持人才的培养和工具的引进等等。
目标设定
组织应明确软件“零缺陷”的目标,比如第一年测试Bug密度达到5Bug/kLOC,第五年达到1Bug/kLOC……
第一次把事情做对
在软件开发过程中,极力推进“第一次就把事情做对”。包括:获取类似历史软件/模块开发的经验教训,在整个软件开发过程中避免同类问题发生;采用各种有效的方法做好需求的开发和确认,确保需求达成一致理解,减少后续的需求变更;做好软件架构设计,确保其健壮、灵活、可扩展;软件详细设计简单、清晰、易实现、易测试;代码编写符合规范,单元测试、集成测试、系统测试有效。
持之以恒
“零缺陷”是质量管理追求的目标,它不可能一蹴而就。“零缺陷”的实现需要在项目中多次迭代,长期坚持才有可能实现。
贵在坚持!
但是,即便短时间内无法达到“零缺陷”,但通过“防错”、“第一次就把事情做对”等方式,软件开发实施“零缺陷”仍然可以显著地提高软件质量。
PS:KK在《失控》中描述了一种软件零缺陷的场景,那就是首先确保构成软件最小的单元是正确的,然后由正确的最小单元进行集成,再确保集成后的大的单元也是正确的……如此反复,直到集成最终的软件产品,那么这个最终的软件产品必然也是“零缺陷”的。
这正是:
软件遇到零缺陷,质量提高看得见
需要组织去支持,坚持迭代多多练
参考书目:软件质量保证和管理,作者:朱少民,出版社:清华大学出版社