p; 人力资源对估算的影响表现在技术水平、理解能力、沟通能力等几个方面,编程水平的高低、速度的快慢、能否适应团队、能否与各成员保持良好的沟通都会对开发进度产生影响,其中技术水平是最关键的因素。评价程序员的技术水平可以从编程熟练程度、编程速度、解决技术问题的能力几个因素考虑,编程熟练程度指的是程序员能否很顺畅的使用编程工具实现软件的功能,编程速度指的是完成某个功能的时间,解决技术问题的能力可以反映程序员在遇到技术难点时表现出的技术功底,如果以100%作为总和,这三个因素分别占70%、15%和15%这样的比例。
软件开发周期估算前,应对开发人员定级,建议按新手、初级程序员、中级程序员、高级程序员来划分,每一级人员再评定上述三个因素,初次估算时可以假定开发人员为中级程序员,然后依据项目组实际人员的水平做修正,这样结果的精确度能大大提高。
2.3估算与项目风险
任何一个项目都或多或少存在风险,软件项目开发过程中也避免不了这种情况而且有这类项目自己的特点,最常见的风险有以下几种:技术风险,项目技术难度很大,花费的时间超过原先的估计;客户风险,客户需求不定,增加需求,组织协调不畅;人员风险,开发人员突然更换、离职;管理风险,项目经理管理不善、决策失误。对于风险控制,在项目管理中通常是提前做风险分析和预测,制定风险应对措施,这样在风险真的来临时不至于措手不及,提高整个项目的可控性。
软件项目的潜在风险对于开发周期的影响在很多情况下是非常大的,当然好的项目控制会最大限度的减少这种影响,绝对避免是不可能的,所以在开发周期估算时项目风险应该适当考虑,尤其是技术风险和客户风险。
技术风险主要来自于软件本身的技术难度,如果对于一套成熟的产品,定制开发的技术风险相对非常小,因为重要的技术已经成型,客户也很少有新的能带来高难度技术问题的需求,这种风险可以不予考虑。但是对于完全重新开发的项目,或是研发类的项目,技术风险必须特别重视,其中应该考虑的细节主要包括下面几个。
开发平台,是否能适合本项目所涉及的软件开发、能否满足最终的需求,平台的错误选择将导致庞大的开发工作量,即便满足了用户需求也可能造成系统效率低下,扩展性差的致命问题,软件可能会很快被淘汰。功能实现难度,在切实了解需求的基础上要仔细分析采用的开发工具能否实现其中的难点,是否会耗费大量时间。
在实际估算中,建议技术难度分为十级,每一级在初次估算的代码行上增加10%,最终估算代码长度=初始估算代码长度×(1+0.1×n)。假设模块A的初次估计代码行为15000行,但考虑技术难度高的风险,设定技术难度级别为二级,最终代码行的估算数量为15000X(1+20%)=18000。
由于技术风险的分析是一项技术性很强的工作,要求做技术风险分析的人必须是技术专家,在相关技术领域有着丰富的经验,对重大技术风险的分析结果必须要经过评审,保证准确性。
客户风险存在于客户化项目中,不同行业的客户特点不尽相同,技术、理解水平也相差甚远,在我经历开发的项目中,80%的项目延期属于客户方的原因,而且这种风险可控性很低,对项目影响超过技术风险。在开发周期估算前,项目经理要仔细分析客户的具体状况,包括客户的计算机水平、管理水平、可沟通程度,在此基础上结合以往的经验综合判断是否会对开发带来明显的影响,可以按照上述的技术风险的方式将客户分级,最终确定开发周期。在这个过程中,项目