论文部分内容阅读
软件成本估算是软件项目计划中至关重要的一个环节。经由估算得出的信息,是指导人力资源的分配,进度节点的设定等计划活动所必需的。过高和过低的估算结果都会对项目计划的执行造成不利的影响,甚至可能导致项目的失败。
在软件工程的领域中,软件成本估算的研究已经进行了多年,其间提出了多种估算方法和模型。以COCOMO为代表的参数化估算模型正在得到越来越广泛的应用和认可。刚刚开始采用参数化估算模型的组织(下文简称为起步组织),没有充足的历史项目数据,训练实例1的选择也就无从谈起。所幸的是,COCOMO、ISBSG、CSBSG等软件联盟已经收集了多个软件组织在多个应用领域中的历史项目数据,放到数据库中。不过,这些数据的取值范围较大,数量较多,难以直接判断它们是否适合于特定的起步组织。
本文提出了一个从多组织的数据库(不包含起步组织的数据)中选择训练实例的方法。它的主要过程受到了QBC2的启发,现简述如下。首先给定起步组织采用的参数化估算模型(下文简称为目标模型),把少量的种子实例作为初始的训练实例集合(下文简称为训练组)。然后一步一个地从备选的实例数据库中挑选实例,把它们加入到训练组中。当训练组达到预定大小时,就用它来进行训练,得到一个组织特有的目标模型。在每一步中,每一个备选实例会被加入到训练组的副本中,形成临时训练组,由此计算出这个实例的校准适合度,然后抛弃临时训练组。遍历所有的备选实例后,适合度最高的就被加入到训练组中,并从备选的实例数据库中删除。种子实例集合主要用来定义怎样的备选实例是适合这个组织的。
校准适合度是下面三个指标的加权和。第一个是参数范围指标。用当前迭代之前的各步的临时训练组,训练出一组目标模型,它们的可变参数3的变动范围就是它的值;它的权值是负数;它的作用是维护训练组跟种子实例的一致性。第二个是数据范围指标。它的值是临时训练组的实例在所有数据维度上的变动范围;它的权值是正数;它的作用是限制训练实例之间过度相似。第三个是预测差异指标。根据临时训练组,训练出一个目标模型,再训练出一个或者多个其他类型的估算模型,它们在训练组上的预测值的差别就是它的值;它的权值是负数;它的作用是限制训练实例过度拟合于目标模型。
案例研究说明,在起步组织需要选择训练实例以便校准模型时,本文提出的方法能够根据给定的种子实例集合,从多组织的数据库中选择适合本组织的训练组,由此得出的目标模型可以达到足够的估算精度。而且,相比于其它的选择训练实例的方法,比如相似优先的选择和随机的选择,本文提出的方法更好的利用了组织之间的差别,得出的目标模型在组织内部具有更好的估算精度。