随着软件项目的增大,软件开发过程所涉及到的人员也越来越多,而各自的分工、职责也越来越细。如何有效地组织好人力物力,使得整个软件开发过程能够有条不紊地进行是当前软件开发所面临的普遍问题。在软件开发质量控制的群体协同工作模型中有三个重要的角色:质量保证组、开发组以及测试组。这三种角色在软件开发过程中对整个软件质量的好坏起着关键性的作用,而它们之间的相互联系也是十分密切的。
在软件开发质量控制的群体工作模型中,我们需要分开质量保证组、开发组和测试组这三种角色,保持他们工作的相对独立性,但是他们之间又是相互联系的。
质量保证组在软件开发过程中所起到的作用就是对软件质量进行监督和指导。其重点工作放在对软件过程各个阶段进行审查和评审,并且制定评审和审查的规程,规定评审和审查的内容、组织形式、进度安排以及评审组织和任务承办单位的职责。评审是由有关专业人员或用户通过正式会议,评价或批准软件需求、设计、管理等文档。审查是由小组或专业人员检查程序、文档等是否符合有关的技术规程的全部要求。
各阶段的评审组通常由质量保证组、开发组和测试组等单位的负责人和来自不同方面的有经验的资深专家组成。
开发组对软件的实现起决定性的作用。其工作主要是需求分析说明、软件概要设计文档、软件详细设计文档以及软件程序等的编写和对测试过程中发现的问题进行纠正等。在需求分析阶段,他们的主要工作就是根据用户提出的要求进行整理、分析,并且完成需求分析报告。在软件设计阶段,他们的主要工作就是根据需求分析说明对软件进行设计规划,包括软件结构、模块划分、算法以及接口等的设计,并力求保证设计的思路和用户的需求相吻合。在软件实现阶段,他们的主要工作就是完成软件的编码工作,期间还要提供与程序代码有关的完整的数据、文档等。在软件测试阶段,他们的主要任务就是把测试人员所提出的错误进行修改。
测试组对软件质量的保证起十分重要的作用,通常他们是程序问题的第一个发现者,使得软件在出厂前错误发生率降到最低。同样,测试组在软件开发过程的不同阶段所应做的工作也有所不同。在软件需求分析和设计阶段,测试组就应该着手编写概要测试计划和详细测试计划等,并且应该有一个详细的测试大纲和测试用例。在软件测试阶段,其主要的工作是对软件进行实际的测试,而测试的方法会因不同的系统而有所不同。测试中发现问题,要填写软件问题报告。软件测试的每一个阶段,测试组都应该提交一份软件测试报告,以对软件测试过程中所发现的问题等进行总结分析和汇报。测试组的工作包括制定软件测试计划、设计测试大纲和测试用例、提交测试问题报告和测试结果报告,它们同样也需要提交给质量保证组进行评审。
在以往的软件开发过程中,往往忽视了区分质量保证人员、开发人员以及测试人员的不同职责和作用的重要性。较为普遍的问题是过分依赖开发人员,一些开发人员一身兼多职:既是开发工作的骨干,又是测试工作的主力,同时还要兼顾质量保证。这样做的后果是显而易见的,它使得人为因素增加,制度规范约束力降低,缺乏有效的互相制约和监督,这对软件质量是极为不利的。
在软件项目小组里面,各种人员负责的工作应当说是十分明确的。软件质量保证组的工作就是要监督整个开发过程软件的质量问题。而对于软件开发组来说,他们所关心的问题就是软件实现的具体细节问题,甚至细微到程序中的每一行代码所完成的功能,都是他们应当考虑的问题。对项目测试组来说,他们就是要找出软件中存在的尽可能多的错误。从某种意义上来说,错误发现得越多,则软件的质量就在原来的基础上提高越大。所以,一个软件质量的好坏并不能够完全由项目的某个功能小组来决定,而是所有人互相配合,协调一致共同努力的结果。为此,项目中各小组之间人员的协同工作就变得尤为重要,这就是我们经常所说的团队合作。团队合作不仅仅要求所有参与者具有无私奉献的精神与合作意识,从技术上讲,还需要有规范化和工程化的管理方法。
在软件开发过程中,各种角色人员之间的联系是相当密切的。如在软件实现阶段,开发组所开发出来的代码单元必须经过软件测试组进行测试,而测试组的测试结果又必须被软件质量保证组所监督,在这里就发生了许多需要互相沟通的事情。