软件项目规模估计方法介绍
软件项目规模估计方法介绍软件项目规模估计方法介绍 软件项目的规模估算历来是比较复杂的事,因为软件本身的复杂性、历史 经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的规模估算往往 和实际情况相差甚远。因此,估算错误已被列入软件项目失败的四大原因之 一。 软件工程师经常会被问到,编一个什么什么样的软件需要多长时间、多少 钱。面对这个问题,有不少人很犯难,因为,用户的需求太不具体,第二,自 己缺乏一个科学的估计方法。这里向大家介绍几种软件项目规模的估计方法。 概念介绍 先介绍一个衡量软件项目规模常用的概念――LOC(LineofCode),LOC 指 所有的可执行的源代码行数,包括可交付的工作控制语言(JCL: JobControlLanguage)语句、数据定义、数据类型声明、等价声明、输入/输出格 式声明等。一代码行(1LOC)的价值和人月均代码行数可以体现一个软件生产 组织的生产能力。组织可以根据对历史项目的审计来核算组织的单行代码价 值。 例如,某软件公司统计发现该公司每一万行C 语言源代码形成的源文件 (。c 和。h 文件)约为 250K.某项目的源文件大小为 3.75M,则可估计该项目 源代码大约为 15 万行,该项目累计投入工作量为 240 人月,每人月费用为 10000 元(包括人均工资、福利、办公费用公滩等),则该项目中1LOC 的价值 为: (240×10000)/150000=16 元/LOC 改项目的人月均代码行数为: 150000/240=625LOC/人月 方法一、Delphi 法 Delphi 法是流行的专家评估技术,在没有历史数据的情况下,这种方式适 用于评定过去与将来,新技术与特定程序之间的差别,但专家“专“的程度及对项 目的理解程度是工作中的难点,尽管 Delphi 技术可以减轻这种偏差,专家评估 技术在评定一个新软件实际成本时通常用得不多,但是,这种方式对决定其它 模型的输入时特别有用。Delphi 法鼓励参加者就问题相互讨论。这个技术,要 求有多种软件相关经验人的参与,互相说服对方。 Delphi 法的步骤是: 1、协调人向各专家提供项目规格和估计表格;2、协调人召集小组会各专 家讨论与规模相关的因素;3、各专家匿名填写迭代表格;4、协调人整理出一 个估计总结,以迭代表的形式返回专家;5、协调人召集小组会,讨论较大的估 计差异;6、专家复查估计总结并在迭代表上提交另一个匿名估计;7、重复 4- 6,直到达到一个和估计的一致。 方法二、类比法 类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项 目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的度取决于 历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建 立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。 其基本步骤是: 1、整理出项目功能列表和实现每个功能的代码行;2、标识出每个功能列 表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方;3、通 过步骤 1 和 2 得出各个功能的估计值;4、产生规模估计。 软件项目中用类比法,往往还要解决可重用代码的估算问题。估计可重用 代码量的办法就是由程序员或系统分析员详细地考查已存在的代码,估算出新 项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分 比以及需重新测试的代码百分比。根据这三个百分比,可用下面的计算公式计 算等价新代码行: 等价代码行=[(重新设计%+重新编码%+重新测试%)/3]×已有代码行 比如:有 10,000 行代码,假定 30%需要重新设计,50%需要重新编码, 70%需要重新测试,那么其等价的代码行可以计算为: [(30%+50%+70%)/3]×10,000=5,000 等价代码行。 意即:重用这 10000 代码相当于编写 5000 代码行的工作量。 方法三、功能点估计法 功能点测量是在需求分析阶段基于系统功能的一种规模估计方法。通过研 究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通 常的步骤是: 1、计算输入,输出,查询,主控文件,和接口需求的数目。 2、将这些数据进行加权乘。下表为一个典型的权值表。 功能类型权值输入 4 输出 5 查询 4 主控文件 10 接口 10 3、估计者根据对复杂度的判断,总数可以用+25%、0、或-25%调整。 据发现,对一个软件产品的开发,功能点对项目早期的规模估计很有帮 助。然而,在了解产品越多后,功能点可以转换为软件规模测量更常用的LOC. 方法四、PERT 估计法 PERT 对各个项目活动的完成时间按三种不同情况估计:一个产品的期望规 模,一个可能估计,一个可能估计。用这三个估计用来得到一个产品期望规模 和标准偏差的 Pert 统计估计。Pert 估计可得到代码行的期望值 E,和标准偏差 SD. 详细的估计方法,读者可参考所写的《应用PERT 进行项目工期估计》一 文,这里不再赘述。