在软件计划阶段进行估算,可以采用以下方法:
确定软件范围
明确软件的数据和控制、功能、性能、约束、接口以及可靠性。这项工作和需求分析类似,如果已有需求分析规约,可以直接使用《需求分析说明书》中的内容。
类别估算、参数估算、专家法或三点法估算、功能点估算
根据项目的历史数据积累情况选择合适的估算方法。在没有充分历史数据的情况下,建议采用专家法通过类别方式进行估算;有了足够的历史数据后,可以过渡到功能点估算和专家估算。
功能点估算
功能点估算是将软件规模量化的一种方法,适合在项目初期阶段使用。通过估算功能点或用例点,可以得到需求的规模,并进一步得到设计、编码等阶段的工作量估算数据。
代码行估算
代码行估算是通过估算软件的代码行数来进行项目规模和工作量的估算。这种方法适合在项目有一定开发基础后进行更精确的估算。
Delphi法
在没有足够历史数据的情况下,可以使用Delphi法通过组织相关人员参照定义的标准进行系统分解,以确认系统的程序单元及其复杂度,从而进行工作量或规模的估算。
类比法
类比法是通过比较类似项目的实际数据来估算新项目的规模和工作量。这种方法要求有类似项目的详细数据作为参考。
专家法
专家法依靠一个或多个专家对项目做出估计,要求专家具有专门知识和丰富的经验。这种方法是一种近似的猜测,但可以在缺乏数据的情况下提供有价值的参考。
自顶向下、自底向上和差别估算法
自顶向下方法从整个项目的总开发时间和总工作量出发,按阶段、步骤和工作单元进行分配。自底向上方法则是分别估算各个工作单元所需的开发时间,然后汇总得出总的工作量和开发时间。差别估算法通过与类似项目的比较,估算新项目的总成本。
考虑项目生命周期和生产率
选择合适的软件项目生命周期模型,并考虑软件技术难度系数,可以更准确地估算不同阶段的工作量分布。
复用率系数
在估算过程中,考虑历史代码的复用率,可以有效节约项目资源投入。
结合以上方法,软件计划阶段的估算应该是一个综合多种因素的过程,既要考虑项目的具体需求,也要参考历史数据和专家经验,以提高估算的准确性和可靠性。