怎样估算软件项⽬周期-代码⾏估算法
项⽬是指以⼀定的成本在⼀定时间内取得预期收益的系列活动。项⽬的“⽣命期”是管理项⽬的重要指标,⽽对项⽬周期的估算则是管理项⽬的重要⼀环。本期“项⽬管理”介绍对软件项⽬周期进⾏估算的技巧。
估算是软件开发中很重要的⼀个环节:项⽬周期估算过短会造成⼈⼒低估、成本预算低估、⽇程安排过短,最终⼈⼒资源耗尽,成本超出预算,为完成项⽬不得不赶⼯,影响项⽬质量,甚⾄导致项⽬失败;项⽬周期估计过长表⾯看来影响不⼤,但是实际上也会带来成本估计过⾼、充分效率低下的后果。周期估算如同盖楼房中打地基,是后续⼯作的基础,它的影响会贯穿整个项⽬。
但软件开发是⼀项⾮常复杂的⼯程,不仅包含需求分析、设计、编码、测试、实施、维护等不同的⼦过程,还涉及到开发⼯具、开发⼈员、项⽬管理、风险等众多因素,不同因素对估算产⽣的影响不尽相同。在进⾏软件估算时(包括利⽤⼯具辅助估算)必须考虑到这些⽅⾯,否则估算结果就会和实际结果有很⼤的偏差。下⾯,我们对⼏个常见的因素做⼀些探讨。
软件规模是项⽬估算的基础
软件规模通常指的是软件的⼤⼩,可以通过程序代码⾏的长度、功能函数的数量、数据库中表的数量、
数据库的⼤⼩等要素来描述软件规模。⼀般⽽⾔,软件规模越⼤,所花费的开发周期就越长。但这并不是⼀个简单的线性函数关系,也要考虑代码重⽤问题。⽐如⼀个模块代码很长,但是可能包含了很多公⽤函数,那么在估算时就应适当减少代码⾏数量。
注册个人独资企业 软件项⽬中包含的功能模块越多、越复杂(或者说软件越⼤),开发周期越长。这个时间绝不是模块开发时间的简单叠加,因为模块功能数量的增加直接带来了软件模块间相互关联度、复杂度的成倍增加,这导致了在需求、设计等阶段需要花费更多的时间,⽐单独考虑⼀个模块复杂得多。另⼀⽅⾯,对于产品化程度⾼的项⽬开发,随着模块数量增加,开发周期的增加却不是特别明显。这是因为相当数量的模块可以完全重⽤,实际开发量⼤⼤减少。
所以,在实际进⾏软件开发周期估算的时候,软件规模肯定是⾸先考虑的因素。具体估算时,在考虑软件规模时要去除可重⽤的部分。另外,软件功能之间的关联所造成的复杂性也必须⾜够重视。
风险影响周期
搜狐视频怎么下载 任何⼀个项⽬都或多或少存在风险,软件项⽬开发过程中也避免不了这种情况⽽且有⾃⼰的特点。最常见的风险来⾃于:技术、客户、项⽬⼈员等⽅⾯。开发周期估算时项⽬风险应该适当考虑,尤其是技术风险和客户风险——
技术风险技术风险主要来⾃于软件本⾝的技术难度。对于⼀套成熟的产品,定制开发的技术风险相对⾮常⼩,因为重要的技术已经成型,客户也很少有新的、能带来⾼难度技术问题的需求,这种风险较⼩。但是对于完全重新开发的项⽬,或是研发类的项⽬,技术风险必须特别重视。以开发平台为例,开发平台必须适合本项⽬所涉及的软件开发、满⾜最终的需求,平台的错误选择将导致庞⼤的开发⼯作量,即便满⾜了⽤户需求也可能造成系统效率低下、扩展性差的致命问题,软件可能会很快被淘汰。郴州区号
在实际估算中,建议将技术难度分为⼗级,每⼀级在初次估算的代码⾏上增加10%,
最终估算代码长度=初始估算代码长度×(1+0.1×n)
悲伤昵称 假设模块A的初次估计代码⾏为15000⾏,但考虑技术难度⾼的风险,设定技术难度级别为⼆级,最终代码⾏的估算数量为
15000×(1+20%)=18000。
由于技术风险的分析是⼀项技术性很强的⼯作,要求做技术风险分析的⼈必须是技术专家,在相关技术领域有着丰富的经验。对重⼤技术风险的分析结果必须要经过评审,保证准确性。
客户风险客户风险存在于客户化项⽬中,客户⾏业特点不尽相同,技术、理解⽔平也相差甚远。在我
经历开发的项⽬中,80%的项⽬延期是由于客户⽅的原因,⽽且这种风险可控性很低,对项⽬影响超过技术风险。
在开发周期估算前,项⽬经理要仔细分析客户的具体状况,包括客户⽅的计算机⽔平、管理⽔平、可沟通程度,在此基础上结合以往的经验综合判断是否会对开发带来明显的影响,可以按照上述的技术风险的⽅式将客户分级,最终确定开发周期。在这个过程中,项⽬经理的经验极其重要,对客户的分析基本上要依赖经验做判断,要求管理⼈员有⼤量的客户经验和⾏业分析能⼒。
项⽬团队影响速度
对于软件开发项⽬来说,⼈⼒资源是核⼼⼒量。⼈⼒资源对估算的影响表现在技术⽔平、理解能⼒、沟通能⼒等⼏个⽅⾯。项⽬技术⼈员编程⽔平、⼯作效率、团队适应性、沟通能⼒等素质,都会对开发进度产⽣影响,其中技术⽔平是最关键的因素。评价程序员的技术⽔平可以从编程熟练程度、编程速度、解决技术问题的能⼒等⼏个因素考虑:编程熟练程度指的是程序员使⽤编程⼯具实现软件的功能的熟悉程度;编程速度指的是完成某个功能的速度;解决技术问题的能⼒可以反映程序员的技术功底—如果以100%作为总和,这三个因素分别占的合适⽐例为70%、15%和15%。
软件开发周期估算前,应对开发⼈员定级,建议按新⼿、初级程序员、中级程序员、⾼级程序员来划分,每⼀级⼈员再评定上述三个因素。初次估算时可以假定开发⼈员为中级程序员,然后依据项⽬组
实际⼈员的⽔平做修正,这样结果的准确度能⼤⼤提⾼。
宝贵的经验
依据历史数据估算软件开发周期是⼀种⽐较常见的⽅法,这种⽅法以历史软件开发周期为依据,在估算时把当前软件项⽬的情况与历史数据加以对⽐,从⽽得出最终结果。
按照历史数据估算开发周期的准确度还是相当⾼的,但这种⽅法只适⽤于对某类软件的开发,⽐如某个⾏业业务系统的开发。当要估算的软件与历史软件相差太多,⽐如开发⼯具完全不同、或者项⽬类型完全不同,就不能再依赖这种⽅法,最起码应该辅助使⽤其它估算法。如果没有历史数据或是开发⼀种新领域软件,可以使⽤代码⾏或功能点估算法,在此基础上再通过其它⽅法校正。
在实际使⽤历史数据估算法时,建议项⽬经理建⽴⼀个历史项⽬数据库。在库中包含以前所有项⽬的开发周期、项⽬规模、开发⼈员状况、客户状况等详细数据。当估算时根据当前项⽬的状况在库中寻最类似的历史项⽬,然后再⽐较两个项⽬之间在项⽬规模、项⽬风险、⼈⼒资源之间的区别,我们假定历史项⽬开发周期为A,当前项⽬的周期可以依据下列公式得出:
估算项⽬周期 = A×(2×S+R+P+2×C)/6
S:代表软件规模 R:代表风险 P:代表⼈⼒资源 C:代表客户
(以上值均指当前项⽬与历史项⽬的⽐率)
实际的⽐较因素应该不⽌这些,但软件规模、风险、⼈⼒资源及客户状况是其中最重要的,对软件开发的影响也最⼤,所以这个公式中只考虑了这些因素。其中软件规模和客户两项占的权重最⼤,这也是根据项⽬管理经验得出的,在实际使⽤历史数据估算法时还可以灵活加⼊其它因素
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论