51Testing软件测试论坛
标题:
关于功能点估计法
[打印本页]
作者:
七月上弦月
时间:
2008-4-16 15:27
标题:
关于功能点估计法
小弟在搞一个软件项目成本估计的方法,其中在看到功能点估计法的时候,对该方法理解不到位,哪位兄弟给点资料或实例,谢谢了
作者:
liaoxj
时间:
2008-4-16 15:51
使用用例点数进行项目估算
作者:RoyClem.
译者:freechow
1 简介
面向对象的应用经常使用用例来描述一个软件应用的业务过程。用例通常由评估业务领域的战略目标和场景组成,它们也用来说明软件应用的复杂度。 通过分析用例的角色和场景,可以得到可靠的一个应用程序的规模和工作量的估算值。 用例点数是一个项目估算方法,它使用项目的用例来准确的估算项目规模和工作量。
2 用例点数
用例建模是一种得到广泛使用的技术,用来获取软件应用的业务过程和需求。既然用例提供了应用的功能范围,分析它们的内容将对需要进行设计和实现这个应用有很大作用。通常, 具有大而复杂用例的应用需要更多的工作量来设计和实现。此外,完成应用程序的时间受到下列因素的影响:
完成用例需要的步骤.
角色的复杂性和数目.
用例的技术需求,如:并发性、安全性和性能。
各种环境因素,如:开发团队的经验和知识.
用例点数根据一个应用程序的用例来估算它的规模和工作量。依据Gustav Karner1993年的工作,UCP分析用例角色,场景和各种技术、环境因素,并抽象它们,得到一个计算公式。计算公式包含下面四个参数组成:
技术复杂度因素 (TCF).
环境复杂度因素 (ECF).
原始用例点数 (UUCP).
生产力因素 (PF).
每个参数都独立定义和计算,各个参数计算中,部分使用分析得到的值,部分使用常量。完整的公式为:
UCP = TCP * ECF * UUCP * PF
依据UCP方法进行估算的步骤如下:
确定并计算技术因素.
确定并计算环境因素.
计算原始用例点数.
确定生产力.
算用例点数(UCP).
3 技术复杂度因素
13个标准技术因素对估算生产力存在影响,这些生产力可能涉及应用中的各种技术问题。每种因素都有与其相关影响相应的权重。权重为0意味着完全无关;权重为5则意味着有极大的影响。
技术因素 说明 权重
T1 分布式系统 2
T2 性能 1
T3 终端用户效率 1
T4 复杂的内部处理 1
T5 可重用性 1
T6 易安装性 0.5
T7 易用性 0.5
T8 可移植性 2
T9 易更改性 1
T10 并发性 1
T11 特别的安全性 1
T12 提供给第三方接口 1
T13 需要特别的用户培训 1
每个项目的技术因素由开发团队来估算,根据相应的复杂度(如可重用性)来设定从0到5之间的值,多线程应用需要更高的技能和更多的时间。复杂度为0意味着技术因素与本项目无关;3意味着一般;5意味对项目有很强的影响。
每项因素的权重与复杂度相乘得到(中间)计算结果。计算结果相加得到总因素值。
复杂度使用样例值后的计算示例如下:
技术因素 说明 权重 复杂度 计算结果 (权重*复杂度)
T1 分布式系统 2 5 10
T2 性能 1 4 4
T3 终端用户效率 1 2 2
T4 复杂的内部处理 1 4 4
T5 可重用性 1 2 2
T6 易安装性 0.5 5 2
T7 易用性 0.5 3 2
T8 可移植性 2 3 6
T9 易更改性 1 3 3
T10 并发性 1 2 2
T11 特别的安全性 1 2 2
T12 提供给第三方接口 1 5 5
T13 需要特别的用户培训 1 3 3
总因素值 47
上表中, 通过加和计算结果,得到总因素值为47。为了计算TCF,两个常量将会用来计算。计算TCF的计算公式如下:
TCF = 0.6 + (0.01*Total Factor). 图1中, TCF = 1.07
4 环境复杂度因素
环境复杂度因素估算各种环境因素对应用生产力的影响。每种环境因素都被评估,并根据其影响加权,权重值在0和5之间。权重为0意味着环境因素对本项目完全无关;权重为3意味着一般影响;5意味着很大影响。
环境因素 说明 权重
E1 熟悉UML程度 1.5
E2 开发应用程序经验 0.5
E3 面向对象经验 1
E4 主分析师能力 0.5
E5 激励 1
E6 需求稳定度 2
E7 兼职人员 -1
E8 不同的编程语言 2
每种因素的权重与影响相乘,得到本项计算结果,计算结果相加得到总计值。
样例:
环境因素 说明 权重 影响
E1 熟悉UML程度 1.5 4 6
E2 开发应用程序经验 0.5 2 1
E3 面向对象经验 1 5 5
E4 主分析师能力 0.5 2 1
E5 激励 1 1 1
E6 需求稳定度 2 5 10
E7 兼职人员 -1 0 0
E8 不同的编程语言 2 1 2
总计 26
上表中,通过加和各项计算值得到的总因素值为26。为了计算ECF,两个常量将会用来计算。计算ECF的计算公式如下:
ECF = 1.4 + (-0.03*Total Factor). 对图4, ECF = 0.62
5 原始用例点数(UUCP)
原始用例点数有下面两部分组成:
原始用例权重 (UUCW) :基于用例场景中包含的活动数或流程部数。
原始角色权重 (UAW): 基于用例角色中多角色的组合复杂性。
1. UUCW
单个用例可被分成简单、普通和复杂三种,它们的权重依赖于它们包含的(操作)步骤(包含可选流程)。
用例类别 说明 权重
简单 仅涉及一个数据库实体(表或视图);操作不超过3步;实现用到5个以下类. 5
普通 涉及两个或以上数据库实体(表或视图);操作不超过4步到7步;实现用到5到10个类 10
复杂 复杂的用户界面或涉及三个或以上数据库实体(表或视图);操作超过7步;实现用到超过10个类. 15
通过计算各个种类用例的数目,乘上各种用例的权重,然后加和,就得到UUCW。
用例类别 说明 权重 用例数 结果
简单 仅涉及一个数据库实体(表或视图);操作不超过3步;实现用到5个以下类. 5 8 40
普通 涉及两个或以上数据库实体(表或视图);操作不超过4步到7步;实现用到5到10个类 10 12 120
复杂 复杂的用户界面或涉及三个或以上数据库实体(表或视图);操作超过7步;实现用到超过10个类. 15 4 60
总 UUCW 220
2. UAW
跟UUCW一样,根据角色间的相互作用,角色分为简单、普通和复杂。
角色类别 说明 权重
简单 角色代表一个定义好了API的另外一个系统。 1
普通 角色代表一个通过协议,如TCP/IP相互作用的另外一个系统。 2
复杂 角色是通过接口相互作用的人。 3
通过计算各个种类用例中的角色数目,乘上各种角色类别的权重,然后加和,就得到UAW。
角色类别 说明 权重 角色数 结果
简单 角色代表一个定义好了API的另外一个系统。 1 8 8
普通 角色代表一个通过协议,如TCP/IP相互作用的另外一个系统。 2 12 24
复杂 角色是通过接口相互作用的人。 3 4 12
总Total UAW 44
最终,由UUCW和UAW相加得到UUCP。在上图中,UUCP = 220 + 44 = 264。
生产力因素
生产力因素 (PF)是根据过去的项目得到的平均每个用例所花的人时比率。如果没有历史数据可供参考,行业专家推荐使用15-30之间的一个数字,典型的,你可以使用20。
最终结果
用例点数由下列参数相乘得到:
UCP = TCP * ECF * UUCP * PF
以本文使用的值举例:
UCP = 1.07 * 0.62 * 264 * 20 = 3502.752 or 3503 小时.
用40(小时)来除UCP (每人每周工作40小时)得到88人*周。这样,依本文中的值,整个应用程序需要一个人开发88周,大约22个月。
6 注意
与人类专家估算相比,用例点数估算可能偏高。这也许是件好事,因为很多项目都延迟了,但是估算也不能太高。为了得到准确结果,公式中的变量需要进行调整,特别是刚开始这样估算时。
场景中的步数。很多的步数将使复杂性偏高,用例点数增大。较少的步数将使复杂性偏低。有时,不用影响业务过程,步骤组数也能减到更少。尽力统一细节标准,但也不要强迫用例遵守估算方法。
包含和扩充用例增大了复杂性。将这些记为单独的用例。
用例中的角色数也影响估算。如果可能,将角色归纳为更高层次的角色。这将减少复杂性而不影响用例。另一方面,也不要强行归纳,如果根本不能概括的话。
技术和环境因素值需要根据不断获得的实际数据来做调整。越多项目使用用例点数来估算,估算将越准确。
用人类专家的估算来与UCP估算相比较。如果有差异,选择人类专家的估算,并相应调整UCP因素。
生产力因素只能从历史资产中获得。跟踪设计和实现用例的时间,相应调整生产力因素。
7 结论
用例点数能够得到可靠的结果,是因为它的估算由实际的业务过程――软件应用的用例――得到。另外,在众多的传统估算方法中,技术因素和环境因素并没有得到充分考虑。用例点数包含并抽象了这些主观的因素,并将它们使用进计算公式。随着项目进程,将会发现使用用例点数得到的估算非常可靠。
作者:
luoyear
时间:
2008-4-17 08:03
极力反对功能点
在一般成熟度和偏差容许范围
三点法(Pert)或者宽带Delphi法就可以了
您所要做的就是把WBS分分细再估
利用测试,需求,设计等工作的配比来验算一下估算的可信度。
作者:
liaoxj
时间:
2008-4-17 11:45
能否说细说明一下Delphi 法
或者提供相应的文档
作者:
365testing
时间:
2008-12-22 00:21
学习中,多谢了
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2