1、1 软件开发质量保证方案 1.1 质量管理内容 1.1.1 编制和评审质量计划 制定质量保证计划:依据项目计划及项目质量目标确定需要检查的主要过 程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并 制定出本项目的质量保证计划。 质量保证计划的主要内容包括:例行审计和里程碑评审,需要监督的重要 活动和工作产品,确定审计方式,根据项目计划中的评审计划确定质量保证人 员需要参加的评审计划。明确质量审计报告的报送范围。 质量保证计划的评审:质量保证计划需要经过评审方能生效,以确保质量 保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。 当项目计划变更时,需要及时更改
2、和复审质量保证计划。 1.1.2 “过程和工作产品”的质量检查 根据质量保证计划进行质量的审计工作,并发布质量审计报告。 审计的主要内容包括:是否按照过程要求执行了相应的活动,是否按照过 程要求产生了相应的工作产品。本项目中对质量的控制主要体现在不同阶段的 审计当中。 1.1.3 不符合项的跟踪处理 对审计中发现的不符合项,要求项目组及时处理,质量保证人员需要确认 不符合项的状态,直到最终的不符合项状态为“完成”为止。 1.2 质量管理责任分配 我公司在开发项目上按照规范化软件的生产方式进行生产。每个项目除配 备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试 小组来确保质量
3、管理的实施,下面针对这三种角色进行说明: 1.2.1 质量保证小组职责 质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的 部门都与质量保证小组有关。质量保证小组的主要职责是:以独立审查方式, 从第三方的角度监控软件开发任务的执行,分析项目内存在的质量问题,审查 项目的质量活动,给出质量审计报告。就项目是否遵循已制定的计划、标准和 规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,使他们能 了解整个项目生存周期中工作产品和过程的情况,提高项目透明度,从而支持 其交付高质量的软件产品。 质量保证人员依据质量保证计划,通过质量审计报告向项目经理及有关人 员提出已经识别出的不
4、符合项,并跟踪不符合项的解决过程,通过审计周报或 者审计月报向项目经理提供过程和产品质量数据,并与项目组协商不符合项的 解决办法。 质量保证小组的检测范围主要包括:项目的进度是否按照项目计划执行, 用户需求是否得到了用户的签字确认,软件需求是否正确的反映了用户的需求, 是否将每一项用户需求都映射到软件需求;系统设计是否完全反映了软件需求; 实现的软件是否正确的体现了系统设计;测试人员是否进行了较为彻底的和全 面的测试;客户验收和交接清单是否完备;对于系统运行中出现的问题,维护 人员是否记录了详细的维护记录;配置管理员是否按照配置管理计划建立了基 线,是否严格控制变更过程,是否对配置库进行了维护
5、。 1.2.2 配置管理小组职责 配置管理活动的目的是通过执行版本控制、变更控制、基线管理等规程, 借助配置管理工具的使用,来保证整个生命周期过程产生的所有配置项的完整 性、一致性和可追溯性。配置管理是对工作成果(阶段工作成果和产品成果、 进展状态成果)的一种有效保护形式,是反映项目及其工作产品的过去、现在、 动态的资料和数据集中管理体现。 配置管理小组的主要职责包括:根据项目计划制定配置管理计划,建立配 置库,为项目组人员分配配置库权限,创建需求、设计、开发、测试、交付阶 段的基线。当纳入基线库的工作产品发生变更时,严格按照配置项变更控制过 程执行变更,变更后建立新的基线。 1.2.3 测试
6、小组职责 作为质量控制的主要手段,如同软件开发一样,测试在执行之前,测试小 组制定软件测试计划、测试用例的编写和执行工作。 本项目中,测试可以分为如下几种类型:代码走查、单元测试、集成测试、 系统测试。为了保证程序的质量,开发人员需要对同伴的代码进行代码走查, 同时对自己编写的程序进行单元测试,确保程序编译、运行正确。 测试人员根据软件需求分析报告进行软件集成测试用例和系统测试用例的 编写。对编写完成的测试用例提交项目组进行评审,同时质量保证人员对评审 过程和工作产品进行监测。 测试人员根据测试计划和测试用例执行测试用例,并对发现的缺陷进行记 录,只有这样才能确保项目组开发的软件产品满足用户需
7、求。在完成集成测试 之后,可以进行软件系统测试,系统测试包括对软件进行功能测试、性能测试、 安全测试、压力测试。只有进行了系统测试软件测试才是完整的。系统测试在 本项目中占有重要的地位,性能要求有可能改变软件的设计,为避免造成软件 的后期返工,测试在性能上需要较大的侧重。 1.3 质量保证措施 通过质量管理责任的分配,通过如下几个方面来进行质量保证的实施过程: 1.3.1 项目进度 项目计划的制定为工程项目实施、管理和支持工作、项目进度、成本、质 量及过程产品的有效控制打下了良好的基础,以便所有相关人员能够按照该计 划有条不紊地开展工作;制定项目计划,必须获得相关干系人的认可,并 以此作为项目
8、跟踪的基础。 项目进度是项目进行是否顺利的最直观表现。制定合理的项目计划首要前 提是选择从事类似规模和类似业务项目的有经验的项目负责人参加制定项目进 度计划。 项目计划由项目负责人制定,由项目各小组组长、项目成员、干系人、质 量保证人员参加一起进行评审。评审过程主要讨论项目计划的可行性,对其中 不合理的地方提出修改意见,对计划中不合理的地方进行修改完善,并由质量 保证人员对其结果进行跟踪处理,以确保项目计划完整性、可行性,项目计划 评审通过后,交由配置管理人员进行配置管理。 在计划实施过程中,按项目计划中里程碑为界限,将整个开发周期划分为 若干阶段。根据里程碑的完成情况,适当的调整每一个较小的
9、阶段的任务量和 完成的任务时间,动态跟踪和动态调整,以利于项目质量保证的实施。 实际运作中,质量保证人员在对项目执行过程进行检查时,对于发现的项 目偏差,以质量审计报告的形式提交项目负责人。由项目负责人组织人员对计 划进行维护,对于已经变动的项目计划,由配置管理进行配置管理。 1.3.2 需求分析 需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析 的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认 识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的 需求。从系统开发的过程得知,系统分析时犯下的错误,会在接下来的阶段被 成倍的放大,越是在开发的
10、后期,纠正分析时犯下的错误所花费的代价越是昂 贵,也越发影响系统的工期和系统的质量。 本项目中,将邀请招标方技术负责人参与需求调研,以便保证需求调研质 量,同时形成用户需求说明书。需求评审时会同双方管理层、项目实施层共同 进行,对于通过用户确认的需求,交由配置管理员形成需求基线。 用户需求在招标方确认后,由系统分析人员形成软件需求分析报告,同时 对软件需求分析报告进行评审,对于评审通过的软件需求分析报告可以交由测 试人员进行测试计划和测试用例的编写。 对于开发过程存在的需求变动,招标方填写变更申请单发给项目经理,在 质量保证人员参加的情况下,对这个变更进行评审,由项目经理组织项目组成 员一起讨
11、论实施变更的可行性及实施后所带来的影响,对于影响小的变更直接 记录,大的变更则需要形成正式的变更报告,无论那种变更都需要对相应的文 档实施同步变更(包括需求分析报告、系统设计、安装手册、操作手册等)。 但是对于无法实现或是变更会带来巨大的影响而将导致进度的延期,这时,我 们将变更报告提交给招标方并召开协调会议,讨论变更取舍问题或是项目进度 变更问题。 决定变更之后,由项目负责人组织实施变更,测试人员检测变更结果,而 质量保证人员监督变更实施过程,并协助配置管理员对变更后的成果进行配置 管理。变更实施完后,运行前还需要协助用户一同测试并由招标方签字后同意 方可上线。 1.3.3 系统设计 优良的
12、体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好 的设计方法,需要针对项目的结构、项目的特征和用户的需求来分析。本项目 中将安排我公司高级系统架构师担当项目总体设计师,汇同总体设计组完成系 统设计。 另外对公共类模块的开发。由总体设计组通过对用户需求的仔细研究,尽 可能的识别出公共类,并进行定义和设计,以减少重复工作。对于项目组提供 的设计文档,由项目经理组织,质保小组成员参与,对其设计文档进行评审, 及时发现设计中可能存在的错误,降低项目开发风险,同时确保设计文档能为 开发人员、测试人员提供切实的指导。对于可复用的设计进行提取作为公共库 设计和开发,提供项目组。最后交由配置管理员进
13、行设计文档的版本控制。 1.3.4 系统实现 系统实现的目的是依据系统设计文档,由程序员进行程序编写,以便实现 设计要求,系统实现过程中,开发人员需要对模块进行代码走查和交叉单元测 试,以保证模块代码质量。软件实现也就是代码的生产过程。根据上一阶段形 成的设计文档,程序员在完成代码之后,可以开始编码并且进行代码走查和单 元测试。对于测试完成的程序可以交由配置管理人员进行配置管理。 1.3.5 系统测试 系统开发涉及到一系列的过程,每一个过程都有可能引入缺陷(Bug),本 系统质量的好坏直接关系到正常使用和日后的维护。在开发过程中,我们将质 量控制贯穿于所有阶段和所有参与系统的人员中,包括系统分
14、析、设计和编码。 分阶段的评审和测试是软件质量的有力保障。 系统存在平台测试和应用系统的测试以及最终的测试。由于测试也存在协 调的问题,如错误具体定位,在应用系统发现一个错误,到底是应用系统的自 身的错误还是中间件存在的错误,需要测试人员进行准确的判断。 为了达到良好的测试目的,本系统测试工作由测试组来完成,主要采用下 列方法进行系统的测试: 从测试方法上来说,分为黑盒测试和白盒测试: 黑盒测试:着重于测试软件系统的外部特性;根据系统的设计要求,每一 项功能都要进行逐个测试,检查其是否达到了预期的要求,是否能正确地接受 输入,是否能正确地输出结果。 白盒测试:由于软件的所有源代码都要由项目组成
15、员编写,对其内部的逻 辑规则和数据流程,都要进行测试,以检查其代码编写是否符合设计要求。 从测试策略上来说分为集成测试和系统测试: 集成测试:在所有模块都通过了单元测试后,将各个模块组装在一起,进 行组装测试,用于发现与接口相联系的问题。在通过组装测试后,将经过单元 测试的模块组装成一个符合设计要求的软件结构。 系统测试:在本项目通过了以上的测试步骤后,与其它系统元素(如硬件 服务器、网络系统等)进行集成测试和系统级的确认测试,将各种可能的缺陷 完全排除掉,从根本上保证系统的长期稳定运行。 1.3.6 系统维护 本项目中,技术支持小组的任务一方面是保证对项目客户的跟踪服务,另 一方面是确保该项目的技术咨询工作。 系统维护期,对于一般性的错误,如操作不当等引起的问题,全部由技术 支持小组执行完成,但需要用户测试确认上线。如果较大的修改则需要走变更 控制流程,填写变更申请,经项目组讨论分析可行方案在由技术支持小组实施, 通过测试后方可提交用户。在这个过程中质量人员需要对维护过程和维护记录 单进行检查。