一提起软件质量管理,人们的第一反应就会想起CMMI和ISO 9001。然而经过多年的探索,这些曾经被奉为软件质量管理的圣经并未普渡众生,其对提高软件的品质似乎没有奏效,现实和理想差距很远。
本文不对CMM和ISO 9001做过多的评论。只是个人对如何提高项目软件品质谈谈自己浅薄的认识,起到抛砖引玉之效。
企业的根本目的是获取最大利润。因此一切企业活动都围绕这个目的展开。谈项目软件品质也不能离开这个商业目标,而单纯设想如何构造一个完美品质的项目。
品质管理的现状分析:
1、企业的资源不够,忽略质量保障工作,以牺牲部分品质来获取时间、降低成本。
对于项目而言时间、资源、品质总是不可得兼,项目管理者的目标也是参考项目各干系人均衡这三者。对于一个企业来讲,当一个项目合同签订下来,截止时间就确定。因此针对项目而言时间是一个常量。剩下的就是资源和品质,要提高品质就意味要投入资源。假如在无须提高品质的条件能拿下项目,多投入资源就等于利润减少(这是比较短见的认识)。因此可怜的品质总是在最低水平线处徘徊。
2、没有一个明显的软件品质度量,投入资源不能立竿见影。
软件质量属性包含很多,健壮性、可靠性、性能、安全性、可扩张性、易用性等,而影响这些因素的内在原因却是深厚的技术积累和良好的管理流程,甚至可涉及到企业文化层面,不是一朝一夕可见效。针对不同的客户对软件要求不一样,比如有些要求易用性,要求将所有的操作都可以在键盘完成,不要使用鼠标;有些要求系统的性能良好,具备良好的优化功能,承载大用户量。而这些都没有一个统一的标准来衡量,以主观为主,因此资源的投入具有风险。
3、企业对质量管理的关注程度不高。
因为单个项目的质量高低不能直接给企业带来利润,企业的出发点更多从功能上满足客户的需求即可,相对更看重销售部、研发部。没有站在长远的角度和建立良好品牌效应上分析。软件质量保障,需要投入人力资源和时间资源,加大项目短期的成本。
4、软件质量人员缺少发展的土壤。
由于社会环境和企业的认识如此,就缺少了质量人员成长的土壤。如果项目取得成功,主要功劳都归功项目经理和开发人员,质量人员被边缘化。一旦项目出现了问题,质量人员却负有不可推卸得责任。而且质量人员是对软件来“挑刺”,里外不讨好。因此有“志气”的人都不愿意干这活。企业一般也就是用测试人员来承担质量管理工作。
5、能真正做好软件质量保证的能力要求高,合格的质量管理人员稀缺。
能控制一个项目的产品质量,至少要求具备以下的基本能力:能顺利从需求规格说明书中提取软件质量的关键点;能站在客户的角度分析软件产品;能对项目管理有较好的把握,在项目流程和项目进度上进行监督;有必要的技术背景,对存在的问题给出建议;能展开测试工作和测试汇报。
如何正视品质问题分析
然而客户总是挑剔的,没有谁会因为企业质量保证不容易做好而接受一个质量恶劣的软件产品。相反,在这个一切从客户需求出发的时代,服务不好客户就意味着被淘汰。因此在软件质量方面上进行解套,对于企业发展壮大有着重要意义。中小企业软件质量保障环境如上分析,依据这个环境企业如何正确对待提高软件质量这个问题呢?
1、针对中小企业的具体发展阶段来正确看待软件质量。
中小企业在不同的发展阶段有不同的战略目标,在前期,市场业务的拓展和技术能力的积累首当其冲。正如马斯洛的需求理论一样,当企业处于温饱边缘时,它的目标就是拓展业务以及通过技术积累来更好的拓展业务。在这个阶段企业对软件的质量需求自然就是以满足功能的要求为标准。在该阶段由开发人员和测试人员共同来控制软件的产品质量。
然而当企业处于发展阶段,它所面对的竞争对手就不在是“小米加步枪”,应该是行业中有一定声誉的企业,为了建立一个良好的企业形象,加入“正规军”行列,软件的品质就不仅仅是体现在功能的层面,更多的体现在产品质量的稳定性、可靠性。可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法改进软件质量。但更重要的是对软件质量和测试的思想观念正确树立。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。
2、不要盲目追求有关软件质量标准,建立适合自己企业环境的质量保证规范。
“质量保证(标准)并不能保证质量,它是一个美丽的谎言”。软件质量保证的目标是为管理者提供当前软件项目进行过程与最终产品的可视性。即使过程达到既定的规范,未必就能使产品质量达到要求。重要的是人按照适合自己的可执行规范来跟踪和度量生产过程和产品。规范只有形成良好的执行效果,才是质量保障的出路,否则就是一纸空文。
3、提高软件质量要循序渐进,会涉及到流程再造,不是短期行为,不可一蹴而就。
影响软件产品的质量因素众多,有客户需求,过程控制,文档规范,组织结构以及对质量控制的态度等多种因素。通过企业的实践与相关的软件质量标准结合,规范软件人员的行为。只有在各种规范都融合到人的行为中,规范才有作用。而要让人的行为发生变化,有两种途径:改变人的思想,让思想来指引行为;多次重复相同的行为。这个过程是一个系统而复杂的过程,会涉及到企业的流程改造,甚至企业文化调整,需要仿佛的磨练和重复。因此要提高软件质量不只是质量人员和测试人员的事情。与项目相关的人员,从高层到基层都要对软件质量负责。
4、软件质量不良,会给项目带来巨大的风险和潜在客户流失。
不成熟的软件产品是把测试成本交给了用户:企业往往是出于项目周期安排不当,项目周期紧,缩减专门测试的时间,或者匆匆完成编码设计就将产品交付使用了。不要因为时间紧而放弃软件质量保障工作,否则后果自然是用户觉得产品漏洞百出,项目执行过程也遥遥无期,最后,项目双方都筋疲力尽,用户觉得受骗,而企业则毁了声誉,流失潜在客户,失去竞争力,追加大量项目实施费用,可谓是“赔了夫人又折兵”。
纵上所述,软件质量的提高是一个系统而复杂的过程,需要企业根据自身的能力作出不同的软件质量策略,质量的提高需要付出代价但会给企业带来巨大的隐性价值。软件质量提高了一点面对的风险就会降低一点,这是一个不变的真理。
如何提高软件品质分析
前面从意识形态的角度分析了如何提高软件质量。下面将结合上文的分析,从行为准则、执行控制这两个层面继续阐述如何在资源不充足而又急需提高软件质量的矛盾中进行解套。
一、行为准则
1、做好需求调研分析和分析设计(如何做好需求分析设计是另外一个主题,在此不深入)。
需求分析和设计是后继工作展开的基础,没有好的基础,软件质量保障就会形同虚设。从测试的角度来看,设计文档比需求规格说明书更重要。测试用例与需求规格说明书用例对应,但是用例的具体描述,逻辑处理,输入和输出在设计文档中描述的更加详细。测试的依据更多来源于设计文档。在人力不足的情况下,如果测试人员熟悉设计文档,设计文档可以直接替代测试文档使用。测试人员如果直接使用需求规格说明书或者没有测试文档进行测试,将费力不讨好,只能找出一些低级的错误,一旦系统上线再发现系统的漏洞百出,那就专门分派技术专家(一般人是不行的)给客户调整数据吧,这就是一个最简单的因果关系。
2、为了能让测试人员减少熟悉系统需求的时间,在调研后的需求评审会议强烈要求有测试人员参加。
测试人员通过评审会议应该要了解到系统的核心模块是哪些,并给项目经理提出测试时间和测试方面的建议。测试人员在需求评审会应该关注的内容和如何提问问题,会有另外的专题来分享。
3、对在开发过程中需求变更或者设计调整,项目经理要及时将变更情况告知测试人员,或者让测试人员参加变更评审。
保证测试人员头脑中的系统模型是最新、最完整的。如果测试人员拥有良好的系统信息,就可以主动测试,对质量保证非常有帮助。如果发现软件少了功能,或者多了功能,都要报告项目经理,并在测试报告中做好记录。
4、相关人员要重视文档的书写,这是软件质量提高的前提。
项目经理和开发工程师在系统设计阶段完成系统设计文档,测试人员可根据情况来选择什么时间完成测试用例,用例完成时尽量协调开发参加评审。
5、尽早测试,连续测试。
在整个项目过程中合理安排时间,在此给出一个参考指标:需求调研、分析设计40%,开发实现20%,系统测试30%,实施10%。测试应该循序渐进,不要企图一次性干完,因此尽量将测试时间提早。
二、执行控制
1、规划测试汇报对象,提高质量保障(测试)地位。
质量人员、测试人员要对软件质量负责,当然就要有相应的权利,对软件质量的评估要有适当的话语权(不建议强求绝对话语权)。如果质量人员(或者测试人员)在前期对项目软件有一个整体而细致的了解,就可以对项目过程进行监督,或者提出建议。一旦发现项目与预期有差异情况,如软件实现与设计有出入、实现偏离用户实际业务等,就要将情况汇报给项目经理。项目经理应多听取质量人员的汇报,以尽量客观的项目进展对项目作出决策。汇报流程对于质量控制起着关键性的作用,很多质量问题都是因为沟通不到位引起的。
2、建议上线前项目组召开项目进度评估会议。如果评估项目软件不合格,则要采取紧急预案,做一些补救。
3、一个项目至少要有一个质量人员(或者测试人员),从开始需求分析至项目测试完成,全程跟踪。
只有这样对项目的进度监督,质量控制才会有效。要达到这个要求,质量人员要提高自身的素质。在质量人员力量薄弱的情况下,需要协调其他资源(比如第三方)来控制。
4、项目经理对整个项目是最清楚的,要划分好各个阶段的工作任务和花费时间,充分考虑软件质量问题可能给项目实施带来的困难,对软件质量负有全面的责任(有关项目经理职能在此不深入探讨)。
总结
本文分析了软件企业在产品质量上的现状和应对措施。针对项目管理中的质量管理,本文涉及到只是冰山一角。企业如果要真正做好质量保证,一是改变软件质量观念;二是制定适合自己质量规范;三是执行好规范,在执行中完善规范。