01软件项目估算过程
- 格式:doc
- 大小:140.00 KB
- 文档页数:7
软件开发报价(含软件开发项目工作量及报价模板)的计算方法软件开发的价格估算与工作量、商务成本、国家税收以及企业利润等因素有关。
为了方便计算,可以使用以下公式进行计算:软件开发价格 = 开发工作量 ×开发费用/人·月。
1.1 开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等因素有关。
具体计算公式为:软件开发工作量 = 估算工作量经验值 ×风险系数 ×复用系数。
1.1.1 估算工作量经验值(以 A 来表示)过去,有人提出使用源代码行或功能点来计算软件开发工作量,但这些方法都存在一定的困难。
目前,国际上仍按照经验的方式进行计算,而国内各软件企业也采用这种方式进行工作量估算。
为了更好地规范估算方法,建议按照国家标准“GB/T 8566-2001 软件生存周期过程”中规定的软件开发过程活动来计算工作量。
工作量的计算按照一个开发工作人员在一个月内(日历中的月,包括国家规定的节假日)能够完成的工作量为单位,通常称为“人·月”。
需要特别提醒的是,软件开发过程中不仅包括软件开发,还包括各种软件测试活动。
1.1.2 风险系数(以σ 来表示)估算工作量经验值也存在较大的风险,造成软件危机的因素很多,这也是一个方面的因素。
特别是当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实需求,就会导致软件企业需要不断地完善需求获取、修改设计等各项工作。
因此,风险系数应该满足以下条件:1 ≤ 风险系数≤ 1.5.我们了解到,超过估算工作量经验值的一半已经是不可接受的,因此我们将“1.5”设定为极限值。
当然,这既要看企业的能力,也要看用户能接受的程度。
1.1.3 复用系数(以τ 来表示)估算工作量经验值是软件企业承担一般项目时使用的,但如果软件企业已经采用“基于构件的开发方法”,并建立了能够复用的构件库(核心资产库),或者已有一些软件产品仅需进行二次开发,从而使软件开发工作量减少。
功能点(Funciton Point FP)估算法功能点估算法是软件项目管理众多知识中比较有技术含量的一个。
在软件项目管理中项目计划制定的优劣直接关系到项目的成败,项目计划中对项目范围的估算又尤为重要。
如果项目负责人对项目的规模没有一个比较客观的认识,没有对工作量、所需资源、完工时间等因素进行估算,那么项目计划也就没有存在的意义。
功能点估算法的特点项目范围的估算在CMMI的“MA”度量分析管理和“PP”项目计划中均有涉及。
对软件项目范围的估算有很多种方法,常见的是LOC代码行和FP功能点法。
它们之间的区别和关系如下:•功能点估算法常用在项目开始或项目需求基本明确时使用,这时进行估算其结果的准确性比较高。
假如这个时候使用LOC代码行估算法,则误差会比较大。
•使用功能点估算法无需懂得软件使用何种开发技术。
LOC代码行估算法则与软件开发技术密切相关。
•功能点估算法是以用户为角度进行估算,LOC代码行估算法则是以技术为角度进行估算。
•通过一些行业标准或企业自身度量的分析,功能点估算法是可以转换为LOC代码行的。
在项目刚开始的时候进行功能点估算可以对项目的范围进行预测。
在项目开发的过程中由于需求的变更和细化可能会导致项目范围的蔓延,计算出来的结果会与当初估计的不同。
因此,在项目结束时还需要对项目的范围情况重新进行估算,这个时候估算的结果才能最准确反映项目的规模。
功能点分析的步骤本文将以国际标准IFPUG(International Function Point Users Group)组织提供的功能点估算法V4.1.1为基础进行讲解。
如下图所示,首先大家应该了解功能点估算法的使用步骤。
图1 功能点估算法的步骤具体步骤包括:1. 识别功能点的类型。
2. 识别待估算应用程序的边界和范围。
3. 计算数据类型功能点所提供的未调整的功能点数量。
4. 计算人机交互功能所提供的未调整的功能点数量。
5. 确定调整因子。
6. 计算调整后的功能点数量。
如何对软件开发项目开展造价评估摘要:目前,国内的很多软件开发项目存在着工程延期、投资超支等情况,难以按期竣工并投入使用。
此外,做为建设方也很难拥有雄厚的专业技术实力对即将开发的软件有一个客观、真实的认识。
针对上述情况,国内的专业第三方咨询机构有能力为建设方提供软件开发项目的造价评估服务,在建设方对项目作投资决策时为其提供参考。
本文将介绍当今主流的造价评估理论和方法,结合笔者在税务领域的实践经验,向大家介绍如何开展造价评估工作。
关键词:软件开发;造价评估;咨询;功能点how to make the cost assessment for software development projectabstract:in china,many software development projects have project extension,investment overruns,etc.the present state affairs cause the project cannot complete on schedule.furthermore,major owners cannot hold professional technology capacity about the development of software.therefore,the third party consulting institution provides the cost assessment of software development project,which helps the owners with investment decision.this article presents the popular cost assessment theories and methods,and then introduces how to make the cost assessment with the author experience.keywords:software development;cost assessment;consulting;function point1造价评估概述由于软件本身的复杂性、估算工具的缺乏以及一些人为错误,可能导致软件项目的投资估算往往和实际情况相差甚远。
目录
1.目的1
2.X围2
3.估算过程2
3.1规模和工作量估算2
3.1.1 单元复杂度定义3
3.1.2 项目的单元分解3
3.1.3 规模和工作量估算3
3.1.4 项目整体开发工作量估计3
3.2进度估算4
3.3风险的估算4
3.4关键计算机资源估算5
3.5项目成本及报价参见〈项目估算表〉6
3.5.1人力成本6
3.5.2非人力成本6
3.5.3项目成本6
3.5.4项目报价6
4.估算方法6
5.项目估算评审7
6.参考资料7
1.目的
软件估算的目的是通过对软件项目管理和开发工作量的估算, 确认项目开发
的成本, 开发周期以作为项目投标、立项的依据. 对项目的估算通常还包括对软件大小(Size) 、软件项目风险和关键计算机资源的估算等.
对软件的估算很难以精确或准确来衡量, 相反以其合理性来评估. 项目的估算通常和市场价格、商务目标、项目经验和开发成员的工作弹性相关并是上述方面的综合反映.
2.X围
软件项目的估算不是一次估算过程. 通常会对项目估算多次. 例如在商务过程中, 通过估算进行报价和投标; 在项目计划过程中, 通过估算以确定项目开发计划;
在里程碑评审和变更过程, 通过估算和总结调整项目计划.
3.估算过程
3.1规模和工作量估算
在估算过程中,根据项目的类型、技术、语言和其他属性,尽可能地参照以往项目的数据,基于以往项目的历史数据,对指定项目的程序单元进行划分和确认。
如果没有可供参照的历史数据,使用Delphi等方法进行估算。
3.1.1单元复杂度定义
软件项目经理根据以下表格并结合项目的历史数据,确定本项目的单元复杂度标准。
(下表列出了制定复杂度标准时参考的因素,具体到各项目,需要软件项目经理
3.1.2项目的单元分解
•软件项目经理组织相关人员参照定义的标准进行系统分解,以确认系统的程序单元以及程序单元的复杂度。
3.1.3规模和工作量估算
在确认完成简单、中等和复杂后,软件项目经理可以参照历史数据或用Delphi 法对工作量或规模进行估算,并把结果登记到程序单元估算表中。
(在用Delphi法估算时,各类估算值的X围应在单元复杂度标准定义的X围内)如下表:
3.1.4项目整体开发工作量估计
软件项目经理组织相关人员估计项目开发过程中各开发阶段的相对工作量和总工作量(可参照以前项目的历史数据,否则需要用用Delphi法估算)。
工作量分配比例应依据以往项目经验和项目实际情况进行调整并在项目开发过程中跟踪和在项目结束时进行总结.
前六个阶段的工作量主要指完成实际的开发任务所需的工作量;质量保证工作量包括实施检查、填写各种工作记录等活动;配置管理工作量包括配置管理的库管理活动、状态报告、填写各种记录等活动;项目管理指软件项目经理的管理活动如任务跟踪、组织交流等;评审包括各种技术评审、计划评审和里程碑评审等;培训包括项目管理和项目技术等方面培训。
3.2进度估算
项目进度估算应基于以往相似项目的时间进度进行估计。
具体步骤为:
1.创建一个MS Project 2000 文件。
2.设置项目工作日历。
3.到甘特图视图,基于程序单元估算表,列出项目所有的任务/活动。
4.定义任务依赖性。
5.设置所有的约束,包括:
a.确定的里程碑日期;
b.关键资源获取日期(人力资源/硬件/软件)。
6.到资源页面,输入对所有相关项目相关组来说,可获得的资源。
7.到甘特图视图,分配任务资源。
8.设置任务周期,周期基于以下考虑:
a.基于系统大小和工作量估计。
b.根据指定资源的工作效率,调整任务周期。
c.在工作周期中,不要包括假期。
d.在里程碑周期内,根据活动和时间分割,设置合理的周期。
e.为不可预知的问题,预留15% 的余量
9.重复步骤3, 4, 5, 6, 7, 8, 直到任务,资源和周期合理分配。
3.3风险的估算
1 识别风险项(可利用风险项检查指南)和对风险进行分析
2 确定风险优先级
根据上述列表“最主要的 5 个”风险项,根据风险大小确定优先级。
3 建立风险排序表和制定相应的措施进行预防
为高
3.4关键计算机资源估算
对计算机资源的估算可和工作量、进度估算并行进行。
估计程序如下:•估计系统的大小,包括数据类型和存储在数据库中数据记录的数量,同时访问系统的用户数量,网络传输的数据量。
•计算存储在数据库中的数据大小,每分钟执行的请求和复杂度。
•定义系统中使用的协议,计算网络的带宽。
•计算数据库服务器的性能和其他服务器的性能,定义操作系统和数据库系统。
•定义应用服务器和其他附件
•计算桌面计算机的性能,定义开发工具。
•定义硬件服务器,桌面计算机和开发计算机。
•基于以上估计步骤,填写计算机资源估算表(参见《项目估算表》)。
需要特别指出的是, 关键计算机资源的估算是指项目必须满足的针对计算机资源的要求. 例如, 软件的规模不能超过500MB, 系统响应时间不能低于2秒/页, 等. 对于关键计算机资源的要求应于计算机资源估算表中记录.
3.5项目成本及报价参见〈项目估算表〉
3.5.1人力成本
项目的人力成本是指由于各种人员的参与而计入的成本. 可根据对总工作量的估算乘以相应的小时成本得出:
人力成本= ∑(工作量x 小时成本)
3.5.2非人力成本
非人力成本主要包括和项目相关的成本, 如软件, 硬件, 出差及办公费用等.
3.5.3项目成本
项目成本是人力成本和非人力成本的总和:
项目成本= 人力成本+ 非人力成本
3.5.4项目报价
项目报价则是以项目成本为基础加上合理的利润. 需要指出的是项目的报价通常受客户的承受力、市场价格以及项目竞争者报价制约, 应予综合考虑.
4.估算方法
针对项目的需要, 在不同阶段可采取不同的估算方法. 如单人估算和多人Delphi 估算法等. 通常建议采用由3-5 人组成估算小组, 每人单独估算并填写《Delphi估算表》, 经讨论后汇总的Delphi 估算法.
Delphi 估算法是工业界广泛采用的基于个人经验汇总的估算方法. 其基本方法为:
1.软件项目经理选择具有相关经验的估算人员3-5人组成估算小组, 并确认组
长.
2.软件项目经理准备和估算相关的材料.
3.软件项目经理召开会议, 确认待估算的条目(Item), 并分发給估算小组成
员.
4.估算小组成员进行个人独立估算, 并填写Delphi个人估算表.
5.估算小组长汇总个人估算于Delphi估算总结
6.估算小组长召开会议组织讨论和汇总, 对于估算偏差大于30%的条目经讨论
后由小组成员重新估算.
7.估算小组长汇总最终估算并报软件项目经理
8.软件项目经理记录并归档于项目估算表
估算小组分工和责任如下所示: (深色阴影代表主要负责人)
5.项目估算评审
估算的评审通常和其他的过程评审一同进行, 也可单独进行. 如估算的评审可作为投标评估、合同评审、计划评审、里程碑评审的一个组成部分. 评审过程应参照〈〈评审过程〉〉.
6.参考资料。