首页 / 专利库 / 杂项知识产权事务 / 数字版权管理 / 版权对象 / 一种开源许可证合规性分析与冲突性检测方法

一种开源许可证合规性分析与冲突性检测方法

阅读:782发布:2020-11-12

专利汇可以提供一种开源许可证合规性分析与冲突性检测方法专利检索,专利查询,专利分析的服务。并且本 发明 是一种开源 许可 证合规性分析与冲突性检测方法,主要分为以下四个方面:许可证的识别方法:一种是采取模式匹配启发式 算法 的直接识别方式,另一种是采用代码匹配技术的间接识别方式。许可证信息提取和模型构建:作为许可证合规性分析和冲突性识别 定位 的前提,在项目中收集比对许可证协议关联的特征信息。许可证合规性定量分析:以许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方。许可证冲突识别定位:利用许可证仓库,从许可证的名称、权利、条件和限制四个方面识别混源项目与开源库标准开源 软件 之间许可证的冲突,再定位到具体的开源项目和具体 位置 。,下面是一种开源许可证合规性分析与冲突性检测方法专利的具体信息内容。

1.一种开源许可证合规性分析与冲突性检测方法,其特征在于,所述方法包括以下步骤:
第一步,许可证仓库的构建;
第二步,许可证的识别;
第三步,许可证信息提取与模型构建;
第四步,许可证合规性分析;
第五步,许可证冲突识别与定位
2.根据权利要求1所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第一步,许可证仓库的构建,具体如下,分析十种主流的开源许可协议,基于许可证协议统一描述模型构建许可证仓库,包括对许可证的条款和许可证之间的兼容关系进行分析,将常见的十种开源软件许可证基于名称、权利、条件和限制四个方面进行归纳与分类,存储于许可证仓库中。
3.根据权利要求2所述的开源许可证合规性分析与冲突性检测方法,其特征在于,第二步,许可证的识别,具体如下,
许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式;
2.1直接识别方式是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其许可证类型;
2.2间接识别方式是基于混源软件的源代码,利用开源库匹配技术,将软件包与开源库标准软件进行匹配,从而推断混源软件中软件包许可证类型。
4.根据权利要求3所述的开源许可证合规性分析与冲突性检测方法,其特征在于,第三步许可证信息提取与模型构建具体如下,基于许可证特征树技术,从文件、目录、软件包和项目四个层面自底向上收集并处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集的差异信息存放到项目许可证差异库中,项目许可证特征树和项目许可证差异库的信息主要来源于混源项目中许可证声明信息和源文件修改信息,许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,其主要分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个方面,具体如下,
3.1特征信息提取:项目许可证特征信息提取是从文件层级出发,利用许可证特征提取器从许可证文件和普通文件注释中提取许可证特征信息,记录许可证种类、数量和分布。文件级许可证差异性信息主要从文件层级提取不符合开源软件规范的信息;
3.2特征信息合并:目录级许可证特征信息的提取与文件级许可证特征信息的提取类似,只是基于更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息;
3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源,软件包的差异信息同样也是基于对目录级的差异信息的归纳;
3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,并结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中,同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性分析的基础。
5.根据权利要求4所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第四步,许可证合规性分析具体如下,
合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议,分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析,具体如下:
4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度,每个纬度下又有不同的条目,不同许可证协议所具有的约束则不尽相同,经分析“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键,许可证协议标准的量化结果按照协议统一描述模型存放在许可证仓库中;
4.2许可证关联特征信息的收集与比对:基于许可证特征树和许可证差异库模型对许可证关联特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并可根据需要从文件、目录、软件包和项目层级进行扩展;
4.3许可证合规性的分析:许可证合规性分析是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型进行信息提取,然后基于模型评估树设置值和获取处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
6.根据权利要求5所述的开源许可证合规性分析与冲突性检测方法,其特征在于,所述第五步,许可证冲突识别和定位具体如下:许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间的不兼容的情况,混源项目的许可证和开源库标准开源软件之间的冲突检测是基于开源库匹配的结果对许可证文件和版权文件的冲突情况进行分析。许可证冲突的识别定位同样依赖于许可证特征树和许可证差异库模型,冲突的定位是通过在许可证特征树中标注特征位置,并根据链接跳转到具体项目代码的方式来实现,通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,以便对许可证冲突险进行管控。

说明书全文

一种开源许可证合规性分析与冲突性检测方法

技术领域

[0001] 本发明涉及一种开源许可证合规性分析与冲突性检测方法,属于开源许可证特征分析领域。

背景技术

[0002] 开源软件最初起源于20世纪70年代,美国MIT的学生经常会写一些软件自由分发,没有人想到软件的权利,更谈不上商业行为,这是开源运动的萌芽时期。直到80年代中期,Richard Stallman发起了GUN项目,并创办了自由软件基金会,从而揭开了开源软件的帷幕。
[0003] 目前开源软件不仅被大量应用于开源社区,同时作为商业软件的一部分而广泛使用。开源正在改变软件的构建方式,它使得开源系统中的组建能够被重用。因为这种基于开源代码的重用可能会导致许可证的冲突,所以企业的法务部有必要对它进行监控。而开源许可证兼容性检测能够确保企业在对开源代码重用时满足许可证的要求,控制并降低企业承担的法律险。因为不同的许可证代表着开源软件使用者所具有的不同的权利和义务,所以企业在基于开源软件进行商业开发时,需要对软件的开源许可证进行研究,了解其许可证对后续开发和使用是否有限制。
[0004] 近几年,由于开源许可证而侵权的问题数不胜数,例如微软的window7就因为下载软件使用了GPLv2的ImageMaster而不得不开放源码。因此对于软件开发商乃至整个开源社区,检测软件包中的开源许可证是否兼容变得尤为重要,目前国外虽有一些半自动化开源工具能自动识别混源软件的开源许可证信息,但这些工具不够完善,不能对许可证兼容性冲突进行检测,所以我们有必要对许可证兼容性检测工具进行研究。

发明内容

[0005] 随着开源软件及开源社区的发展,开源开发逐渐成为企业的首选,这种开发方式虽然促进了开源软件重用与分发,但同时也伴随着许可证冲突的挑战,这种冲突在携有多种许可证的大型软件系统中显得尤为明显。为了解决上述问题,我们意在开发出一种开源许可证自动分析系统,帮助企业管理其日益复杂的软件及其开源许可证,验证许可证的合规性,帮助企业在软件开发生命周期的早期发现软件的合规性问题,控制并降低企业承担的法律风险。
[0006] 为了实现上述目的,本发明的技术方案如下:一种开源许可证合规性分析和冲突性检测方法,所述方法包括以下步骤:
[0007] 第一步,许可证仓库的构建
[0008] 通过分析十种主流的开源许可协议,构建许可证协议统一描述模型,基于许可证协议统一描述模型构建许可证仓库,其中包括对许可证条款的分析和许可证之间的兼容关系。将常见的十种开源软件许可证基于名称、权利、条件和限制四个方面进行收集与分类,存于许可证仓库中。
[0009] 第二步,许可证的识别
[0010] 许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式。
[0011] 2.1许可证类型的直接识别是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其中的许可证类别。
[0012] 2.2许可证类型的间接识别是基于软件包源代码,利用开源库匹配技术,将项目软件包与开源库标准软件进行匹配,从而推断混源软件中的软件包许可证类别。
[0013] 第三步,许可证信息提取与模型构建
[0014] 基于许可证特征树技术,从文件、目录、软件包和项目四个层级自底向上收集处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集到的差异信息存放至项目许可证差异库中。项目许可证特征树和项目许可证差异库中的信息主要源于混源项目中许可证的声明信息和源文件的修改信息。许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,主要分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个步骤。
[0015] 3.1特征信息提取:项目许可证特征信息提取是从文件级出发,利用许可证特征提取器从许可证文件和普通文件的注释中提取许可证特征信息,收集并记录许可证种类、数量和分布。文件级许可证差异性信息主要是文件层级中不符合开源软件规范的信息。
[0016] 3.2特征信息合并:目录级许可证特征信息的提取和文件级许可证特征信息的提取类似,只是基于更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息。
[0017] 3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源。软件包的差异信息同样也是对基于目录级的差异信息的归纳。
[0018] 3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中。同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性分析的基础。
[0019] 第四步,许可证合规性分析
[0020] 合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议。分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析。
[0021] 4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度。各纬度下又有不同的条目,不同许可证协议种类所具有的约束则不尽相同。经过分析,“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键。许可证协议标准的量化结果按照协议统一描述模型存放在许可证仓库中。
[0022] 4.2许可证关联特征信息的收集与比对:基于许可证特征树和差异库模型对许可证协议关联的特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并根据需要从文件、目录、软件包和项目层级进行扩展。
[0023] 4.3许可证合规性分析过程:许可证合规性分析是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型进行信息抽取,然后基于模型评估树关联到值和获取处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
[0024] 第五步,许可证冲突识别和定位
[0025] 许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间的不兼容的情况。混源项目的许可证和开源库标准开源软件之间的冲突是基于开源库匹配的结果对许可证文件和版权文件的冲突情况进行分析。许可证冲突识别定位同样依赖于项目许可证特征树和许可证差异库模型。冲突的定位是通过在许可证特征树标注特征位置,并根据链接跳转到项目代码文件或目录的方式来实现。通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,以便对许可证冲突风险的管控。
[0026] 相对于现有技术,本发明的有益效果如下:1)该技术方案提出支持多类型多语言多结构的开源代码统一描述模型和支持多种协议的开源协议的统一描述模型,所提出的模型用统一的方式来描述开源代码和开源协议的详细信息,不仅有利于开源代码和开源协议在本系统中的扩展,也方便了特征提取方法、特征度量方法等对代码和协议的统一处理,提高了灵活性和效率;目前关于代码组成分析的研究主要集中在对代码的特征提取和比对算法、开源协议的合规性分析等方面,而从多类型多语言多结构多协议的度进行统一描述的研究,还没有见到有关文献报导。2)该技术方案提出基于项目许可证特征树和许可证差异库的合规性定量分析,与国外同类工具相比,本项目利用项目许可证特征树和许可证差异库的许可证特征信息,对许可证条款的检查更全面,不仅检查了许可证文本和版权声明信息,还检查了在开源代码上做的代码变更,而且通过输入项目信息的方式覆盖了开源软件使用方式的合规性检查。结合项目许可证特征树分析合规性问题类别、严重级别和问题定位信息,同时给出修改建议;3)该技术方案提出基于项目许可证特征树和许可证差异库的冲突性分析,与国外同类工具相比,基于项目许可证特征树和许可证差异库的许可证特征信息,本项目增加了对代码变更场景的冲突识别并定位到冲突位置,结合项目许可证特征树分析冲突类别、影响范围、严重级别和具体定位信息,同时给出修改建议,方便对冲突做进一步地分析。附图说明
[0027] 图1是开源许可证自动分析系统的总体框架图;
[0028] 图2是许可证特征分析图;
[0029] 图3是许可证合规性分析流程图
[0030] 图4是许可证冲突识别定位流程图;
[0031] 图5是许可证兼容关系图;
[0032] 图6是混源项目和开源库软件之间的冲突检测流程图;
[0033] 图7是许可证冲突趋势分析流程图;
[0034] 图8是许可证分析模型图;
[0035] 图9是许可证合规性分析引擎图;
[0036] 图10是许可证之间冲突识别流程图。

具体实施方式

[0037] 为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
[0038] 参照图1至图10,本发明所述方法包含以下步骤:
[0039] 第一步,许可证仓库的构建,
[0040] 通过分析十种主流的开源许可协议,并基于许可证协议统一描述模型构建许可证仓库,其中包括对许可证条款和许可证之间兼容关系的分析,将常见的十种开源软件许可证针对名称、权利、条件和限制四个方面进行收集与分类,存储在许可证仓库中。
[0041] 第二步,许可证的识别,
[0042] 许可证特征分析主要分为两个方面,一个方面是采取模式匹配启发式算法的直接识别方式,另一个方面是采用代码匹配技术的间接识别方式。
[0043] 2.1许可证类型的直接识别是基于混源软件的软件包许可证信息,利用许可证仓库,采用模式匹配的启发式算法来识别其中的许可证类别。
[0044] 2.2许可证类型的间接识别是基于软件包源代码,利用开源库匹配技术,将软件包与开源库标准开源软件进行匹配,从而推断出混源软件中的软件包许可证类别和开源软件名称。
[0045] 第三步,许可证信息提取与模型构建,
[0046] 通过采用许可证特征树技术,从文件、目录、软件包和项目四个层级自底向上收集处理许可证关联特征信息,形成项目许可证特征树,并将对应树节点收集的差异信息存放到项目许可证差异库中。项目许可证特征树和项目许可证差异库的信息主要源于混源项目中所收集到的许可证声明信息和源文件修改信息。许可证信息提取与模型构建的过程即为项目许可证特征分析的过程,分为特征信息提取、特征信息合并、生成软件包树和项目级特征提取四个步骤。
[0047] 3.1特征信息提取:项目许可证特征信息提取是从文件级出发,利用许可证特征提取器从许可证文件和普通文件注释中提取许可证特征信息,并记录许可证种类、数量和分布。文件级许可证差异性信息主要是从文件层级提取不符合开源软件规范的信息。
[0048] 3.2特征信息合并:目录级许可证特征信息的提取和文件级许可证特征信息的提取类似,只是在更高层次的目录级去提取信息。目录级许可证差异信息提取与文件级许可证差异信息提取类似,从更高层次的目录级提取不符合开源软件规范的信息。
[0049] 3.3生成软件包树:软件包层级许可证信息是对目录层级许可证特征信息的收集归纳,软件包层级相对于目录层级层次结构更加清晰,软件包层级许可证特征信息同时作为项目层级许可证特征信息的信息来源。软件包的差异信息同样也是对目录级的差异信息的归纳总结。
[0050] 3.4项目级特征提取:基于对混源项目的文件、目录、软件包三个层级许可证特征信息的分析,分析出的信息不仅包括许可证种类,数量及分布,而且在此基础上构建项目许可证特征树。利用许可证识别技术,结合开源库搜索技术,识别出项目中软件包对应的许可证类别,开源软件名称,并更新到项目软件包树中。同时将软件包目录和标准开源软件目录之间许可证声明信息和代码修改信息进行比对,将两者的差异信息存储到项目许可证差异库中,用于混源软件项目中许可证的特征信息检索及特征关联分析,并以此作为许可证进行合规性分析和冲突性检测的基础。
[0051] 第四步,许可证合规性分析,
[0052] 合规性定量分析的对象是混源项目本身和混源项目所使用的许可证协议。分析的思路是以使用的许可证协议为标准,找出混源项目中与许可证协议一致和不一致的地方,主要包括以下几个方面:许可证协议标准的量化、许可证关联特征信息的收集与比对和许可证合规性的分析。
[0053] 4.1许可证协议标准的量化:对于许可证协议标准的量化问题,通过对十种许可证条款的分析,将许可证的条款分为名称、权利、限制、条件四个纬度。每个纬度下又有不同的条目,不同的许可证协议种类所具有的约束条件则不尽相同。经分析,“条件”维度下的“许可证和版本提示”条目是识别许可证协议种类的关键。许可证协议标准的量化结果按照协议统一描述模型存储于许可证仓库中。
[0054] 4.2许可证协议关联特征信息的收集与比对:基于许可证特征树和差异库模型对许可证协议关联的特征信息进行整合,完整地保存了整个混源项目许可证特征信息,并根据需要从文件、目录、软件包和项目层级进行扩展。
[0055] 4.3许可证合规性的分析:许可证合规性分析过程是基于OMM模型评估树对许可证合规性条款和特征信息进行分析,具体如下,首先对项目许可证特征树和许可证差异库模型信息的抽取,然后基于模型评估树关联到阀值和可执行的处理策略,再通过合规性分析引擎执行处理策略,并基于设置的阀值生成对应项目许可证集的评估结果。
[0056] 第五步,许可证冲突识别和定位
[0057] 许可证冲突是指许可证之间、混源项目的许可证和开源库标准开源软件之间不兼容的情况。混源项目的许可证和开源库标准开源软件之间的冲突检测是基于开源库匹配的结果对许可证文件和版权文件数量和内容的冲突情况进行分析。许可证冲突识别定位同样依赖于项目许可证特征树和许可证差异库模型。冲突的定位是通过在许可证特征树标注位置,并根据链接跳转到项目代码文件或目录的方式来实现。通过对混源项目版本库历史信息的提取,对项目开发生命周期内的许可证冲突的情况进行度量,绘制冲突趋势图,方便对许可证冲突风险的管控。
[0058] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,许可证信息提取和模型构建是许可证合规性分析和冲突性识别定位的前提,它要解决的问题是在项目中收集比对许可证协议关联的特征信息。首先从许可证协议标准的角度看,各个许可证条目有不同的特点,比如“商用”条目,属于项目管理决策层提供的信息,不需要对混源项目本身做分析;而对于“许可证和版本提示”、“修改代码许可证不变”条目是可以量化,但是量化的方式需要结合混源项目的特点和条目本身的特征信息综合考虑,这部分是进行合规性分析的关键环节。在一个混源项目中,使用什么许可证协议是与项目所使用的开源软件绑定的。开源软件的分布是不确定的,对开源软件的使用方式(新增、修改和删减代码等)也是不确定的,这就导致混源项目中开源软件对应的许可证特征信息的不确定性。因此,解决如何收集混源项目中于许可证协议关联的特征信息的关键是如何分清混源项目中不同许可证协议的作用范围。这个问题贯穿于合规性分析和冲突识别定位的整个过程,并且需要在不“破坏”许可证协议作用范围边界的情况下收集许可证关联的特征信息。这个作用范围是许可证协议对应的混源软件中的具体的目录,也是开源软件的目录。基于此,将混源软件中的不同许可证协议、同一许可证协议的不同位置区分开来,就可以对混源软件中的许可证协议关联特征进行有效地收集,继而合并,再进一步的分析。
[0059] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,项目许可证特征信息的提取是在文件级的纬度进行。利用许可证特征提取器提取混源软件中的许可证特征信息和差异信息,最终用于项目许可证特征树的生成。其中,许可证特征信息主要包括混源项目中表示许可证类型的信息,分为文件级、目录级、软件包级和项目级四个方面,许可证差异信息主要包括项目中表示和许可证具体条款、匹配到的标准开源项目不一致的信息,同样分为文件级、目录级、软件包级和项目级。本小节主要指文件级的特征信息和差异信
[0060] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,文件级许可证特征信息包含五个方面,文件注释内容、文件作者名、文件日期、文件电子邮箱和文件类别。文件级许可证差异信息包含三个方面,文件缺少版权注释、文件缺少作者信息和文件缺少日期。
[0061] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,目录级许可证特征信息包含四个方面,目录下所有文件共有版权声明信息、目录下是否存在许可证文件、目录许可证文件名称和目录许可证文件内容。目录级许可证差异信息包含两个方面,目录下缺少版权注释文件列表和目录下文件注释。
[0062] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,软件包级许可证特征信息包含五个方面,目录类型、许可证内容、版权内容、目录深度和文件个数。软件包级许可证差异信息包含两个方面,嵌套目录中包含多个许可证和目录中无版权信息许可证列表。
[0063] 作为本发明的一种改进,所述许可证信息提取与模型构建的一个方面,项目级许可证特征信息包含四个方面,开源软件包列表、开源软件包名称、开源软件包对应许可证类别和开源软件包版权人列表。项目级许可证差异信息包含一个方面,闭源软件匹配到开源软件标记。
[0064] 作为本发明的一种改进,所述许可证合规性分析的一个方面,本方案合规性分析是基于OMM模型实现的。QualiPSo是中欧合作的提高开源软件质量的项目,该项目提出了OMM(Open Source Maturity Model)模型。OMM所要验证的对于开源软件质量最具影响、最重要和用户最认可的质量因子称为信任因子。OMM模型将每个TWE分解为一个或多个目标,每个目标再细化为一个或多个具体实践,即实践是达成目标的动作,为了达成具体目标,必须要考虑所有的具体实践,而且每项实践设置了阀值,最后计算各项实践的分数达成标准则通过,这样就形成了OMM的树形结构。该模型把开源软件许可证作为影响开源软件质量的重要因素之一。结合许可证合规性分析场景,我们利用OMM模型中的LCS,将其分解为3个目标,分别是权利、条件和限制。每个目标下再分具体的实践。根据OMM树形结构建立许可证合规性的模型评估树,树的根节点是许可证合规性;下一层节点是三个目标,分别是权利,条件和限制,每一层目标的下一层节点是实现目标的具体实践,关联实践对应的关键执行因子(Key Performance Indicator,KPI),并设定相应的阀值和处理策略,如此逐层构建,最终形成许可证合规性的模型评估树。其中关键执行因子KPI关联阀值和执行策略。
[0065] 作为本发明的一种改进,所述许可证合规性分析的一个方面,基于许可证声明信息的合规性分析是从项目许可证特征树和许可证差异库模型中搜索许可证声明相关的特征信息和许可证差异信息。其中许可证声明信息合规性分析项列表主要包含以下几个方面,文件数量、许可证版权、许可证版权个数、许可证文件、许可证文件个数、缺失版权文件数、错误版权文件数、许可证作者和许可证作者数量。
[0066] 作为本发明的一种改进,所述许可证合规性分析的一个方面,基于项目信息(手工录入)的合规性分析采用先由版本管理员(PMO)或项目经理录入,再与许可证仓库信息比对的方式进行处理。如下表格是整理出的合规性分析项信息,涉及到项目经理或PMO在项目立项阶段给出的项目定位,包括项目用途,使用范围等,本系统采用配置输入的方式手工导入,也可以从版本管理库(如SVN,GIT)中读取。针对识别出的许可证类别要求逐一比对分析项。其中基于项目信息的合规性分析项主要包括以下几个方面,商用、专利使用、开放源代码、网络分发、免责、商标使用和担保。
[0067] 作为本发明的一种改进,所述许可证合规性分析的一个方面,基于许可证修改信息的合规性分析从项目许可证特征树和许可证差异库模型中搜索混源项目源代码修改的特征信息和许可证差异信息,并基于许可证特征树结构展示分析结果。其中基于许可证修改信息的合规性分析项主要包括以下几个方面,被修改文件、修改内容、被修改文件个数、新增文件、新增文件内容、新增文件个数、删除文件、删除文件内容、删除文件个数和修改说明文件。
[0068] 作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,许可证之间的冲突指当将两个不同许可证的开源软件合并成一个更大的模时,这两个开源软件的许可证必须允许这样做,这种情况称它们是兼容的;反之,如果没有办法同时满足这两个许可证,那它们是不兼容的。如果不兼容的两个许可证在同一个混源代码的模块中出现,就称它们是冲突的。比如许可证GPLv2和MPL 2.0是相互冲突的。因为GPL v2许可证应用于整个模块,当给一个模块增加代码时,新增的代码变成模块的一部分,也必须被授权为GPL许可证。但MPL 2.0不允许变更许可证,因此MPL 2.0许可证的开源代码不能被用于GPL许可证的模块。从这个例子可以看出,许可证之间的冲突实际是指许可证协议条款的冲突。因此,许可证之间的冲突分析总体思路是:利用许可证仓库中的许可证兼容信息,通过遍历项目许可证特征树中每条边进行许可证冲突性对比。并基于许可证特征树结构展示分析结果。
[0069] 作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,许可证之间冲突识别流程包含以下几个步骤,第一步,通过遍历项目许可证特征树生成项目嵌套许可证集。许可证特征树的根结点是项目名称,其他结点是许可证类别名。许可证特征树上的每条边可以看成一个存在嵌套关系的许可证对。取出许可证特征树上的每一条边作为元素存放到嵌套许可证集中,同时记录许可证在特征树上的位置用于冲突定位。许可证特征树中边的条数就是嵌套许可证集元素的个数。第二步,通过遍历许可证兼容关系图生成兼容许可证集。如上图,通过遍历关系图,取出每一条弧作为元素存放到兼容许可证集中;由于兼容关系的传递性,首尾相连的两条弧对应的弧尾和弧头也是兼容的,同样存放到兼容许可证集中。第三步,循环取出嵌套许可证集中的许可证对。在兼容许可证集上查找该许可证对,如果查找成功,说明这个许可证对中对应的两个许可证使用是兼容的;反之这个许可证对中对应的两个许可证使用是冲突的,记录许可证对到冲突许可证集中。第四步,输出冲突许可证集中的许可证对,并根据许可证对上的标记定位到许可证特征树的位置,找出冲突冲突许可证在混源项目中到具体位置。其中许可证之间的冲突性分析项主要包含以下几点,兼容许可证对、兼容许可证个数、冲突许可证对和冲突许可证个数。
[0070] 作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,混源项目和开源库软件之间的冲突是在开源库匹配技术的基础上,对匹配的开源软件进行分析,通过目录比较和内容匹配的方式,识别许可证文件和版权文件的冲突情况,可识别的冲突类型主要包含以下几点,无许可证和版权文件、存在许可证和版权文件但文件内容缺失和存在许可证和版权文件但文件内容被修改。
[0071] 作为本发明的一种改进,所述许可证冲突识别和定位的一个方面,冲突趋势图通过对混源项目版本库历史信息的提取,可以对项目开发生命周期内的各时间段许可证冲突的情况进行度量,绘制冲突趋势图,方便对许可证冲突风险的管控。冲突趋势的处理流程包含以下几个步骤,第一步,循环遍历混源项目版本管理库中历史构建版本,如果遍历完成,跳转到第五步,如果没有,进行第二步骤操作。第二步,从版本管理库中取出历史构建版本包,即混源项目完整的源码。第三步,对历史构建版本进行项目许可证分析,生成项目许可证特征树和许可证差异库的模型,并进行冲突性分析。第四步,从许可证分析结果中收集许可证冲突指标值,如许可证冲突个数。第五步,基于历史构建版本的创建时间绘制许可证冲突趋势图。
[0072] 需要说明的是上述实施例仅仅是本发明的较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的等同替换或者替代均属于本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈