来源于:http://www.csairk.com/user/xch/from.asp?id=482&wh=201212
在考虑如何提高产品质量前,我们需要明白什么是产品的质量,对于很多从事软件开发或者互联网开发的工程师或者项目经理来说,第一反应估计应该是:“产品的质量就是产品的缺陷率”。这也无可厚非,这帮哥们都让绩效考核、KPI跟折腾的。其实真正的产品质量应该和用户满意度画上等号。考量一个产品是否满足质量要求应该就是考量的一个产品是否满足用户的要求,当然这里的用户是一个逻辑的概念,指产品的典型目标用户。
所以要提高产品质量就是要提高产品的用户满意度。这是一个系统的工程,涵盖了产品设计,产品开发的所有阶段和方方面面。基于时间和篇幅的考虑,本文只想对软件本身的质量来进行讨论。
一:软件的质量是规划出来的,而不是测试出来
个人认为,项目的计划阶段已经决定了软件的质量。很多项目人员和项目经理一直对做软件的开发计划异常的不理解,认为在软件的过程种各种风险发生的可能太大,计划永远都跟不上变化。而我认为,这里的软件开发计划并不仅仅是一个时间计划。而是让项目经历在计划的过程种综合考虑项目的实施的各个方面,包括范围,进度,质量,风险等,从而形成一份包括进度计划,质量保证计划和风险计划的项目管理计划。在这里根据项目的情况,这些计划可以不以书面的形式来进行体现。然而项目经理一定要经过充分的思考和规划。
为保证软件产品的质量,项目经理在这个阶段要考虑的因素包括但不限于如下各个方面
1:定义项目的质量目标,这些指标包括功能指标,性能指标等等。项目也可以根据公司的情况为各个研发活动定义质量目标。比如设计阶段的Bug检出率等等。质量目标是基于,质量保证活动都要依据目标进行建设。
2:项目采用的软件开发流程。采用什么样的流程取决了公司的标准流程和裁剪规范以及软件项目的难以程度。在这个研发活动中项目经理需要根据自己的经验判断项目需要的质量保证过程。比如是否需要引入单元测试,是否需要测试用例等等。
3:项目的三要素的平衡,我们之前说过,产品的质量=产品的用户满意度。所以对不同的产品用户的满意度是不同的,比如电信产品的质量要求和互联网产品的质量要求是不同的,项目经理需要能够根据产品的用户满意素来决定在项目的三要素之间来进行平衡。
4:项目的质量保证计划,这个研发活动应该是SQA的职责,但是很多企业都没有设立这个职位,在没有这个职位的时候,默认应该由项目经理来承担这个职责。项目经理要根据之前定义的项目目标来定义质量保证活动和质量保证计划。项目质量保证计划需要依据项目定义的软件开发流程,是对软件开发流程种质量活动的更详细的定义。
不管你采用的CMM还是敏捷的软件开发,以上活动都需要进行,只不过进行的复杂程度和研发活动的交付不同罢了,最基本的要求是项目经理要在自己的脑子里面考虑过以上事情。
从管理上来说“软件的质量是规划出来的,而不是测试出来”讲的是流程。决定软件产品质量的另外一个关键要素是人。这里的人包括了技能这个要素。在网络上关于CMM和敏捷开发的讨论层出不穷,基于我对它们的极端的理解。CMM强调的是流程。流程为王。而敏捷开发更多的是强调人的作用。当然这是一个极端的理解,它们的区别主要体现在侧重点的不同上。
二: 产品是人做到的,所以产品的质量完全取决于产品的开发人员
然而对人的管理是一门艺术,要远复杂与一切流程和规范。所以这部分技巧的整理是一个难题,有点只可意会不可言传的味道。再这里我只能做一个粗层次的介绍
1:建立团队文化
建立团队文化非常的重要,因为重要所以也比较难以建立。你要提高产品的质量,首先要在您的团队里面建立一种负责任的团队文化,这只是其中一点,也是最重要的一点。
2:提高团队的技能,建立学习型组织
培养下属永远是一个Leader的主要职责,您需要通过努力把您的团队内建设成为一个学习型的组织,进而形成进取的团队文化,如何建立学习型组织请参考:
总之,如果您要提高您的产品质量,你可以从两方面下手,第一:建立一套合适的产品开发体系,可以参考IPD 。第二:进行团队建设,建立高效能的团队。