软件项目管理中质量控制的研究与应用.doc
软件项目管理中质量控制的研究与应用 [摘 要 ]我国软件业与世界先进国家相比 ,差距甚远 ,其主要原因是软件工程化技术没有得到广泛的应用。今天 ,软件开发不再是软件开发人员的个人行为而是团队行为 ,对软件开发机构来说 ,如何在要求的时间内、合理的投资下保质保量地交付软件产品是一个巨大的挑战。无论是在软件水平最高的美国还是在我国 ,软件开发项目超期、超预算、最终的软件产品的质量不能使最终用户满意等问题 ,都是困扰软件开发机构的重大问题。本文从建立专职质量提升组织、软件开发过程的质量识别与控制、完善的测试手段与软件过程能力成熟度模型的应用等方面来叙述提高软件 的质量控制的途径。 [关键词 ]软件工程 项目管理 质量控制 测试手段 成熟度模型 一、引言 在国内软件业开始诞生和起步的时候 ,软件企业在质量管理方面比较落后 ,大部分的软件企业没有设置专门的测试组织。软件产品的质量完全依赖于程序设计和编写者的技术水平和工作效果。这种依赖使得软件产品的质量水平低下。 虽然国内一些软件企业在 2000 年左右开始建立内部的测试小组 ,但仍然只起到了“事后检验”的功能 ,大部分产品质量缺陷仍然无法及时和较全面的被发现和解决 ,更不用说“预防缺陷”。 即使这种具有“事后检验 ”功能的测试小组被建立 ,但由于没有必要的支持 ,以及人力资源投入严重不足 ,导致测试小组在软件质量上的贡献和业绩表现并不佳。同时由于对产品质量的认识缺乏全面的理解 ,仅仅建立一个测试小组对产品质量的提升很有限。 随着中国 WTO 的发展步伐 ,国内涌现出了越来越多的软件企业 ,其中以外包企业为主 ,外包软件开发公司一般都需要取得一定的资质认证才能够接到来自国外的委托项目 ,其中以 CMMI(或 CMM)认证为主。国内软件行业即将迎来一个新的发展时期 ,规范与规模化。 二、建立专职质量提升组织 在开发项目上按照规范化软件 的生产方式进行生产 ,在开发质量管理流程上采用 ISO9000 的标准进行。每个项目除配备了项目开发所需角色外 ,还需专门配备配置管理小组、测试小组和质量保证小组确保质量管理的实施。 (一 )配置管理小组职责 配置管理小组是保证项目开发完毕的同时 ,内部文档和外部文档都同时完成。内部文档的及时产生和规范 ,是保证项目开发各小组能够更好地接口和沟通的重要前提。从另一个方面讲 ,也是保证工程不被某个关键路径所阻塞而延滞的前提。配置管理小组还是保证质量保证小组得以发挥作用的基础。配置管理小组的主要职责包括 :完善各个部门发 送需要存档和进行版本控制的代码、文档和阶段性成果 ;对代码、文档等进行单向出入的控制 ;对所有存档的文档进行版本控制 ;提供文档规范 ,并传达到开发组中。 (二 )测试小组职责 测试小组作为质量控制的主要手段 ,负责软件的测试设计和执行工作。如同软件开发一样 ,测试在执行之前 ,同样需要进行测试计划和测试策略的设计 ,通常情况下测试可以分为 :正确性、功能性、性能、安全和系统测试等。而这些测试均需要在测试计划和测试策略中进行描述用以指导测试小组成员进行测试用例编写和测试执行。程序员在交给测试人员之前是进行过一定的单元测 试 ,确保程序编译、运行正确。 测试人员根据详细设计的文档对软件要实现的功能进行一一测试 ,保证软件的执行正确的实现设计要求 ,在此也只证明了软件正确地反映了设计思想 ,但是否真正反映了用户的需求仍需要进一步的功能性测试。 测试人员只有根据软件需求规格说明书所提及的功能进行检测 ,才能确保项目组开发的软件产品满足用户需求。在正确性测试完成之后 ,需要测试的是软件的性能 ,软件的性能在项目中占有重要的地位 ,性能要求有可能改变软件的设计 ,为避免造成软件的后期返工 ,测试在性能上需要较大的侧重。测试小组还需要做安全测试 ,以确保系统使用安全可靠。 (三 )质量保证小组职责 质量保证小组作为质量保证的实施小组 ,主要职责是保证软件透明开发的主要环节。在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组对项目经理提供项目进度与项目真正开发时的差异报告 ,提出差异原因和改进方法。 在项目进度被延滞或质量保证小组认为某阶段开发质量有问题时 ,提请项目经理、项目负责人等必要的相关人员举行质量会议。解决当前存在的和潜在的问题。质量保证是建立在文档的复审基础之上 ,因而文档版本的控制 ,特别是软件配置管理 ,直接影响软件质量保 证的影响力和力度。质量保证小组的检测范围包括 :系统分析人员是否正确的反映了用户的需求 ;软件执行体是否正确的实现了分析人员的设计思想 ;测试人员是否进行了较为彻底的和全面的测试 ;配置管理员是否对文档的规范化进行得比较彻底 ,版本控制是否有效。 三、软件开发过程的质量识别与控制 对于质量管理来说 ,结果很重要 ,过程也很重要。 (一 )获取过程质量 有过程就必然有过程质量。软件产品是需要经过一系列的过程才得以形成的。根据软件工程理论 ,在瀑布式软件开发过程中定义了软件产品的基本开发过程 :需求分析→规格说明→ 概要设计→详细设计→代码编写 /单元测试→集成测试→系统测试。软件工程的基本目标是优质、高产。为了保证所开发的软件的质量 ,在瀑布模型的每个阶段都应该坚持两个重要做法 : 1.每个阶段都必须完成规定的文档 ,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介 ,也是运行时期对软件进行维护的重要依据。 2.每个阶段结束前都要对完成的文档进行评审 ,以便尽早发现问题 ,改正错误。事实上 ,越是早期阶段犯下的错误 ,暴露出来的时间就越晚 ,排除故障改正错误所付出的代价 也越高。因此 ,及时审查 ,是保证软件质量 ,降低软件成本的重要措施。 瀑布式软件开发过程 : (1)在软件需求定义阶段会产生“需求质量” ; (2)在软件设计阶段会产生“设计质量” ; (3)在软件实现阶段会产生“实现质量”。 (二 )过程质量控制 过程质量控制 =规范 +输入 /输出标准 +反馈 (控制点或检查点 ) 从整个研发过程看 ,需要制定一些规章制度和项目研发规范来使工序部门之间的工作能够协调开展 ,比如设置工序部门的工件输入、输出标准 ,让质量低下的工件不会流入下一个工序环节 ,起到“缺陷预防”的作用。 如果我们单独看某一个工序部门 ,如负责需求分析的产品组 ,为了确保需求描述文档的准确性与易读性 ,可以制定一种“需求设计规范”或“需求文档编写规范”来使需求设计工作实现内部理解一致 ,即让需求分析人员编写出格式统一 ,表述统一的需求文档。这样的文档才能便于程序员去理解和实现 ,同时测试人员也可以从这样的高质量需求文档中获益 ,提高测试工作质量。同样地在程序设计方面 ,可以制定“程序设计规范”、“代码编写规范”来实现程序设计质量的提升。 [3] 将软件最终质量分解到过程中 ,为 :“需求质量”、“设计质量”、“实现质量”、“发布和维护质量”。质量控制点一般设置在工序节点处 ,这样比较经济一些。 控制点一般采用“评审”或“审查”为主 ,当然技术手段也很重要。 (三 )需求管理与质量 目前 ,迭代式开发方式已基本替代了瀑布式开发方式而被越来越多的软件企业所采用。迭代式开发方式主要解决了风险与需求变更问题 ,那么需求管理在迭代式开发方式 中也显得极为重要 ,需求管理好了 ,项目开发过程将会事半功倍 ,开发将会有节奏 ,项目可视化程度将会得到提高 ;需求管理不好 ,项目将面临频繁返工、功能混乱、重构代码工程次数高、测试用例维护成本增长和工作低效率、低质量的境地。