为了估算软件项目的工作量和完成期限,首先需要估算软件规模。目前已经形成了一些比较系统化和理论化的软件规模估算方法,其中包括:Delphi估算法,这是由几位项目领域的专家按照历史资料、经验和直觉得出意见并进行处理,以达成共识的一种方法;类比估算法,这是一种通过新项目与历史项目的比较得到规模估计的方法;代码行估算法(Lineof Code,LOC),这是一种比较有代表性的软件规模估算方法,是通过对源程序中的文本进行计数以得到软件项目规模的方法;计划评审技术估算法(Program Evaluation an ReviewTechnique,PERT),可以估计整个项目在某个时间内完成的概率;功能点分析估算法(Function Point Analysis,FPA),由美国 IBM 公司的 Allan J Albrecht 在 20 纪 70 年代提出,也是目前较为流行的,可以根据软件项目的特点选择适用的软件规模度量方法。
1.Delphi 估算法
Delphi估算法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来、新技术与特定程序之间的差别,对项目的理解程度成为该方法中的重点和难点。尽管Delphi技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时通常用得不多,但是这种方式对决定其他模型的输人时特别有用。Delphi估算法鼓励参加者就问题相互讨论,要求有多种软件相关经验人的参与,互相说服对方。
Delphi估算法的步骤是:
(1)协调人向各专家提供项目规格和估计表格。
(2)协调人召集小组会,各专家讨论与规模相关的因素。
(3)各专家匿名填写迭代表格。
(4)协调人整理出一个估计总结,以迭代表的形式返回给专家。
(5)协调人召集小组会,讨论较大的估计差异。
(6)专家复查估计总结并在迭代表上提交另一个匿名估计。
(7)重复步骤(4)~步骤(6),直到最低和最高估计相一致。
采用Delphi技术,专家们不通过小组讨论,无法获得足够的交互信息,这不利于根据他人的估算值调整自己的估算值。鉴于此,将小组会议和Delphi技术结合起来,提出了Wideband Delphi 技术。利用 Wideband Delphi 技术的步骤如下:
(1)给每位专家发放软件规格说明书和估计表格。
(2)专家开会讨论软件产品和任何与估算相关的问题。
(3)专家以不记名的方式填写估计表格。
(4)协调员汇总结果,并将结果以迭代表形式返回给各个专家。
(5)专家召开小组会讨论上次估计结果,自愿修改个人估计。
(6)如此反复进行,直到各个专家的估计逐渐接近,达到一个可以接受的范围。其估算过程如图所示。