论文部分内容阅读
近年来,随着计算机技术和软件工程的高速发展,越来越多的软件项目涌现出来。但是没有延期和失败的项目却只占到了其中的三成。而其中最重要的原因之一就是人们对软件工作量估算失误。软件工作量估算分为早期估算和中期估算。其中早期估算由于需求、设计等都不太明确,难度更大,对于整个软件项目的影响也更重要。为了提高早期软件工作量估算的准确度和便捷性,本文研究提出了基于需求文档语义分析的估算方法。该方法对软件需求文档进行块级和词级语义分析,从中提取能够表示需求复杂度的全局特征和局部特征,然后使用历史数据基于回归算法训练出软件规模估算模型,进行新项目的规模估算,最后使用回归算法训练出工作量估算模型,进行工作量估算。针对工作量估算中历史数据匮乏问题,本文复用跨组织数据进行模型训练,对跨组织异构数据进行正则化、统一度量表示、典型关联分析和限制玻尔兹曼机的预处理。本文的主要贡献和创新点包括:1)研究提出通用的早期软件规模估算框架。该框架整合了自然语言处理技术和机器学习技术,达到了较高的估算准确度,而且该框架可以适用于不同种类的自然语言编写的软件需求文档。2)研究提出两级的需求文档语义分析的方法。该方法用于从需求文档中抽取复杂性特征。第一级是块级,由基于自动实体抽取的方法完成,该方法为每一条需求分配一个语义标签。第二级是词级,通过本文提出的基于传播的方法实现,该方法考虑了需求中的词之间的同义和上下位的关系。3)研究提出迭代开发项目规模估算的优化方法。本文研究发现,在迭代开发中,前几个迭代的历史数据和其他项目的历史数据相比,对于当前迭代估算的影响是不一样的。本文通过迁移学习的方法,合并了前几个迭代的数据和其他项目的数据来预测该迭代的软件规模,提高了估算的准确度。4)研究提出处理早期软件工作量估算中跨组织异构数据的方法。该方法使用典型关联分析(CCA)和限制玻尔兹曼机(RBM)两种方法对跨组织异构数据进行预处理,提高了跨组织早期软件工作量估算的准确度;并且将两种方法混合,进一步提高早期软件工作量估算的准确度。最后,为了验证两级的需求文档语义分析和跨组织早期软件工作量估算方法的有效性,本文采用5家商业公司的39个工业项目和PROMISE数据仓库的5个常用数据集进行了一系列对比实验。实验结果表明,块级语义分析方法与Roth等人的方法相比,虽然只略微的提高准确度、召回率以及F值,但是方法相对简单许多;在规模估算中,本文方法与Hussain’s等人方法相比,能获得更高的准确度,MMRE降低了 0.10,方差降低了 0.15,PRED(25)提高了 0.05;跨组织异构数据处理方法与KNN方法相比,能获得更高的准确度,MMRE降低了 0.5,PRED(25)提高了 0.12,MdMRE降低了 0.12。