敏捷外包工程之七:报价管理(功能点)

软件系统开发费用的估算——功能点方法 应用实例 阅读详情
本文是敏捷外包工程系列的第七篇。( 专栏目录 )

各种报价策略分析(下)

上一篇提到一个问题,如果项目“平台化”了,生产一个软件的速度会加快,实际人天会减少,这时候怎么报价?
答案就是 卖功能而非人天。

卖功能而非人天

大约2008年左右还没有加入IIOM(国际外包管理协会)的时候,我曾经接到一个电话,说老外拿来一个需求文档,能回答两个问题的人可以得到这个项目。两个问题是:“这个项目要多少钱?为什么?”这个问题最早被提出来,应该是整个世界第一次出现“软件”这种东西的时候了,但最终被解答却是在1970以后,国外外包领域现在已经广泛应用,而中国至今很少有公司在使用。
那就是功能点。

功能点简介

操作类功能点
此处的功能点(英文Function Point)和我们平时说的功能点不是一个概念,是由相对严格的方式定义、甲乙方都可以理解和计数的功能的数量。
比如“用户增删改操作”“查看所有用户”在我们看来是两个功能,但功能点认为是增、删、改、查看所有四个操作,因为这四个操作都满足:
1. 可识别性
每一个操作都是客户可以理解的,他们能意识到这是自己的“业务”。
所谓“业务”,就是他们购买此软件的目的。比如,一个OA系统,里边应该有维护人员的工作要做,客户的系统管理员会认为“对用户进行增删改查”是自己的日常工作的一部分。
2. 独立性
在某一次操作中,客户可以独立操作其中一个(尽管之前很久可能曾经操作过另一个,或之后很久可能也会操作另一个)。
独立性与我们常说的功能依赖性之类的相似但又不尽然相同。
比如我们会想:一个人如果未曾添加用户,如何查看或删除?一个人如果不先查看并找到用户,怎么可能把它删除?如果不列出所有用户,那么怎么点击查看单个用户或编辑其中一个用户?所以这些功能之间是有“依赖”的。
但对于用户而言,他们理解的“业务”依赖性,是指是否每次都要同时执行其中两个业务。
比如:
a 有人离职了,管理员进来删除了一个用户。这时候管理员感受到的是自己做了一次“删除用户”操作。举一个形象的场景:管理员的领导问“你今天上午做什么了?”管理员会回答“我删了三个离职的员工”,他不会列举查看了所有员工,并查到了三个员工,并打开查看了详情以便确认,然后才删除的。这就是要注意业务操作和功能的区别。
b有人问系统中有多少用户,管理员点击打开了用户列表,并回答说有N个。他感受到的是此系统有“查看所有用户”的业务功能。
c有人报告自己的名字被写错了,管理员帮他修改好。他感受到的是此系统能“修改用户信息”。
等等。
3. 完整性
每一个业务操作都向客户交付了一个完整价值,完成操作后系统进入一个相对稳定的状态(比如可以离开、关机)。
相对稳定的状态不是太好描述,但整体上说,即使整个业务链还没有完成,但系统已经进入一个在等待别人响应,而自己工作已经告一段落的状态。比如“发送邮件”后,基本上就没有马上一定要做的事情了,尽管对方还没有收到。但是“将邮件添加到发送队列”“队列马上或定时发送走”这两个操作,则不是单独满足完整性的,他们是技术上的两个步骤,但不是业务上的。从业务上说,这两个加在一起才是“发送邮件”。
比如:
注册用户:点击注册链接,在弹出的窗口中,填写用户名密码,重复输入密码,再点击下一步;填写邮箱和……,再点击下一步;……;点击“完成”按钮;一封邮件会发送到邮箱中;到邮箱中点击链接,激活并完成注册。
这整个事情,是一件事情,就是注册用户。
操作类功能点的分类
操作类功能点被分为三种:
EI外部输入(增、删、改等影响内部数据为主的操作,也包括“杀毒”等启动类操作)
EQ外部查询(不涉及计算的原始数据查询,比如打印流水表之类)
EO外部输出(涉及计算和复杂输出操作,比如复杂的年度报表,图表等)
下面会提到 简化估算中,可以不区分操作类型,但应该意识到其存在。
当然同一个功能,有简繁之分,所以功能点提供了一些评判简繁的方法。可惜,这些方法需要很多业务细节(与技术无关),比如有读写多少个业务数据,分别有多少个字段等等。这些细节对于分析业务有很多好处,也为后来功能点的定义、数据分析做出了贡献。但对于每次都要做估算的项目而言,有点过于细节。后面会讲到如何细化。
数据类功能点
除了操作外,被管理的业务数据也要被功能点计数。
业务数据的定义大致如下:
1. 可识别性
就是客户能识别和理解这些数据。
比如一个OA系统,应该有用户、角色、权限……邮件、会议……这些要管理的信息。而一个手机应用,则可能管理联系人、短信、黑名单……等。
业务数据很类似数据库中的表,但注意在数据库中,这些信息有可能1:1或1:N或N:1或N:N地存储于不同的表中,这些都是技术问题。比如“用户”的用户名、密码、邮箱可能单独存储于一个表格,而兴趣爱好则再另外一个地方,但客户不会因此而按数据库表的数量评估有多少个业务数据,只会笼统地认为有一个“用户”在被管理。
2. 要管理的数据是客户的业务数据
所谓业务数据,就是客户购买或使用我们产品的最终要管理的数据。
比如,为了填写订单时能帮助用户查找自己的邮政编码,电子商务网站可能会帮助用户根据地址查找“邮政编码”,但邮政编码却不是他们要管理的业务内容。所以尽管可以理解,并不会真的把“邮政编码”当作业务数据。在功能点分析中这类数据叫做Code Data,编码文件。
3. 对每个业务数据,大致有4~9个业务操作
这一条是我自己加的,已被刚发布的行业标准所采纳为“简易识别规范”(等等说它的依据)。
1和2的定义还是很含糊,为了方便确定哪些“名词”是业务数据,哪些不是,加个操作数量最直观。
因操作太少而不是业务数据的例子:
再来看“邮政编码”,肯定没有增删改这些操作,只有一个“查”;或许还有一个“批量更新”,就是发生变化后一次性把所有修订后的版本更新上去。所以,只有1~2个操作,不是业务数据。一般而言,缺乏“增删改查”5个操作的名词一般都不是业务数据 (“查”一般是两个,查看单个,查看所有)。
因操作太多而需要拆分的例子:
而“邮件”,则可能“新建、编辑、保存(草稿)、打开(草稿)、发送、抄送、密送、发给群组……”或“接收、转发、回复、回复所有、删除、挪文件夹……”太多了,要怀疑包含多个业务数据的可能。其实,前者是“发件”,后者是“收件”,是2个。刚才提到的“会议”也很可能超过这个数目,而应该被拆分为“会议计划”“会议通知”“会议记录”等,取决于实际情况。
在有这条简易识别规范之前,有一个很拗口的官方识别方法,很不好操作而且主观性很大。 这条简易识别规范实际上来自于NESMA的简化功能点时做的假设,即每个业务数据大致对应7个操作。
数据类功能点的分类
数据类功能点有两种:
一种是内部逻辑文件(ILF)即系统内部存储的业务数据,比如前面提到的用户、角色、权限和邮件、会议。
一种是外部接口文件(EIF)即系统要调用别人的数据,比如如果做LDAP集成,外部邮件系统的的“联系人”则会被当作一个外部接口文件。
软件系统开发费用的估算——功能点方法 阅读详情

相关推荐

软件功能模块报价计算方法及标准

软件功能模块报价计算方法及标准,用于投标过程的计算,该方法按人月来计算;

软件开发费用评估 功能点估算法

最近写项目文档,需要计算报价,用到了功能点估算法,还挺复杂的,姑且做个笔记。 定制软件开发服务费可按照功能点估算法或工作量估算法进行估算,原则上200万元以上项目需按功能点法估算。具体公式如下: 定制软件开发服务费用=功能点数×软件开发生产率基准/人月折算系数×软件开发基准人月费率+直接非人力成本 其中: 1)功能点数(Function Point) 单位为个,计算公式如下: 功能点数=未调整功能点数量(UFP)×软件类别调整因子×复用系数。 未调整功能点数量(UFP)可采用预估功能点计数和估

Boss_Gao的博客 4万+

软件开发费用功能点计算

随着计算机技术的发展,现在的计算机环境与传统的环境已经有了天壤之别。因此,软件工程人员一直在寻找一种可以广泛应用的度量单位。这个度量单位需要独立于开发所采用的技术,支持需求收集、估计、项目管理和质量度量的需要。功能点分析就是能够满足上述需求的选择。

【软件造价咨询】软件造价之全国各省市功能点单价分析

软件造价之全国各省市功能点单价分析

xiaosenyouli的博客 1921

混合动作空间在强化学习中的创新应用:PDQN与MPDQN算法解析

本文深入解析了强化学习中处理混合动作空间的PDQN与MPDQN算法。针对既有离散选择又有连续调节的复杂决策场景,PDQN通过参数化深度Q网络,巧妙结合DQN与DDPG进行交替优化;MPDQN则进一步改进,为每个离散动作提供专属参数评估以减少干扰。文章通过游戏、自动驾驶等实例阐述了其应用价值与面临的挑战。

efc123456的博客 864

Diffusion:如何从噪声中生成清晰图像

扩散模型是当前AI图像生成领域的核心基础,如Stable Diffusion、DALL·E等热门模型均采用该技术。其原理分为训练和推理两个阶段:训练时通过逐步加噪图片,让AI学习如何去除噪声;推理时则从随机噪声出发,结合文本提示逐步去噪生成清晰图像。模型架构通常包含文本编码器、生成模型(如U-Net)和解码器三部分,通过多轮迭代将低维潜在空间表示转化为最终图像。这种技术模拟了艺术家从混沌中雕琢作品的过程,实现了从随机噪声到目标图像的智能生成。

laumy的学习笔记 1276

软件项目报价术语总结(功能点计数元素ILF、EIF、IE、EO、EQ)

功能点计数元素包括以下5个: a) 内部逻辑文件(Internal Logical File,ILF,以下简称内部数据) 软件内部需要维护(如增删改查)的数据。 b) 外部接口文件(External Interface File,EIF,以下简称外部接口) 在其它系统中维护但本软件需要调用的数据。 c) 外部输入(External Input,EI) 向软件输入数据或发送指令。 d) 外部输出(External Output,EO) 软件向使用者或其它系统输出的数据或发送的指令。 e) 外部查询(Exter

蒙双眼看世界 1万+

从Transformer到Mamba:显著性检测领域的计算效率革命(Samba框架深度解析)

本文深入解析了Samba框架在显著性目标检测(Salient Object Detection)领域的创新应用,通过结合Mamba架构的优势,实现了计算效率的革命性提升。Samba框架采用显著性引导的Mamba模块(SGMB)和上下文感知上采样(CAU),有效解决了传统CNN和Transformer的局限性,同时在RGB-D等多模态任务中展现出卓越性能。

mmm90的博客 557

敏捷外包工程系列之四:外包与敏捷开发专访(IIOM独家专访)

本文是敏捷外包工程系列的第四篇。(之一,之二,之三,之四) 本文是2012年05月初IIOM(国际外包管理学院)的专访。传统认为敏捷开发是面向产品研发的,在外包项目里边比较难用,因为需求由客户牵制,而“拥抱变化”极有可能导致项目延期超支,等等。本文提及了敏捷开发对外包项目的帮助,以及如何利用功能点估算和度量防止出现超支。原文位置:http://www.int-iom.cn/int/mem...

diaogan4202的博客 250

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

本文主要是对同构和异构传感器在指定空间内的布局进行优化,以最大覆盖率为目标,使用了DBO/SCA/WOA/SSA/NOA等启发式算法,在100x100的空间内,对30,100,200个传感器进行优化,得到最优的布局位置和对应覆盖率。

u013367499的博客 1818

11.3 海岛微电网与工业园区的构网应用

海岛微电网与工业园区配电网是构网技术下沉应用的两大典型场景。海岛微电网以构网型储能为核心,解决孤岛系统稳定性问题,需具备黑启动、多能源协调和故障穿越能力;工业园区则侧重电能质量治理、并离网无缝切换和经济优化运行。两类场景均需解决多机并联稳定性、故障特性适配和分层协同控制等关键技术。构网型变流器的电压源构建能力、自适应控制策略及飞轮储能等特殊应用,为构建高可靠性、高经济性的分布式能源系统提供了创新解决方案。

技术工作者 1086

敏捷外包工程之五:报价管理(一)

本文是敏捷外包工程系列的第五篇。(专栏目录)外包行业的问题及瓶颈分析外包行业的所有研发问题,最终几乎都可以归结于报价管理问题,或者说其销售过程的问题造成了后续的研发问题。整体上现在的外包企业大致有这样几种报价方法,几乎都存在相同的问题。下面就几种情况,从平衡计分卡的四个维度(收入,客户,内部流程,学习与成长)来分析其问题。之所以不用敏捷开发进行分析,是因为敏捷开发的视角高度不够,可以用来解决问题,

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1万+

【异常】Cursor导入Karpathy指南失败解决方案Failed to import GitHub/GitLab rules: Error executing git: Cloning into

摘要:本文解决了Git克隆单个文件报错的问题,指出git clone只能克隆整个仓库而非单个文件。提供了两种解决方案:1) 推荐手动创建规则文件,在Cursor项目中新建.mdc文件并粘贴Karpathy行为指南完整内容;2) 备选克隆整个仓库获取文件。指南包含编码行为规范,强调简单性、精准修改和明确目标。还说明了如何设置全局规则和即时生效的方法。

奶爸的编程之路,也就一周冷个三天 174

陈勇:外包与敏捷开发专访(独家专访)

陈勇老师作为国内外包与敏捷开发专家,具有丰富的工程技术与项目管理实践经验,擅长在各种实际场景中灵活运用各种实践,并可提供敏捷开发、早期软件成本估算等公开课、扩展咨询和实践指导活动;曾参与多种模型的实践/咨询和培训工作,如CMM/CMMI、敏捷(Scrum)、功能点FPA、早期软件成本估算等,并能将多种模型融会贯通。 日前IIOM独家专访国内外包与敏捷开发专家陈勇老师,以下为采访内容:(问:IIO

汤智玲 - 国际外包项目管理及业务拓展高级研修班的专栏 6484

eDP V1.4协议介绍

eDP的全称是Embedded DisplayPort嵌入式显示端口,主要应用与短距离系统内应用,例如手机、一体式台式机等。eDP V1.4b是基于DP V1.3标准制作完成,但因应用场景的不同,还是有很多区别。电压摆幅不同,eDP相对较低;eDP功耗相对较低;DP有线材和连接器的要求,eDP没有明确要求;AUX通道电路设计不同(相对DP取消了AC耦合电容和100KΩ/1MΩ的上下拉电阻):典型应用场景;

qflook的博客 4303

《使用R包ggtree进行进化树的绘制与美化》

都2023年了,才去使用Y叔早在2018年发表的进化树构建利器——ggtree。刚好最近在做基因家族分析,进化树的构建与美化确实有点麻烦,先前使用MEGA11进行了绘制,但图像简陋,于是导出了nwk文件,准备使用其他软件进行美化。这里,我使用ggtree包进行操作。

沉香best的博客 6896

敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)...

本文是敏捷外包工程系列的第二篇。(之一,之二,之三,之四)敏捷开发整体上适合小团队、产品研发(所以才有product owner一称)的环境,而外包软件开发中常常存在的则相反,因此在创建团队的时候要充分认识到这一点。Product Owner产品负责人的人选听到无数次有人说“我们的Product Owner就是客户,因为所有需求都是客户提的”,其实这样做极度危险。Scrum开发理念提出前...

diaogan4202的博客 411

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

敏捷软件外包的挑战和策略

2005年8月我在麻州Vicor公司(半导体制造业)做了5年CIM软件工程师后离职回国,正式跨入中国软件外包行业,直到2014年12月,这一干就将近十年。下面结合这10年的外包经历和敏捷实践,一起探讨敏捷软件外包的挑战和策略。 我与外包的10年情结 我当时在长沙创智集团(Powerise)旗下的创智国际任项目级(program)总监,有3个外包项目,其中一个项目客户是微软,当时据说是通过李开复牵线搭桥,签的项目是Business Dynamics ERP 产品的本地化。我们团队人数大约有25人,瀑布

ScrumDavid的博客 840

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

敏捷外包工程之六:报价管理(产品化)

本文是敏捷外包工程系列的第六篇。(专栏目录)各种报价策略分析(上)上一篇分析了各种不好的报价方法造成的外包企业发展瓶颈,下面来看看对策。要想获取更多的收入,实际上有很多方法,以下是有利的方法:通过销售提升产品价格这个是多数外包公司都在做的事情,若能把1块钱的东西卖到10块钱,就能多赚钱。优点是很直观因此容易操作(结果好坏再说);缺点是客户的忠诚度是建立在关系上的,也很容易被竞争对手替代。与一般做产

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 3859

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

敏捷外包工程系列之二:人员结构(敏捷外包工程,敏捷开发,产品负责人,客户价值)

本文是敏捷外包工程系列的第二篇。(之一,之二,之三,之四)敏捷开发整体上适合小团队、产品研发(所以才有product owner一称)的环境,而外包软件开发中常常存在的则相反,因此在创建团队的时候要充分认识到这一点。Product Owner产品负责人的人选听到无数次有人说“我们的Product Owner就是客户,因为所有需求都是客户提的”,其实这样做极度危险。Scrum开发理念提出前的环境大致

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 7041

外包项目开发全流程:从需求到交付的实战指南

软件外包开发是当前IT行业常见的合作模式,涉及需求分析、项目管理、技术实现等多个环节。其核心原理在于通过专业分工实现效率提升,技术价值体现在快速响应业务需求和降低企业研发成本。典型应用场景包括企业信息化建设、互联网产品开发和系统集成项目。在实际操作中,敏捷开发和Docker容器化等技术方案能有效提升交付效率。本文基于Vue.js和Spring Boot等技术栈,分享外包项目开发中的需求变更管理、进度控制和质量保障等实战经验,特别针对SaaS系统开发中的常见问题提供解决方案。

weixin_32325225的博客 257

外包行业的问题及瓶颈分析

外包行业的所有研发问题,最终几乎都可以归结于报价管理问题,或者说其销售过程的问题造成了后续的研发问题。 整体上现在的外包企业大致有这样几种报价方法,几乎都存在相同的问题。下面就几种情况,从平衡计分卡的四个维度(收入,客户,内部流程,学习与成长)来分析其问题。之所以不用敏捷开发进行分析,是因为敏捷开发的视角高度不够,可以用来解决问题,但不能用来分析问题。 几种现在外包交易方式的分析

510

如何应对外包中的撕逼大战(一)——接包前搞定了这3件事,被坑率为0!

承接外包项目是程序员/外包企业磨炼技术能力、获得技术变现的重要手段。不过,提供技术外包服务可并不是轻松的事情。无论是接包前期的需求梳理,还是谈判过程中的议价定价,以及项目开发中的进度管理、成果交付,还有项目完成后的后续维护和服务,每一个环节都埋藏着大大小小的“坑”,处理不好,很可能会让你的外包服务无法愉快的完成。 一、影响外包项目质量和进度的因素——需求   作为接包方我们需要注意很多细节...

ak619的博客 759
上一篇: 敏捷外包工程之六:报价管理(产品化)
下一篇: 致歉及【火星人敏捷开发手册】日后的更新动向
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值