010-61150075
ssm@ssm-ug.org
北京市海淀区安宁庄西路9号院25号楼3层3-323

金融行业—成本度量体系建设

作者: 浏览量:15139 发表时间:2017/12/20
分享到

招商银行软件功能点度量实践


  过去几年,招商银行信息技术部在新的金融科技环境下进行自我颠覆和变革,其中一项重要的变革就是“精益研发转型”,转型以聚焦业务价值,关注交付质量、速度和整体的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图与功能点映射关系,并自动计算功能点。

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



某大型国有银行——成本度量体系建设应用案例分析

 

组织简介>>>

l  单位类型:内部乙方

l  所属行业:金融

l  应用场景:内部项目管理

l  应用部门简介:该行是大型国有银行,拥有非常高的信息化程度,是金融领域的代表性企业。该行软件中心是科技体系建设的重要组成部分,负责该行应用软件的统一管理、开发、技术支持等。该银行的信息化建设以自主开发为主,拥有独立的研发团队,团队规模有数千人,并处在快速发展过程中。

面临问题>>>

1、如何量化研发部门的研发产出和价值:

随着该行组织级量化管理的不断提升,高层领导对信息化管理提出了新的要求,金融信息化每年投入了大量的人力,如何能客观地量化相应的产出?

2、传统功能点方法(IFPUG)难以应用在项目早期:

2008年该行软件中心引入的IFPUG传统功能点,主要在项目需求规格说明书确定之后使用。随着中心管理流程的变化,需要在项目早期立项阶段就要进行科学估算,而传统的功能点方法无法在项目早期使用。

由于产品类型复杂、,传统功能点既有调整因子难以充分反映不同系统之间的差异,导致不同估算结果有较大偏差。

3、估算及评审人员能力尚待提高

内部的估算专家团队,由于项目背景经验不同,不同专家在对功能点及估算方法的具体理解,有着一定的偏差。同时由于专家团队人员较多,能力水平层次不齐,每年实践估算机会较少,整体估算技能及实践水平尚待提高。

实施方案>>>

在面临上述问题的同时,该组织主要有以下三方面特点:

1. 有较好的量化管理基础,积累了大量历史数据;

2. 研发团队规模大、质量要求高;

3.有长期的功能点方法实践经验,同时也形成了一些错误认识,积累了一些管理难题。

针对上述特点及面临的问题,该组织过程改进团队在外部专家的指导下制订了以下策略:

1. 深入现状调研,梳理历史项目

鉴于该银行有一定的功能点方法理论基础及实践经验,首先需要充分了解用户功能点方法的应用基础,并用快速功能点方法对历史项目数据进行梳理。

2. 成本度量方法优化

首先,基于行业标准和近700个项目历史数据进行分析研究,以获得该银行的研发基线数据;其次,在功能点方法深化应用的同时,提出适合该行项目的定制规则,有效平衡宏观量化管理需求与微观场景合理计数的冲突,保证定制的计数规则尽可能适用于全项目和场景,同时计数的结果依然具备客观性并可横向比较,以保证数据的有效性;最后,根据用户项目特点及历史数据对方法进行验证和持续改进。

3. 全面提升人员能力,深化功能点方法应用:针对该行项目管理条线、研发条线、测试条线的人员集中培训指导,在对相关人员开展培训并要求持证上岗的同时,通过交叉评审加深对关键知识点的理解并形成常见问题解答知识库,不断修订和丰富功能点方法应用指南。

效果评价>>>

1、引入快速功能点,解决了项目早期估算难题

在软件中心原有的功能点体系中,引入并建立了适合软件中心项目早期立项阶段的快速功能点估算标准,弥补了传统功能点在项目早期估算不足的难题,完善了项目整个周期的估算。

2、对功能点方法进行优化,满足中心的量化管理要求

通过对已有的功能点估算的方法、过程、数据进行梳理、分析,制定了优化方案,建立了适合项目不同阶段、不同产品线、不同应用场景的功能点方法应用指南。

3、初步建立从功能点到工作量的估算模型

通过对已有历史项目数据进行分析,初步建立了以数据分析为基础的针对不同产品线的估算模型。定制了功能点详细计算规则,包括数据仓库项目的计算规则、17项新提出的特性因子等。

4、培养认证一批估算专家人才,提升了专家团队的技能水平

通过对项目经理、业务主管、过程改进人员、研发骨干等炒股400人进行了统一的标准化估算方法培训,并要求项目经理通过软件工程造价师人证方可上岗,为软件成本估算方法落地奠定了良好的人才基础。