造价师/评估师培训:010-82146681

联盟会员/机构评定:010-82146682

业务合作咨询:010-82586972

E-mail:bscea@bscea.org

 

技术文章

招商银行软件功能点度量实践(金融行业典型案例)

点击:时间:2019-08-01

招行1.jpg

  过去几年,招商银行信息技术部在新的金融科技环境下进行自我颠覆和变革,其中一项重要的变革就是“精益研发转型”,转型以聚焦业务价值,关注交付质量、速度和整体的IT效能、提升用户满意度、打造生机型的文化氛围为目标,引入软件功能点度量、敏捷、看板、DEVOPS等实践,形成可预知的稳健开发模式和探索式的持续迭代双模研发和工程管理框架,打造轻型研发流程。

  转型之初,信息技术部就明确提出建立科学的数字化软件度量体系是转型的关键之一, 这其中,软件规模度量是软件度量的基础。围绕软件规模构建的进度、成本、质量、效率的指标,可以从多维度反映IT研发的效能情况,用于改进软件过程、提升交付效率、提高交付质量等。我行一直都非常关注软件规模度量,从早年研究代码行度量、软件功能点度量到转型过程中敏捷项目的故事点度量。从2013年8月,我行正式引入咨询改进与推广功能点方法以来,软件功能点目前已成为我行主要的软件规模度量单位。

  随着功能点方法的深入应用,我们对于方法的关注点从最开始的掌握方法、优化方法,逐步扩展到如何扩大应用范围,提升使用效率,进而提升管理效能。功能点方法应用在招商银行可以分为以下三个阶段:

 

一、 引入与推广软件功能点阶段(2013年-2015年)

  我们使用IFPUG的标准功能点方法和NESMA的快速功能点方法进行度量。由于两种标准制定的时间比较早,在实际落地应用的过程中,面临系统特性因子(GSC)陈旧、默认的复杂度计算不符合研发现状、系统应用边界不清晰、部分场景的计数存在争议等问题。因此在2013年-2015年期间,主要以优化功能点计数规则、建立功能点计算与审核流程、培养专家队伍、推广功能点度量为主。

  ■改进标准功能点方法,提升复杂度计算精度:标准功能点的复杂度计算模型是个分段模型,虽然应用较为简单,但也会导致一定的误差。在银行业系统中,存在大量的复杂文件和交易。例如,一个复杂的业务对象,可能涉及几十个关联实体,数百字段;一张宽表查询或者一个复杂的校验逻辑,也可能涉及数十个逻辑文件,数百甚至上千字段。但在标准规则下,一个逻辑文件最大为15FP,一个基本过程最大为7FP,其度量出的规模与实际情况存在较大误差。因此,在推广初期,我们和咨询方一起将分段模型改为了连续性模型,以降低计算误差,提升规模估算精度。

  ■补充项目特性因子,增强数据的适应度:在功能点方法中,有14个针对系统特征的调整因子,可以部分解决系统非功能性需求度量问题,但银行业大型项目往往涉及多个系统,多个团队,除了不同系统的架构及质量要求会对生产率产生较大影响之外,不同的项目运行模式也会导致管理成本的变化,进而对生产效率产生影响。为了解决这一问题,我们设立了项目级的特性因子,从技术难度、跨团队开发、跨地域开发等维度调整项目级的软件功能点规模。

  ■培养专家队伍,确保计算的稳定性:功能点方法虽然有着相对客观、完备的规则,但由于计数人员需要基于对需求的理解,正确运行相关规则进行功能点计数项的拆解和分类,一支熟练掌握功能点方法并有丰富实践的专家队伍,对于确保功能点计算结果的准确和稳定是必不可少的。在这段时间,我行多次组织外部专家对相关人员进行专业培训和指导,期间超过300人参加了工信部的“软件工程造价师”培训并通过认证考试。

 

二、 改进与应用软件功能点阶段(2015年-2018年)

  截止2015年底,功能点计算已应用在70%以上的开发类项目,但是由于功能点本身的局限性和银行系统的复杂性,我们也需要不断地对规模度量方法进行优化完善,补充订制规则,提升功能点的覆盖面。同时,我们围绕功能点构建一系列的指标,逐步应用在软件过程改进和部分团队的绩效考核中,以牵引研发效能提升。本阶段主要措施如下:

  ■定制功能点规则,提升功能点的覆盖面:

  ✔数据仓库系统开发的功能点计算:由于数仓系统较为复杂,如果按一个系统计算功能点与实际研发投入相差较远,误差较大,也难以客观放映数据仓库系统建设不同时期、不同团队的实际产出情况。因此,我们将数据仓库系统按照ODS层、UDM层、数据集市层、前台展示层分层,每层定制相关的功能点计算规则。

  ✔用户体验开发的功能点计算:近几年,受互联网企业的冲击和影响,银行的系统越来越关注用户体验,包括面向用户使用系统的视觉效果和交互效果等,需要IT投入更多开发资源。但是在标注功能点方法中,用户体验开发属于非功能性需求,不进行功能规模计数。为了对此类工作进行量化评估,我行在参考IFPUG的SNAP方法基础上,定制了基于界面控件及控件元素的用户体验开发规模度量方法,并通过数据分析,建立了“用户体验点”和“功能点”的映射关系,从而将“用户体验点”折算为标准功能点,以实现此类工作的量化分析。

  ■逐步应用在管理改进:在功能点度量覆盖了大部分的开发类项目上的基础上,我行初步建立了基于功能点规模的生产率、人均产能,缺陷密度等指标(度量指标示意图见图1),并形成管理基线,通过基线控制,识别异常数据并分析原因、改进研发过程、预测产能并合理调配资源。

招行2.jpg

图1:软件度量指标示意图

 

三、 智能化、自动化软件功能点度量阶段(2018年-至今)

  自2018年起,随着“精益研发转型”的进一步加快,我行IT项目的交付速度加快,每年交付的项目也大幅增长,2018年的交付项目就超过了6000个,而完全通过人工的方式度量功能点,既要消耗大量的人力进行功能点计数,还要及时审核以保证数据的准确性。因此我们启动了软件功能点的智能化度量和自动化度量项目,利用NLP(自然语言处理)、特征工程、机器学习等方法,尝试从需求文档、设计文档、测试文档等自动抽取功能点计数项,以减少人工投入,提高功能点计数的准确性(智能辅助计算示意图见图2)。

招行3.jpg

图2:智能辅助计算示意图

  ■智能化度量软件功能点:采用两种方式构建模型:分别是语义分析及文本挖掘抽取功能点计数项和通过序列标注方式抽取功能点计数项。目前两个模型的实验结果良好,交易功能识别的准确率和召回率均超过70%,数据功能识别的准确率和召回率超过40%,并已开始在敏捷项目中试用。

  ■自动化度量软件功能点:此外我们还研究了从代码中自动提取功能点计数项的可能性。此项工作的基本原理是从代码中提取UML用例图、类图,构建UML图与功能点映射关系,并自动计算功能点。

  软件功能点数据目前已成为我行实现研发过程可视化并持续改进的基础数据,是精益研发转型的关键工作。随着技术和业务的高速发展,软件功能点度量面临的场景也越来越多,例如大数据技术下的软件功能点度量、云平台上的软件功能点度量等。后续还需要持续地沿着“提升软件功能点度量适用性”和“提升软件功能点度量效率”两个目标,持续完善软件规模度量方法及过程。本文刊发于《金融电子化》第286期))

 

相关新闻
 
关闭
010-82146680