造价师/评估师培训:010-82146681
联盟会员/机构评定:010-82146682
业务合作咨询:010-82586972
E-mail:bscea@bscea.org
功能点方法论助力南京银行信息科技量化管理能力提升
南京银行 李勇 南京银行 全新建
一、前言
自2015年起,南京银行信息技术部夯实基础管理,提升管理能力,启动全面质量管理体系建设。分别于2015年10月和2018年12月获得了CMMI3和CMMI4认证,信息科技项目管理规范化、标准化和流程化水平显著提高。
南京银行全面质量管理体系强调优化管理模式,提高定量化、精益化管理水平,激发开发团队积极性,提升开发效能,降低开发成本,解决长期存在的一系列项目管理难题:
如何能测算出南京银行信息科技建设的实际“效能”?
如何实现对开发人员和外包团队的定量评估而非感性评估?
如何量化反映开发人员的“状态”,如工作负荷等?
如何做到去除主观因素,实现评估公平公正?
量化管理能否和项目管理工具结合,实现量化管理自动化,降低开发人员负担?
为此,南京银行制定了三步走战略。第一步,在2017年引入国际标准(IFPUG、NESMA)的功能点(Function Point)方法,实现对软件造价的定量评估。第二步,2018年在开发中心建立了基于功能点分析方法论的度量体系,基于量化分析结果对团队进行客观评价和激励。第三步,2019年组建FPA(功能点分析师)团队,建立重要系统的功能规模基线,形成“用功能点管系统”的体系。
二、功能点方法
功能点分析法( Function Point Analysis 简称功能点方法)是由IBM的Allen Albrecht博士在1979年首次正式提出的、是对软件用户功能需求进行度量的一种方法,功能点(FP)是功能价值(Function Value)的计量单位,类似于平方米、公斤等计量单位。
这种方法有一个显著的好处是不同的人员对相同的软件需求会有高度近似的功能点计数结果(误差可在±5%之内)。用这个方法结合一些基准数据以及估算模型就可以对软件开发的工作量进行估算。
例如:工作量 = 功能点 × 功能点耗时率 (式中功能点耗时率的取值就采用基准数据)
为了更准确地估算工作量,有时也会需要应用一些调整因子,如规模范围变化因子、开发团队经验因子,质量因子等。通过适当地调节,可以获得工作量估算的最终结果,工作量再乘以人员单价就会得出开发成本。
除了用于费用评估,功能点规模还是一个非常基础的度量元,是定量评价规模、效能、质量的基础。建立了基于功能规模的度量体系,就可以定量地开展估算工作,并跟踪整个开发生命周期中需求的变化 、完成进度、质量情况等,并最终实现事前可预测、事中可控制、事后可改进的管理闭环。
三、软件造价评估
南京银行采用功能点方法,实现了合规、科学、规范、可追溯的软件费用评估。
3.1 合规性
一是和现有IT治理流程进行衔接。在现有流程中加入费用评估子流程,明确流程中各个角色的职责和分工。二是明确评估的具体方法。制定《南京银行信息技术部立项项目工作量及费用估算操作规程》,明确不同类型项目的评估方法,评估信息传递流程,评估报告模板、提交、确认、评审和发布流程等。三是明确指标数据发布、调整和修改流程。
3.2 科学性
一是对于常见系统的主要功能可用国际标准功能点方法(IFPUG或NESMA)进行功能点计数。二是对于一些特殊场景,可基于功能点方法论框架,结合数据分析及验证,对功能点计数规则进行调整及优化,以确保其科学性和适用性。
3.3 规范性
规范评估过程,明确评估的模型和调整因子的设定原则。所有项目的评估均按照既定原则及模型进行工作量和费用的测算。
3.4 可追溯
可追溯主要体现在形成南京银行重要的组织过程资产。如评估结果(底稿、评估报告)及作为输入的需求文档、功能点规则调整优化查询手册、指标数据及使用指南等。
四、建立度量体系
基于功能点方法论,我们设计了四层架构的度量体系。第一层:聚焦全行对信息科技建设的管理期望。第二层:根据各系统功能点耗时率,制定南京银行基线效能、效率指标,将管理期望落地到项目管理中,重点关注项目的“效能”和“绩效”,如进度、质量、成本和效率等。第三层:根据开发人员功能点产出情况,制定开发人员管理指标,通过激励与考核,提升效能,重点关注员工的“状态”,如进度、质量、效率和工作负荷等。第四层:建立度量模型。针对度量指标,制定对应的度量规则。通过四层架构体系,确保体系中所有的度量指标都紧紧围绕着全行对度量体系建设的管理期望,也使得开发人员理解行里的期望,达到“上下同心”的效果。如图1所示。
图1 四层架构的度量体系
4.1 提高工作效能
根据南京银行管理期望,效能的度量要实现“多”、“快”、“好”、“省”四个目标。即功能点完成的数量多、速度快,质量好,成本低,鼓励自主研发。根据项目积累的效能数据,逐步建立我行的各类项目的效能基线,通过分析各项目的实际效能数据与效能基线的差距,准确地识别和定位项目建设中存在的问题,督促开发人员,针对问题进行有效地改进,持续提升项目开发质量。同时,也为行内架构管理,项目成本、工作量评估提供决策依据。
4.2 提升工作积极性
绩效指标是项目成本、质量、效率的综合体现,是项目量化管理的重要环节。通过绩效考核,奖勤罚懒,量化对开发人员的管理,提升工作效率和工作积极性。
通过收集分析功能点产出数据,计算出个人绩效和团队绩效平均值,每月输出绩效排名及分析报告。针对绩效排名达不到均线的,结合具体情况进行分析,并制定改进建议并持续跟进。
4.3 关注工程质量
工程质量指标主要是用来增强项目整个研发周期的质量管控。我们结合自身特点,主要使用“进度偏差”、“实际工作负荷”、以及“缺陷密度”等指标项。
“进度偏差”指标主要关注“按时交付”;“实际工作负荷”指标要求项目经理合理安排项目组成员工作,避免出现“忙的忙死,闲的闲死”的情况;“缺陷密度”指标关注项目开发质量。
4.4 结合项目管理工具
将功能点规模估算和度量模型落地到项目管理工具中,通过资源池管理、看板管理、工时单管理等多种工具,提升开发人员对项目的管控水平。
根据度量数据,从项目、团队和个人多个维度生成效能,效率和工程质量报表,进行横向、纵向比较,发现问题,辅助决策。
五、组建专门的功能点分析人员(FPA)团队
经过同业调研和实际工作,发现不论是由需求分析人员还是开发人员,担任功能点计数工作时都存在误差大,准确度不够的问题,而功能点的计数是度量体系最重要的基础数据,不准确的话会影响度量的效果,进而影响管理者做出正确的决策。
“让专业人做专业的事“。2019年南京银行开始组建专业功能点分析人员(FPA)团队。对FPA除功能点方法论的培训外,就是逐个系统的完成系统规模基线的梳理,熟悉系统,积累经验,锻炼队伍。
六、建立系统功能规模基线
系统功能规模基线是系统在某个时点或某个版本时所具有的功能规模、以功能点计数项清单为具体表现样式。功能规模基线可准确定量地反映开发规模的变化,实现“用功能点管系统”。
一是根据基线数据,结合相关的指标值(如效能、效率、人力资源单价等)进行基准比对分析,在项目开发事前(费用估算、人力资源投入、进度计划)、事中(进度监控、质量)、事后(费用结算,供应商后评估)都能进行定量化、精益化地管理。如图2所示。
图2 基于基线数据进行事前、事中和事后管理
二是在明确基线的情况下,能定量、可视地掌握从个人、团队到信息技术部整体的变化情况。能很好地回答/解决如下问题:
信息科技部一年内生产了多少功能点?
信息科技部和往年相比产能变化,效率变化?
信息科技部都为那些业务部门开发了多少功能点?
不同团队、个人、外包商的产出情况?
七、总结及展望
以功能点方法论为抓手,实现软件造价评估公开,透明,科学,可追溯。通过合理设计量化指标和模型,不仅能使管理者了解现状,预测未来,科学决策,还可以传导管理期望,树立优秀标杆,激发团队积极性和主动性,更好地完成各项战略目标。
未来,南京银行将继续深化功能点应用场景。一是随着基础数据的积累,合理调整各系统功能点耗时率等指标数据,更准确地反映开发人员的实际效能情况,使得软件造价评估更加准确合理;二是继续完善度量体系建设,涵盖项目开发各个阶段。通过数据统计分析,预测项目各阶段目标达成的可能性,建立我行组织过程基线,满足管理层对开发项目准确估计和有效控制的期望,进而持续提升效率,降低成本,更好地为全行业务发展服务。(本文刊发于《金融电子化》第287期))