范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

软件项目估算从功能点估算法到Cocomo成本估算模型

  今天谈下软件开发中的软件规模估算话题。软件项目估算杂谈
  软件估算是软件项目计划制定中的一个关键内容,在软件项目管理里面,特别是在进行进度计划安排的时候,一定不是先确定工作量并安排进度,而是先基于SOW和项目范围进行规模估算,基于规模再来评估工作量,最后才是基于资源约束思路(关键路径或关键链)来安排具体的进度计划。
  规模,工作量,资源和工期
  软件项目的复杂性就在于这几个因素间基本都没有简单的线性关系可寻。在项目过程不成熟或积累的历史数据不够的时候,慎用直接估算规模的方法,因此及时估算了规模也不清楚团队的实际生产率情况,无法根据规模推出具体的工作量。在这种情况下一般可以直接估算工作量,在项目进度跟踪过程中再收集产出物的规模数据以积累历史数据,方便后期建立相关的预测模型。
  功能点和代码行是可采用的规模数据,但采用代码行时候往往无法区分不同的代码类型本身往往具有不同的复杂度,对于逻辑层实现算法的代码和UI层实现简单完整性代码,虽然可能相同的代码行,但其复杂度不同将直接导致工作量的不同。对于任意一个功能点的开发基本都会涉及到DB,逻辑层和UI代码,因此可以给出一个综合的代码生产率数据,然后根据该数据到计算工作量。
  当新项目的规模比历史项目规模大几倍的时候,往往工作量会成指数级增长,在这种情况下要谨慎采用原来的线性比率关系。可以借鉴Cocomo模型来估算项目的工作量和项目工期。当预计出项目工作量人月后,最好能够根据历史经验和模型来预测在不考虑人力资源限制情况下项目可以完成的最短周期。虽然这个时候还没有考虑活动任务排序和资源约束,但基本可以得出一个经验数据。
  WBS分解和估算的关系
  项目在做详细估算的时候往往项目周期已经确定,因此为了可以满足进度WBS的分解颗粒度和进度的安排就至关重要了。比如在开发阶段现在有四个人可以进行并行开发,这个时候WBS最好能细化出四个可以并行的任务,当发现预排的进度无法满足要求的时候,需要再投入4个人,这个时候就需要WBS进一步分解以满足8个人能够同时进入并行开发。当WBS分解导致后期集成工作量超过并行节约的时间时候,基本就到了进度能够压缩的极限。所以WBS和估算没有完全的先后关系,分解后进行估算,在估算过程中又在调整和分解WBS。
  当项目人力资源很固定的时候,WBS分解更需要按现有人力资源情况进行考虑和分解,这个时候分解的粒度最好和项目可用人力资源匹配。总体原则仍然是前紧后松,让项目人力资源在项目一开始就能够完全动起来,而不是要漫长地等待前续工件和任务。
  当考虑了人力资源仍然无法满足进度要求的时候,需要考虑我们采用的方法论,如是否可用增量迭代的方法替换瀑布模型,如果可以则需要完全根据增量迭代思路重新分解WBS,对于采用不同生命周期模型情况下WBS往往存在较大的差异。
  当以上仍然无法满足进度要求的时候,我们可以考虑对过程进行裁剪,重点保证对产品质量有重大影响的核心过程元素。当进行过程裁剪仍然无法满足的时候,你需要考虑的是人的因素,去寻找开发生产率比一般人高5倍以上的开发高手,而不是在明知WBS无法细分的情况下继续往项目里面投人。
  估算方法
  在项目没有太多积累的情况下,依赖专家去估算往往是最有效的方法。专家估算是一种没有纸面化的Bottom-Up估算方法,因此专家估算的准确度往往是比简单的类别估算准确度高的。采用三点法估算的计划评审技术仍然是专家法的一种,这种方式的估算可以让我们更加清楚项目进度的一个范围值。
  功能点法是一种经过实践验证的方法,但应用成本很高,估算的工作量投入也较大。功能点法最终结果是规模,仍然需要知道项目的生产率数据才能得出实际的工作量。另外功能点法估算的结果无法直接和WBS分解的工作包和具体的任务对应起来,这是一个较难解决的问题。
  Cocomo估算是一种关于软件成本估算的方法,但仅给出一个可行的模型,项目没有足够多的历史数据根本无法确定出各调整因子和系数。但一旦项目建立起这种模型,则通过Cocomo模型得出的项目工作量和项目周期具有更高的准确度。
  观察历史项目中工作量和项目规模的数据,通过回归拟合可以得出生产率,工作量,生产率三者间的参数模型,这个参数模型可以用来我们通过软件项目的规模来预测实际的工作量。功能点估算原理和方法
  功能点估算原理说明
  Function Point Estimation 功能点估算是一种用来估算项目大小的技术。
  功能点是对软件功能和规模的间接定量测量,它基于客观的外部应用接口和主观的内部应用复杂度以及总体的性能特征。
  功能点法和专家法估算最大的不同点在于对估算规模的细化的定量分析上面.我们在用专家法估算的时候往往会直接去估算工作量,或在规模的估算中掺杂了生产率的数据,导致估算数据出现问题.专家法估算虽然有时候也很准确,但不能提升为组织级可以参考和借鉴的同样规则.其实专家法的估算要做准确也是遵循了功能点法估算的思路,在考虑一个软件功能究竟涉及到哪些操作,涉及到多少数据文件的存在,每个操作需要访问哪些数据文件等相关问题.只是这些想法停留在专家头脑里面而没有量化出来.
  我们的预测,分析和决策能力要提升,就必须对我们的经验进行模型化和定量分析.功能点法正好就起到了这个作用.其实功能点发也有不完善的地方,这可以根据我们项目实际的使用情况去不断的改进。
  功能点发进行估算的时候具体过程是:1.对估算功能单元的类型进行识别 2.计算每种类型的复杂度. 3.计算总体的调整前的功能点数 4.根据调整因子对功能点数进行调整
  功能点估算中有5种信息域需要进行描述:其中事务类的有EI,EO和EQ,数据存储类有ILF和EIF,具体如下: 外部输入(EI):通过界面等的输入,插入更新等操作都是典型外部输入  外部输出(EO):仅仅输出,入导出,报表,打印等输出  外部查询(EQ):先要输入数据,在根据输入数据计算输出,如查询  内部逻辑文件(ILF):可以理解为业务对象,可能对应多个数据表  外部接口文件(EIF):其它应用提供的接口数据
  A.对事务类功能点的估算
  对事务类的功能点估算需要确定DET和FTR两个指标。
  对于DET可以理解为界面的录入具体数据项,按钮也要作为数据项。而对于FTR则是事务功能需要操作的数据文件的数目。
  对EI的复杂度的计算参考下表:
  对EO和EQ复杂度的计算参考下表:
  B.对数据存储类功能点的估算
  对数据存储类功能点的估算需要确定DET和RET两个指标。
  DET代表的是具体数据存储文件的数据项的数目。而RET代表的是数据文件是复合文件时候关联或引用的个数.如订单数据文件由于存在订单头和明细关联引用,RET应该算2。也就是说当数据文件注册的单表越多,那么RET值越高。
  对ILF和EIF复杂度的计算参考下表。
  信息域数据估算完成后可以开始考虑调整因子。
  调整因子是一种补偿机制,即通过五个信息域和复杂度都还没有办法考虑到的因素就应该做为调整因子.如同样一个软件系统一种是系统要支持分布式和自动更新,而另一种是不考虑这种需求,如果不考虑调整因子这两者的规模是一样的,但很明细第一种情况复杂度和规模都会更大些。具体参考下表。
  有了调整因子后最终可以得到调整后的功能点数:
  AFP(调整后功能点)= UFP (未调整功能点数目)* AF (影响因子)
  功能点估算案例说明
  项目我们举一个简单的软件功能模块实现的例子来进行说明。
  需求:实现一个订单的录入,更新,删除和查询功能.订单信息是指一个用户订购的公司产品的情况.其中订单头包含了具体的类型,订购时间,发运地址,客户名称等信息.订单明细包含了订购的具体产品的数量的情况.
  假设用户表和产品数据表已经建立,本次订单功能开发仅仅是引用获取这些数据。同时暂时不考虑在单据保存时候的其它其它特殊业务逻辑和权限。
  功能界面情况如下:
  STEP1:计算出EI,EO和EQ事务功能
  对于订单保存功能,项目自我约定对于组合框DET算2,对于GRID的DET算3.其余界面控件DET都算1,所以可以数出DET数目为15.再来考虑FTR数目,这里需要操作订单数据文件,客户数据文件和产品数据文件FTR数应该算3.
  STEP2:计算出ILF和EIF事务功能
  这里订单文件只算一个DET,但后台数据表会涉及到两个数据表.由于订单头和订单明细有关联关系,所以这里RET取2。
  客户文件和产品文件虽然不是外部系统文件,但本次开发的功能并不需要再去设计该数据文件和数据表,所以这里把其作为EIF来处理.
  STEP3:根据对应表计算各个信息域复杂度的情况.
  最终的估算情况如下:
  最终的未调整的功能点数目为:61
  调整因子在这里不再举例说明了,如项目调整因子为1.08,则最终功能点数为:
  AFP = 61*1.08 = 66.
  还有些没有细化考虑的,如具体的DET数量的计算规则等。
  注意软件功能点估算得出的是最终软件的规模而不是工作量,规模必须和人的生产率结合才能够最终转换为工作量数据。
  比如张三生产率为22功能点/天,那么该功能点工作量就是3人天。而李四开发效率低,仅仅是11个功能点/天,那么工作量就是6人天。CocomoII成本估算模型
  COCOMO的发展历程和很多IT管理相关模型的产生一样有着十分传奇的色彩,和其国的Levi’s品牌牛仔裤一样有着悠久的历史。1981年的一天,师出TRW汤普森·拉莫·伍尔德里奇公司[美]计算机科学部从事软件开发成本估算研究工作的Barry Boehm博士——一个为成全天下软件开发事业而投身到历史的洪流中去,决意用智慧为世界迎来崭新的明天的人。
  功夫不负有心人,在历经日以继夜的无数次失败后,终于在这一天提出的结构性成本估算模型——"构建式成本模型"(COCOMO),它是一种精确、易于使用的成本估算方法,而且是一个和Putnam一样已经得到业界数据的验证的模型。
  时过境迁,在随后的10年岁月里,在美国空军任职的Ray Kile先生,对其进行了修订改良,形成了中级COCOMO增强版,同时也是美军使用的标准版本。Boehm从来没有放弃成为一个伟大软件成本估算模型专家的理想,而一直从事如何有效地将COCOMO有效地运用到软件项目成本估算工具当中,他意识到IT界的发展极为迅速,如果没有发展和创新COCOMO终究有一天将会被社会所淘汰,被世人所遗忘,所以到了1996年,Boehm博士根据软件发展情况,终于发布了改进版,将COCOMO升级为COCOMOII,而COCOMO II是对经典COCOMO模型的彻底更新,反映了现代软件过程与构造方法。
  首先我们应该了解一下COCOMO模型中用到的一些变量,当然还有COCOMOII模型的类型和分类,这是估算软件成本的重要环节:
  COCOMO模型中的变量DSI-------源指令条数。不包括注释。1KDSI = 1000DSI。
  MM-------开发工作量(以人月计) 1MM = 19 人日 = 152 人事 =1/12 人年
  TDEV-----开发进度。(以月计)
  COCOMO模型的类型
  COCOMO模型中,考虑开发环境,软件开发项目的类型可以分为3种:组织型(organic): 相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(<50000行)
  嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。
  半独立型(semidetached):介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。
  COCOMO模型的分类
  COCOMO模型按其详细程度可以分为三级:基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。
  其中基本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。中级COCOMO模型在基本COCOMO模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。
  COCOMOII不仅可以评估开发工作量,而且可以对项目的进度进行具体估计。 COCOMOII拥有规模计算,工作量估算,进度估算等重要能力能很好地帮助我们软件维护和进行软件决策。对我们在对项目的范围,时间,成本等管理是十分有利的条件,使我们拥有更多时间去关心项目的质量和使得人力资源更有效分配和利用起到极其重要的作用。可以从产品大小估计的结果中计算出项目的总体人员工作量和时间表。除了大小输入,另一项关键输入是对团队生产率的评测。该输入值可确定项目的总工作量。总的项目时间表与总工作量之间存在非线性的关系。遗憾的是,这些模型从数学的角度来看非常复杂,但是COCOMOII模型正好给我们的工作简化其中复杂的过程,为我们赢得更多的有效时间。
  PM nominal = Person months effort of the project (人月工作量) A  = Constant representing the nominal productivity (工作量调整因子) B  = accounts for the relative economies/ diseconomies of scale (规模调整因子) Size = Size of the project (规模,千代码行或功能点数目)
  首先这里我们可以看到COCOMO是一个典型的参数估算模型。其中重要的就是两个调整因子和规模的确定上面。
  对于软件项目的规模,最适合的还是采用功能点法进行估算,在估算出功能点后可以根据功能点和代码行的折算关系得到代码行的估算数据。因此我们看到COCOMO本身并不能够解决规模估算的问题,更重要的是根据系统已经有的规模来确定项目的工作量和项目周期。
  B是规模调整因子,也叫做过程调整参数,当B=1时候说明了工作量和规模之间是线性的关系,这个时候就等同到了我们平时通过规模/生产率来确定项目的工作量的情况上面。但根据实践经验,项目工作量并不是完全由简单的个体生产率来确定的,还涉及到开发灵活性,架构风险,团队,过程成熟度等很多的影响因素。因此需要对B进行适当调整,具体的调整规则参考下表:
  B = 1.01 + 0.01 ( PREC + FLEX + RESL + TEAM + PMAT)
  这里一般B一般都是大于1.01的。当B<1的时候,说明项目架构,开发环境,团队都足够健壮和稳定。这个时候项目表现出来了对规模的经济性,当规模成倍增加的时候,工作量反而不要翻倍。当B>1的时候,说明了项目工作量对规模的非经济性。当规模增加的时候可能会导致工作量的成倍增加。
  简单来讲就是规模和工作量直接本身也不是简单的线性关系,当软件项目规模增大的时候一般都带来复杂度的增加,而复杂度往往导致工作量非线性成倍增加。
  对于调整因子A一般都是常量,这个需要总结历史项目的度量数据进行反推来计算。因此说要使用COCOMO成本估算模型,必须积累足够多的历史经验数据。
  在工作量估算出来后,就可以根据工作量来估算项目的进度。个人认为COCOMO最大的贡献在于对项目进度的估算,如果说对工作量估算还存在当B=1的时候工作量和规模会成为线性关系的话,那对于进度估算则基本上不会出现简单的线性关系。基本上都说明了项目的进度不是简单的根据工作量除以资源的投入而得到的。
  TDEV代表项目的进度,其中单位仍然按月计算。
  通过Excel绘制出工作量与进度的关系曲线如下:
  从上图可以看到工作量和进度之间呈现出类似学习曲线的关系,即当工作量成倍增加的时候,进度并没有得到有效提升,当工作量增加的时候进度本身的提升能力相对缓慢。类似在《人月神话》这本书里经常谈到的一句话,即向落后的项目中不断的投入人手,往往导致的是项目进度进一步落后。

黄子韬第33次改微博名,看他改的啥,网友这也太长了吧放眼整个娱乐圈,恐怕找不到比黄子韬更喜欢改微博名的明星了。日前,他第33次将个人的微博名给改了,不过这一次的改名还真是和以前有所不同,这一次黄子韬将自己的微博名改成了ACEYOUN萌探杨紫给宋丹丹写了一封信,看到内容网友明白二人真正关系因主演情景喜剧家有儿女被观众熟知的杨紫,是很多人心目中的童年女神,虽然其后杨紫出演了多部大爆作品,让我们可以看到她在荧幕上的不断尝试和颠覆突破,也可以看到她在表演技法上愈发娴熟,但和不喜欢的人结婚是啥体验?热帖惊醒千万女人爱永远是双向奔赴和不喜欢的人结婚是啥体验01hr有个热搜很有意思和不喜欢的人结婚是啥体验?不到一天时间,阅读量8。1亿,讨论超过7万,可见网友们都很好奇。既然不喜欢,为什么还要和对方结婚呢?仅仅是黑板上的数字有端倪?林生斌事件持续发酵,网友均化身福尔摩斯林生斌反噬事件从曝出到现在,已半月有余,但热度却丝毫未减。相反,随着真相的不断涌现,关注此事件的吃瓜群众也越来越多。就连一些象征权威专业的知名媒体人也加入到了此次浪潮中。当然了,也从某个角度来说,蜀汉亡于关羽之手一蜀汉立国之初,诸葛亮的隆中对就落空了诸葛亮出山之前,曾和刘备有过一番谈话,这番谈话,被后世称之为隆中对。其实隆中对归纳起来,可以理解成诸葛亮设想的蜀汉立国及统一中国计划书诸葛亮认太子称呼这位太监为二哥,但最终这位太监也因为太子吃尽苦头一高力士发迹史高力士原本不姓高,就像明朝大太监头目刘瑾不姓刘一样。高力士是岭南人,大约武后朝时期,还是孩子的高力士,因为岭南地区有谋反的人而受到株连,最终,被变成了太监,然后送到了吴三桂反清复明,到底败在哪里?一削藩有多难?清朝康熙帝在位时期,清朝朝廷有感于吴三桂等三个藩王割据云南广东福建三省,不利于清朝朝廷统驭,于是,康熙帝考虑削藩。其实历史上,削藩这种事儿,难度一直很大,比如说西汉,日暮汉宫传蜡烛,轻烟散入五侯家,诗背后的故事你可知道?一跋扈将军发迹史唐诗里面有这么一句日暮汉宫传蜡烛,轻烟散入五侯家,这首诗是嘲讽中唐时期,宦官把持朝政,天子的威望受到破坏而做的。而这首诗说的典故,发生在汉代,东汉汉桓帝时期。汉桓帝秦朝悲歌楚人因为这件事,注定不能接受暴秦统治一秦朝功过秦始皇统一六国,对于中国来说,是一件好事还是坏事?从当下来说,当然是一件好事,因为秦帝国的统一,给后世造成了很大的文化影响那就是对大一统的认可和信仰,之后历朝历代的分裂割这7种越吃越胖的素菜,比吃肉热量都高,瘦身时期要少吃这7种越吃越胖的素菜,比吃肉热量都高,瘦身时期要少吃!已进入春天,说得最多的话题就是瘦身。经过漫长的冬天,运动量减少,吃得多,体重都在不知不觉中增加了。当脱下棉衣的那一时刻,才知道不可低估的人性之恶林生斌的黑粉,其实也毁了宋祖德网民认为林生斌做错的事情,截至目前为止,大致有四件事第一是认为林生斌谋害亡妻第二是偷税漏税,第三是消费爱心,第四是偷挖化石。其实这四件事,本人认为后三者存在可能性。因为现在淘宝买衣
大鹏新片首映排场超前,黄渤赵又廷助阵,宋佳黑眼圈抢镜贾玲油腻1月27日,大鹏新片吉祥如意在北京首映,众多圈内明星导演,黄渤张译管虎陈思诚等纷纷现身助阵,不仅显出了大鹏的好人缘,更是显出了他这些年在圈内的发展实力。作为赵本山弟子的大鹏,这次新章泽天小年夜忙聚会,众名媛同框就她一个年轻人,穿卡通衣似隔辈年纪轻轻身家超500亿的章泽天,早已有着踏入顶级豪门圈的实力,不过之前的豪门聚会照中,张宇晒出的九宫格照片中却没她的身影,也难怪被调侃是现实版顾佳了。不过2月5日,章泽天华丽丽现身刘涛为老公理发,她打扮休闲素颜仍清秀,老公发福脖子都胖没了2月8日,刘涛晒出一组为老公理发的照片,她素颜出镜,身穿普通的休闲白T恤,头戴鸭舌帽,打扮休闲随性,素颜露面依旧清秀,脸部皮肤依旧紧致。不过老公王珂的变化就有点大了,他身穿咖色的长董璇4岁女儿气场比妈还强!拍大片毫不怯场,穿貂贵气超有范儿董璇女儿厉害了,才4岁但是拍起大片来毫不怯场,气质清冷,眼神格外坚定,最重要的是孩子五官还如此精致强劲,长相随爸也是高颜值的星二代啊。估计董璇也是未来想把她往演艺圈培养的,不过小酒33岁舒畅近照变化大,脸部精致过头尖下巴抢镜,卷发太像娄艺潇近日,舒畅久违露面接受采访,不过她的脸部变化似乎有些大,瘦了不少,脸部更加精致,尖下巴十分抢镜,直发弄成了细碎的卷发,扎起双马尾,气质还有点像娄艺潇。33岁的舒畅,感觉已经没有了以张歆艺终于瘦下来,剪短发比老公还爷们,袁弘穿老头衫好复古张歆艺袁弘夫妇罕见走机场,产后身材一度发福的张歆艺,这次终于瘦下来,脸部褪去了浮肿感,戴口罩依旧可以看到精致的巴掌小脸,更难得的是,张歆艺久违穿起了紧身牛仔裤,腿部曲线也变得纤细不李静17岁女儿晒泳装照,发育成熟微胖体型随妈,五官是李静翻版李静17岁女儿黄沐尔近日晒照,在沙滩旁玩耍的她,打扮清爽,一袭白色小裙子,手臂上的拜拜肉也是十分抢眼,比起同龄人,黄沐尔发育的还是要成熟一些,圆润丰满的体型还真是随了妈妈李静,即使泰王新年祭祀祖先,苏提达穿红旗袍太喜庆,公主留超短发超霸气当地时间2月12日,泰王与王后苏提达泰王长女拉贾萨里尼西里巴伊拉公主RajasariniSiribajra现身泰国曼谷杜西特宫的安福萨坦王座大厅,主持了为已故祖先的精神举行的焚祭仪刘亦菲空降成LV代言人,梳背头化裸妆变飒姐,粗眉生硬溜肩严重作为85后小花,刘亦菲这两年的新作品数量并不多,代言数量也远不如杨幂赵丽颖,不过花木兰一角却给刘亦菲的演艺事业带来了很大的变化,不仅直接走上了国际化路线,代言更是拿到手软。1月28浪姐齐聚,宁静涂绿口红翻车太辣眼,万茜回眸一笑美出新高度近日姐姐的爱乐之城长沙站正式开始录制,各位姐姐齐聚湖南广电,宁静这次又是不走寻常路,涂绿口红,染金发,身穿豹纹,真是再现死亡搭配,未免有些太辣眼,没有了原来的英气,反而有点男人味。毛戈平这次也失手了!赵露思妆后老十岁像大妈,撞脸宋祖儿认不出近日赵露思登上了Elle的杂志,妆容方面就是由国内顶级化妆师毛戈平打造的,不过这次毛老师似乎也失手了,赵露思原本就是圆脸,可爱的元气少女风格,但是妆后瞬间变得圆润富态,眉目之间太像