提起软件质量管理,人们更多地会想起ISO9001、CMM、CMMI这些“质量管理圣经”。但国内企业做了这么多年的质量认证,却没有使软件质量有大幅度地提高。实际上,很多企业通过ISO9001、CMM、CMMI等质量认证的目的就不是为了提高质量:有的企业是为了跟风,有的企业则是为了向客户展示证书。
在很多软件企业里,软件质量管理在内部开发产品时做的相对较好:因为产品开发通常在各个软件企业的研发中心进行,涉及的人员以内部为主,进度压力相对较小,可以投入时间和精力来开展软件质量管理。对于有客户进行参与的软件实施项目,多数企业为了节省成本和赶进度,往往会忽略质量管理,最后导致软件质量很差——投产后的软件经常会被用户发现很多Bug。实际上,在项目实施中开展质量管理工作更加重要,因为产品上线后的质量问题往往意味着更大的投入。本文将和读者一起探讨软件项目实施中如何开展质量管理工作。
1. 质量管理主要内容
在探讨项目实施中开展软件质量管理工作前,我们先回顾一下质量管理的基础知识。质量管理主要包括三个过程:质量计划制定、质量保证和质量控制。
质量计划:是质量管理的第一过程域,它主要指依据公司的质量方针、产品描述以及质量标准和规则等制定出来实施方略,其内容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。
质量保证:是贯穿整个项目全生命周期的有计划和有系统的活动,经常性地针对整个项目质量计划的执行情况进行评估、检查与改进等工作,向管理者、顾客或其他方提供信任,确保项目质量与计划保持一致。
质量控制:是对阶段性的成果进行测试、验证,为质量保证提供参考依据。
在软件实施项目中,质量保证对应于技术评审与过程检查,质量控制对应于软件测试等工作,如图1所示。
图1 全面软件质量管理模型
2. 项目中质量管理的原则
在软件项目实施中,由于进度和成本两大因素的影响,它的质量管理与产品开发有着很大的差别。因此,在项目实施中做好质量管理工作应该坚持自己的原则。
我们先看一下国内企业实施软件项目的一些特征:
“进度高于一切”可以说是国内企业实施项目的最大特点,而“为了短期利益不惜愚弄客户”、不重视质量、喜欢追究责任则成了这道“靓丽”风景上的点缀。回顾国内很多IT热门领域,可以发现多是大家看好某个领域后就会“一哄而上”,然后进行低价为主的恶性竞争,结果是搞得自己没有能力来重视质量,而为了生存,还要拼命的加班赶进度,最后形成一个怪圈。可以说在很多IT领域,国内软件企业为自己精心打造了无数个这样的“怪圈”。
国内的企业要想挑出“怪圈”,最根本的办法是从源头做起:即从项目一开始就开始重视产品质量,因为质量是根本,好的质量加上好的服务才能拥有更强的市场竞争能力。同时也应该认识到质量、进度、成本是相辅相成的,决不可以忽略任何一个方面。过分重视质量,必然会耽误进度和加大成本投入,甚至会失去市场机会;过分节约成本、抢进度又会降低质量,质量不好的产品肯定不会在市场上走多远。
根据作者多年的经验,IT企业要想在软件项目实施中做好质量工作,应该坚持下面几个重要的原则:
·不但要主观认识到质量的重要性,同时还要落实到行动中。
软件质量管理的重要性已经逐渐被国内的IT企业认可,但是要落实到具体的项目实施工作中,并通过它提高软件质量,还有一段很长的路要走。因为几乎所有的软件公司都灌输着“进度高于一切”的思想,只要是为了赶进度和发布产品,所有影响进度的工作都可以忽略。
因此,把想法落实到实际工作中是做好软件质量管理的第一原则。
·树立提高质量就是尊重客户的思想。
可以说,目前很多公司都有“愚弄客户”的嫌疑,不管是有心的还是无意的。很多公司实施项目时只要能拿到“钱”就达到目的了,因此也就不在乎是否掩盖缺陷和敷衍客户。至于后果,那是以后的事情了。
在软件产业发达的今天,已经是客户的买方市场,客户永远会选择质量和服务都表现良好的产品来满足自己的需求。因此,我们应该尊重客户,把客户放在“上帝”的位置上,认证做好质量。
·建立规范的质量保证体系,逐步使软件开发进入良性循环状态。
在没有开发规范的前提下,软件团队是不能开发出高质量软件的。因此软件团队一定要建立规范的质量保证体系,同时把规范体系逐步落实到工作中。如果急功近利,不但会做很多浪费人力和物力的无效工作,还会给客户留下不好的印象。
3. 项目中质量管理开展方法
要想在项目中开展质量管理,就不能脱离中国软件企业实施项目的现状:工期短、任务重、利润低。在这种背景下,开展全面质量管理是不太现实的,只能根据每个项目的进度和成本实际情况来进行合理的投入,否则质量投入过大不但耽误进度,还会影响到企业利润,这是本末倒置的。在项目实施中,通常是最大限度地去提高质量。
在图1的全面软件质量管理模型中,我们可以看出质量管理有三大类:技术评审、过程检查、软件测试,项目实施中的软件质量管理仍然围绕着这三类工作来开展。由于很多项目实施中没有专门的质量人员,这个时候项目经理应该更多地去组织技术评审和安排人员进行过程检查,可以考虑让软件测试人员承担一些质量保证工作,因为测试人员通常是必不可少的。
下面探讨一下每类工作如何开展。
·项目实施中的技术评审
技术评审可以把一些软件缺陷消灭在代码开发之前,尤其是一些架构方面的缺陷。在项目实施中,为了节省时间应该优先对一些重要环节进行技术评审,这些环节主要有:项目计划、软件架构设计、数据库逻辑设计、系统概要设计等。如果时间和资源允许,可以考虑适当增加评审内容。
项目实施中技术评审如表1所示:
表1 项目实施中技术评审
表1 项目实施中技术评审
|
很多软件项目由于性能等诸多原因最后导致失败,实际上都是由于设计阶段技术评审做的不够。一味地节省时间、关键工作仅由某几个人执行、整个项目的成败依赖于某些“个人英雄”等做法是十分错误的,重要的技术评审工作是不可以忽略的。
·项目实施中的过程检查
项目经常延期是中国软件企业实施很多项目时候的特点,因此项目实施中的过程检查重点是“进度检查”。在实际工作中,很多项目都是启动一段时间后就开始不停地加班,使整个团队处于疲惫状态,导致工作效率低下,最后把项目计划丢在一边。对于这种情况,比较好的做法是不断地检查项目计划与实际进度是否存在偏差,如果存在偏差则找出问题的根源,然后消除引起问题的因素,例如可以调整进度安排或者增加人力投入,这样就避免了问题不断放大。
版本检查在项目实施中也需要特别注意,因为版本混乱会带来很大麻烦,尤其进行测试的时候。此外,项目实施时候也应该注意文档检查,尤其是一些关键文档的质量,例如接口文档、用户手册等。
·项目实施中的软件测试
项目实施相关的全部质量管理工作中,软件测试的工作量最大。由于很多项目在实施中非常不规范,因此软件测试一定要把好关。软件测试应该重点做好测试用例设计、功能测试、性能测试、缺陷管理等工作。
测试用例设计:虽然项目实施中没有太多时间来设计测试用例,但是这个环节是必不可少的。项目实施中设计测试用例应该根据进度安排,优先设计核心应用模块或核心业务相关的测试用例。设计测试用例的时候可以不设计的特别完善,基本目标是列出测试重点,对测试执行起良好地指导作用,这个时候的测试用例更像是“测试大纲”。
功能测试:软件首先应该从功能上满足用户需求,因此功能测试是质量管理工作中的重中之重。功能测试在产品试运行前一定要开展好,否则将会发生“让用户来执行测试”的情况,后果非常严重。
性能测试:性能测试是经常容易被忽略的测试。在实施项目过程中,应该充分考虑软件地性能,运行较慢的软件仍然不会为用户所接受。性能测试可以根据用户对软件的性能需求来开展,通常系统软件和银行、电信等特殊行业应用软件对性能要求较高,应该尽早进行,这样更易于早解决问题。
缺陷管理:缺陷跟踪与管理工作也经常被忽略,很多问题会被遗忘,直到客户再次发现。建议测试人员在项目实施中仍然采用一些工具进行缺陷管理与跟踪,保证任何缺陷都得到妥善的处理。
此外,对于一些项目,如果实在没有测试人员,可以考虑让开发人员互相进行测试,这样也可以发现很多缺陷。
项目实施中的质量管理工作是非常复杂的,存在很多不可以控制的因素,例如没有质量人员、测试环境不具备等。因此,项目实施中的质量管理原则应该是“最大限度地去提高质量”。只有这样,才能更好地利用现有资源尽可能地提高质量.