第5章项目质量管理案例
质量是“使实体具备满足明确或隐含需求能力的各项特征之总和”,明确或隐含的需求是指按项目需求制定的基础性文件。在信息系统项目中,一般把《系统需求规格说明书》作为项目需求的基础性文件。
质量管理作为项目管理的一部分,具有非常重要的地位。质量管理的目的是通过执行项目质量管理过程,使用一些基本项目管理工具和技术来保证信息系统的质量。时间、成本、质量是项目管理的三大目标,如果质量不能满足要求,即使进度再快,成本再节省,项目也没有意义。
5.1案例一:计划及跟踪
阅读以下关于信息系统项目管理过程中质量管理方面问题的叙述,回答问题1至问题3。
5.1.1案例场景
某银行信息系统工程项目,包含省级广域网工程、储蓄所终端安装工程、主机系统工程、存储系统工程、备份系统工程、银行业务软件开发工程等若干子项目。此工程项目通过公开招标方式确定承建单位,中培信息技术有限公司(Z公司)经过激烈竞标争夺,赢得工程合同。合同约定,工程项目的开发周期预算为36周。
由于银行对于应用软件质量要求很高,Z公司也非常重视工程质量,安排有资深资历的高级工程师老王全面负责项目实施。在工程正式开工之前,老王对工程项目进行了分解,根据工程分析,老王认为此工程项目质量、进度的关键在于银行业务定制应用软件的开发。除工程整体的开发计划外,老王还针对应用软件开发制定了详细的开发计划,定制应用软件的开发周期为36周。网络工程、终端安装工程、主机系统工程、存储系统工程、备份系统工程等与应用软件开发并行实施。
老王对工程项目在需求分析、概要设计、详细设计、编码、单元测试、集成测试等各个环节要求均非常严格。根据老王安排,需求分析、概要设计均安排有多年工作经验的高级软件工程师担任,各个阶段的阶段成果均组织了严格的评审,以保证各个阶段成果的质量。
在软件编码及单元测试工作完成之后,老王安排软件测试组的工程师编制了详细软件测试计划、测试用例,包括集成测试、功能测试、性能测试、安全性测试,等等。
老王在安排软件测试任务的时候,在动员软件开发小组时宣讲:“软件测试环节是软件系统质量形成的主要环节,各开发小组,特别是测试小组,应重视软件系统测试工作”。因此,老王安排给测试组进行测试的时间非常充足,测试周期占整个软件系统开发周期的40%,约14.5周。在软件系统测试的过程中,老王安排了详细的测试跟踪计划,统计每周所发现软件系统故障数量,以及所解决的软件故障。根据每周测试的结果分析,软件系统故障随时间的推移呈明显的下降趋势,第1周发现约100个故障,第2周发现约90个故障,第3周发现50个故障,……,第10周发现2个故障,第11周发现1个故障,第12周发现I个故障。于是张总工断言软件系统可以在完成第14周测试之后顺利交付给用户,并进行项目验收。
【问题1】 (7分)
请以300字内回答,老王的软件开发计划中是否存在问题?为什么?
【问题2】(8分)
请以200字内回答,老王根据对定制软件系统测试的跟踪统计分析结论,得出项目可于计划的测试期限结束后达到验收交付的要求,你认为可行吗,为什么?
【问题3】(10分)
请以300字内回答,若你是本项目的总工,你将怎样改进工作,以提高软件系统开发的质量,保证工程项目按期验收?
5.1.2案例分析
过去,很多IT集成公司所承建的定制软件工程项目,当进入到验收阶段的时候,用户常常拖延,或找这样那样的借口不给承建单位验收,这是什么原因呢?针对这个问题,建设单位、承建单位都有一定责任。对于建设单位来讲,由于建设单位对信息系统建设认识上的局限性,对软件系统质量鉴定的困难性,建设单位存在着对定制软件系统的质量的担心,因此,很难果断地做出验收项目的决定。
而对于承建单位来讲,承建单位在项目质量管理方面常常做得很不到位,比如:该提交工程实施计划、工程实施计划进度跟踪记录、工程概要设计书、详细设计书、应用系统配置文件、用户手册、培训资料等若干文档的时候没有提交,而很多承建单位在项目验收时,根本看不到这些文档,或即使有文档,但也极其不规范,文档质量很低。再比如:曾有个信息系统工程项目在提交用户验收的时候,有一台防火墙散乱地摆放在机柜外面,再看机柜上面所布放的通信线缆,显得杂乱无章,承建单位也没有意识到这个问题,用户虽看在眼里却不提醒承建单位,那请问,用户会给这样的项目进行验收吗?
通过硬件所表现出来的表面质量是很容易发现的,但对于软件系统的质量的衡量却是非常困难的,特别是对于那些对软件系统认识不够深入的IT系统建设单位,他们面对IT项目的验收,常常显得很谨慎也是可以理解的。
信息应用系统项目的质量保证与承建单位的质量保证体系是密切相关的,但并不等于承建单位有质量保证体系,如通过了ISO9000认证,或通过了CMM3, CMM4等认证,就一定能够保证IT项目的质量。承建单位的质量保证体系是一个大纲性质的,但实施项目的是项目小组,项目小组不能很好融合到承建单位的质量保证体系中是比较常见的现象,因此,为有效保证项目的质量,项目小组应当向建设单位或监理单位提交项目的质量保证计划。质量保证计划是在承建单位质量保证体系下编制的,是针对项目特点的,涉及保证项目质量的具体措施,更易于操作。当然,一个项目的质量保证计划如果照搬到另外一个项目,却不一定适用。而建设单位、监理单位可以通过对承建单位质量
保证计划的执行情况来判断其软件开发过程的质量,从而协助对定制软件产品质量的鉴定。
【问题1】
软件测试是保证软件质量的重要工作内容之一,但软件测试环节却不是软件质量的形成环节,测试只能检查软件中所存在的缺陷,发现问题。软件质量是在需求分析、设计、编码、测试、文档编制等软件生产的全过程中形成的。因此,我们要了解定制软件系统的质量,就必须了解承建单位开发软件系统的全部过程的质量。
测试计划和测试用例应当在软件的设计阶段制定。越晚进行的测试,其测试计划的编制时间就越早。如集成测试计划在概要设计阶段编制,功能确认测试计划在需求定义阶段就应当制定,整体测试计划也应当在需求分析阶段制定。
虽然我们在实践中有很多这样的情况,很多软件开发团队并不是在软件设计阶段同步制定软件测试计划和测试用例,甚至有很多软件开发中根本就没有制定规范的测试计划和测试用例。但这些并不是正统、规范的做法,这样的软件工程过程对于保证定制软件系统的质量来说是会打折扣的。若测试计划的编制时机不能按照规范进行,那说明软件企业的过程能力成熟度还不够,还是在采用手工作坊方式生产软件,想到哪里做到哪里,没有计划或计划不科学,不能有效地控制软件生产的质量。
【问题2】
软件系统的质量,仅仅根据测试的结论来进行断言是不够的。我们在进行项目开发计划安排的时候,应当将系统的试运行也安排在计划之内。系统的试运行牵涉到工程项目的建设方和承建方,除了技术方面的因素外,还涉及组织方面的因素,人文方面的因素等。承建方要安排足够的时间与建设方协商系统的试运行问题,在双方的配合下开展系统试运行工作,系统在试运行中,通常还会发现大量的故障,承建单位也必须配合解决这些系统故障。只有通过试运行的考验,才能够基本断定系统的质量是否符合要求;通过了试运行的考验,再向用户提出工程项目的验收,一般来说,用户的接受程度会比较高。
软件系统的试运行为什么如此重要呢?这是根据不同的工程项目的特点,如公路建设就不需试运行,住宅建设也不需试入住,通过质检方式就可确定工程项目的质量。而另外一些工程项目则是必须要进行试运行的,比如铁路系统
建设、水电站建设、化工厂建设等,这些类型的工程项目,不通过试运行,就不可能鉴定其质量,信息应用系统的建设也是一样。
【问题3】
另外,在向用户提出项目验收前,还得整理并提交完整的工程技术文档、系统维护文档、软件配置清单,给用户举办系统操作培训、维护培训,全面审核合同执行情况,编制项目竣工报告,等等。如果项目小组不注意这些工作,用户大多也不会来提醒你,用户只卡住验收关不让通过就可以了,当然也有部分用户可能会提醒项目小组离验收还差什么。毕竟项目的实施任务是属于承建单位的工作,承建单位理应完善自身的项目管理水平,不可能让用户来督促你、提示你,那不是用户的职责,更何况,很多用户自身也不知道IT项目该怎样管理,有哪些工作需要完成,但承建单位很多不规范的做法、存在的问题,让用户对质量不放心,用户却是能够觉察到的。特别要注意的是,项目经理在计划项目验收时,应当与用户的主要领导充分沟通,让客户领导了解项目的建设过程,了解项目的质量实施情况,让领导对项目的验收充满信心。
但请仔细分析本题,案例场景中通篇并没有提到关于工程文档、配置清单、培训等话题,这些内容并不是本题的关键,未提及的内容,老王可能没做到,但也可能做到,不好断言。我们只要能够抓住场景所描述的老王的主要缺陷,一是制定测试计划的时机不对,二是根据测试断定软件系统的质量不对,只要能抓住这两点就够了。其他的内容,也可以反映在答案中,但要注意语言要简练,虽不会导致扣分,但也不是得分的要点。
5.1.3参考答案
【问题1】(7分)
老王安排测试计划的编制时机不对。测试计划和测试用例的编制应当与软件系统的概要设计、详细设计同步进行。
测试计划不够全面,还应当包含系统整体测试、运行测试。运行测试是对应用软件系统整体功能的全面检验,也是最能够说明软件系统质量的测试环节。
系统测试计划、确认测试计划应当在需求分析阶段制定,测试用例、测试说明应当在概要设计阶段制定。
集成测试计划应当在概要设计阶段制定,测试用例、测试说明应当在详细设计阶段制定。
单元测试计划应当在详细设计阶段制定,测试用例、测试说明应当在编码阶段制定。
【问题2】(8分)
在定制软件开发项目中,根据测试结果判定软件系统的质量是不够的,因为软件系统中的缺陷可能由于多种原因而未在测试中被发现,如测试环境与运行环境的区别、测试人员的能力问题、测试计划和测试用例的局限及缺陷。
由于软件系统质量、功能、性能具有很强隐蔽性的特点,用户往往不大可能根据项目开发小组的测试结论来进行项目的验收。最好让用户组织对项目进行试运行,以试运行的结论来作为验收的依据之一是比较有说服力的。
【问题3】(10分)
(1)在进行需求分析的时候,同步制定功能确认测试计划和测试用例,同步制定系统整体测试计划和测试用例。
(2)在进行软件系统概要设计的时候,制定集成测试计划和测试用例。
(3)在进行软件系统详细设计的时候,制定单元测试计划和测试用例。
(4)在项目计划验收日期前,提前与用户协商系统试运行计划,并给用户进行充分的培训,包括领导和一般操作人员,让系统接受实际运行的考验,在试运行过程中暴露出来的问题,及时进行解决。以软件系统实际运行所表现出来的功能、性能来说服用户对项目进行验收,这通常是更可行的方法。