当前位置: 首页 > 专利查询>复旦大学专利>正文

面向软件系统的软件项目及第三方库知识图谱构造方法技术方案

技术编号:24410098 阅读:16 留言:0更新日期:2020-06-06 08:48
本发明专利技术属于软件工程技术领域,具体为面向软件生态系统的软件项目及第三方库知识图谱构造方法。本发明专利技术包括:通过爬取和解析软件项目的基本信息和版本发布通知获取软件项目和软件项目发布版本的基本知识;通过代码克隆检测分析获取不同软件项目的发布版本之间的代码克隆知识;通过爬取和解析软件项目的缺陷追踪系统获取软件项目发布版本中的缺陷与缺陷修复知识,并分析缺陷与第三方库API以及代码克隆的链接知识。本发明专利技术所构造的软件项目知识图谱包括软件项目、软件项目发布版本、缺陷与代码克隆之间的关系等;本发明专利技术所构造的面向软件生态系统的软件项目及第三方库知识图谱能够支持软件项目成熟度评估、第三方库更新推荐、冲突检测等智能化应用。

Software project oriented software system and knowledge map construction method of third-party database

【技术实现步骤摘要】
面向软件系统的软件项目及第三方库知识图谱构造方法
本专利技术属于软件工程
,具体涉及一种面向软件生态系统的软件项目及第三方库知识图谱构造方法。
技术介绍
开源社区以及企业内部众多的软件系统分属相关的业务领域或分类中,相互竞争、相互依赖,同时存在大量重复代码和相似功能,构成了复杂的软件生态系统。从这种软件生态系统中选择合适的项目以代码或第三方库等方式进行复用是提高软件开发效率和软件产品质量的一种重要手段。开发人员在决定是否要复用一个软件项目时,不仅需要考虑一个软件项目的多维度知识(例如,软件项目的业务分类、功能特性、许可证、缺陷等),而且需要考虑类似软件项目之间的关系(例如,软件项目之间的功能特性差异、派生关系、代码克隆等)。此外,在开发人员已经复用了一个软件项目之后(例如,通过第三方库依赖的方式、或者通过二次开发的方式),需要根据该软件项目的版本演化进行产品代码的协同演化。由此可见,面向软件生态系统的软件项目的复用决策和复用演化都需要大量的软件项目知识。然而,这些知识往往是多源异构的,导致开发人员难以全面地、有效地获得复用决策和复用演化的知识支持。知识图谱将现实世界中的实体、以及实体之间的关联以图的形式进行表示,其中节点表示实体,而边表示实体之间的关联关系。知识图谱为知识的表示与理解提供了基础,从而支持上层的智能化应用。目前,知识图谱已经在搜索、金融、电商、医疗、安全等领域得到了广泛应用,例如,谷歌利用知识图谱提高搜索引擎的效果。
技术实现思路
本专利技术的目的在于提供一种面向软件生态系统的软件项目及第三方库知识图谱构造方法,从而自动构建一个支持软件项目成熟度评估、自动分类与自动推荐、以及第三方库更新推荐、缺陷预警与冲突检测等智能化应用的软件项目及第三方库知识图谱。本专利技术提供的面向软件生态系统的软件项目及第三方库知识图谱构造方法,包括,通过爬取和解析软件项目的基本信息和版本发布通知获取软件项目和软件项目发布版本的基本知识;在软件项目是第三方库的情况下,通过静态分析第三方库发布版本的源代码或者二进制包获取第三方库发布版本的API知识、API演化知识、以及API调用知识;在软件项目是非第三方库的情况下,通过静态分析软件项目发布版本的源代码或者二进制包获取软件项目发布版本调用第三方库API的知识;通过代码克隆检测分析获取不同软件项目的发布版本之间的代码克隆知识;通过爬取和解析软件项目的缺陷追踪系统获取软件项目发布版本中的缺陷与缺陷修复知识,并分析缺陷与第三方库API以及代码克隆的链接知识。具体步骤如下。(1)软件项目基本知识抽取软件项目的基本知识包括编程语言、业务分类、标签、以及软件项目之间的派生关系。通过爬虫爬取项目托管网站或者第三方库仓库网站上的所有软件项目;针对每一个软件项目,通过网页包装器解析结构化的项目托管网站或者第三方库仓库网站页面,从中抽取软件项目的编程语言、标签、以及软件项目之间的派生关系,并通过主题模型从软件项目的基本描述中提取业务分类。(2)软件项目发布版本基本知识抽取软件项目发布版本的基本知识包括新增功能特性、许可证、仓库来源、开发人员、以及发布版本之间的前后版本关系与第三方库依赖关系。其中,仓库来源只适用于软件项目是第三方库的情况,开发人员通过仓库来源下载和使用第三方库发布版本。这一步通过分析软件项目版本发布通知、代码提交历史、第三方库仓库网站页面、以及第三方库依赖声明文件获得软件项目发布版本的基本知识;具体包括以下步骤:1)遍历软件项目的所有发布版本,建立发布版本之间的前后版本关系;通过关键词匹配找到软件项目版本发布通知中的新增功能特性描述,并通过主题模型,提取软件项目发布版本中的新增功能特性;2)遍历软件项目的所有发布版本,根据发布时间确定在软件项目发布版本发布之前、在上一个软件项目发布版本发布之后的代码提交历史片段,并分析其中的每一次代码提交的开发人员以及是否修改了许可证声明,从而确定软件项目发布版本的开发人员与许可证信息;此外,融合现有的许可证之间的冲突关系;3)如果软件项目是第三方库,遍历第三方库仓库网站的所有第三方库发布版本,通过网页包装器解析结构化的第三方库仓库网站页面,抽取第三方库发布版本的仓库来源信息;4)分析软件项目发布版本中的第三方库依赖声明文件,抽取软件项目发布版本所依赖的第三方库发布版本。(3)第三方库API知识抽取软件项目往往调用了第三方库API;而第三方库API随着第三方库发布版本而发生演化。这一步通过静态分析第三方库发布版本与软件项目发布版本的源代码或者二进制包获取第三方库API相关的知识;具体包括以下步骤:1)在软件项目是第三方库的情况下,通过静态分析方法分析第三方库发布版本的源代码或者二进制包,获取第三方库发布版本中所提供的第三方库API知识;2)在软件项目是第三方库的情况下,通过代码差异分析方法分析相邻两个第三方库发布版本的第三方库API,确定第三方库发布版本中初次引入与弃用的第三方库API、取代弃用第三方库API的第三方库API、以及发生变化的第三方库API的前后版本关系,这些知识刻画了第三方库API的演化知识;3)在软件项目是第三方库的情况下,通过程序调用图分析方法建立第三方库发布版本中第三方库API的调用图,抽取第三方库API之间的调用知识;4)在软件项目不是第三方库的情况下,通过静态分析软件项目发布版本的源代码或者二进制包获取软件项目发布版本调用第三方库API的知识。(4)软件项目发布版本代码克隆知识抽取软件项目之间可能存在代码克隆的关系;通过代码克隆检测分析方法获取不同软件项目的发布版本之间的代码克隆知识、以及同一软件项目的不同发布版本之间的代码克隆演化关系。(5)软件项目发布版本缺陷知识抽取软件项目发布版本会修复缺陷,同时也会引入新的缺陷。这一步通过分析软件项目缺陷追踪系统中的缺陷获取软件项目发布版本中的缺陷与缺陷修复知识,并分析缺陷与第三方库API以及代码克隆的链接知识,具体包括以下步骤:1)通过爬取和解析软件项目缺陷追踪系统中缺陷的结构化数据,获取每个缺陷所影响的软件项目发布版本;2)在软件项目是第三方库的情况下,遍历软件项目的代码提交历史,找到包含缺陷的ID标识符以及“fix”关键字的代码提交,分析这次代码提交中的发生变化的第三方库API,建立缺陷影响第三方库API的关系;3)遍历软件项目的代码提交历史,找到包含缺陷的ID标识符以及“fix”关键字的代码提交,分析这次代码提交中的发生变化的代码片段,并基于步骤(4)中的代码克隆知识建立代码克隆包含缺陷的关系。本专利技术所构建的面向软件生态系统的软件项目及第三方库知识图谱,其高层结构如图1所示,包括软件项目、编程语言、业务分类、标签、软件项目发布版本、仓库来源、功能特性、许可证、开发人员、第三方库API、缺陷与代码克隆以及这些实体之间的关系。本专利技术基于软件项目托管网站、第三方库仓库网站、以及缺陷追踪系统的内容爬取与分析、以及软本文档来自技高网...

【技术保护点】
1. 面向软件生态系统的软件项目及第三方库知识图谱构造方法,其特征在于,具体步骤如下:/n(1)软件项目基本知识抽取/n软件项目的基本知识包括编程语言、业务分类、标签、以及软件项目之间的派生关系;通过爬虫爬取项目托管网站或者第三方库仓库网站上的所有软件项目;针对每一个软件项目,通过网页包装器解析结构化的项目托管网站或者第三方库仓库网站页面,从中抽取软件项目的编程语言、标签、以及软件项目之间的派生关系,并通过主题模型从软件项目的基本描述中提取业务分类;/n(2)软件项目发布版本基本知识抽取/n软件项目发布版本的基本知识包括新增功能特性、许可证、仓库来源、开发人员、以及发布版本之间的前后版本关系与第三方库依赖关系;其中,仓库来源适用于软件项目是第三方库的情况,开发人员通过仓库来源下载和使用第三方库发布版本;通过分析软件项目版本发布通知、代码提交历史、第三方库仓库网站页面、以及第三方库依赖声明文件获得软件项目发布版本的基本知识;/n(3)第三方库API知识抽取/n软件项目往往调用第三方库API;而第三方库API随着第三方库发布版本而发生演化;通过静态分析第三方库发布版本与软件项目发布版本的源代码或者二进制包获取第三方库API相关的知识;/n(4)软件项目发布版本代码克隆知识抽取/n软件项目之间可能存在代码克隆的关系;通过代码克隆检测分析方法获取不同软件项目的发布版本之间的代码克隆知识、以及同一软件项目的不同发布版本之间的代码克隆演化关系;/n(5)软件项目发布版本缺陷知识抽取/n软件项目发布版本会修复缺陷,同时也会引入新的缺陷;通过分析软件项目缺陷追踪系统中的缺陷获取软件项目发布版本中的缺陷与缺陷修复知识,并分析缺陷与第三方库API以及代码克隆的链接知识。/n...

【技术特征摘要】
1.面向软件生态系统的软件项目及第三方库知识图谱构造方法,其特征在于,具体步骤如下:
(1)软件项目基本知识抽取
软件项目的基本知识包括编程语言、业务分类、标签、以及软件项目之间的派生关系;通过爬虫爬取项目托管网站或者第三方库仓库网站上的所有软件项目;针对每一个软件项目,通过网页包装器解析结构化的项目托管网站或者第三方库仓库网站页面,从中抽取软件项目的编程语言、标签、以及软件项目之间的派生关系,并通过主题模型从软件项目的基本描述中提取业务分类;
(2)软件项目发布版本基本知识抽取
软件项目发布版本的基本知识包括新增功能特性、许可证、仓库来源、开发人员、以及发布版本之间的前后版本关系与第三方库依赖关系;其中,仓库来源适用于软件项目是第三方库的情况,开发人员通过仓库来源下载和使用第三方库发布版本;通过分析软件项目版本发布通知、代码提交历史、第三方库仓库网站页面、以及第三方库依赖声明文件获得软件项目发布版本的基本知识;
(3)第三方库API知识抽取
软件项目往往调用第三方库API;而第三方库API随着第三方库发布版本而发生演化;通过静态分析第三方库发布版本与软件项目发布版本的源代码或者二进制包获取第三方库API相关的知识;
(4)软件项目发布版本代码克隆知识抽取
软件项目之间可能存在代码克隆的关系;通过代码克隆检测分析方法获取不同软件项目的发布版本之间的代码克隆知识、以及同一软件项目的不同发布版本之间的代码克隆演化关系;
(5)软件项目发布版本缺陷知识抽取
软件项目发布版本会修复缺陷,同时也会引入新的缺陷;通过分析软件项目缺陷追踪系统中的缺陷获取软件项目发布版本中的缺陷与缺陷修复知识,并分析缺陷与第三方库API以及代码克隆的链接知识。


2.根据权利要求1所述的面向软件生态系统的软件项目及第三方库知识图谱构建方法,其特征在于,步骤(2)中所述的软件项目发布版本基本知识抽取,具体包括以下子步骤:
1)遍历软件项目的所有发布版本,建立发布版本之间的前后版本关系;通过关键词匹配找到软件项目版本发布通知中的新增功能特性描述,并通过主题模型,提取软件项目发布版本中的新增功能特性;
2)遍历软件项目的所有发布版本,根据发布时间确定在软件项目发布版本发布之前、在上一个软件项目发布版本发布之后的代码提交...

【专利技术属性】
技术研发人员:陈碧欢彭鑫赵文耘
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1