二、软件项目Bug防治举措项目管理论坛
软件Bug并非没有银弹可以消除,加强项目管理和软件测试就是“灭虫”的有效手段。美国商务的国家标准技术研究所报告显示,如果通过强化项目管理和软件测试及早发现软件Bug并得以解决,可以减少1/3以上的损失。项目经理博客
(一)完善组织架构,建立项目管理办公室。项目管理者联盟
商业银行信息系统大集中以后,不论是自主研发,还是自主研发+外包及单纯的外包方式,每年都会伴随着本行业务的发展、外部相关部门的要求,产生很多软件项目,每一个项目都有自己的特点,同时项目之间具有相似的地方,这样一来就形成了多项目管理格局。因此要管好这些项目,就需要成立专门的机构项目管理办公室,有一些熟悉项目管理人员,专门从事本公司软件项目管理工作。在公司内部实现项目经理负责制度,实行项目成组管理和多项目组合管理。转自项目管理者联盟
项目成组管理是软件公司研发的多个项目之间并没有共同的联系,但项目本身类似,在技术实现、工作方法及所需人员等方面具有相似性,项目之间可以互相参照。其规则就是根据项目对企业管理和业务发展的重要程度和紧急程度,通过ABC方法,设置项目的优先级、项目类别、生命周期和项目应用技术。对软件研发不同阶段制定不同的操作流程,而不是定义那个职能部门去操作,这样做的好处表现在即使组织结构发生变化、人员流动,研发流程也不会遭到破坏。同样一个软件公司每天要处理大量的日常业务,处理这些日常业务只能维持企业的日常运转,如果不断有新的项目产生,就可以通过不同类型项目的组合来实现公司经营发展目标。项目经理博客
在同一时间内,公司可能会有很多项目需要完成,如何及时有效地同时管理好众多项目是项目管理的核心问题,多项目组合管理就是同时管理多个项目,在组织中协调所有项目的选择、评估、计划、控制等各项工作。项目管理者联盟
项目管理论坛
图1:项目管理促进公司持续发展PgMp.mypm.net
(二)建立健全软件研发制度和流程项目管理者联盟
制度和流程是保证软件公司正常运营的基石,在我们日常工作中,不难发现如下存在四个方面的问题:一是有关软件项目研发制度建立的不全面,没有根据公司实际情况制定一些更加细致的制度和操作流程;二是制定的一些制度太多的照搬一些理论方法,没有很好的与公司实际相结合,项目研发流程要么复杂,要么简单,可操作性比较差;三是制度和研发流程没有根据公司发展状况,技术人员的意见,及时的完善修改,影响正常工作效率;四是制定的制度很多,通过公司内部网络公布后,员工真正熟悉的不多,缺乏相应的培训学习机制;五是制度执行不到位。因此,软件公司应该做好如下几方面的工作。项目管理者联盟
1、建立易于理解、便于操作的各项规章制度。这就需要制度制定部门要善于倾听来自设计、编码、测试、支持推广等一线部门员工的意见,然后进行总结制定相应的制度,并组织大家再进行讨论,不能随便的就版布一个制度,让大家执行,这样结果往往不是很好。在制度建设中,要重点关注软件项目设计、程序编码、测试和投产几个环节制度建设,关注软件项目不同阶段接口的规范的设计,在日常工作中发现,很多软件Bug的发生通常产生在不同部门、不同工序、不同接口交接、传递中。项目管理者联盟
2、建立高效的研发流程。ISO9000定义流程是一组将输入转化为输出的相互关联或相互作用的活动。软件公司在建立流程时,要遵照认识流程、建立流程、优化流程、E化流程、运作流程的指导方针,针对自身内部资源、组织架构及面对的客户等,建立软件项目需求管理流程、设计开发流程、程序编码流程、测试管理流程、投产运行流程、项目管理、外包商管理等几个大方面,在每一个方面再细分出不同的流程,如需求受理流程、生产问题管理流程、版本管理流程、软件测试流程、功能点分析流程等。同时要善于总结,发现现在流程中存在的问题,不断的完善流程。在设计研发流程时,尽量实行产品研发的并行流程管理(并行工程1988年有美国国家防御分析研究所提出,后经过研发企业的应用,大幅缩短产品研发时间),也就是说把一个新项目分解为多个任务,同时交给不同的部门负责完成,但要注意不同部门的协调,在项目研发流程中加入控制,可以通过E化流程控制,通过公司内部办公网络系统,自行开发一些流程管理系统,可以起到很好的作用。项目管理者联盟
举例说明建立流程、E化流程、优化流程的重要性。某软件研发公司,在版本投产推广应用以后,对于生产问题起初是采用电话、内部邮件方式管理,问题少时,还能处理完成分行反馈的问题,问题多了很难及时处理,且难以统计分析数据,准确掌握生产问题状况,通过人工受理、转发、答复、统计等方式已经不能完成对全行网点有效支持,于是采用了Help Desk(简称HD)生产问题管理软件工具,生产问题E化后,分行网点直接登陆HD填写问题单提交,及时把生产问题通过HD反馈给技术支持部门,极大的提高了问题解决效率。但通过一段时间的运行后发现,一个生产问题与开发部门(三线岗)交流要经过受理岗、一线岗位、转二线岗、再转三线岗,三线岗答复完毕后转二线岗、二线岗处理完毕转一线岗、一线岗处理完毕转回问题反馈单位,再需要七步才能完成,答复问题也要连续填写多项内容、反转多个画面,花费在这些动作上的时间一个问题最少15分钟,流程处理环节太多、繁琐,直接影响了问题处理的效率,能否优化HD处理效率,经过大家一起讨论,取消三线岗、整合交易内容、去掉多余的处理环节,经过对HD多次的优化, HD生产问题管理系统效率得到了大幅度提高,不但减轻了一线人员工作负担,而且便于问题管理,奥卡姆剃刀在削剪HD繁琐处理流程过程中初显威力。www.mypm.net
(三)提高软件项目运营管理水平项目管理者联盟
1、成立项目研发小组,发挥项目经理的作用。软件公司对实施的软件项目成立专门的项目研发小组,确立项目经理,根据项目的大小确定项目需要的开发人员、测试人员和业务人员,一起参与系统需求讨论、功能评审、参与系统的功能测试,做好相互之间的交流。由项目经理根据软件开发目标和原则,撰写项目开发计划、人员分工、项目目标和各阶段工作任务、保存项目过程中的相关文件和数据、召开有关项目讨论会等,协调解决项目研发过程中出现的问题。项目管理者联盟
2、确认软件项目的范围。就是要做好业务需求管理,业务与科技要建立良好的交流与合作关系。对于一个新的业务需求,业务人员要向技术人员详细讲解①业务部门撰写的需求说明书要准确、仔细,每一项业务如何处理,结果如何要详细说明;②讲解银行业务术语和业务流程;③业务与技术如对需求有争论时,要尽快对需求做出决策,尽快确定需求内容;④因政策、制度等原因发生需求变化应立即通知技术人员,并按照工作流程进行处理;⑤技术人员要参与业务需求制定,向业务人员讲解本行信息系统整体状况,做好需求分析说明那些需求可以实现,需求不能实现的原因,帮助业务人员撰写出高质量的业务需求说明书。
3、做好项目的规划设计。一是系统规划应具有前瞻性,充分体现资源简化、整合为一的思想,能够满足本行内部管理需要,提供可行的内部控制措施,要与本行经营发展战略紧密联系在一起,为本行业务发展提供强有力的技术支持。二是尽量降低错误发生的概率,减少错误可能造成的损失,在系统安全性、可靠性、扩展性、成本和性能之间寻求平衡与和谐。三是用户的需求应当始终贯彻于整个设计之中,技术与业务之间的交流要靠产品来体现,产品本身必须说明问题。项目管理者联盟
4、加强跟踪控制,及时纠正工作偏差。在软件项目的研发过程中,项目负责人要不断地对项目进展情况进行跟踪,当由于某种原因造成项目没有按计划进行时,要根据实际情况,协调相关部门及时合理地调整安排,做好项目变更,确保各种软件版本的正确管理,尽快解决项目开发过程中,出现偏离工作目标的差错,减少工作反复次数。项目管理者联盟
5、加强质量管理。建立健全基于CMMI原则下的开发流程和管理制度,做好软件产品质量的控制活动,对软件质量控制贯穿于软件项目研发的全过程。一是做好软件项目风险的识别、评估和应对策略;二是建立软件项目管理数据库,通过对以往项目历史数据的整理分析,找出影响软件项目质量的短板;三是认真组织各种技术文档的评审,通过评审,通过评审找出遗漏的需求、多余的功能设计、不切实际的测试计划、不充分的测试案例和不严谨的投产方案等内容,对没有通过评审的技术文档要限期更改。项目管理者联盟
6、做好软件测试管理。测试管理人员要做到如下几方面的工作:①跟踪测试人员是否执行测试计划规定,按照测试案例进行认真测试,准确详细记录测试Bug。②测试人员是否采用标准的格式记录Bug,并按规定的流程提交测试记录。③发现的Bug是否得到及时的解决,没有解决的Bug原因是什么。④针对测试过程遇到的问题,如发现测试计划、测试案例有遗漏或不对的地方应及时提出优化方案,做变更处理。⑤保持测试环境的清洁,规范测试数据,保证测试结果的准确。⑥跟踪测试进度,因某种原因造成项目发生冲突时,应合理调配测试资源,及时解决影响测试进度的问题。⑦使用测试管理软件,按照不同测试项目发现的问题登记入库,按照不同性质的测试Bug进行分类跟踪管理。项目管理者联盟
7、外包产品管理。国内除工商银行是自主研发软件应用系统外,国内其他大型商业银行基本是自主研发+购买软件产品,中小型商业银行基本全部外包,购买市场软件产品,对于没有研发力量的商业银行,直接购买软件产品是必须的,优点是上线快,缺点是容易出现新产品开发周期长、系统整合难度加大、生产问题解决不及时等问题。所以要注意在购买软件产品时,不能只听外包商的介绍,要货比三家,对系统进行认真研究,深入了解,系统客户化要符合本行业务要求,系统应具有很好的扩展性和兼容性,同时要做好相应的供应商管理、合同管理等工作。转自项目管理者联盟
8、及时周到的技术支持与服务。一是软件项目打包为一个版本,在数据中心准备投产时,技术人员要做好版本安装时的现场及远程支持,参照ITIL事件管理、问题管理流程,通过Help Desk管理工具,记录反馈问题、及时分析解决问题;二是一个软件项目推到市场上以后,仅仅表示项目安装完成,产品的应用才刚刚开始,对软件产品使用中出现的问题,软件公司要设置问题反映渠道,通过各种手段及时解答,对于出现的生产问题,做到当天的问题当天解决。www.mypm.net
9、加强信息披露和交流沟通。在公司内部要建立信息交流和沟通平台,涉及每一个项目利益相关者及公司领导,能及时的了解到项目整体状况,具体讲:一是在公司内部建立生产例会制度,每日或每几天召开一次,根据公司软件版本投产及系统运行情况而定,及时发现问题、解决问题,防止事件扩大。二是建立项目周/双周例会的通报制度,有每一个项目的项目经理,汇报项目进展情况及存在问题,便于公司领导及时掌握本阶段项目研发状况,协调处理项目研发中出现的问题,保证各个项目能按期、高质量完成。三是公布公司每一个软件项目质量报告,让所有员工都了解,便于提高大家质量观念和责任意识。四是做好项目间的交流合作。任何一个软件项目,只靠一个人是不可能完成的,必须需要整个项目组全体人员开动脑筋,协调一致共同的努力才能完成。①你有一个idea,我有一个idea,交换之后我们每个人就有两个ideas,通过交流拓宽思路、统一思想,达成共识。②员工在做好自己份内工作的同时,善于与同事之间进行有效的配合,从而提高整个项目的质量和效率。③创新是有软件项目的特点决定的,软件项目本身就是创造性的工作,要善于学习、善于借鉴其他项目中好的做法,没有落后的技术,只有落后的思想,可以“大胆的设想,小心的求证”,通过创新提高项目的整体性能。
10、加强制度规范和流程的培训学习。制度和流程制定的再好,大家都不按制度办事,按流程操作,再好的制度和流程和不起作用。所以,软件公司要建立员工技能持续培训计划,不能走过场,关键是要不断的执行下去,通过面对面授课、案例分析、演讲、讨论等多种形式培训学习,提高大家的技术水平、业务水平和项目管理水平。项目管理者联盟
(四)不断PDCA,持续提高软件项目研发质量。项目管理培训
本文为项目管理者联盟联盟会员原创文章,授权发布,非经同意不得转载!
|