什么是软件规模估算

一.什么是软件估算

软件估算是软件量化管理的重要部分。随着科技和社会的快速发展,软件应用领域在不断扩大,同时,越来越多的软件功能越来越复杂。如何更好更快开发出更多更复杂的软件是摆在软件从业者面前的重要问题。
软件估算包括:软件规模估算、生产率估算、工作量估算、软件成本估算、开发周期估算、缺陷估算、风险估算、资源估算等。
软件估算一直都是非常复杂的事情。项目变更、开发团队人员变化、需求改变、工作能力大小等都会导致估算结果的差异。据有关统计,延期的软件项目中,约有超过60%的项目是因为软件估算没有做好。不是技术水平达不到要求,而是估算结果与实际情况有重大差异或者没有进行估算导致的。所以说,软件估算是非常重要的,准确的估算结果是软件项目成功的重要保障。

失败的项目最常见的六个原因:

如上图中所示,六个原因中的任何一个都可能导致项目失败,很多时候是多个原因同时出现。做好软件估算可以完善上述原因中的不足部分,解决大多数上述问题。

二.软件估算面临的问题

软件估算虽然非常重要,但在实际中面临一些实施困难,主要表现在如下方面:
1.规模越大的软件,复杂性越高,面临的问题就越多,越难以估算;
2.需求不确定性,导致估算结果容易出现较大偏差;
3.陌生领域的项目,复杂性和认知性差,不确定性增大;
4.估算人员的水平、经验、对估算项目的理解能力等可能会对估算结果产生一定影响;

三.软件规模估算

软件规模估算是软件估算中的首要环节,是其他估算项目的基础。软件规模估算定义了软件的客观大小,而且不因为测量的人员、方式、时间的不同而变化。
对于甲方(发包方)而言,软件规模估算决定了项目的预算、招标金额,为费用申请提供了科学依据。
对于乙方(开发方)来说,软件规模估算可以帮助乙方确定投标金额,还能确定需要投入的资源及开发成本的评估等。
不识别规模的情况下,项目管理的三个重要目标无法提升:效率、质量和成本?

    • 效率 = 总工时/软件规模
    • 质量 = 缺陷加权总数/软件规模
    • 成本 = 单位成本 * 软件规模

合理地对软件项目进行规模估算,能够更加精准确定项目开发所需的资源、费用、周期等。所以说软件规模估算是其他估算内容的重中之重。
软件规模大小决定了软件的成本及开发资源的投入。由于估算活动的不确定性,软件规模是最难确定的因素,虽然不能百分百准确,但从国际到国内,软件规模已经成为衡量软件开发的一个非常重要的指标。
依据合理的方法对软件规模进行估算,相较于拍脑袋、拍大腿等的“六拍法”,可以提供更加科学合理的估算结果。

四.常见的估算方法

1. 经验法(专家法,包括PERT法、DELPHI法)
根据管理人员以往的项目或领域的经验,对未来的工作量进行估计。
2. 类推法
将本项目的部分属性与高度类似的一个或几个完成的项目进行比对,适当调整后获得待估算项目的工作量、工期或成本估算值的方法。
3. 类比法
将项目的部分属性与类似的一组基准数据进行对比,进而获得待评估项目的工作量、工期和成本估算值的方法。基于基准数据通常以50百分位数为参考而非均值。
4. 方程法
根据一个相对稳定的公式对未来的工作量进行估计。基于基准数据建模,可以与行业和企业数据相结合。
5. 交叉验证
估算过程中宜采用不同的方法分别估算,并进行交叉验证。
如果不同方法的估算结果产生较大差异,可采用专家评审的方法确定估算结果,也可以使用简单的加权平均方法。

五.软件规模度量的发展
软饭规模度量的发展经历了长期的过程。
最初,采用物理的度量方法:测量纸带的长度,或者汇总程序的字节数。这种方法在早期阶段,程序功能比较单一、开发语言相对固定的情况下,对软件规模度量提供了一定的参考价值。
后来,发展到了技术度量过程:比如代码行、函数数量、数据库、模块、类的数量等。这些方法是属于特定历史时期的产物,在那段时期,这些方法都对软件规模度量的发展起到了巨大的推动作用。也正是这些方法的出现,体现出了其中的优劣势,使得软件规模度量发展到了“功能”的阶段。
功能的规模体现在:用例数、功能点数、故事点数、页面数、窗口数、按钮数等。这其中,最得到普及应用的是功能点方法。
上纪70年代中期,IBM委派工程师Allan Albrecht和他的同事共同研究软件测量和度量分析方法。经过一年多的研究,Albrecht和他的团队发布了名为“功能点”的度量方法第一版。
后来又出现了如下几种功能点分析方法:
英国软件估算协会(UKSMA)提出的IFPUG功能点法;
UKSMA提出的Mark II FPA功能点法;
荷兰功能点用户协会(NEFPUG)提出的NESMA功能点法;
软件估算共同协会(COSMIC)提出的COSMIC-FFP方法。
功能点分析法(Function Point Analysis,FPA)是一种相对抽象的方法。它将软件功能进行量化,以“功能点”作为量化单位,如同我们日常生活中的“千克”。“功能点”是从用户的视角来衡量的,通过分析软件系统所要实现的功能来计算软件项目的功能点数,达到估算软件项目规模的目的。
功能点方法有如下三个特点:
        1. 从用户视角:从用户视角进行软件规模度量,用户和开发人员都容易理解;
        2. 定义明确:功能点计数法已纳入ISO国际标准和国内标准,不同人员的估算结果误差在10%以内;
        3. 便于计算:无论是在项目早期、中期还是晚期,都可以依据用户需求计算功能点规模。功能点估算适合应用于软件项目的整个生命周期,它最大程度地突破了传统估算方法的局限性,不依赖于外部条件。
功能点规模计数还体现在:一致性、客观性、可重复、可验证、技术无关性等方面。它不直接关注软件项目的开发语言、开发工具和平台技术,而是关注程序的“功能性”和“实用性”。功能点估算拥有诸多优点,且在软件开发初期就能进行,因而在业界广受欢迎并获得越来越广泛的应用。

接下来,我们将会介绍“功能点”方法在软件成本度量领域的应用。欢迎大家继续关注。

本文内容版权所有,如有转载,请注明出处。