论文部分内容阅读
随着软件开发技术的发展,软件复用技术逐步成为提高软件开发质量和效率的非常重要的方法。同时,开源运动的蓬勃发展使得开源软件数量呈爆炸式增长,为软件复用带来了丰富的资源,但如何有效地组织开源软件并实现软件的准确、高效定位成为一个难题。层次化分类对于解决海量资源的管理和定位问题具有很好的效果。但作为层次化分类的重要元素,已有的分类层次已经难以适应开源的发展。目前分类层次构建工作已经分别从人工和自动化两个方向展开,前者分类层次质量高、代价大,后者构建速度快、代价小、质量低,当前实际场景中以人工分类层次为主。然而当前已有的人工构建的分类层次已经难以适应开源软件增长速度。本文围绕开源软件标签层次构建和基于领域知识的分类层次优化这两个问题展开研究。一些开源社区采用标签机制实现对软件资源你的管理和检索,但限制于标签的扁平化结构,标签中隐含的信息难以展现。标签间的同现关系蕴含着丰富的标签关系信息以及标签重要性信息,对于构建标签层次具有非常重要的利用价值。本文从标签同现关系入手,构造标签同现网络,据此网络度量最重要的标签的广义度与重要性,从而构建出开源软件标签层次。我们采用Openhub中的近19万个项目的近2万个标签进行实验,构造出了高质量的DAG形式的标签层次,与已有工作相比,提高了自动化构建分类层次的质量,为软件分类工作提供了良好的基础。人工构建的分类层次已经在一些社区中广泛使用,帮助缓解软件管理和定位危机。但是由于人工构建方式代价大、起点高、难以重构等特点,已经难以适应开源软件发展速度。由此而产生的自动化分类层次构建方法已经取得了一些研究成果,然而由于数据的噪声以及自动化方式本身难以理解概念等缺点,构建出的分类层次差强人意。两种构建方法分别具有各自的优缺点,并且它们可以形成优点互补。因此,本文基于人工构建的领域知识入手,研究融合两种方式的方法,进而利用领域知识实现对自动化构建的分类层次进行优化,以较高地效率进一步提高分类层次质量,推进自动化构建分类层次的应用工作。我们采用已有的Sourceforge中的分类层次,对上一步构建的标签层次进行优化,证明此优化方法的有效性,为软件分类工作奠定了更好的基础,进而为更高效的软件复用提供便利。