SPM软件工作量估算

合集下载

软件项目工作量评估方法

软件项目工作量评估方法

工作量评估1概述我们认真地阅读了软件的相关需求文档和设计文档后,对软件的功能进行了归纳和整理,并根据以往的经验对每个功能模块所需的编码工作量进行估算,再进一步地以此为依据,推算出整个软件生命期的工作量。

工作量推算后组织主要项目干系人和相关专家进行工作量评审。

2常见的估算方法2.1Ad-hoc方法这种方法下的测试工作量不基于任何确定的期限。

工作一直继续直到达到一些由管理或市场人员预先定下的时间表。

或者,一直到用完了预算的经费。

这种情况普遍存在于非常不成熟的组织,并且时常有100%的错误差数。

2.2开发时间的百分比法Percentage of development time。

这个方法的基本前提是测试工作量依赖于开发时间/开发工作量。

首先,开发工作量使用例如LOC或FP方法被估算出来,然后使用一些探索性的方法来限制测试的工作量。

这种方法变化比较大而且通常基于以前的经验。

通常预留项目的总花费时间的35%给测试, 5-7%给组件和集成测试,18-20%给系统测试, 10%给接收测试(或回归测试等)2.4类比法(经验值法或历史数据法)根据以前或相似项目(主要在项目性质,领域,规模上有相似)所积累的经验或历史数据来估算工作量。

类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。

需要收集以下相关的历史数据:在设计和实现阶段花费的时间,测试工作的规模,例如用户需求的数量,页面数,功能点,数据样式,例如实体,字段的数量, 屏幕或字段数量,测试对象的规模,例如KLOC2.5 WBS(work breakdown structure)估算法将项目或产品分解为具体的工作,然后分别对各个工作进行时间估算,最终求和得出项目或产品的测试工作量/时间。

2.6 Delphi法Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式可以减轻估算的偏差。

软件项目工作量评估方法

软件项目工作量评估方法

软件项目工作量评估方法工作量评估概述我们仔细研读了软件需求文档和设计文档,对软件功能进行了归纳和整理。

根据以往的经验,对每个功能模块所需的编码工作量进行了估算,并以此为依据,推算出整个软件生命周期的工作量。

接着,我们组织了主要项目干系人和相关专家进行工作量评审。

常见的估算方法Ad-hoc方法这种方法下的测试工作量不基于任何确定的期限。

工作一直继续直到达到一些由管理或市场人员预先定下的时间表。

或者,一直到用完了预算的经费。

这种情况普遍存在于非常不成熟的组织,并且时常有100%的错误差数。

开发时间的百分比法这个方法的基本前提是测试工作量依赖于开发时间/开发工作量。

首先,开发工作量使用例如LOC或FP方法被估算出来,然后使用一些探索性的方法来限制测试的工作量。

通常预留项目的总花费时间的35%给测试。

5-7%给组件和集成测试,18-20%给系统测试。

10%给接收测试(或回归测试等)类比法根据以前或相似项目(主要在项目性质,领域,规模上有相似)所积累的经验或历史数据来估算工作量。

类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。

需要收集以下相关的历史数据:在设计和实现阶段花费的时间,测试工作的规模,例如用户需求的数量,页面数,功能点,数据样式,例如实体,字段的数量,屏幕或字段数量,测试对象的规模,例如KLOCWBS估算法将项目或产品分解为具体的工作,然后分别对各个工作进行时间估算,最终求和得出项目或产品的测试工作量/时间。

Delphi法Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式可以减轻估算的偏差。

Delphi法鼓励参加者就问题相互讨论。

这个技术,要求有多种相关经验人的参与,互相说服对方。

Delphi法是一种软件项目评估方法,其步骤包括:协调人向各专家提供项目规格和估计表格;召集小组会讨论与规模相关的因素;各专家匿名填写迭代表格;协调人整理出一个估计总结,以迭代表的形式返回专家;召集小组会讨论较大的估计差异;专家复查估计总结并在迭代表上提交另一个匿名估计;重复4-6,直到达到一个最低和最高估计的一致。

软件工作量评估报告

软件工作量评估报告

软件工作量评估报告一、引言二、工作量评估方法本次工作量评估采用了常用的几种方法,包括基于功能点的工作量评估法、基于模块的工作量评估法和基于经验的工作量评估法。

在评估过程中,我们对软件的需求进行了详细的分析,并与开发团队进行了多次沟通讨论,以获取更准确的数据。

三、工作量评估结果根据我们的评估,该项目的预计工作量为XXX人天。

具体的分析如下:1.基于功能点的工作量评估法:根据需求分析,我们将软件功能分为了若干个模块,并对每个模块进行了估算。

根据历史数据及开发团队的实际情况,我们给出了每个功能点的工作量估计。

通过加总,得出了整个项目的预计工作量。

2.基于模块的工作量评估法:在基于功能点的评估结果的基础上,我们将各个功能模块进行了细分,对每个模块的开发工作量进行了进一步的估计。

同时考虑到各个模块之间的依赖关系,并对开发过程中的风险进行了分析,给出了每个模块的工作量评估。

3.基于经验的工作量评估法:通过分析过往类似项目的数据,以及开发团队的技术储备和人员经验,我们得出了一个基于经验的工作量评估。

该评估方法主要考虑到了开发过程中的不确定性和风险,并给出了一定的缓冲时间。

综合以上三种方法的评估结果,我们得出了最终的工作量评估结果。

在评估过程中,我们还考虑到了开发团队的资源投入情况、开发环境的稳定性等因素,以确保评估结果的准确性。

四、结论与建议根据我们的工作量评估结果,该软件项目的预计工作量为XXX人天。

在制定项目计划和资源分配时,需要根据评估结果做出相应的调整。

针对评估结果,我们提出以下建议:1.在项目计划中充分考虑到工作量的分配,合理安排开发人员的时间,并确保开发人员的工作量符合其实际情况和能力。

2.确保项目开发过程中的需求变更控制,避免过多的变更对工作量的影响。

3.加强团队的沟通和协作,提高开发效率,减少开发过程中的沟通成本。

4.在项目计划中增加一定的缓冲时间,以应对不可预知的风险和问题。

五、总结通过对该软件开发项目的工作量评估,我们得出了一个相对准确的工作量估算结果,并提出了相应的建议。

七种场景下的软件工作量估算步骤

七种场景下的软件工作量估算步骤

可以采用经验法。

(7)汇总得到:每个阶段的工作量、项目的总工作量。

其他说明:在该场景下,混合使用了经验法与模型法,这2种方法互相补充,而不是互相印证。

场景四:由总体印证基于WBS的估计场景描述:(1)有类似项目的历史数据(2) 有类似项目的全生命周期的生产率数据(含管理工作量)(3)有详细需求(4)实施了CMMI2级,但是没有积累历史项目的工作量分布数据估算步骤:(1)产品分解,将系统分为子系统,子系统分解为模块;(2)估计产品元素的规模,可以采用代码行法或功能点法;(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;(5)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS 分解时要识别出所有的交付物、项目管理活动、工程活动等。

(6)根据历史的类似项目的数据及估算人的经验估计所有活动的工作量,可以采用经验法。

(7)汇总得到:每个阶段的工作量、项目的总工作量。

(8)与第(4)步得出的工作量进行比较印证,如果偏差不大,则以第(7)步的结果为准,如果偏差比较大,要仔细分析原因,可能的原因举例如下:类似项目的生产率数据不适合本项目;WBS分解的颗粒度不够详细;估算专家的经验不适合本项目;具体任务的估计不合理;针对原因,对估算的结果进行调整,使其趋向合理。

其他说明:在该场景下,对于项目的总工作量有2个结果或者多个结果,这些结果可以互相印证,以发现估算过程中的不合理之处,是估计更加合理。

场景五:三维印证基于WBS的估计场景描述:(1)有类似项目的历史数据(2) 有类似项目的全生命周期的生产率数据(含管理工作量)(3)有详细需求(4)实施了CMMI3级,有历史项目的工作量分布数据(阶段分布、工种分布)估算步骤:(1)产品分解,将系统分为子系统,子系统分解为模块;(2)估计产品元素的规模,可以采用代码行法或功能点法;(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;(5)根据历史项目的工作量分布数据及第(4)步估算的项目总工作量,计算:每个阶段的工作量每个工种的工作量(6)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。

项目管理-2-软件工作量估算课件

项目管理-2-软件工作量估算课件
项目管理-2-软件工作量估算
太好了,那我 们开工吧!
一个月的时间 造这样一栋房 子?没问题
你当初计划10万元造的房屋可能最终的实际造价为 50万元。
项目管理-2-软件工作量估算
从造房子中学到的
• 除非你确切知道“它”是什么?否则无法说明它的确切花费。 • 盖房子时,可以盖梦想中的房子(不考虑花费),也可以按估算
• 质量降低 • Weinberg的可靠性零法则“如果系统不必可靠,那么它可以满足任何目标”。
项目管理-2-软件工作量估算
工作量估算对职员的影响
• 如果职员能够完成目标,那么他们将受到鼓舞 • 如果他们发现目标根本不能完成,那么他们的激情将受到极大损
害 • 因而,估计不是一种简单的预测行为,而是一种管理目标
• 有利于开发者对进度的关注,开发者在接受承诺后士气高昂,自 愿加班加点
• 问题在于开发者的估算比现实要乐观,大约低20至30个百分点 (Van Genuchten, 1991)
• 承诺应该现实可行,以使你的团队会不断成功而不是不断失败。
项目管理-2-软件工作量估算
软件工作量估计技术
• 算术模型 • 专家判断 • 对比法 • Parkinson:能够使用的参与该项目的人力 • 赢利价格:赢得合同的价格 • 自顶向下:首先定义整个项目的工作量,然后分解到各个部分 • 自下而上:各个部分的工作量先估算出来,然后进目管理-2-软件工作量估算
不确定性问题
• 客户会要求X功能吗? • 客户要的是X功能的便宜版本还是昂贵版本呢?同一功能的不同版本的实施难度至少有
10%左右的差别。 • 如果实施了X功能的便宜版本,客户会不会以后又想要昂贵的版本。 • X功能如何设计?同一功能的不同设计,在复杂度方面会有10%左右的差别。 • X功能的质量级别是什么?依据实施过程的不同,首次提交的X功能的缺陷数量会有10

工作量的评估方法

工作量的评估方法

工作量的评估方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数1.1.1估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

1.1.2风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l≤风险系数≤1.5根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

1.1.3复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:0.25≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

软件工作量评估方法

软件工作量评估方法

软件工作量评估方法
在软件开发过程中,准确评估工作量是至关重要的,它对项目进度、资源分配和预算规划等方面都有重要影响。

本文将介绍几种常见的软件工作量评估方法。

1. 行为点法(Function Point Analysis):行为点法是一种功能性指标,用于评估软件系统的功能点数量。

它将软件系统分解为独立的功能模块,并对每个模块的功能点进行评估。

通过这种方法,可以根据项目的规模和复杂性来估计工作量,并进一步预测开发时间和资源需求。

2. 基于源代码行数的方法:该方法是一种相对简单的评估方法,通过统计软件项目中的源代码行数来估计工作量。

然而,仅仅依靠代码行数来评估工作量存在一定的局限性,因为代码行数与实际工作量之间的关系可能受到各种因素的影响。

3. 参数化模型方法:参数化模型是一种基于经验数据的工作量评估方法。

通过收集和分析历史项目数据,可以建立一套参数化模型,将软件工作量与各类项目特性和指标联系起来。

基于这些参数化模型,可以根据项目的特征和指标来评估工作量,并进行一定的调整以适应当前项目的情况。

4. 基于原型的方法:在某些项目中,可能难以准确地评估整个软件系统的工作量。

因此,可以采用基于原型的方法来进行工作量评估。

通过先开发一个简化的原型系统,评估其工作量,并将这个工作量作为估算整个软件系统工作量的依据。

在实际应用中,通常会使用多种工作量评估方法的组合来获得更准确的结果。

同时,建立和积累项目数据和经验也是提高工作量评估准确性的重要手段。

在进行工作量评估时,还需要充分考虑项目的具体特点、人员技能和技术环境等因素,以及对风险和不确定性进行适当的估计和处理。

SPM成本计划

SPM成本计划

SPM成本计划SPM成本计划一、用例点估算用例权值使用环境复杂度因子平衡UAW=0+0+6=6UUCW=15+90+75=180UUCP=UAW+UUCW=186TCF=0.65+0.01*(2.0*3+1.0*5+1.0*4+1.0*3+1.0*4+0.5*1+0.5*5+2.0*1+1.0*5+1.0*2+1.0*5+1.0*0+1.0*0)=1.04 ECF=1.4+(-0.03*(1.5*3+0.5*3+1.0*4+0.5*5+1.0*4+2.0*3+1.0*0+1.0*0))=0.725UCP=UUCP*TCF*ECF=186*1.04*0.725≈140Effort=UCP*PF=140*20=2800(h)≈116(d)Effort=UCP*PF=140*28=3920(h)≈163(d)Effort=UPC*PF=140*36=5040(h)=210(d)二、自下而上估算法一共分为三个模块,分析了每个模块经历所有阶段后所需要的工作量(1)人工成本(文档以及网页制作)对于上表,通过自下而上地计算,知项目开发规模是126人天,开发人员成本参数为250元/天,则内部开发成本= 250元/天* 126天= 31500元=3.15万元(2)管理成本包括办公费用、会议费用、质量管理等。

针对本项目,管理成本= 开发成本*10% =3150元(3)计算直接成本直接成本=开发成本+管理成本= 3.15万元+3150元= 3.465万元。

(4)计算间接成本间接成本=直接成本*20% = 3.465万元*20% = 0.693万元。

(5)计算总估算成本项目总估算成本=直接成本+间接成本= 3.465万元+0.693万元= 4.158万元。

软件工作量评估标准

软件工作量评估标准

软件工作量评估标准
软件工作量评估标准是根据项目需求、复杂度、可行性、技术难度、团队经验等因素综合考虑,进行软件工作量的评估,从而确定该项目的工作量和资源需求。

常见的软件工作量评估标准包括:
1. LOC(Lines of Code):以代码量作为衡量标准。

虽然不同语言开发一行代码的价值有异,但比较直观,方便使用,容易打印出来做策划。

2. Function Points(FP):以程序功能点作为衡量标准。

按照程序的功能对每个功能点进行权值求和,得到总FP值,再将总FP值乘以一个系数,从而获得工作量。

3. Use Case Points(UCP):以用户情景点数作为衡量标准。

与FP类似,不同的是UCP将用例分解为事务和数据组件,从而更加精确地计算工作量。

4. Object Points(OP):以对象作为衡量标准。

包括对象的数量、复杂度、优先级等因素,可以更加准确地评估工作量,适用于面向对象的软件工程。

5. T-Shirt Sizes:以T恤尺码(XS、S、M、L、XL)作为衡量标准。

以人类习惯的方式,把工作量和难度做出直观的表述。

万恶的人们总是能够高效利用直觉来分析出问题。

项目管理-2-软件工作量估算

项目管理-2-软件工作量估算

练习
学生要求每学期写一篇有关IT的报告,如果你想建立一个估算学生完成这样一份报告的模型,你用什么来衡量报告的大小,什么因素会影响学生完成报告的难度? 字数 材料能否获取 对主题的熟悉程度 宽度/深度 技术难度
该方法特别是在对原由系统进行替换时有用,评估者对影响的代码的比例进行分析,从而得到工作量评估。
5
软件工作量估算困难的原因
1
某些人试图建立一个过去项目的全软件业的数据库,但是许多词汇意义的不明确使得这种努力没有效果,例如“测试”阶段究竟包括哪些活动就不明确。
2
估计的主观性:人们容易低估小项目的工作量,而过分夸大大项目的工作量
3
估计的政治因素:不同的人有不同的目标,如项目经理会高估项目工作量,许多机构采用独立的估算小组,但是将项目经理和项目成员吸收进估算小组,能够增强他们的责任感。
自下而上:各个部分的工作量先估算出来,然后进行合成
软件工作量估计技术
该方法首先将项目分成部件任务,然后估算每个任务所需的工作量。
01
在大型的项目中,分解任务的过程是一个叠代的过程,直到最下面的任务不可分解,产生WBS。
02
该方法适合于项目规划的后期。如果应用在前期,那么必须对最终的系统作出一些假设,例如对软件模块的数量和大小进行假设。
特征点(Feature Points):除了考虑普通功能点的内容外,还考虑了算法的特征(矩阵转换,字符串解析,处理中断等都是算法的例子)
功能点的其它扩展
功能点转化为工作量
对于原来的项目,计算生产率: 生产率=功能点数目/工作量(人日) 则,对于新项目,功能点计算出来后,工作量为: 工作量=功能点数目/生产率 更复杂的方法:最小二乘法 即工作量=系数1+功能点数×系数2

工作量的评估方法

工作量的评估方法

工作量的评估方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数1.1.1估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

1.1.2风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l≤风险系数≤1.5根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

1.1.3复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:0.25≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

软件开发工作量估算和报价

软件开发工作量估算和报价

1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T 8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l ≤风险系数≤根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

工作量的评估方法

工作量的评估方法

工作量的评估方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数1.1.1估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

1.1.2风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l≤风险系数≤1.5根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

1.1.3复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:0.25≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

工作量的评估方法

工作量的评估方法

工作量的评估方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数1.1.1估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

1.1.2风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l≤风险系数≤1.5根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“1.5”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

1.1.3复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:0.25≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

软件开发工作量的估算方法

软件开发工作量的估算方法

软件开发⼯作量的估算⽅法在讨论软件⼯作量估算⽅法前,⾸先要清楚什么事软件⼯作量估算。

我理解的⼯作量估算,就是估算软件项⽬所耗费的资源数,这个资源包含⼈⼒和时间,⼀般⽤⼈天、⼈⽉的形式来衡量。

(⽽软件的成本=耗费的资源*资源的单价)。

⽽且我个⼈觉得软件⼯作量与软件规模是不等的,规模是指⼤⼩是固定的,⽽⼀个软件开发的⼯作量与许多因素有关,如公司的效率啊,参与开发⼈员的编程⽔平等。

从估算单位⾓度来说,⼯作量估算的⽅法分为两类:直接估算法和间接估算法。

直接法指基于WBS的⼯作量估算⽅法,直接估算出⼈天⼯作量;间接估算法是先估算软件规模,再转换成⼈天⼯作量。

根据估算⾓度的不同,间接法⼜分为基于代码⾏(SLOC)的⼯作量估算⽅法和基于功能点(FP)的⼯作量估算⽅法。

1、基于WBS的⼯作量估算基于WBS的⼯作量估算⽅法,是最常见的⼀种估算⽅法,也是⼚商最常⽤的。

基于WBS的⼯作量的估算⽅法,⼜称为由底向上法(⾃下⽽上法),通常的估算步骤如下:1)寻找类似的历史项⽬,进⾏项⽬的类⽐分析,根据历史项⽬的⼯作量凭经验估计本项⽬的总⼯作量;2)进⾏WBS分解,⼒所能及地将整个项⽬的任务进⾏分解;3)参考类似项⽬的数据,采⽤类⽐法或专家法,估计WBS中每类活动的⼯作量;4)汇总得到项⽬的总⼯作量;5)与第1)步的结果进⾏印证分析,根据分析结果,确定估计结果。

2、基于代码⾏的⼯作量估算基于代码⾏(SLOC)的⼯作量估算,是从开发者的技术⾓度出发来度量软件。

代码⾏数是软件开发者最早进⾏规模测量的主要⽅法。

进⾏⼯作量估算时,先采⽤WBS法、类⽐法等统计出软件项⽬的代码⾏数,然后将代码⾏数转换为⼈天数。

其中,将代码⾏(SLOC)转换成⼈天数主要有2种⽅法。

(1)⽣产率⽅法:要求有开发商每⼈天开发的代码⾏数,估算出代码⾏数后,直接利⽤代码⾏数÷SLOC/⼈天,即得⼯作量⼈天数。

(2)参数模型法:利⽤模型,将代码⾏数转换成⼈天数。

工作量的评估方法

工作量的评估方法

工作量的评估方法1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。

为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量=估算工作量经验值×风险系数×复用系数估算工作量经验值(以A来表示)软什开发工作量的计算,曾有人提出以源代码行或功能点来计算,这些方法实施起来均有不少难度。

目前国际上仍旧按以往经验的方式加以计算,国内各软件企业也是采用经验的方式加以估算工作量。

为了更好地规范估算方法,建议可按照国家标准“GB/T8566-2001软件生存周期过程”所规定的软件开发过程的各项活动来计算工作量。

工作量的计算是按一个开发工作人员在一个月内(日历中的月,即包括国家规定的节假日)能完成的工作量为单位,也就是通常所讲的“人·月”。

特别要提醒的是软件开发过程中既包括了通常所讲的软件开发,也应包括各类软件测试的活动。

风险系数(以σ来表示)估算工作量经验值亦会存在较大风险,造成软件危机的因素很多,这也是一个方面的因素。

特别当软件企业对该信息工程项目的业务领域不熟悉或不太熟悉,而且用户又无法或不能完整明白地表达他们的真实的需求,从而造成软件企业需要不断地完善需求获取,修改设计等各项工作。

因此:l≤风险系数≤根据我们对软件企业的了解,超过估算工作量经验值的一半,已是不可接受,所以我们确定“”为极限值。

当然这既要看企业的能力,也要看用户能接受的程度。

复用系数(以τ来表示)估算工作量经验值是软件企业承担一般项目来估算的,但如果软件企业已经采用“基于构件的开发方法”,并己建立起能够复用的构件库(核心资产库),或者已有一些软件产品,仅作二次开发,从而使软件开发工作量减少。

因此:≤复用系数≤1根据国内外软件企业在实施基于构件开发方法(软件产品线)的经验数据,提高工作效率达到25%(最高值)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当有以往开发类似产品的历史数据可供参考时,这种方 法估算出的数值还是比较准确的。
代码行技术
代码行技术的优点:
代码是所有软件项目开发都包含的“产品”,而且
代码行数很容易计算。
代码行技术的缺点:


源程序仅是软件配置的一个成分,用它的规模代表
整个软件规模不太合理; 用不同语言实现同一个软件所需的代码行数并不相 同,即它依赖于所使用的编程语言; 不适合于非过程语言。
简单 3 4 3 7 5
平均 4 5 4 10 7
复杂 5 7 6 15 10
然后用下式计算未调整的功能点数UFP: CT=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
估算功能点的步骤
2、计算技术复杂因子TCF 软件复杂度的估算基于14个问题,逐一对各问题做
出复杂度估计,其取值范围是0-5。
术因素的“复杂性调节值”Fi来计算功 能点FP:
FP CT (0.65 0.01 Fi )
i 1
14
TCF
估算功能点的步骤
1、计算未调整的功能点数CT 首先把信息域的每个特性都分类为简单级、平均级
或复杂级,根据等级按下表分配功能点数:
a1 输出系数a2 查询系数a3 文件系数a4 接口系数a5
DI Fi
i 1
14
TCF 0.65 0.01 DI
估算功能点的步骤
“没有影响”取值0 “偶然的”取值1 “适中的”取值2 “普通的”取值3 “重要的”取值4 “极重要的”取值5 系统需要可靠的备份和复原吗? 需要数据通信吗? 有分布处理功能吗? 性能很关键吗? 系统是否在一个已有的、很实用的操作环境中运行? 系统需要联机入口吗? 联机入口需要在多屏幕或多操作之间切换以完成输入? 系统联机需要更新主文件吗? 系统的输入、输出、文件或查询很复杂吗? 系统内部处理复杂吗? 代码需要被设计成可复用的吗? 设计中要包括转换及安装吗? 系统的设计支持不同组织的多次安装吗? 系统的设计有利于用户修改和使用吗?

1981年Boehm在《软件工程经济学》中首次提出了 COCOMO模型。 1997年Boehm等人提出的COCOMO2模型,是原始的 COCOMO模型模型的修正版,它反映了十多年来人们在 软件成本估算方面所积累的经验。
COCOMO模型
COCOMO模型给出了3个层次的工作量估算模型。这3 个层次的模型在估算工作量时,对软件细节考虑的 详尽程度逐级增加。这些模型既可以用于不同类型 的项目,也可以用于同一个项目的不同开发阶段。 这三个层次的估算模型分别是: 基本COCOMO模型 中间COCOMO模型 详细COCOMO模型
软件项目规模的估算方法——LOC法
LOC(Line of Code)—— 一个衡量软件项目规模最常用的方法: LOC指所有的可执行的源代码行数,包括可交 付的工作控制语言(JCL:Job Control Language) 语句、数据定义、数据类型声明、等价声明、输 入/输出格式声明等。 单位编码行(1LOC)的价值和人月均编码行数可 以体现一个软件生产组织的生产能力。组织可以 根据对历史项目的审计来核算组织的单行编码价 值。
类比法的基本步骤是: 1、整理出项目功能列表和实现每个功能的编码行数; 2、标识出每个功能列表与历史项目的相同点和不同点,特别要 注意历史项目做得不够的地方; 3、通过步骤1和2得出各个功能的估计值; 4、产生规模估计。
前面介绍的代码行技术是比较简单的定量估算

软件规模的方法。 这种方法依据以往开发类似产品的经验和历史 数据,估算实现一个功能所需要的源程序行数。
COCOMO模型基本原理
因此,必须根据当前项目特点选择适应的估算
模型,并依据需要对相应模型作出调整。
动态多变量模型
动态多变量模型,即软件方程式,它是根据
4000多个当代软件项目中收集的生产率数据推 导出来的。 该模型把工作量看作是软件规模和开发时间的 函数,其形式如下:
E ( LOC B
0.333
/ P) (1/ t )
动态多变量模型
P的取值:
开发实时嵌入式软件时,P的典型值为2000; 开发电信系统时,P=10000; 对于商业软件来说,P=28000。
从上式可以看出,开发同一个软件产品(即LOC固定) 的时候,如果把项目持续时间延长,则可降低完成 项目所需要的工作量。
COCOMO模型
COCOMO模型—构造性成本模型
E 13.39 0.0545FP

Maston,Barnett和Mellichamp模型
E 585.7 15.12 FP
静态单变量的估算模型
从上面可以看出,对于相同的KLOC或LP,用

不同的模型估算的结果各不相同。 主要原因: 这些模型都仅仅依据若干领域中有限个项目的 经验数据推导出来的,适应范围有限。
Delphi法的步骤是: 1、协调人向各专家提供项目规格和估计表格; 2、协调人召集小组会各专家讨论与规模相关的因素; 3、各专家匿名填写迭代表格; 4、协调人整理出一个估计总结,以迭代表的形式返回专家; 5、协调人召集小组会,讨论较大的估计差异; 6、专家复查估计总结并在迭代表上提交另一个匿名估计; 7、重复4-6, 直到达到一个最低和最高估计的一致。
软件项目规模的估算方法——Delphi法
Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方 式适用于评定过去与将来,新技术与特定程序之间的差别,但专家 “专”的程度及对项目的理解程度是工作中的难点,尽管Delphi技术 可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时通常 用得不多,但是,这种方式对决定其它模型的输入时特别有用。

软件工作产品的规模 软件项目的工作量和成本 软件项目的进度 项目所需要的人员、计算机等资源
什么是软件项目的规模
在一个软件项目中,项目组要完成的工作产品,是规模评估的 对象,那么,项目组要完成的工作产品包括些什么?是最后要交付的 (向用户和向组织二个方面)程序、文档。 但是,项目组并不是只要完成最后交付的程序和文档,就可以 了。在交付前,要进行确认和验证测试,为此,要进行质量控制有关 的工作。再往前追述,项目组还必须做配置管理、需求管理,以及项 目管理。这些都有工作量。那么,软件规模如何估算? 现在,常用的办法,是通过对软件程序的规模进行估算的办法, 来间接反映软件项目的规模。规模是工作量的一个方面,并不能说规 模大,工作量就大。在这方面,并不一定是完全等同的。显然,接口 控制程序的程序量可能并不大,但是程序量比较大的报表处理程序的 工作量就大。这种不合理性,一般通过相关的程序复杂度、难度,加 以调节。这个问题,在相应的评估算法中,采用加权因子的方法,加 以调整。同样,程序规模的增长,会带来支持和管理工作成指数规模 的增长。因此,这也是需要注意的地方。
Bailey_Basili模型 Boehm简单模型 E 3.2 KLOC1.05 Doty模型(KLOC>9时适合) E 5.288 KLOC1.047
E 5.5 0.73 KLOC1.16 E 5.2 KLOC
0.91
面向FP的估算模型

Albrecht&Gaffney模型
用什么来估算软件项目的规模
软件的规模计算,从有软件的一天开始,就是一个没有解决的 问题。 没有解决的难题是,现在越来越没有办法给出评价程序量多少 的统一尺度。在程序设计的早期,直接的编码量(字节数)是度量程 序量的简单办法。但是,没有多久,这个办法就受到了挑战。因为有 一个好的算法(例如:好的循环控制),可以节省大量的程序编码, 但工作量(设计所花的时间、测试的复杂度)等,反而并没有节省开 发的精力和时间。因此,程序量作为工作量的度量标准,显然是不正 确的。那么现在,在完全不同的系统、应用环境下,提出统一和易于 运用的度量标准,是非常困难的。 为了解决问题,在CMM2的计划管理中,已经提出了一些度量的 实例,包括:功能点数、特征点数、编码行数(LOC)、需求数或页 数等。还可以有:模块数目,表格数,用户界面屏数,及数据结构等, 作为规模评估的参考。 度量软件项目规模的尺度,是一个相对值,而不存在绝对值。
3
4
动态多变量模型
其中: E是以人月或人年为单位的工作量; t是以月或年为单位的项目持续时间; B是特殊因子,它随着对测试、质量保证、文档及管理 技术的需求的增加而缓慢增加。对于较小程序 (KLOC=5~15),B=0.16;而对于超过70KLOC的程序, B=0.39; P是生产率参数,它反映下属因素对工作量的影响: 总体过程成熟度及管理水平; 使用良好的软件工程实践的程度; 使用程序设计语言的级别; 软件环境状态; 软件项目组的经验和技术; 应用系统的复杂性等。
功能点技术
功能点技术没有涉及系统本身的算法复
杂性。 因此,它仅仅适合算法比较简单的事务 处理软件的规模度量;对算法较复杂的 大型软件系统并不适应。
工作量估算
软件估算模型使用由经验导出的公式来预测软
件开发工作量,其中,工作量是软件规模(LOC 或FP)的函数,工作量的单位通常是人月 (pm)。 静态单变量模型 动态多变量模型 COCOMO2模型 支持大多数估算模型的经验数据,都是从有限 个项目的样本集中总结出来的,因此,没有一 个估算模型可以适应所有类型的软件和开发环 境。
软件工作量估算
软件项目的规模估算
确定了软件项目开发的生命周期模型,进行了工作任务分解, 就建立了一个项目任务整体的框架结构。 另外一方面,一个良好的软件项目计划的建立,还必须估算准 备开发的软件项目的任务大小、资源情况、投入的成本、限制因素等, 进行充分的估算,最后,根据估算,才能制定出合理的项目开发计划。 具体来说,要估算的内容包括:
软件项目规模的估算方法——类比法
相关文档
最新文档