乐于分享
好东西不私藏

一条公式管天下?评定制开发软件运维费的简化计算方法

一条公式管天下?评定制开发软件运维费的简化计算方法

一、问题从哪儿来:一条“看上去很美”的运维费公式

在《山东省省级政务信息化运维项目支出预算编制标准(试行)》中,对定制开发软件运维费给出了一套完整的“公式链”:先算功能点,再算工作量,最后折算成运维费用。核心部分可以概括为三步:

1.功能点数合计

功能点数合计=10×内部逻辑文件(ILF)总数+7×外部逻辑文件(ELF)总数+4×外部输入(EI)总数+5×外部输出(EO)总数+4×外部查询(EQ)总数
其中ILF、ELF、EI、EO、EQ的识别规则在标准第四部分做了较为详尽的规定,基本遵循NESMA/IFPUG体系。

2.软件运维工作量

软件运维工作量=(功能点数合计×软件运维生产率)×业务重要性调整因子×系统更新频率调整因子×支持方式调整因子×网络安全调整因子×部署方式调整因子×用户规模调整因子/人月折算系数
具体调整因子包括:业务重要性调整因子、系统更新频率调整因子、支持方式调整因子、网络安全调整因子、部署方式调整因子和用户规模调整因子。
其中软件运维生产率参照《中国软件行业基准数据》(CSBMK®)选取P50中位数,如2023年为0.81小时/功能点;人月折算系数统一取174小时/人月。

3.软件运维费用

软件运维费用=软件运维工作量×人月费率
人月费率同样参照CSBMK的“济南市基准人月费率”,如2023年为19080元/人月。
这三步串起来,就是一条从“功能规模”到“工作量”,再到“预算金额”的规范化路径,看上去精致、完备、数据驱动,于是很容易让人产生一种错觉:有了这套公式,今后定制开发软件运维费是不是就可以“公式一算,天下太平”?标题里的那句“一条公式管天下”,问的正是这个问题:这条简化公式到底依靠了什么假设,它的合理边界在哪里?

二、这套功能点公式的来历:其实不是“凭空拍脑袋”

先看最显眼的那条功能点公式:
FP=10ILF+7ELF+4EI+5EO+4EQ
如果把NESMA或IFPUG的权重表翻出来,会发现一个有趣的事实:
  • ILF的权重通常是7/10/15(低/中/高)
  • EIF(ELF)是5/7/10
  • EI是3/4/6
  • EO是4/5/7
  • EQ是3/4/6
而标准中的系数恰好对应“中等复杂度”那一列。也就是说,这条公式隐含地做了一个强假设:所有识别到的ILF/ELF/EI/EO/EQ,都当成“复杂度=一般”的功能来处理。换句话说,它不是凭空杜撰的一串权重,而是把传统功能点计数里“低/中/高”三档直接压扁成了“全是中档”。这样一来,计算过程确实简单了许多:不用给每个功能评“低、中、高”复杂度,只要数清楚ILF有多少个、EI有多少个,就能立刻算出一个“未调整功能点”的近似值。
从功能规模度量的角度,这个“粗略UFP”是有理论来源的,只不过把传统方法中的一个维度——“复杂度等级”,在公式层面抹平了。进一步看,标准后面又通过一串调整因子(业务重要性、更新频率、支持方式、等保等级、部署方式、用户规模)去调节工作量。这些因子在某种意义上,扮演了传统FPA里“环境特征(GSC)+调整系数(VAF)”的角色,只是规模(FP)部分只反映“功能种类×数量”,不再考虑“复杂度等级”;成本侧(工作量/费用)部分用多维调整因子来体现环境复杂度、运维强度等。也就是说,规模的“粗糙”+成本侧的“精细调参”,构成了这套简化方法的基本结构。

三、为什么说这条公式“能先管一阵天下”:它的现实优势

从治理和实务角度看,这套简化方法并不是坏东西,甚至可以说是“在现实约束下的一个务实选择”。它有几个明显优势。

(一)可操作性极强:从“专家玄学”变成“按表计数”

标准的功能点分析,一个项目认真数下来,往往既需要对每个ILF/EIF评复杂度(看记录类型、数据元素类型),还要对每个EI/EO/EQ评复杂度(看引用文件数、DET数量),最后专家讨论一轮,争半天“低还是中”、“中还是高”。而现在标准给了明确的ILF/ELF/EI/EO/EQ识别规则和例子;同时还固定权重,省去了复杂度评估环节。
这意味着,项目单位只要按规则填表,能被复核、能被复做,对预算编制的可重复性和可审计性是一个很大的增强。对财政和大数据主管部门来说,这亦是一种“工程化”:一是同一条公式,对不同单位一视同仁;二是争议空间向“是否识别为ILF/EI”聚焦,而不再混杂“复杂度等级”这种更主观的判断。

(二)和行业基准数据挂钩,避免“凭感觉开口价”

第二个优势在于,生产率、人月费率都挂在了CSBMK行业基准上,生产率取0.81小时/FP(P50中位数);人月费率按济南市的基准人月费率取值。
这跟“完全市场化谈判”相比,有两个明显好处,一是锚点报价不能无限飘,至少要和“行业中位水平”对齐。二是有调整空间:随着CSBMK每年更新,标准也说明将“适时进行调整”,为动态管理留了口子。在财政预算语境下,这等于把“运维费”从一种纯粹的协商价格,拉回到了有客观参照的成本测算。

(三)运维费与数据资源、数据治理等其他部分可统一度量

同一份标准里,数据治理费是按“数据功能×每项治理最大人月数×人月费率”来算的,数据功能依然是ILF/ELF。这意味着软件运维费由功能点数驱动,数据治理费由数据功能数驱动,而两者都通过人月费率连接。
在一个政务信息化预算体系中,把“开发/运维”和“数据治理”都放在统一的度量框架下,是一件重要的事情,未来可以用同一套基础数据来分析,这样我们能够确认单位功能点的长期平均运维费用、单位数据功能的长期平均治理费用,以及哪些项目明显偏离平均水平,值得重点评估。从这个意义上讲,简化公式是为后续的“数据驱动预算管理”搭好了计量基座。

四、“一条公式管天下”的问题:被压扁的复杂度与被放大的乘子

优势归优势,问题也不难看出来。如果只看到公式给人的“精致”幻觉,很容易忽略它背后的几个重要假设和风险。

(一)复杂度结构被压扁:所有功能被默认成“中等复杂度”

前面已经提到,这条功能点公式的本质,是把所有功能都当成“中复杂度”。现实里,系统功能复杂度的分布往往是高度不均匀的,一方面存在着大量简单的查询、列表、基础维护功能;同时还有少数极其复杂的统计报表、规则引擎、工作流编排、跨系统汇总等。在这样的结构下,同样是100个功能点,用“全中等”去近似时,偏差方向是不对称的,如果系统以大量简单功能为主,简化公式有可能高估规模;同时,如果系统包含少数非常复杂的功能,简化公式则容易低估规模。
而在政务信息系统场景中,后者其实很常见,核心税收、非税、医保、社保等系统,往往有极其复杂的核算和校验规则,这些规则集中在少数核心模块中,恰恰是最“费人”的地方。当所有东西都压成ILF×10、EI×4时,这些复杂功能在规模上被“平均化”了,之后再靠环境乘子去弥补,很难做到精准。

(二)功能点识别的主观性仍然存在,只是“战场转移”

简化公式确实减少了“复杂度等级”的争议,但并没有消灭主观性,只是把博弈空间转移到了别处。举几个常见的边缘情况,如某个数据结构到底是一个ILF,还是几个ILF?某个接口是一个EI,还是多个EI?某个报表是EO还是EQ?有没有“额外处理逻辑”?
标准通过附表细化了识别规则,这本身是必要的。但在实践里,供应商有动力“拆细功能”,以放大功能点数合计;预算审核方则有动力“合并/压缩功能”,控制功能点数合计。当双方都熟悉规则的时候,“计量游戏”不可避免地会出现。所以,简化公式并没有消除博弈,只是把博弈集中到了“是否算一个FP”而不是“算低中高”上。
这要求主管部门在实际执行中建立统一的功能点“案例库”(典型模块:用户管理、流程审批、统计报表等的标准计数方式)。同时,通过交叉评审、第三方评估,降低单一项目中“创造性计数”的空间。

(三)多重调整因子叠乘:综合系数可能被推到过高区间

运维工作量公式中,存在多达6个调整因子:
  1. 业务重要性:核心/一般/周边(0.9–1.1)
  2. 更新频率:季度/每月/高频(0.78–1.12)
  3. 支持方式:非现场/现场为主/纯现场(0.89–1.08)
  4. 网络安全等级:等保1–5级(0.9–1.1)
  5. 部署方式:集中式/分布式(0.89–1.08)
  6. 用户规模:从≤100到>100000(0.5–1.5)
如果把这些系数组合起来看,极端情况下:
  1. 核心系统(1.1)
  2. 高频更新(1.12)
  3. 纯现场支持(1.08)
  4. 等保级别高(1.1)
  5. 分布式部署(1.08)
  6. 超大用户规模(1.5)
综合乘子可以达到:1.1×1.12×1.08×1.1×1.08×1.5。结果会远远超过2。这意味着:在功能点数一定的情况下,工作量可以因为环境因素被“放大数倍”。从理论上讲,这在一些极端关键系统上未必是不合理的;但在实践中,如果对这些因子缺乏严谨的定性–定量判定标准,很容易变成“调参数要价”。目前标准对每一个因子的取值范围都有控制,但对“综合系数”的整体区间尚未给出约束,这就需要在执行层面设立一个综合调整系数的建议区间或监督阈值,并在出现“综合系数明显超出同类项目”的情况时,触发专家复核机制。
否则,很可能出现一种悖论:前端用简化FP把规模压扁了,后端再用多重乘子把费用“拉回来”,结果在感受上又回到了“凭经验拍价”的时代。

(四)统一生产率P50:对谁公平,对谁不公平?

使用CSBMK的P50生产率看起来很科学,但它隐含的假设是:“在全省范围内,从长期平均看,项目承建单位的运维效率大致围绕P50上下波动。”现实中,差异会很大,一是针对成熟企业/团队,通常文档完备、架构清晰、自动化测试齐全,同样100FP的系统,长期运维的平均耗时可能低于P50。二是质量一般的系统,往往文档缺失、耦合严重、技术债高,运维效率可能远低于P50。
标准并未根据开发阶段的质量、文档情况、规范程度来调整生产率,而是“一刀切”给了一个统一的P50。这会带来两个风险,一是对高成熟度团队略显“不友好”,他们的实际成本低于公式测算值,理论上利润会更高,但如果后续引入“成本–绩效比”考核,又可能认为其“报价偏高”。二是缺乏质量–成本闭环,开发阶段的偷工减料(缺测试、缺文档)会提高后续运维复杂度,但在当前公式下,这些增加的复杂度没有体现在规模(FP)部分,只在执行中变成“供应商更痛苦”,而不是“预算更高”。
如果希望长期形成良性循环,未来可以考虑将“开发质量/文档完整性”纳入某种质量系数,影响运维生产率;或者在绩效评价中,单独衡量“单位运维费对应的可用性、故障率、响应时间”等指标,把钱花在“做得好的项目”上。

(五)建设–运维–升级的边界:30%数据功能比例的灰色地带

标准中规定:“既有政务信息系统进行大规模升级改造的(升级改造项目中优化完善或调整改造的数据功能占既有业务系统数据功能比例超过30%的),原则上在升级改造期间不得单独申请运维项目。”
这条规定的初衷非常正确:防止“建设”和“运维”项目在预算上重复申报。但落地时会出现几个难点:如何准确地评估“数据功能占比超过30%”?这个评估是否基于同一套功能点计数规则?当系统长期迭代,某些模块先后多次优化时,如何界定“升级”与“持续运维”?
定制开发软件的运维费是按“既有系统的功能点”来算的,而升级改造项目又会引入新的功能点。如果两边的计数没有统一口径就有可能出现“升级项目多算了FP,运维项目也算了FP”的情况;也可能出现项目单位为了保留运维经费,刻意把改造量“控制在30%以下”的行为。
这意味着,功能点不仅是一个预算计算工具,更是建设-运维-升级之间的分界尺。要让这把尺子有说服力,需要对存量系统建立“功能点基线”,并在每次重大升级后更新功能点基线,让运维费和升级费都围绕同一基线来计算和对比。

五、怎么用这条公式,才不至于“被公式用”?

既然这条简化公式既有理论基础,又有现实局限,那在实践中如何“正确使用”,就成了关键。可以从几个方向来考虑。

(一)把它当“统一量尺”,而不是“自动报价机”

最安全的定位是:这是一把统一的“功能-工作量-费用”量尺,而不是一台自动出价机器。换句话说:对于多数中小型、结构相对简单的系统,按公式计算出的运维预算,可以视为合理区间的上限或“基准值”;对于复杂度特别高、业务特别关键的系统,应在公式给出的结果基础上,结合专家评审和历史数据做适度修正。这样可以兼顾两个目标:对大部分项目,减少“个案博弈”和“拍脑袋”的空间;对少数“极端项目”,保留必要的柔性。

(二)实行“分级精度”的功能点计数策略

完全套用简化公式是一种极简形态,而完全采用NESMA/IFPUG的低中高复杂度计数是一种精细形态。两者之间,其实有一条折中路线:对总体项目,采用简化公式;对若干关键子系统或模块,采用完整功能点计数(含复杂度等级);用这部分精细计数结果来校准整体预算是否合理。例如:对一个大系统中最核心的两个子系统(如征收管理),要求承建单位提供详细的功能点分析报告(含DET、FTR、低中高复杂度判定);再对比简化公式算出的FP,分析偏差是否在可接受范围。如果偏差过大,就说明该项目的复杂度结构与“全中等”的假设差异很大,应当单独处理。

(三)建立统一的功能点“样本库”和审查机制

为了减少“计数游戏”,建议:以目前标准中的识别规则为基础,逐步沉淀出一套典型模块功能点计数样本库,例如:
  • 标准用户管理模块的ILF/EI/EQ计数方式;
  • 标准工作流引擎的功能点拆分方式;
  • 标准统计报表中心的EO/ILF计数样式等。
同时,在审核环节中对于功能点数异常偏高或偏低的项目,要求承建单位提供详细计数说明与示例,并在必要时组织跨单位或第三方共同复核。通过实践中的不断迭代,让“怎么数FP”逐渐从“术”变成“例”,提高整个体系的透明度。

(四)监控综合调整系数,防止“乘子通胀”

对那串调整因子,可以考虑从三个层面加强治理:
  1. 规则层面,明确每一个因子取值所对应的具体条件(例如当达到哪些指标才算“高更新频率”“核心系统”)。
  2. 数据层面,建立历史项目数据库,统计同类系统的平均综合系数区间,对超出区间的项目自动预警。
  3. 程序层面,对综合系数超过某一阈值的项目,要求进行专家论证或组织专项评审。
这样可以避免在“功能点压扁”的前提下,被“乘子”重新堆出一座“价格高地”。

(五)引入“事后校准”:用真实数据反向修正公式参数

标准已经明确提出“实行动态管理,将结合政策、技术和市场价格变化适时进行调整”。要把“动态管理”落成现实,关键是要建立一个闭环:对已执行完的运维项目,收集实际投入的工时、人月、费用、故障率等数据;按照公式反推:实际“单位FP运维费”与公式计算值的偏差;偏差与业务重要性、更新频率、等保等级等指标的统计相关性;定期对:软件运维生产率(0.81小时/FP);各类调整因子的取值区间;人月费率的基准选择;做出数据驱动的调整。长期看,这套“公式体系”才能真正从一次性文件,演化成一个不断接近现实的成本模型。

六、结语:公式重要,承认公式的“有限性”更重要

综合来看,《运维标准》中给出的定制开发软件运维费公式,是在现有政策、技术和管理能力约束下,一个兼顾规范性与可操作性的尝试,它让“运维预算”有了可度量的基础,避免完全陷入“拍经验”的黑箱,把行业基准数据引入预算编制,向“数据驱动的财政管理”迈了一步,同时通过一条统一公式,给不同部门、不同项目之间的比较提供了共同语言。
但与此同时,我们也必须清醒地看到,功能点简化公式压扁了复杂度结构,只适合作为一个“平均意义下”的规模度量,多重调整因子虽然弥补了环境差异,也带来了新的博弈空间和通胀风险,功能点计数本身并不纯粹客观,仍然需要规则、案例库和审查机制来约束。所以,与其把这条公式当成“万能标尺”,不如把它看成是:一个足够合理、可以落地、适合作为起点的度量框架,而真正让预算更科学、更公平的,是围绕这个框架建立起来的一整套数据、规则和反馈机制。
“一条公式管天下”当然不现实,但有一条公开透明、可复核的公式来“管住一大半天下”,再辅以专家判断与动态修正,已经是政务信息化预算管理走向精细化的关键一步。下一步的挑战,不是发明更多公式,而是让这条公式在实践中不断被数据“教育”,从粗糙的近似,逐渐逼近复杂而真实的世界。
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 一条公式管天下?评定制开发软件运维费的简化计算方法

评论 抢沙发

3 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮