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