第一篇:有效的软件质量管理
有效的软件质量管理(上)
51CMM.COM原创 作者:苏黎虹 [2004/02/16]
一、引言
随着社会信息化水平的不断提高,信息行业急速膨胀,信息企业快速成长,随之带来的信息市场竞争激烈,企业为了求生存,满足客户要求则成为各行各业的首要责任。依赖于质量、成本和进度的客户满意度,质量则是重点支撑之一,这样要求我们对质量管理需要加强认识。我们都知道pmbok把项目管理划分为9个知识领域,即范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、采购管理、风险管理和综合管理。质量管理作为9大知识领域之一,可见其重要性。
质量管理包括:质量计划编制、质量保证和质量控制三个过程域。质量计划是质量管理的第一过程域,它主要结合各个公司的质量方针,产品描述以及质量标准和规则通过收益、成本分析和流程设计等工具制定出来实施方略,其内容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。质量保证则是贯穿整个项目全生命周期的有计划和有系统的活动,经常性地针对整个项目质量计划的执行情况进行评估、检查与改进等工作,向管理者、顾客或其他方提供信任,确保项目质量与计划保持一致。质量控制是对阶段性的成果进行检测、验证,为质量保证提供参考依据,它是一个PDCA循环过程。
二 质量管理责任分配
我们公司在开发项目上按照规范化软件的生产方式进行生产,在生产流程上采用ISO9000的标准进行。每个项目除配备了项目开发所需角色外,还专门配备了配置管理小组、测试小组和质量保证小组确保质量管理的实施,下面针对这三种角色进行说明:
1、配置管理小组职责
配置管理小组是保证项目开发完毕的同时,内部文档和外部文档都同时完成。内部文档的及时产生和规范,是保证项目开发各小组能够更好的接口和沟通的重要前提,从另一个方面讲,也是保证工程不被某个关键路径所阻塞而延滞的前提。如上所述,配置管理小组还是保证质量保证小组得以发挥作用的基础。配置管理小组的主要职责包括: 完善各个部门发送需要存档和进行版本控制的代码、文档(包括外来文件)和阶段性成果; 对代码、文档等进行单向出入的控制; 对所有存档的文档进行版本控制; 提供文档规范,并传达到开发组中。
2、测试小组职责
测试小组作为质量控制的主要手段,负责软件的测试设计和执行工作。如同软件开发一样,测试在执行之前,同样需要进行测试计划和测试策略的设计,通常情况下测试可以分为如下几种类型,如:正确性测试、功能性测试、性能测试、安全测试和系统测试等。而这些测试均需要在测试计划和测试策略中进行描述用以指导测试小组成员进行测试用例编写和测试执行。程序员在交给测试人员之前是进行过一定的单元测试,确保程序编译、运行正确。测试人员根据详细设计的文档对软件要实现的功能进行一一测试,保证软件的执行正确的实现设计要求,在此也只证明了软件正确的反映了设计思想,但是否真正反映了用户的需求仍需要进一步的功能性测试。
测试人员只有根据软件需求规格说明书所提及的功能进行检测,才能确保项目组开发的软件产品满足用户需求。在正确性测试完成之后,需要测试的是软件的性能,软件的性能在本
项目中占有重要的地位,性能要求有可能改变软件的设计,为避免造成软件的后期返工,测试在性能上需要较大的侧重。如果有必要的话,测试小组还需要做安全测试,以确保系统使用安全可靠。
3、质量保证小组职责
质量保证小组作为质量保证的实施小组,主要职责是保证软件透明开发的主要环节。在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组对项目经理提供项目进度与项目真正开发时的差异报告,提出差异原因和改进方法。
在项目进度被延滞或质量保证小组认为某阶段开发质量有问题时,提请项目经理、项目负责人等必要的相关人员举行质量会议。解决当前存在的和潜在的问题。质量保证是建立在文档的复审基础之上,因而文档版本的控制,特别是软件配置管理,直接影响软件质量保证的影响力和力度。质量保证小组的检测范围包括:系统分析人员是否正确的反映了用户的需求; 软件执行体是否正确的实现了分析人员的设计思想; 测试人员是否进行了较为彻底的和全面的测试; 配置管理员是否对文档的规范化进行的比较彻底,版本控制是否有效。
三 质量管理实施
有了良好的资源配备,又如何在项目全生命周期内实施质量保证,让我们从以下几个方面来看质量保证的实施过程:
1、项目进度的质量保证
项目进度是项目进行是否顺利的最直观表现。显然在项目开始之前,项目开发计划是必须的。如果项目开发计划的制定的是完全合理的,那项目进度也就真正表达了项目与最终的交付使用之间的距离,然而要制定完全合理的项目开发计划几乎不太可能。可见要保证项目进度,首先要保证项目开发计划尽可能合理。
项目计划的合理程度与项目计划制定者从事类似规模和类似业务的项目的经验有直接关系,通过经验往往能够预见潜在的阻碍,这样要求项目计划制定者需要集众人之力来完善计划。当项目计划制定初期,由质量保证小组组织召开的项目计划评审会,邀请公司技术专家、用户以及项目组小组成员一起讨论项目计划的可行性,会议通常采用头脑风暴法,各抒己见,会后由指定的记录员形成质量记录,发送给相关人员,对其计划中不合理的地方进行修改完善,并由质量保证人员对其结果跟踪,以确保项目计划完整性、可行性,完善后的计划交由配置管理人员进行版本控制。
然而在计划实施过程中,计划不是“固定化”。常有人道,“计划赶不上变化”,但“要跟上变化”。项目计划以里程碑为界限,将整个开发周期划分为若干阶段。根据里程碑的完成情况,适当的调整每一个较小的阶段的任务量和完成的任务时间,这种方式非常有利于整个项目计划的动态调整。也利于项目质量保证的实施。
实际运作中,当质保小组发现计划实施的差异后,报告项目经理,由项目经理组织负责对计划进行周期性维护,对于已经变动的计划由质保小组协助配置管理小组完成版本控制。本公司已经开发湖南移动的集中客服系统,开发中的子项目多达六个,历时十个月,目前多数项目已经开发完毕,系统正在试运行阶段,项目金额数千万元。在这样的项目中,从管理者到开发人员到测试人员都积累了较为丰富的经验,特别是项目开发计划的制定,和项目进度的控制。
有效的软件质量管理(下)
51CMM.COM原创 作者:苏黎虹 [2004/02/16]
2、项目开发各阶段的质量保证
a、需求分析
需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的需求。从系统开发的过程得知,系统分析时犯下的错误,会在接下来的阶段被成倍的放大,越是在开发的后期,纠正分析时犯下的错误所花费的代价越是昂贵,也越发影响系统的工期和系统的质量。
解决系统分析错误的方法我们公司通常采用邀请用户参与进行需求评定,然后对其用户的意见由质保成员跟踪检测是否纳入需求规格说明书,同时与用户签字确认形成需求基线,交由配置管理员放入配置管理库。
虽然尽早的邀请用户参与,仍然避免不了项目进行中用户的需求变更请求。对于开发过程存在的需求变动,我们要求用户填写变更申请单发送给项目配置管理员,在通过配置配置员转交质保小组,负责组织专家小组和项目组成员一起讨论实施变更的可行性及实施后所带来的影响,小的变更则直接记录入变更记录原因分析项和风险项栏,大的变更则需要形成正式的变更报告,无论那种变更都需要对相应的文档实施同步变更(包括需求规格说明书、详细设计文、安装手册、操作手册等)。但是对于无法实现或是变更会带来巨大的影响而将导致进度的延期,这时,我们将变更报告提交给用户或邀请用户进行协调会议,讨论变更取舍问题或是项目进度变更问题。
决定变更之后,由项目经理组织实施变更,测试人员检测变更结果,而质保小组成员监督变更实施过程并协助配置管理员对变更后的成果物进行版本控制。变更实施完后,上线前还需要指定人员协助用户一同测试并由用户签字后同意方可上线。
b、系统设计
优良的体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好的设计方法,自然设计选型成为了系统设计首要的工作,究竟是采用哪种设计方法好呢?
对于设计选型不能一概而论,需要针对项目的结构、项目的特征和用户的需求来分析,同样也要考虑到参与项目小组成员的素质,如果其中大部分都没有从事过面向对象的设计且项目进对紧迫,这样没有多余的时间来培训小组成员来掌握面向对象的设计方法,尽管众所周知面向对象设计方法的优势,我们还是不如采用面向过程的方式(除用户指定开发设计方式外)可以减少项目承担的技术风险。
我们公司有过一个项目,用户指定需要采用面向对象分析、设计和开发,且开发周期短,在无赖的情况下,项目小组只能选用面向对象的软件开发过程,由于项目小组很少从事过面向对象的开发,经验缺乏,导致项目上马后项目进度延误,项目没有达到预期的效果。针对此次开发,我们分析其原因,发现小组成员在开发过程中对于新技术互相交流少,各自有各自的理解和想法,造成理解上的不一致性,导致工作重复性高,滞后项目进度。建议解决方法是项目组成员采用集中办公,分块学习,学习的成果马上向项目相关人员发布,再由配置管理员对其发布的文档进行整理、规类放入配置库以供大家共享。这样方便大家的互相学习,减少重复的工作。在这次开发中我们公司从管理人员、设计人员到开发人员都汲取了很多教训,同时经过此次项目的开发,小组成员也积累了丰富的面向对象的开发经验。除设计选型,还有一个容易被忽视的问题,就是公共类开发。公共类开发可以减少工作中的重复工作,降低开发成本。这要求我们再设计阶段通过对用户需求的仔细研究,尽可能的识别出公共类,并进行定义指定专人负责设计通知其它设计人员,以减少重复工作。对于项目组提供的设计文档,由质保小组组织技术专家、项目组设计人员、开发人员和测试人员对其设计文档的评审,检测设计文档对其下一阶段工作的可行性,及时发现设计中可能存在的错误,降低项目开发风险,同时确保设计文档能为开发人员、测试人员提供切实的指导。对于可复用的设计进行提取作为公共库设计和开发,提供项目组或整个公司重用。最后交由配置管理员进行设计文档的版本控制。
c、实现
实现也就是代码的生产过程。这里不仅包括代码的产生,同时也包括测试用例的产生。针对上一阶段提供详细设计,程序员开始编码并且调试程序,测试人员则根据设计进行测试用例的设计,设计出来的用例需要得到项目组成员认可由项目经理审核通过才能进入配置库。同时程序员调试完程序提交测试人员进行程序正确性检测。
d、文档管理
文档维护主要是配置管理小组的工作。文档从用途上分主要分为内部文档和外部文档。内部文档包括: 项目开发计划; 需求分析; 体系结构设计说明; 详细设计说明; 构件索引; 构件成分说明; 构件接口及调用说明; 组件索引; 组件接口及调用说明; 类索引; 类属性及方法说明; 测试报告; 测试统计报告; 质量监督报告; 源代码; 文档分类版本索引; 软件安装打包文件。
外部文档主要包括: 软件安装手册; 软件操作手册; 在线帮助; 系统性能指标报告; 系统操作索引。
如何保证文档的全面性,使其真正为项目的进度提供保证,又不因为文档的写作而耽误项目的进度,这仍然是一个比较难解决的问题。解决此问题,其核心仍然是个“度”的问题。在本项目的开发中,配置管理小组的一个非常重要的任务还是书写文档规范和文档模板。当有文档模板后需要书写文档的人员只剩下“填空”的工作,从某种意义上讲,书写文档的速度会加快。如果书写文档的人员认为文档的更细致的部分可以由他人帮助完成,则该文档即交由他人完成,但此时文档并不算被正式提交,当他人书写完毕之后,必须由文档的初写者进行复审,复审通过后方可以正式提交,进入软件配置管理的循环中。
配置管理小组真正核心的工作是对文档的组织管理。根据文档的不同,文档的来源也不同,有些是通过质量保证小组经过复审之后转交给配置管理小组,有些则会直接从文档的出处到达配置管理小组。文档的管理是一个非常烦琐的工作,但是长远来看它不仅使项目的开发对单个主要人员的依赖减少,从而减少人员流动给项目的带来的风险,更重要的是在项目进行到后百分之十的时候起到拉动项目的作用。
从以往做大项目的经验来看,写作文档在项目开发的早期可能会使项目的进度比起不写文档要稍慢,但随着项目的进展,各个部门需要配合越来越多,开发者越来越需要知道其他人员的开发思路和开发过程,才能使自己的开发向前推进。一个明显的例子就是系统整合,或者某些环节是建立在其他环节完成的基础之上时,就更显现出文档交流的准确性和高效性。
3、系统维护质量保证
在我们公司,维护小组的任务一方面是保证对项目客户的跟踪服务,另一方面是确保该项目其它的开发人员从项目中尽快的解脱出来以便投入到下一个项目的开发中。所以通常项目维护小组成员主要由项目组的少部分开发人员承担完成。他们不仅了解软件的核心内容,而且与客户也不陌生,以便能够以最快的速度修正错误。对于一般性的错误,如操作不当等引起的问题,全部由维护小组执行完成,但需要用户测试确认上线。如果较大的修改则需要走
变更控制流程,用户或者维护人员填写变更申请,经专家会议讨论分析可行方案在由维护小组实施,通过测试后方可提交用户。
维护小组的人员基本上是按项目跟进的。当一个项目刚刚交付用户时,在维护小组有较多的人员进行跟进,随软件的稳定,跟进的人逐步减少,并转移到其它项目中去。
第二篇:军用软件质量管理规定
军用软件质量管理规定
第一章
总则
第一条
为了加强军用软件质量管理,保证军用软件质量,依据《装备条例》制定本规定。
第二条
本规定适用于作为装备或装备组成部分的软件质量管理。
本规定中所称的军用软件(以下简称软件)包括计算机程序、相关文档和数据,以及固化在硬件中的程序和数据。
第四条
总装备部按照国家军用标准和有关规定对软件研制单位进行软件研制能力评价,对软件测评机构进行认可,并以合格名录形式予以发布。未达到规定的软件研制能力要求的单位,不能承担软件研制任务;未经认可的软件测评机构不能承担软件测评任务。
第二章
职责
第七条承担软件研制任务的单位(以下简称研制单位)对软件研制和服务质量负责,履行下列职责:
(一)建立健全质量管理体系,保持和改进软件研制能力,明确各类人员的质量责任;
(二)实施软件工程化管理,制订本单位软件研制工作程序和规范,对软件研制过程实施质量控制;
(三)配备必要的人员、技术手段和设施等资源,建立本单位软件质量信息系统;
(四)对有缺陷的软件进行修复;
(五)承担软件的使用培训和技术服务;
(六)向软件测评机构提供软件测评所需的程序和文档资料。
第十条
软件测评机构对软件的测评质量负责,履行下列职责:
(一)建立健全质量管理体系,保持和改进软件测评能力,明确软件测评过程中各类人员的质量责任;
(二)承担软件定型、鉴定、验收和成果鉴定的测评,外购软件产品质量评价及选优工作;
(三)制定本单位软件测评工作的程序和规范,实施软件测评过程的质量控制;
(四)配置必要的软件测评资源,建立软件测评质量信息系统;
(五)开展软件测评理论、技术和方法的研究。
第四章
软件研制
第十七条装备主管部门在订立装备研制合同时,应当在合同中明确软件的级别、质量保证条款、测评项目、测评机构以及研制单位应当提供的测评保障条件。
第十八条
装备主管部门应当组织对研制单位制订的软件研制计划和软件质量保证计划进行审查和确认,并监督其实施。软件质量保证计划应当明确软件质量要求、软件质量保证的工作责任、控制项目和方法、编制的文档等。
第十九条
研制单位在进行软件需求分析时,应当广泛征求软件论证、使用、测评等单位的意见,按照国家军用标准要求的内容和格式,形成能够全面反映系统任务要求的软件需求说明。
第二十条
研制单位应当在软件研制的早期对软件保障进行规划,在软件需求说明中提出软件保障方案,并根据合同要求研制和交付软件保障所需要的各种资源。
第二十一条
研制单位应当制订和实施软件设计准则;开展软件可靠性和安全性设计;按照软件工程化方法和国家军用标准的要求,形成与软件需求说明一致的、可理解的和规范化的软件设计文档。
第二十二条
软件编码应当严格按照设计文档进行,确保编码和设计文档一致。
第二十三条
装备主管部门应当对研制单位编制的软件测试计划进行审查和确认,并监督其实施。软件测试过程应当完整、准确地记录所有测试结果,填写软件问题报告表,编制软件测试报告。
第二十四条
软件设计、编码和测试工作必须分别由不同的人员承担。
第二十五条
研制单位必须按照国家军用标准或相关标准要求的格式和内容,在软件研制过程中,同步完成各项文档的编制工作。软件文档编制项目的剪裁和合并必须经过装备主管部门确认。
第二十六条软件配置管理必须设立软件开发库、受控库和产品库,并规定相应的控制和管理程序。软件文档的修改和完善必须纳入软件配置管理。
第二十八条
研制单位应当建立并运行软件故障报告、分析和纠正措施系统,及时记录和报告软件故障,采取纠正措施。
第二十九条
装备主管部门应当对研制单位确定的转承包单位的软件开发能力和转承包合同进行审查。转承包合同中应当明确转承包软件质量保证条款、监督和控制措施。
第三十条研制单位需要外购软件产品的,应当按照要求进行测试或者选型,并对其正确使用负责。
第三十一条
研制单位应当根据合同要求,向软件测评机构提供测试所需要的软件需求说明、设计说明、源程序及开发过程测试文档等技术文件,使测评机构能够充分了解软件开发情况,保证软件测评质量。
第三十二条
研制单位应当编制软件使用培训教材,并根据合同要求对软件使用人员提供培训服务。
第五章
软件测评
第三十三条
关键软件和列入装备体制的软件,必须经总装备部认可的软件测评机构测评合格后,方可交付部队使用。
第三十四条
装备主管部门应当在确定软件研制任务的同时,确定软件测评任务并下达软件测评任务书。
第三十五条
软件测评机构应当从软件需求分析阶段开始进行测评准备工作,了解软件研制情况,参加软件评审;根据软件的级别编制软件测评计划和测评说明,经装备主管部门组织评审通过后实施。
第三十六条
软件测评机构应当根据测评计划建立软件测试环境,严格按照规程实施软件测评,及时、完整、准确地记录所有测试用例的测试结果。
对软件测评机构发现的软件问题,研制单位应当进行分析、修改、测试和评审后,送测评机构进行回归测试。
第三十七条
软件测评机构应当根据软件测评结果出具软件测评报告。软件测评报告由装备主管部门组织评审。
第七章
奖励与处分
第四十六条
对保证软件质量做出突出贡献的单位和个人,按照国家和军队有关规定,给予奖励。
第四十七条有下列行为之一的单位和个人,依照《中国人民解放军纪律条令》和其他有关规定对负有直接责任的主管人员和其他直接责任人员给予处分;构成犯罪的,依法追究刑事责任;对单位给予通报批评,并责令限期改正:
(一)滥用职权、徇私舞弊、弄虚作假的;
(二)违反工作程序、规章制度和操作规程,造成严重后果的;
(三)违反软件工程化管理要求,软件状态失控,质量问题突出,造成严重后果的;
(四)伪造测评结果或出具虚假证明的。
第四十八条
对违反合同、隐瞒质量问题、将不合格品交付部队的单位,装备主管部门应当终止合同的履行,依照《中华人民共和国产品质量法》和《中华人民共和国合同法》的有关规定提出赔偿要求,并将其从合格名录中剔除。
第三篇:论软件项目的质量管理
项目管理师论文之我见
听闻许多考友论文没过,实在可惜。我这次论文50分,不算高,勉强过关。我曾经参加过系统分析师考试,论文没过,这次选择了项目管理师。这两个考试作为高工级别,要求当然高,和大家分享一点经验:
1、你一定要写一个大项目,不能写小项目。如果项目不够大,你的高工职称就令人质疑了。你或许会问:我在的公司里就没有大项目,怎么办?去了解啊,了解亲戚、朋友的公司里有没有大项目,争取拿到资料。
2、你一定要在论文中把自己描述成一个项目中的主要管理者,可以不是项目经理,但级别不能太低。级别太低,你的高工职称就令人质疑了。你或许会问:我的级别就是低啊,只是一般的程序员。那没关系,去了解你的上司的工作,在论文中把自己描述成你的上司。
3、一定要围绕指定教材中的纲要来写,比如今年下半年的考题,论项目风险管理,论项目质量管理,教材中都有专门的章节,在论文中一定要把这些理论阐述出来。不 能自己写自己的,全然不管教材里怎么讲。大家如果有看过今年上半年的试题分析,就一定记得在论文的解答中,特别强调“要有……,要有……”,这都是教材中 的理论,如果没有,就没分了。
4、项目管理师的论文题目不外乎教材中的那主要的几章内容,猜都能猜得到,事先一定要构思好,考试时写论文的时间很短,到时再作考虑时间肯定来不及。
5、字迹要工整,平常多写,也是锻炼。大家都是做电脑的,多年没写字了,打字比写字还快。可是考试还是要写字,大家有空时还是再练练字吧!
一点心得,个人观点,仅供参考。
[摘要]
我目前担任中国石化加油IC卡试点工程江苏省项目的软件技术总监,并承担了软件的需求分析和部分的软件开发工作,该工程浩大,复杂,但至关重要的是该系统的核心软件的开发工作,该核心软件跨平台、跨地区、基于网络,既有联时交易,又有脱机交易,是基于网络、大型关系数据库的实时分布系统,由加油站后台管理子系统、发卡充值网点子系统、加油站前台POS消费子系统、加油站前台卡机联动系统、清算结算子系统、零售管理与数据分析子系统等组成,为了保证软件按时保质保量的完成,提高软件的质量与效率,作为技术总监,我分析了决定软件和影响软件质量的因素,制定了合适的质量管理策略,通过加强项目管理和采取诸多针对性的做法,取得了较好的效果,具体叙述如下
质量控制的主要活动:技术评审、代码走查、代码评审、单元测试、集成测试、压力测试、系统测试、验收测试、缺陷跟踪。
[正文]
一、基于对软件质量管理的认识与分析
我认为,影响软件质量的因素有很多,通常有:人的因素、软件需求、质量问题可能出现在开发过程的各个环节上、测试的局限性、质量管理的困难、质量管理未能给予足够的重视、软件人员的传统习惯、开发规范、开发工具的支持不够等。对于象石化加油卡工程的核心软件之类的大型软件,涉及平台多,开发环境多,开发人员庞大,在全国尚无大规模的同行业省级应用模式可以参考。因此,我认为软件要能够恰合需求是最为首要的质量因素;其次,对于庞大的开发人员,对他们培养和树立软件质量意识,按软件工程标准规范开发流程,因此,质量管理和开发过程控制也十分重要;再次,该核心软件庞大、复杂、功能多、子系统多、接口多,我认为,要在软件开发生命周期内重视软件测试也至为关键。
目前,在业界影响较深的McCALL质量模型、ISO软件质量评价模型以及SSC软件质量度量模型,都比较共同地列举了软件的质量特性,如正确性、可靠性、完整性、优化与效率、可维护性、可测试性、容错性、文档完备性、复用性、健壮性等等,要想使提交的软件在各项指标方面具有较高的性能和度量指标,在软件开发过程中,须采用切实可行和有针对性的措施方可达到要求。以下结合我工作中针对提高石化加油卡核心软件质量谈谈具体的管理策略、思维和做法。
二、具体实施的管理策略及做法
1、质量管理策略的展开与实施
首先,我向公司的决策层强调了软件质量的重要性,并提交了具体的实施办法。从组织上,我公司成立了软件质理管理领导小组,下设办公室,有2名专职质量管理人员,我作为办公室主任。最主要开展了公司的集成资质认证和ISO9001软件开发质量认证的取证工作,并最终获得成功,同时开展了全体开发人员的软件质量意识教育,对开发人员进行了系统的软件工程软件工程开发规范和相关标准教育。这些工作都是全员行动,涉及到的每个部门、每个开发小组以及个人,都要按照质量管理规范要求开展各自的工作,这也是开发工作的基础准备工作。
2、高素质软件人才战略
我始终认识到软件行业中人才的重要性以及人才在软件质量的重要作用,通过各种渠道,我们招聘了大量高素质人员,但要使其发挥工作积极性,激发其工作热情和责任感,通过我的努力和建议,人事部门制定了比较公平、公正、有效率的薪金激励体系,例如建立了将开发人员分为系统分析员、高级程序员、程序员等五档次十个级差的工资体系,最高人员可达月薪25000元/月,最底为2600元/月,同时给予人员以晋升和发展的空间,由于软件开发行业的特殊性,我们还十分重视人员素质提高与技术学习和交流,积极提倡和鼓励人员参与中软考和各类认证考试以及职称评审,这样在公司内形成了十分良好的积极进取向上的科研与学习气氛。
3、系统分析方法与模型选择、开发平台的选择以及中间件开发平台的引入
对于石油销售行业,需求并不经常变动,只是各地的需求和销售策略有所不用,我认为宜采用传统的结构化分析方法为主,结合面向对象的分析方法,在需求分析前期,以结构化分析方法,摸清系统的原有业务流程以及数据流,在设计阶段,在充分理解需求规格说明书的基础上,应采用面向对象的分析与设计方法,这样方可提高软件的可靠性、复用性、可维护性等,也就提高了软件的质量。在开发平台的选择上,由于加油卡清费数据量巨大,首先是基本大型关系数据库的应用,我们选择了SYBASE,开发工具采用了DELPHI
6、cylix分别用于WINDOWS平台和LINUX平台的开发,由于整个系统是采用集中式基于网络的应用,充值发卡为联机交易而加油站加油卡数据是在油站产生通过拨号上传的。为了保证操作事务的完整性,解决异构和跨平台的困难,采用了现今流行的中间件(BEA TUXEDO)开发技术,利用交易中间件实现联机交易,利用通讯中间件解决加油站数据上传,通过中间件中的两阶段提交技术,合理地利用了网络带宽,不至于与联机交易相冲突,也保证了网络不易拥塞而使数据不能上传。
另外,我们还采用了各类CASE工具,用于软件的建模、文档管理、版本管理、方案演示等。
4、收集需求的多种做法
在软件从分析到编码设计以及测试的全过程,我们反复采用了“请进来、走下去”的做法,即分析和开发人员一定要亲临业务现场,切身体会其中的业务操作,我们甚至要求与他们与业务人员打成一片,我们称之为走下去,目的就是为了更准确地把握需求。在开发时系统有了初步的软件原型后,我们又将各地石油分公司的专业人员、业务人员请过来,请他们谈谈对新原型的看法和意见,并按照他们的意见再次对开发工作进行修正,我们称之?quot;请进来“,目的是使确保软件提交后能尽快地获得用户方满意。这个过程,是循环反复,螺旋演进的,通过这个过程,我们的软件逐步达到了功能丰富、操作简便易用、运行效率高、速度快的高质量要求。据我们不完全统计,我们采用的”请进来,走下去“的做法涉及到数百个人次,参与分析与开发的人员不但结交了很多朋友,而且也切身体会到这种做法对保证软件质量的重要之处。
5、基于”应用微内核“模块的可扩展开发模式和思维的全面贯彻
虽然系统庞大,我们认为软件中最为基础的是加油IC卡的核心支付模块,是整个系统核心的核心,我称之为大系统的”应用微内核“,是其他系统的数据源,其他模块如清算结算子系统、油站零售管理与数据分析子系统,都是基于其上的扩展开发。因此,我要求,在核心级应用内核采用最为严格的软件工程开发规范,并在其中留有足够的数据库的表中的数据元(字段),以便应付多需求情况以及将来需求的可变性,这样,可使应用内微具有较大的灵活性。例如,加油站累计消费优惠,在各市公司采用不用的优惠措施,有的是累计积分奖励礼品,有的是累计现金,各地分公司由于经营上的需要,还执行了不同的油品价格政策,利用应用内核中的扩展字段很方便即可解决这个各地不同需求问题。应用微内核的采用还为其他系统提供了清晰的接口,例如,石化系统目前是正在作ERP软件的试点,该软件作为ERP底层数据源,十分方便地溶入了ERP系统中。微内核还提高了系统的运行效率,微内核代码经过了系统中最为严格的测试,有的模块和代码段一般都经历了四版以上才定稿,有的甚至在经历了十次以上的版本。我们还在开发前开展了较为有趣的编程优化大赛,谁的程序效率高、算法优、速度快,就选其中的人员参与到微内核开发组,并在薪水和奖金给予这些人员适当的上浮。
6、加强测试
为了提高软件质量,我们还十分重视软件的测试工作,成立了专业的测试小组,用于测试开发的软件和厂商提交的加油机卡机联动样机、消费POS、充值POS等,由于为全行业工程,中国石化统一了加油IC卡卡规范、重新修订了加油机通讯协议,这些都需要进行测试,方可准予厂商进场作业,为此开发部门还编制了相关的测试软件,通过测试后,方可发证与厂商。对核心软件,除了我们内部进行单元测试和集成测试和初步系统α测试外,我们还委托中国计算机软件测评中心这样的专业测评机构进行最终确认测试。在试用版投入试点过程中,我们还与各地石油分司共同建立了测试维护制度与维护操作办法,落实了具体人员,收集了大量测试数据,全面地进行了β版测试,此举也从运行现场发现了很多开发环境下所没有发现的问题,对提高软件质量起到了重要的作用。
三、完成的效果与评价
加强软件质量管理的做法还有很多,对其中的一些细节本文也不再讨论。如上所述,其做法基本上源于我参与多年的软件开发项目和项目管理的经验所得,当然在这个项目中我们也有所创新,如”应用微内核"的开发思想和思维的实施。这些做法从总体上保证了软件的高质量。当然,质量管理的内容与做法也要与时俱进。
但由于自己不是公司的决策层,仅负责软件技术方面的工作,对部分骨干人员的出走以及因项目各方利益的关系,从而影响了软件的开发和进度也无能为力。从这个项目来看,软件的开发仍然是整个工程推进的瓶颈,其开发进度与提交对整体加油卡工程进度影响很大,传统的软件开发问题在这个项目中也依然遇到。近些年来,软件行业的CMM认证较为流行,可使公司软件过程能力成熟度得到较大提高,我想这也是将来在软件质量方面的努力之处。总之,对于软件项目开发,人的作用和质量管理的作用都十分的重要,我也期待着在将来能不断提高自已的技术与管理水平,也能够希望更多的专业人员投入到软件质量管理的研究中来,为提高我国软件产业的软件质量而奋斗。
第四篇:软件项目质量管理实战总结
软件项目质量管理实战总结
第一章 引言
许多IT项目开发的系统应用在生死攸关的场合。例如,1981年,由计算机程序改变而导致的1/67的时间偏差,使航天飞机上的5台计算机不能同步运行,这个错误导致了航天飞机发射失败。1986年,1台Therac25机器泄露致命剂量的辐射,致使两名医院病人死亡。造成惨剧的原因是一个软件出现了问题,导致这台机器忽略了数据校验。这些惨痛的教训说明,在软件开发项目中认真抓好质量管理,并加强有关软件项目质量管理的研究是摆在我们面前的重要课题。
软件项目质量管理包括:质量计划编制、质量保证和质量控制三个过程域。质量计划是质量管理的第一过程域,它主要结合各个公司的质量方针,产品描述以及质量标准和规则通过收益、成本分析和流程设计等工具制定出来实施方略,其内容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。质量保证则是贯穿整个项目全生命周期的有计划和有系统的活动,经常性地针对整个项目质量计划的执行情况进行评估、检查与改进等工作,向管理者、顾客或其他方提供信任,确保项目质量与计划保持一致。质量控制是对阶段性的成果进行检测、验证,为质量保证提供参考依据,它是一个PDCA循环过程。
第二章 对软件项目质量管理理论的认识
软件项目的质量管理指的是保证项目满足其目标要求所需要的过程,它包括编制质量计划、质量控制、质量保证等过程。
2.1 质量计划编制
现代质量管理的基本宗旨是:“质量出自计划,而非出自检查”。只有做出精准的质量计划,才能指导项目的实施、做好质量控制。
编制项目的质量计划,首先必须确定项目的范围、中间产品和最终产品,然后明确关于中间产品和最终产品的有关规定、标准,确定可能影响产品质量的技术要点,并找出能够确保高效满足相关规定、标准的过程方法。编制质量计划通常采用流程图、因果分析图等方法对项目进行分析,确定需要监控的关键元素,设置合理的见证点(W点)、停工待检点(H点),并制定质量标准:
1)流程图:
显示系统的各种成分是如何相互关系的,帮助我们预测在何处可能发生何种质量问题,并由此帮助开发处理他们的办法。
2)因果分析图(也称鱼刺图):
对于复杂的项目,编制质量计划时可以采用因果分析图,描述相关的各种原因和子原因如何产生潜在问题或影响,将影响质量问题的“人员、设备、参考资料、方法、环境”等各方面的原因进行细致的分解,方便地在质量计划中制定相应的预防措施。其次,质量计划中还必须确定有效的质量管理体系,明确质量监理人员对项目质量负责和各级质量管理人员的权限。戴明环(又名PDCA循环法)作为有效的管理工具在质量管理中得到广泛的应用,它采用计划——执行——检查——措施的质量环,质量计划中必须将质量环上各环节明确落实到各责任单位,才能保证质量计划的有效实施。
2.2 按照质量计划实施有效的质量控制
质量计划确定后,按照其建立的质量管理体系,各责任单位就必须按照PDCA质量环的要求,实施有效的质量控制。质量控制应贯穿于项目的整个过程,它可分为监测和控制两个阶段:监测的目的就是收集、记录和汇报有关项目质量的数据信息;控制就是使用质量监测提供的数据,进行控制,确保项目质量与计划保持一致。
在质量监测过程中,对于质量计划中设置的见证点、停工待检点,质量监测人员要按照作业程序及时进行测量检查(其中对于停工待检点必须由监理人员签字认可后才能进入下一道工序),以确定项目成果(或阶段成果)是否符合相关的质量标准。对于见证点或停工待检点要防止跳过检查,因为避免错误的成本总是大大低于补救错误的成本。对质量监测的结果应采用相应的统计方法进行分析,如帕累托图法(按发生频率排序的直方图,它显示了可识别原因的种类和所造成的结果的数量)等。通过统计分析对人员、设备、参考资料、方法、环境等影响项目质量的因素进行监控,确定项目实施过程是否在控制之中,同时进行趋势分析,对一些偏向于不合格的趋势及早进行控制。质量控制阶段应根据验收数据做出验收决定,确定是否进入下一步工序。对于质量监测中发现的不合格,应及时利用“因果分析图”等方法分析原因,并进行适宜的处置,保证不合格得到识别和有效的控制。不合格处置包括返工、返修、降级、让步放行、报废等形式。
质量监测分析时,对于已发现的不合格或潜在不合格,应制定相应的纠正措施或预防措施,以消除不合格或潜在不合格的原因,防止不合格的发生。纠正措施或预防措施制定后,应对质量计划进行相应的调整,保证项目的顺利实施。
项目收尾包括项目评估和项目终止两个阶段。项目收尾阶段的质量控制是一个非常重要而又容易忽视的内容。
项目质量评估不仅仅是在项目完成后进行,还包括对项目实施过程中的各个关键点的质量评估。项目质量评估看起来属于事后控制,但它的目的不是为了改变那些已经发生的事情,而是试图抓住项目质量合格或不合格的精髓,以使将来的项目质量管理能从中获益。
项目终止阶段,是在决策项目终止后,检查项目文件资料完备,包括项目施工质量验评表、竣工报告等,同时进行项目总结。项目总结是一个把实际运行情况与项目计划不断比较以提炼经验教训的过程。通过项目质量计划和总结,项目过程中的经验和教训将得到完整的记录和升华,成为“组织财富”。
四、项目质量管理的难点
每个项目的实施总是拥有同样的总体目标:质量、时间和成本。三者是一个相互制约、相互影响的统一体,其中任一项目标变化,都会引起另两个目标变化,并受其制约。如何合理的保证项目质量,正确处理质量与时间、成本之间的矛盾是项目质量管理的一个难点,这需要整合项目所有方面的内容,保证按时、低成本地实现预定的质量目标。
根据侧重点不同,项目可分为质量倾斜型、工期倾斜型及成本倾斜型体系。我们在编制项目计划时,一般而言是时间、成本、质量标准均已确定,在项目实施过程中就需在从客观因素、具体情况出发,根据将要采取的行动和可能导致的后果进行综合分析研究;按切合实际的原则,使项目进展平衡有节奏地进行,以求达到预期目标。避免出现工期紧张或成本减少,导致质量降低的现象,而质量下降又往往造成返工等后果而导致延长工期和增加成本。
2.3 对软件质量保证的认识
2.3.1 有关SQA的理论
我们都知道一个项目的主要内容是:成本、进度、质量;良好的项目管理就是综合三方面的因素,平衡三方面的目标,最终依照目标完成任务。项目的这三个方面是相互制约和影响的,有时对这三方面的平衡策略甚至成为一个企业级的要求,决定了企业的行为,我们知道 IBM的软件是以质量为最重要目标的,而微软的“足够好的软件”策略更是耳熟能详,这些质量目标其实立足于企业的战略目标。所以用于进行质量保证的SQA 工作也应当立足于企业的战略目标,从这个角度思考SQA,形成对SQA的理论认识。
软件界已经达成共识的:影响软件项目进度、成本、质量的因素主要是 “人、过程、技术”。首先要明确的是这三个因素中,人是第一位的。
现在许多实施 CMM的人员沉溺于CMM的理论过于强调“过程”,这是很危险的倾向。这个思想倾向在国外受到了猛烈抨击,从某种意义上各种敏捷过程方法的提出就是对强调过程的一种反思。“XP”中的一个思想“人比过程更重要” 是值得我们思考的。我个人的意见在进行过程改进中坚持“以人为本”,强调过程和人的和谐。
根据现代软件工程对众多失败项目的调查,发现管理是项目失败的主要原因。这个事实的重要性在于说明了 “要保证项目不失败,我们应当更加关注管理”,注意这个事实没有说明另外一个问题“良好的管理可以保证项目的成功”。现在很多人基于一种粗糙的逻辑,从一个事实反推到的这个结论,在逻辑上是错误的,这种错误形成了更加错误的做法,这点在SQA的理解上是体现较深。
如果我们考证一下历史的沿革,应当更加容易理解 CMM的本质。CMM首先是作为一个“评估标准”出现的,主要评估的是美国国防部供应商保证质量的能力。CMM关注的软件生产有如下特点:
(1)质量重要
(2)规模较大
这是 CMM产生的原因。它引入了“全面质量管理”的思想,尤其侧重了“全面质量管理”中的“过程方法”,并且引入了“统计过程控制”的方法。可以说这两个思想是CMM背后的基础。
上面这些内容形成了我们对软件过程地位、价值的基本理解;在这个基础上我们可以引申讨论 SQA。
2.3.2 生产线的隐喻
如果将一个软件生产类比于一个工厂的生产。那么生产线就是过程,产品按照生产线的规定过程进行生产。SQA的职责就是保证过程的执行,也就是保证生产线的正常执行。
抽象出管理体系模型的如下,这个模型说明了一个过程体系至少应当包含 “决策、执行、反馈”三个重要方面。
QA的职责就是确保过程的有效执行,监督项目按照过程进行项目活动;它不负责监管产品的质量,不负责向管理层提供项目的情况,不负责代表管理层进行管理,只是代表管理层来保证过程的执行。
2.3.3 SQA和其他工作的组合
在很多企业中,将 SQA的工作和QC、SEPG、组织级的项目管理者的工作混合在一起了,有时甚至更加注重其他方面的工作而没有做好SQA的本职工作。
国内现在基本有三种QA(按照工作重点不同来分):一是过程改进型,一是配置管理型,一是测试型。个人认为是因为SQA工作和其他不同工作组合在一起形成的。
下面根据经验对它们之间的关系进行一个说明。
QA和QC ,两者基本职责;
QC:检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
QA:审计过程的质量,保证过程被正确执行;是过程质量审计者;
注意区别检查和审计的不同,检查:就是我们常说的找茬,是挑毛病的;
审计:来确认项目按照要求进行的证据;仔细看看CMM中各个KPA中SQA的检查采用的术语大量用到了“证实”,审计的内容主要是过程的;对照CMM看一下项目经理和高级管理者的审查内容,他们更加关注具体内容。
对照上面的管理体系模型,QC进行质量控制,向管理层反馈质量信息;QA则确保QC按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。这就是QA和QC工作的关系。
在这样的分工原则下,QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。
如果企业原来具有 QC人员并且QA人员配备不足,可以先确定由QC兼任QA工作。但是只能是暂时的,独立的QA人员应当具备,因为QC工作也是要遵循过程要求的,也是要被审计过程的,这种混合情况,难以保证QC工作的过程质量。
QA 和SEPG,两者基本职责。SEPG:制定过程,实施过程改进;QA:确保过程被正确执行。SEPG应当提供过程上的指导,帮助项目组制定项目过程,帮助项目组进行策划;从而帮助项目组有效的工作,有效的执行过程。如果项目和QA对过程的理解发生争持,SEPG作为最终仲裁者。为了进行有效过程改进,SEPG必须分析项目的数据。QA本也要进行过程规范,那么所有QA中最有经验、最有能力的QA可以参加SEPG,但是要注意这两者的区别。
如果企业的 SEPG人员具有较为深厚的开发背景,可以兼任SQA工作,这样利于过程的不断改进;但是由于立法、执法集于一身也容易造成SQA过于强势,影响项目的独立性。
管理过程比较成熟的企业,因为企业的文化和管理机制已经健全,SQA职责范围的工作较少,往往只是针对具体项目制定明确重点的SQA计划,这样SQA的审计工作会大大减少,从而可以同时审计较多项目。
另一方面,由于分工的细致化,管理体系的复杂化,往往需要专职的 SEPG人员,这些人员要求了解企业的所有管理过程和运作情况,在这个基础上才能统筹全局的进行过程改进,这时了解全局的SQA人员就是专职SEPG的主要人选;这些SQA人员将逐渐的转化为SEPG人员,并且更加了解管理知识,而SQA工作渐渐成为他们的兼职工作。这种情况在许多 CMM5企业比较多见,往往有时看不见SQA人员在项目组出现或者很少出现,这种SEPG和SQA的融合特别有利于组织的过程改进工作。SEPG确定过程改进内容,SQA计划重点反映这些改进内容,从保证有效的改进,特别有利于达到CMM5的要求。从这个角度,国外的SQA人员为什么高薪就不难理解了,也决定了当前中国SQA人员比较被轻视的原因;因为管理过程还不完善,我国的SQA人员还没有产生这么大的价值。
2.3.4 QA和组织级的监督管理
有的企业为了更好的监督管理项目,建立了一个角色,我取名为 “组织级的监督管理者”,他们的职责是对所有项目进行统一的跟踪、监督、适当的管理,来保证管理层对所有项目的可视性、可管理性。为了有效管理项目,“组织级的监督管理者”必须分析项目的数据。他们的职责对照上图的模型,就是执行 “反馈”职能。
QA本身不进行反馈工作,最多对过程执行情况的信息进行反馈。SQA职责最好不要和“组织级的项目管理者”的职责混合在一起,否则容易出现SQA困境:一方面SQA不能准确定位自己的工作,另一方面过程执行者对SQA人员抱有较大戒心。
如果建立了较好的管理过程,那么就会增强项目的可视性,从而保证企业对所有项目的较好管理;而 QA来确保这个管理过程的运行。
2.3.5 SQA的工作内容和工作方法
2.3.5.1 计划
针对具体项目制定 SQA计划,确保项目组正确执行过程。制定SQA计划应当注意如下几点:
有重点:依据企业目标以及项目情况确定审计的重点。
明确审计内容:明确审计哪些活动,那些产品。
明确审计方式:确定怎样进行审计。
明确审计结果报告的规则:审计的结果报告给谁。
2.3.5.2 审计/证实
依据 SQA计划进行SQA审计工作,按照规则发布审计结果报告。注意审计一定要有项目组人员陪同,不能搞突然袭击。双方要开诚布公,坦诚相对。审计的内容:是否按照过程要求执行了相应活动,是否按照过程要求产生了相应产品。
2.3.5.3 问题跟踪
对审计中发现的问题,要求项目组改进,并跟进直到解决。
2.3.5.4 SQA的素质
过程为中心:应当站在过程的角度来考虑问题,保证了过程,QA就尽到了责任。
服务精神:为项目组服务,帮助项目组确保正确执行过程。
了解过程:深刻了解企业的工程,并具有一定的过程管理理论知识。
了解开发:对开发工作的基本情况了解,能够理解项目的活动。
沟通技巧:善于沟通,能够营造良好的气氛,避免审计活动成为一种找茬活动。第三章 软件项目质量管理在实际中的具体做法
3.1 质量管理责任分配
笔者曾在美国TAJ Technologies公司任软件工程师工作。TAJ Technologies公司(位于美国明尼苏达州,有约200名员工)在开发项目上按照规范化软件的生产方式进行生产,在生产流程上采用ISO9000 的标准进行。每个项目除配备了项目开发所需角色外,还专门配备了配置管理小组、测试小组和质量保证小组确保质量管理的实施,下面针对这三种角色进行说明:
3.1.1 配置管理小组职责
配置管理小组是保证项目开发完毕的同时,内部文档和外部文档都同时完成。内部文档的及时产生和规范,是保证项目开发各小组能够更好的接口和沟通的重要前提,从另一个方面讲,也是保证工程不被某个关键路径所阻塞而延滞的前提。如上所述,配置管理小组还是保证质量保证小组得以发挥作用的基础。配置管理小组的主要职责包括: 完善各个部门发送需要存档和进行版本控制的代码、文档(包括外来文件)和阶段性成果;对代码、文档等进行单向出入的控制;对所有存档的文档进行版本控制;提供文档规范,并传达到开发组中。
3.1.2 测试小组职责
测试小组作为质量控制的主要手段,负责软件的测试设计和执行工作。如同软件开发一样,测试在执行之前,同样需要进行测试计划和测试策略的设计,通常情况下测试可以分为如下几种类型,如:正确性测试、功能性测试、性能测试、安全测试和系统测试等。而这些测试均需要在测试计划和测试策略中进行描述用以指导测试小组成员进行测试用例编写和测试执行。程序员在交给测试人员之前是进行过一定的单元测试,确保程序编译、运行正确。
测试人员根据详细设计的文档对软件要实现的功能进行一一测试,保证软件的执行正确的实现设计要求,在此也只证明了软件正确的反映了设计思想,但是否真正反映了用户的需求仍需要进一步的功能性测试。
测试人员只有根据软件需求规格说明书所提及的功能进行检测,才能确保项目组开发的软件产品满足用户需求。在正确性测试完成之后,需要测试的是软件的性能,软件的性能在本项目中占有重要的地位,性能要求有可能改变软件的设计,为避免造成软件的后期返工,测试在性能上需要较大的侧重。如果有必要的话,测试小组还需要做安全测试,以确保系统使用安全可靠。
3.1.3 质量保证小组职责
质量保证小组作为质量保证的实施小组,主要职责是保证软件透明开发的主要环节。在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证小组对项目经理提供项目进度与项目真正开发时的差异报告,提出差异原因和改进方法。
在项目进度被延滞或质量保证小组认为某阶段开发质量有问题时,提请项目经理、项目负责人等必要的相关人员举行质量会议。解决当前存在的和潜在的问题。质量保证是建立在文档的复审基础之上,因而文档版本的控制,特别是软件配置管理,直接影响软件质量保证的影响力和力度。质量保证小组的检测范围包括:系统分析人员是否正确的反映了用户的需求;软件执行体是否正确的实现了分析人员的设计思想;测试人员是否进行了较为彻底的和全面的测试;配置管理员是否对文档的规范化进行的比较彻底,版本控制是否有效。
3.2 质量管理实施
有了良好的资源配备,又如何在项目全生命周期内实施质量保证,让我们从以下几个方面来看质量保证的实施过程:
3.2.1 项目进度的质量保证
项目进度是项目进行是否顺利的最直观表现。显然在项目开始之前,项目开发计划是必须的。如果项目开发计划的制定的是完全合理的,那项目进度也就真正表达了项目与最终的交付使用之间的距离,然而要制定完全合理的项目开发计划几乎不太可能。可见要保证项目进度,首先要保证项目开发计划尽可能合理。
项目计划的合理程度与项目计划制定者从事类似规模和类似业务的项目的经验有直接关系,通过经验往往能够预见潜在的阻碍,这样要求项目计划制定者需要集众人之力来完善计划。
当项目计划制定初期,由质量保证小组组织召开的项目计划评审会,邀请公司技术专家、用户以及项目组小组成员一起讨论项目计划的可行性,会议通常采用头脑风暴法,各抒己见,会后由指定的记录员形成质量记录,发送给相关人员,对其计划中不合理的地方进行修改完善,并由质量保证人员对其结果跟踪,以确保项目计划完整性、可行性,完善后的计划交由配置管理人员进行版本控制。
然而在计划实施过程中,计划不是“固定化”。常有人道,“计划赶不上变化”,但“要跟上变化”。项目计划以里程碑为界限,将整个开发周期划分为若干阶段。根据里程碑的完成情况,适当的调整每一个较小的阶段的任务量和完成的任务时间,这种方式非常有利于整个项目计划的动态调整。也利于项目质量保证的实施。
实际运作中,当质保小组发现计划实施的差异后,报告项目经理,由项目经理组织负责对计划进行周期性维护,对于已经变动的计划由质保小组协助配置管理小组完成版本控制。
项目开发各阶段的质量保证
a、需求分析
需求分析是开发人员对系统需要做什么和如何做的定义过程。从系统分析的经验来看,这个过程往往是个循序渐进的过程,一次性对系统形成完整的认识是困难的。只有不断地和客户领域专家进行交流确认,方能逐步明了用户的需求。从系统开发的过程得知,系统分析时犯下的错误,会在接下来的阶段被成倍的放大,越是在开发的后期,纠正分析时犯下的错误所花费的代价越是昂贵,也越发影响系统的工期和系统的质量。
解决系统分析错误的方法。TAJ Technologies公司通常采用邀请用户参与进行需求评定,然后对其用户的意见由质保成员跟踪检测是否纳入需求规格说明书,同时与用户签字确认形成需求基线,交由配置管理员放入配置管理库。
虽然尽早的邀请用户参与,仍然避免不了项目进行中用户的需求变更请求。对于开发过程存在的需求变动,我们要求用户填写变更申请单发送给项目配置管理员,在通过配置配置员转交质保小组,负责组织专家小组和项目组成员一起讨论实施变更的可行性及实施后所带来的影响,小的变更则直接记录入变更记录原因分析项和风险项栏,大的变更则需要形成正式的变更报告,无论那种变更都需要对相应的文档实施同步变更(包括需求规格说明书、详细设计文、安装手册、操作手册等)。但是对于无法实现或是变更会带来巨大的影响而将导致进度的延期,这时,我们将变更报告提交给用户或邀请用户进行协调会议,讨论变更取舍问题或是项目进度变更问题。
决定变更之后,由项目经理组织实施变更,测试人员检测变更结果,而质保小组成员监督变更实施过程并协助配置管理员对变更后的成果物进行版本控制。变更实施完后,上线前还需要指定人员协助用户一同测试并由用户签字后同意方可上线。
b、系统设计
优良的体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好的设计方法,自然设计选型成为了系统设计首要的工作,究竟是采用哪种设计方法好呢?
对于设计选型不能一概而论,需要针对项目的结构、项目的特征和用户的需求来分析,同样也要考虑到参与项目小组成员的素质,如果其中大部分都没有从事过面向对象的设计且项目进对紧迫,这样没有多余的时间来培训小组成员来掌握面向对象的设计方法,尽管众所周知面向对象设计方法的优势,我们还是不如采用面向过程的方式(除用户指定开发设计方式外)可以减少项目承担的技术风险。
TAJ Technologies公司有过一个项目,用户指定需要采用面向对象分析、设计和开发,且开发周期短,在无赖的情况下,项目小组只能选用面向对象的软件开发过程,由于项目小组很少从事过面向对象的开发,经验缺乏,导致项目上马后项目进度延误,项目没有达到预期的效果。
针对此次开发,我们分析其原因,发现小组成员在开发过程中对于新技术互相交流少,各自有各自的理解和想法,造成理解上的不一致性,导致工作重复性高,滞后项目进度。建议解决方法是项目组成员采用集中办公,分块学习,学习的成果马上向项目相关人员发布,再由配置管理员对其发布的文档进行整理、规类放入配置库以供大家共享。这样方便大家的互相学习,减少重复的工作。在这次开发中我们公司从管理人员、设计人员到开发人员都汲取了很多教训,同时经过此次项目的开发,小组成员也积累了丰富的面向对象的开发经验。
除设计选型,还有一个容易被忽视的问题,就是公共类开发。公共类开发可以减少工作中的重复工作,降低开发成本。这要求我们再设计阶段通过对用户需求的仔细研究,尽可能的识别出公共类,并进行定义指定专人负责设计通知其它设计人员,以减少重复工作。对于项目组提供的设计文档,由质保小组组织技术专家、项目组设计人员、开发人员和测试人员对其设计文档的评审,检测设计文档对其下一阶段工作的可行性,及时发现设计中可能存在的错误,降低项目开发风险,同时确保设计文档能为开发人员、测试人员提供切实的指导。对于可复用的设计进行提取作为公共库设计和开发,提供项目组或整个公司重用。最后交由配置管理员进行设计文档的版本控制。
c、实现
实现也就是代码的生产过程。这里不仅包括代码的产生,同时也包括测试用例的产生。针对上一阶段提供详细设计,程序员开始编码并且调试程序,测试人员则根据设计进行测试用例的设计,设计出来的用例需要得到项目组成员认可由项目经理审核通过才能进入配置库。同时程序员调试完程序提交测试人员进行程序正确性检测。
d、文档管理
文档维护主要是配置管理小组的工作。文档从用途上分主要分为内部文档和外部文档。
内部文档包括: 项目开发计划;需求分析;体系结构设计说明;详细设计说明;构件索引;构件成分说明;构件接口及调用说明;组件索引;组件接口及调用说明;类索引;类属性及方法说明;测试报告;测试统计报告;质量监督报告;源代码;文档分类版本索引;软件安装打包文件。
外部文档主要包括: 软件安装手册;软件操作手册;在线帮助;系统性能指标报告;系统操作索引。
如何保证文档的全面性,使其真正为项目的进度提供保证,又不因为文档的写作而耽误项目的进度,这仍然是一个比较难解决的问题。解决此问题,其核心仍然是个“ 度”的问题。
在本项目的开发中,配置管理小组的一个非常重要的任务还是书写文档规范和文档模板。当有文档模板后需要书写文档的人员只剩下“填空”的工作,从某种意义上讲,书写文档的速度会加快。如果书写文档的人员认为文档的更细致的部分可以由他人帮助完成,则该文档即交由他人完成,但此时文档并不算被正式提交,当他人书写完毕之后,必须由文档的初写者进行复审,复审通过后方可以正式提交,进入软件配置管理的循环中。
配置管理小组真正核心的工作是对文档的组织管理。根据文档的不同,文档的来源也不同,有些是通过质量保证小组经过复审之后转交给配置管理小组,有些则会直接从文档的出处到达配置管理小组。文档的管理是一个非常烦琐的工作,但是长远来看它不仅使项目的开发对单个主要人员的依赖减少,从而减少人员流动给项目的带来的风险,更重要的是在项目进行到后百分之十的时候起到拉动项目的作用。
从以往做大项目的经验来看,写作文档在项目开发的早期可能会使项目的进度比起不写文档要稍慢,但随着项目的进展,各个部门需要配合越来越多,开发者越来越需要知道其他人员的开发思路和开发过程,才能使自己的开发向前推进。一个明显的例子就是系统整合,或者某些环节是建立在其他环节完成的基础之上时,就更显现出文档交流的准确性和高效性。
3.2.2 系统维护质量保证
在TAJ Technologies公司,维护小组的任务一方面是保证对项目客户的跟踪服务,另一方面是确保该项目其它的开发人员从项目中尽快的解脱出来以便投入到下一个项目的开发中。所以通常项目维护小组成员主要由项目组的少部分开发人员承担完成。他们不仅了解软件的核心内容,而且与客户也不陌生,以便能够以最快的速度修正错误。对于一般性的错误,如操作不当等引起的问题,全部由维护小组执行完成,但需要用户测试确认上线。如果较大的修改则需要走变更控制流程,用户或者维护人员填写变更申请,经专家会议讨论分析可行方案在由维护小组实施,通过测试后方可提交用户。
维护小组的人员基本上是按项目跟进的。当一个项目刚刚交付用户时,在维护小组有较多的人员进行跟进,随软件的稳定,跟进的人逐步减少,并转移到其它项目中去。
未完待续
第五篇:软件质量管理部规档
软件质量管理部规范文档部门职责
1.1 质量管理部
部门职责:
接受公司所有系统的质量测试任务
发现并提出系统存在的缺陷,间接保证上线系统无缺陷或在允许缺陷范围内 协助项目经理重现、分析系统缺陷
提供系统测试报告并做可上线结论定性
系统上线质量跟踪
部门经理:
部门日常行政事务管理、人力资源招聘、分配及管理
制定或协助测试工程师制定项目测试计划
制定或协助测试工程师制定项目测试进度
检查项目测试用例
测试过程管理、保证系统测试的全面性、完整性
保证项目测试结果的高质量性
审核测试报告
测试人力资源培训及技能提高管理
系统上线质量跟踪
测试工程师:
接受部门经理分配的测试任务 制定项目测试计划 制定项目测试进度 高质量完成测试任务
编写测试报告
系统上线质量跟踪工作流程及制度
2.1 进度表编写及更新
测试进度
在接受《功能需求说明书》及项目《详细设计》、《数据字典》等资料后,质量
管理部经理需主导及督促测试工程师制定项目测试计划及测试进度,审核
通过后纳入项目开发进度表一起形成整体进度表。
进度变更申请
申请条件:涉及功能变更、人力资源、外部因素、进度制定估计严重不足的情况。申请时间:前置一个工作日以上的当前工作日下班内申请,进度过期再申请按项目非正
当延迟纳入考核。
审核人:中心经理。
项目立项后,需要出具测试进度安排表;
进度表相关的注意事项:
(1)进度安排表:
先安排第一轮测试所使用的时间,回归测试要等第一轮测试完成后,根据BUG数量,BUG牵涉面等来综合考虑,给出回归测试进度安排后,要及时更新到project上;
(2)测试报告不算在测试时间内;
(3)性能测试,安排的进度表,也是第一轮测试所需的时间,测试完成后,提交报告给开发,进行软硬件调整后,再根据需要配合开发做后续调整工作;
但过程中可以先反馈一些情况给开发,让他们做调整准备;
2.2 项目立项流程管理
流程中与测试经理及测试人员相关的步骤包含如下:
(1)需求评审:
主持人:产品经理
参与人:产品部经理、产品经理、项目经理、测试经理及测试工程师,及其它须邀请人员 目的:评审直至《功能需求说明书》被项目组接受
注:需求确认将穿插与后续需求分析的全过程,涉及后续开发中需求变更内容,项目经理需会知产品经理以保持开发与功能需求的一致性,产品经理须承担起功能变更管理职责
(2)编写测试计划:
编写人:质量管理部经理、测试工程师
产物:《测试计划》
标准:项目经理、质量管理部经理、中心经理审核通过
(3)编写测试用例:
编写人:测试工程师
产物:测试用例,见TD
编写依据:《功能需求说明书》为主《详细设计》、《数据字典》为辅
标准:项目经理、质量管理部经理、中心经理审核通过
(4)测试申请:
申请人:项目经理
申请对象:质量管理部经理
申请前提:
1、编写《测试申请单》并审核通过;
2、保证被测试系统在开发角度已无BUG;
3、提交封存好的系统安装程序;
(5)第一轮测试:
申请人:项目经理
申请对象:质量管理部经理
申请前提:
1、编写《测试申请单》并审核通过;
2、提交封存好的系统安装程序;
(6)回归测试及测试完成:
测试对象:开发修正BUG及其相关模块
完成标准:
1、从测试角度保证系统已无任何BUG或仅存可允许之BUG;
2、测试报告编写完成(可以测试结束后一工作日内完成)。
产物:《测试报告》
(7)结案、结案总结会议、验收
结案标准:
1、测试完成并出具测试报告;
2、项目总结会议招开并发布会议纪要;
3、相关项目文件清单用户册及应维手册完成。
验收人:中心经理及分管副总
验收依据:项目开发、文档、测试进度数据及BUG数据
产物:评定项目一期资金比率
(8)上线跟踪:
跟踪人:开发部经理、项目经理、测试工程师
跟踪内容:系统软硬件运行情况
问题处理:上线系统问题处理须响应快、处理及时并反馈相关部门
跟踪及处理责任人:项目经理
项目立项流程相关的注意事项:
(1)测试人员不一定要内测,视测试人员时间而定;
(2)所有项目除小型变更外都要写测试计划;
(3)上线跟踪要反馈信息给中心经理,由中心经理发布。
2.3 短期项目开发流程
短期项目指为适合特定业务或系统需而立项的开发项目,其特点为流程从简、结案迅速。
流程如下:
测试(开发或测试部门),可不正式测试
2.4 项目变更流程
流程中与测试经理及测试人员相关的步骤包含如下:
更新测试用例:
执行人:测试工程师
产物:新测试用例
测试:
执行人:测试工程师
产物:经需求变更的功能测试通过
项目变更流程的相关注意事项:
测试前提:变更单变更的内容,在需求及详细设计中有体现;
测试时间:提交测试到上线截止时间;
测试依据:需求及详细设计例会及报告
开发中心按角色及部门制定如下例会及报告制度:
3.1 例会制度
部门经理例会:每周第一个工作日定期招开,参与人员为中心经理、部门经理
部门例会:须在例会形成例会纪要,并发送至中心经理、分管副叫及其它部门经理处
产品部例会:由产品部部门经理主持,每周一次,参与人员为中心经理、产品部经理及产品部所有成员
开发部例会:由开发部部门经理主持,每周一次,参与人员为中心经理、开发部经理及各项目经理
质量管理部例会:由质量管理部部门经理主持,每周一次,参与人员为中
心经理、质量管理部经理及质量管理部所有成员
其它需讨论及招开的会议
3.2 报告制度
日报
编写对象:中心所有成员
发送时间:每工作日尾段时间
发送对象:
产品部及质量管理部部门成员发送至所属部门经理
周报
编写对象:项目经理、部门经理、中心经理
发送时间:每周第一个工作日内
发送对象:
项目经理发送至部门经理及中心经理和分管副总 部门经理发送至中心经理及分管副总,并抄送至其它部门经理处 开发部成员发送至所属项目组项目经理 项目经理发送至所属部门经理及中心经理和分管副部 部门经理发送至中心经及和分管副部,并抄送至其它部门经理处 中心经理发送至分管副总 中心经理发送至分管副总
月报
编写对象:项目经理、部门经理、中心经理
发送时间:每月第一个工作日内
发送对象:
项目经理发送至部门经理及中心经理和分管副总 部门经理发送至中心经理及分管副总,并抄送至其它部门经理处 中心经理发送至分管副总
以上各报告,配有详细报告模,需严格按模书写。