我在某银行软件开发科室工作,长期从事商业银行中间业务应用的开发。在以往的中间业务产品开发过程中,存在许需求不明确;开发人员有章不循,依靠个人智慧,开发处于低水平的重复状态;项目的进度、质量难以保证等问题。我们从2001年底开始着手解决中间业务产品的整合和综合发展问题,经过项目分析和论证,我们提出了要开发一套具有良好扩展性、通用的中间业务平台系统。为了避免在新平台的开发过程中继续出现上述问题,作为该项目的主要负责人,我在中间业务开发团队引入CMM,采取了一些有效的策略和方法,主要包括:进行CMM培训和咨..
中间业务是指银行利用自己的网点、设备、网络、信息等优势,以中间人的身份接受客户委托,提供各类金融服务并收取相应手续费的业务。作为银行业务新的利润增长点及重要的吸收存款手段,中间业务正日益受到国内各商业银行的重视。近年来,我所在银行根据业务发展的需要,通过陆续推出代发工资、代收电话费、代收水电费、代收学费、行政事业代收费等一系列代收代付的中间业务,在提高自身服务水平的同时,增强了在同业中的竞争能力。
一、中间业务开发过程中存在的问题
随着中间业务品种的增多和市场对中间业务要求的提高,中间业务系统越来越庞大与复杂,尽管我们中间业务开发团队不乏技术过硬的开发人员,还是经常出现项目不能按时完成;新的中间业务项目上线时,软件质量不理想,其中包括一些明显的错误,如客户不能交费、重复扣或少扣客户的费用,客户交费后打印不了发票等;而且文档不齐全,造成维护比较困难。作为中间业务开发团队的主要负责人,我召集了几名技术骨干总结了以往的经验教训,找出了存在的一些主要问题:
1、随意性决策较多。往往软件产品从立项阶段开始就成了“实验田”——软件产品做与不做,什么时候交付等多是凭个人的主观意愿,没有参考以往经验,也没有充分考虑资源的有效投入,导致开发的产品维护成本较高,“打补丁”现象较多,用户使用不方便。
2、有章不循。尽管我们科技部门比较注重规章制度的建设,也针对软件开发过程制定了大量的程序性文件,但由于没有严格的后续跟踪与监督机制,使软件开发的质量控制大打折扣。
3、依赖个人智慧。我们开发团队中不乏一些具有相当才干的项目经理和骨干人员,他们为研发银行软件产品做出了较大贡献。然而,由于他们的经验没有被很好地总结、归纳,并上升为整个开发团队的财富,致使有的项目负责人一走,开发质量就会下降,这说明软件产品的研发依赖于个人而不是整个开发团队。
4、“可视性”低。软件开发过程不透明,上级不了解下面在做什么,无法实时监控项目进展;下面的开发人员“报喜不报忧”。由此导致产品缺陷被慢慢积累起来,等看到结果为时已晚。
二、应用CMM改进中间业务平台开发过程
由于传统的中间业务系统产品开发平台多样化、缺少统一规范、产品分散、功能不足,大大影响了开发效率和增加了维护难度。为解决传统中间业务开发模式存在的诸多弊端,我们从2001年底开始着手解决中间业务产品的整合和综合发展问题,经过项目分析和论证,我们提出了要开发一套具有良好扩展性、通用的中间业务平台系统。为了避免在新平台的开发过程中继续出现上述问题,作为该项目的主要负责人,我考虑在中间业务开发团队引入CMM,试图把个人的脑力劳动规范为有纪律的智力产品。
1、培训与开发过程规范的制定
在项目启动前,我们请了一家知名的培训机构,培训了CMM的基础理论,并结合一些软件开发公司实施CMM的案例讲解,促进了团队成员对CMM的认识和对软件过程实行规范管理的理解和支持。然后,我们分析开发部已有的规章制度存在的问题和缺陷,重新制定了中间业务开发规范。首先定义出软件开发中的主要过程,参考CMM并针对中间业务开发的实际需要,确定了每个过程的具体工作内容。其次确定了软件开发的具体方法,我们确立了面向对象的开发方法,并对每个开发过程定义了相应的具体文档,如系统计划阶段必须提交《系统开发计划》,需求分析阶段必须提交《软件需求规格说明书》。并定义了文档的格式和必须提交的内容。最后,对每个过程划分相应的人员职责,即按照工作要求,进行人员分工,并确定具体的工作内容。
2、努力做好需求管理
在银行的软件研发过程中,需求管理是一个“老大难”问题。技术部门抱怨业务部门提出的需求不清晰,甚至提不出需求;业务部门抱怨技术部门对需求理解有偏差,开发的产品与初衷相去甚远。从CMM的角度来说,业务部门提出的需求只是顾客需求,而在顾客需求中既有技术层面,也有非技术层面的,即便是技术层面的需求,也并非面面俱到都要开发,比如一些技术上不可行或者资源要求不能满足的需求就必须剔除。只有适合软件产品研发的需求才会被最终制作成规格说明。
在中间业务平台需求的制定过程中,我采取了以下措施:
(1)组成业务部门与技术部门共同参与的需求组,需求提出后经过上级领导的评审和业务部门确认才实施开发。
(2)制定技术部门必须和业务部门商定需求变更流程和跟踪监督的机制,需求变更如何提出、由谁进行评审、由谁决定做与不做、对项目进度及对资源的影响如何等都应事先考虑。
3、加强过程的跟踪和监控
软件开发过程中,我们按照软件开发过程规范严格实施。在项目启动的初期,开发人员要花很大一部分时间写文档资料,工作压力比以前大多了,工作流程的改变,也导致一段时间内效率降低。大家逐渐习惯后,感觉文档是研发人员劳动成果最好的记录,工作比以前清晰,规范的文档减少了对某个人的依赖,使软件研发过程的上下环节紧密衔接。在整个过程中,我们得到所有的文档,并根据文档的内容对每个过程进行了检查。在进度控制方面,我首先制定了系统开发计划,要求开发人员填写工作量周报,并据此绘制项目进度图,随时了解项目进展,并适当调配人手,整个项目比计划略早完成。
在质量保证方面,银行软件产品质量对业务的开展尤为重要,它涉及银行的资金安全和自身信誉,因此必须确保软件开发产品质量。现在我国各银行并没有成立单独的质量保证机构,对质量的控制主要掌握在项目研发人员手中,为此CMM建议成立专门的SQA组,检查软件开发过程标准、规程的合理性。鉴于人手问题,我们没有成立专门的SQA小组,采用测试小组兼做SQA工作,对项目组的监督“对事不对人”,并定期公布监督结果。
三、经验和不足之处
经过近一年工作,我们完成了中间业务平台的开发,新的中间业务平台运行良好,受到了业务部门和技术部门高层的赞许。在该项目的开发中,由于引进了CMM,加强了软件过程管理,很好地解决了以前存在的四个问题。中间业务产品的开发目标更明确,提高了产品开发过程的可视性和可控性,从而在提高产品开发能力的同时提高了产品的质量;我的开发管理水平也得到了很大的提升。高层领导尤其对我们的开发流程和开发规范表示认可,并决定在整个开发部门推广。我将这次软件过程改进的成功实践归功于两个原因:一是基于我们长期中间业务开发的基础上总结出来的经验和教训,二是CMM原则与我们团队和项目本身的特点的有效结合。然而,由于我们初次应用CMM,还有许多需要改进的地方:
1、我们仅运用了CMM的基本原则,整个软件过程的管理基本是定性的。过程改进的趋势是定量管理,必须采用合适的工具,如采用项目管理工具MS PROJECT控制项目进度,使用RATIONAL ROSE对需求分析和系统设计进行辅助设计,可预测和监控整个过程性能和产品质量,及时纠正偏差。
2、鉴于人手的问题,我们团队成员往往身兼设计、开发、测试、SQA数职,组织结构不合理、人员分工不清显然制约过程改进的实施,我们最近打算成立一个独立于开发部的质量控制部,分清设计、测试和质量保证的责任、界限和权限,使其在更高的层次上控制软件质量。
软件过程的改进是一个很大的课题和实践方向,在今后的工作中,我们将争取向CMM更高的级别努力。
【编辑推荐】