草庐IT

软件项目管理 6.3.用例点估算法

软件项目管理 2023-03-28 原文

【公众号 “项目管理研究所” 将会第一时间更新文章并[分享行业分析报告]】
归档于软件项目管理初级学习路线
第六章 软件项目成本计划
《初级学习路线合集 》


前言

大家好,这节我们学习软件项目管理---用例点估算法。用例点估算是基于需求用户视图的估算方法,通过需求用户视图中的角色,用例,以及相应的复杂度来确定项目的用例点。

用例点估算流程

通过用例视图确定用例和角色以及相应的复杂级别。

然后确定用例权值和角色权值,相加后获得未调整的用例点,再计算技术复杂度因子,通过这些因子来调整未调整的用例点获得用例点数,最后通过项目生产力将用例点换算为工作量。

因此用例点估算方法的基本步骤如下:

  1. 计算未调整的角色权值UAW;
  2. 计算未调整的用例权值UUCW ;
  3. 计算未调整的用例点UUCP;
  4. 计算技术和环境因子TEF;
  5. 计算调整的用例点UCP ;
  6. 计算工作量( man-hours) 。

(1).计算未调整的角色权值UAW

从公式看到UAW等于角色数乘以相应的权重之和,公式中的C是复杂度级别,aCardinality是相应级别的角色数量,aWeight是这个级别角色对应的权重,权重是根据复杂度级别确定的。

复杂度级别最低的权重值是1,相当于角色通过API与系统交互。

复杂度级别中等的权重值是2,相当于角色通过协议与系统交互。

复杂度级别最高的权重值是3,相当于角色通过GUI与系统交互。

(2).计算未调整的用例权值UUCW

从公式看到UUCW等于用例数乘以相应的权重之和,公式中的C就是复杂度级别,aCardinality是相应级别的用例数量,uWeight是这个级别用例对应的权重。

根据事务或者场景个数分别设为3个不同复杂度级别,而每个级别又各自对应着相应的权重值。

例如事务/场景 > 7,对应的复杂度级别权重值为15。

(3).计算未调整的用例点UUCP

UUCP等于未调整的角色权值+未调整的用例权值。

例如某项目通过用例视图确定11个角色,其中2个是简单级别,1 * 2= 2 。4个是中等级别,2 * 4= 8 。5个是复杂级别,5 * 3=15 。所以UAW=25 。

同理,通过用例视图确定用例数为10,其中5个是简单级别,2个是中等级别,3个是复杂级别。UUCW=85 。

这样未调整的用例点UUCP=110 。

(4).计算技术因子TCF

技术因子的计算是从13个角度来评价项目的技术复杂性,例如分布式角度,性能角度等等...那么这个表展示了这些因子的权值:

公式TCF等于 技术因子权值乘以相应的影响等级之和,再乘以0.01,最后加上0.6。

那么TCF_Weight是技术复杂度因子的权值,Value是该技术复杂度因子影响等级,在0-5之间取值。

0 表示技术因子与本项目无关;3 表示技术因子对本项目的影响一般;5 表示该技术因子对本项目有很强的影响。

例如针对刚才项目,通过确定各个因子的影响等级,计算出TCF=1.02 。

(4).计算环境因子ECF

环境因子的计算是从8个角度来评价项目的环境,权重。例如UML精通程度,系统应用经验等等...那么这个表给出了因子的权值:

ECF公式中的ECF_Weight是8个因子的权值,Value表示该因子的影响等级。0 表示项目组成员都不具备该因素;3 表示环境因子对本项目的影响程度为中;5 表示本项目组成员都具有该因素。

例如刚才项目,通过各个环境因子等级,计算ECF=0.785 。

(5)、计算调整的用例点UCP

UCP=UUCP * TCF * ECF

针对刚才项目计算出UCP=88 。既项目的规模为88个用例点。

(6)、计算最后工作量

如果已知生产力是每个用例点是20个工时,则可以确定工时工作量为UCP * PF=88 * 20=1760h=220人天

总结

总之 用例点估算方法是基于用户用例视图,确定角色和用例以及对应的复杂度级别,从而估算出用例点数。

到这里,第六章 第三节 用例点估算法就讲解完毕了!下一节介绍类比估算法~

如果您觉得这篇文章有帮助到您的的话不妨点赞支持一下哟~~?

后续将持续更新【软件项目管理初级学习路线】的全知识点,大家感兴趣的多多关注博主哟~
————————————————

有关软件项目管理 6.3.用例点估算法的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  5. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  8. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  9. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  10. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

随机推荐