CN113268713A - 基于软件依赖的开源软件许可证选择方法 - Google Patents
基于软件依赖的开源软件许可证选择方法 Download PDFInfo
- Publication number
- CN113268713A CN113268713A CN202110619153.4A CN202110619153A CN113268713A CN 113268713 A CN113268713 A CN 113268713A CN 202110619153 A CN202110619153 A CN 202110619153A CN 113268713 A CN113268713 A CN 113268713A
- Authority
- CN
- China
- Prior art keywords
- license
- software
- open source
- projects
- licenses
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/013—Eye tracking input arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了基于软件依赖的开源软件许可证选择方法,该方法主要包含以下四个步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。本发明提供的方法能够满足开发者选择适用开源许可证和许可证兼容性需求。
Description
技术领域
本发明涉及软件工程技术领域,具体涉及基于软件依赖的开源软件许可证选择方法。
背景技术
在开源生态系统中,开源许可证具有保障软件开发者(或组织)的知识产权、保持软件长久稳定的发展、吸引相同开源理念的软件贡献者等作用。然而也为开源软件的使用和分发带来了知识产权风险。造成这种问题的原因有开源软件许可证种类和数量繁多、开发者难以理解许可证条款。根据研究发现目前仅OSI认证的许可证就有84个和Daniel等人通过调查发现软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险。开源许可证实质是一中由众多许可条款构成的法律文本包含了许可者授予的权利以及被许可者的义务。因此,软件开发者选择许可证时需人工分析和理解许可证的条款和义务,否则难以确定开源许可证的选择。为此,如何为软件开发者选择适用的开源软件许可证是亟需解决的问题。
发明内容
本方案的目的在于提供一种基于软件依赖的开源软件许可证选择方法,以为软件开发者提供适用的开源软件许可证。
为了达到上述目的,本方案提供基于软件依赖的开源软件许可证选择方法,包括如下步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。
进一步,所述第1步中构建许可证建模并提取条款,具体为:步骤1-1:版本处理;选取原始数据集中的最新版本,构建项目-版本-依赖项关系;步骤1-2:数据清洗;清洗数据集中的无效数据和缺失值。
进一步,所述第2步中训练许可证主题模型并提取主题,具体为:步骤2-1:提取相似的开源项目;根据用户软件的依赖项目寻找具有相似性的开源软件项目;步骤2-2:显示相似的开源项目;若两个项目类似,则用一组相同的库实现功能;若两个项目不类似,则继续寻找类似的项目。
进一步,所述第3步中建立主题与条款之间的对应关系,具体为:判断不同许可证之间的兼容关系,若两个不同许可证组件的软件在其中任一项的许可证下获得授权,则两个许可证是单向兼容的;若两个不同许可证组件的软件在其中任一项的许可证下无法授权,则两个许可证不兼容;将许可证之间的兼容性生成开源许可证兼容性分析图。
进一步,还包括:第5步,人工核查条款与主题的兼容性;具体为,人工核查的计算机上设有用于识别人员眼球的识别模块和输入光标,识别模块采集到人员眼球持续2s注视许可证条款的信号后,自动返回第3步,重新建立主题与条款之间的对应关系,生成该许可证的开源许可证兼容性分析图,输入光标接受选取适合该主题许可证条款的信号后,新的许可证条款自动替换原有的许可条款,生成新的许可证的开源许可证兼容性分析图。
进一步,所述识别模块采集到人员眼球脱离输入光标原有的位置持续2s的信号后,所述输入光标自动移动到眼球注视的位置。
进一步,所述第4步中获取许可证条款并表示许可证,具体为:利用广度优先搜索算法寻找兼容性许可证节点,用队列实现广度优先遍历算法,判断由许可证指向许可证节点边是传递性边或非传递性边,若许可证指向许可证节点边是传递性边,则许可证具有兼容性;若许可证指向许可证节点边是非传递性边,则许可证传递关系终止。
本方案的有益效果:本方案将存在兼容性的多个许可证整理成常用开源许可荣兼容性分析图,满足开发者选择适用开源许可证和许可证兼容性需求,减少软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险的现象。
附图说明
图1为本发明基于依赖的许可证选择方法框架图。
图2为本发明开源软件项目依赖网络图。
图3为本发明常用开源许可证兼容分析图。
图4为本发明项目编程语言数据分布图。
图5为本发明项目依赖项数目数据分布图。
具体实施方式
下面通过具体实施方式进一步详细的说明:
实施例1
基于软件依赖的开源软件许可证选择方法,包括如下步骤:第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;第2步:计算用户项目和训练集项目之间的相似度;第3步:对相似项目的结果排序,返回许可证列表;第4步:检测项目依赖项许可证冲突并生成检查报告。
如附图1所示,在选择合适的许可证时,软件依赖性扮演了一个重要的因素。用户也可以参考类似的开源项目来选择许可证。该方法可以总结为三个过程:构建依赖网络、计算软件相似度和检测许可证违规。
其中,第1步中构建许可证建模并提取条款,具体为:步骤1-1:版本处理;选取原始数据集中的最新版本,原始数据集中每个项目存在多个发布版本,而每个版本会存在不同的依赖项,为此我们选取项目元数据中最新的版本,构建项目-版本-依赖项关系。步骤1-2:数据清洗;清洗数据集中的无效数据和缺失值。数据集中部分项目许可证信息、变成语言等信息不完善和不存在依赖项的无效项目数据。
而采用Maven平台作为研究对象,一方面,Maven平台在软件领域非常流行和重要,其管理的开源项目大多使用广为人知java语言开发。根据lbraries.io的统计,有超过37.1w个项目托管在maven平台上,其中超过15个项目由java所开发。为我们进行开源许可证的选择研究提供了充足的数据支持。另一方面,Maven有一个相对较大且活跃的开发人员社区,例如Apache社区和Eclipse社区。到目前为止,Apache社区是世界上最著名和最重要的开源社区之一,它拥有超过2.27亿行代码,390多万代码提交,超过42亿行代码修改,以及300多个顶级项目。因此,基于大量的开源项目开发数据,我们很有必要对这些社区进行研究,比如如何在apache社区上选择一个许可,同时,开源许可证相关领域研究论文中大多使用以java开发为主的数据集。如附图4所示,大多数项目使用的开发语言是Java,python编程语言开发的项目只有62个。如附图5所示显示了数据集中项目依赖项数量的数据分布。托管在maven平台上的开源项目的依赖数量集中在1-5个范围,占67.3%,而超过55个依赖的项目只有320个。
其中,第2步中训练许可证主题模型并提取主题,具体为:步骤2-1:提取相似的开源项目;根据用户软件的依赖项目寻找具有相似性的开源软件项目;步骤2-2:显示相似的开源项目;若两个项目类似,则用一组相同的库实现功能;若两个项目不类似,则继续寻找类似的项目。有向图的顶点(E)代表开源项目,边(E)表示开源项目之间的依赖关系,边集合就是该项目所依赖开源软件包的集合。因此,如果一个顶点u表示的软件项目的依赖项包含了顶点v的开源项目,则会有一条从u指向v的有向边,则:
E(V)={(u,v)|u,v∈y} (1)
基于具有相似软件依赖包的开源软件的许可证选择具有相似性,则首要任务就是根据用户软件的依赖项目寻找具有相似性的开源软件项目。如附图2中的P2,P3项目非常相似,因为它们都指向了节点lib1,lib2,lib3,即类似的项目可以通过使用一组相同的库来实现功能。假设项目p的依赖项有(lib1,lib2,...,libn),则:
p的特征向量表示,其中代表pi在依赖网络图中的权重。公式(2)为逆文档频率值,用于量化依赖项权重值。表示开源项目p的依赖项集合中libi在整个项目库中的频率;|P|表示训练集中所有开源项目的数量;表示含有依赖项libi的开源软件项目p的个数。最后用余弦公式即公式(3)计算开源软件项目pi和pj的相似度,pi和pi分别用向量和 表示。余弦公式(3)中的n表示用于计算相似度项目的依赖项数目之和。
其中,第3步中建立主题与条款之间的对应关系,具体为:判断不同许可证之间的兼容关系,若两个不同许可证组件的软件在其中任一项的许可证下获得授权,则两个许可证是单向兼容的;若两个不同许可证组件的软件在其中任一项的许可证下无法授权,则两个许可证不兼容;将许可证之间的兼容性生成开源许可证兼容性分析图。如附图3所示,定义节点代表许可证、边表示邻接两个节点之间的兼容性关系;图中实线代表可传递性边、虚线代表非传递性边;非传递性边表示许可证兼容传递关系的终止。例如图3中Zlib许可证是兼容于MPL2.0(非传递边的尾节点),但是却不兼容于CPL2.0许可证(到达CPL2.0的路径中存在非传递边且为非传边的尾节点)。
其中,第4步中获取许可证条款并表示许可证,具体为:利用广度优先搜索算法寻找兼容性许可证节点,用队列实现广度优先遍历算法,判断由许可证指向许可证节点边是传递性边或非传递性边,若许可证指向许可证节点边是传递性边,则许可证具有兼容性;若许可证指向许可证节点边是非传递性边,则许可证传递关系终止。开源许可证兼容性检测算法如下:
根据许可证兼容性规则有向图的定义,可以将n个自由/开源软件许可证之间的兼容性问题归结为有向图多点可达性问题,为此可利用广度优先搜索算法(BFS)、深度优先搜索算法(DFS)、佛洛依德算法等实现许可证兼容性规则检测。进一步为用户提供具有兼容性的开源许可证参考选项。
本方案将存在兼容性的多个许可证整理成常用开源许可荣兼容性分析图,满足开发者选择适用开源许可证和许可证兼容性需求,减少软件开发者因为缺乏许可证相关知识而使得开源软件的自由使用存在巨大的挑战和法律风险的现象。
实施例2
与实施例1不同的是,基于软件依赖的开源软件许可证选择方法,还包括:第5步,人工核查条款与主题的兼容性。具体为,人工核查的计算机上设有用于识别人员眼球的识别模块和输入光标,识别模块采集到人员眼球持续2s注视许可证条款的信号后,自动返回第3步,重新建立主题与条款之间的对应关系,生成该许可证的开源许可证兼容性分析图,输入光标接受选取适合该主题许可证条款的信号后,新的许可证条款自动替换原有的许可条款,生成新的许可证的开源许可证兼容性分析图。
其中,识别模块采集到人员眼球脱离输入光标原有的位置持续2s的信号后,所述输入光标自动移动到眼球注视的位置。其中识别模块为摄像头,输入光标为鼠标在计算机上的显示状态。本步骤中,通过人工核查的方式进一步确定条款与主题的兼容性,减少因机器计算错误而造成的损失,同时,用摄像头采集人眼眼球的注意时间,从而自动移动鼠标,方便人员操作,更为节约审查时间。与此同时,方便用户使用。提升用户体验,减轻用眼负担。
虽然以上描述了本发明的具体实施方式,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离本发明的原理和实质,本发明的保护范围仅由所附权利要求书限定。
Claims (7)
1.基于软件依赖的开源软件许可证选择方法,其特征在于,包括如下步骤:
第1步:基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络;
第2步:计算用户项目和训练集项目之间的相似度;
第3步:对相似项目的结果排序,返回许可证列表;
第4步:检测项目依赖项许可证冲突并生成检查报告。
2.根据权利要求1所述的基于软件依赖的开源软件许可证选择方法,其特征在于,所述第1步中基于Maven平台项目数据表示开源项目与依赖项关系,构建项目依赖网络,具体为:
步骤1-1:版本处理;选取原始数据集中的最新版本,构建项目-版本-依赖项关系;
步骤1-2:数据清洗;清洗数据集中的无效数据和缺失值。
3.根据权利要求1所述的基于软件依赖的开源软件许可证选择方法,其特征在于,所述第2步中计算用户项目和训练集项目之间的相似度,具体为:
步骤2-1:提取相似的开源项目;根据用户软件的依赖项目寻找具有相似性的开源软件项目;
步骤2-2:显示相似的开源项目;若两个项目类似,则用一组相同的库实现功能;若两个项目不类似,则继续寻找类似的项目。
4.根据权利要求1所述的基于软件依赖的开源软件许可证选择方法,其特征在于,所述第3步中对相似项目的结果排序,返回许可证列表,具体为:
判断不同许可证之间的兼容关系,若两个不同许可证组件的软件在其中任一项的许可证下获得授权,则两个许可证是单向兼容的;若两个不同许可证组件的软件在其中任一项的许可证下无法授权,则两个许可证不兼容;将许可证之间的兼容性生成开源许可证兼容性分析图。
5.根据权利要求4所述的基于软件依赖的开源软件许可证选择方法,其特征在于,还包括:第5步,人工核查条款与主题的兼容性;具体为,人工核查的计算机上设有用于识别人员眼球的识别模块和输入光标,识别模块采集到人员眼球持续2s注视许可证条款的信号后,自动返回第3步,重新建立主题与条款之间的对应关系,生成该许可证的开源许可证兼容性分析图,输入光标接受选取适合该主题许可证条款的信号后,新的许可证条款自动替换原有的许可条款,生成新的许可证的开源许可证兼容性分析图。
6.根据权利要求5所述的基于软件依赖的开源软件许可证选择方法,其特征在于,所述识别模块采集到人员眼球脱离输入光标原有的位置持续2s的信号后,所述输入光标自动移动到眼球注视的位置。
7.根据权利要求1所述的基于软件依赖的开源软件许可证选择方法,其特征在于,所述第4步中检测项目依赖项许可证冲突并生成检查报告,具体为:
利用广度优先搜索算法寻找兼容性许可证节点,用队列实现广度优先遍历算法,判断由许可证指向许可证节点边是传递性边或非传递性边,若许可证指向许可证节点边是传递性边,则许可证具有兼容性;若许可证指向许可证节点边是非传递性边,则许可证传递关系终止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110619153.4A CN113268713A (zh) | 2021-06-03 | 2021-06-03 | 基于软件依赖的开源软件许可证选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110619153.4A CN113268713A (zh) | 2021-06-03 | 2021-06-03 | 基于软件依赖的开源软件许可证选择方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113268713A true CN113268713A (zh) | 2021-08-17 |
Family
ID=77234113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110619153.4A Pending CN113268713A (zh) | 2021-06-03 | 2021-06-03 | 基于软件依赖的开源软件许可证选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113268713A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302042A (zh) * | 2023-05-25 | 2023-06-23 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446691A (zh) * | 2016-11-24 | 2017-02-22 | 工业和信息化部电信研究院 | 检测软件中集成或定制的开源项目漏洞的方法和装置 |
CN109063421A (zh) * | 2018-06-28 | 2018-12-21 | 东南大学 | 一种开源许可证合规性分析与冲突性检测方法 |
US20200026512A1 (en) * | 2017-02-15 | 2020-01-23 | China Unionpay Co., Ltd. | Open-source-license analyzing method and apparatus |
CN111291331A (zh) * | 2019-06-27 | 2020-06-16 | 北京关键科技股份有限公司 | 混源文件许可冲突检测方法 |
CN112084309A (zh) * | 2020-09-17 | 2020-12-15 | 北京中科微澜科技有限公司 | 基于开源软件图谱的许可证选取方法和系统 |
CN112800430A (zh) * | 2021-02-01 | 2021-05-14 | 苏州棱镜七彩信息科技有限公司 | 适用于开源组件的安全与合规治理方法 |
-
2021
- 2021-06-03 CN CN202110619153.4A patent/CN113268713A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446691A (zh) * | 2016-11-24 | 2017-02-22 | 工业和信息化部电信研究院 | 检测软件中集成或定制的开源项目漏洞的方法和装置 |
US20200026512A1 (en) * | 2017-02-15 | 2020-01-23 | China Unionpay Co., Ltd. | Open-source-license analyzing method and apparatus |
CN109063421A (zh) * | 2018-06-28 | 2018-12-21 | 东南大学 | 一种开源许可证合规性分析与冲突性检测方法 |
CN111291331A (zh) * | 2019-06-27 | 2020-06-16 | 北京关键科技股份有限公司 | 混源文件许可冲突检测方法 |
CN112084309A (zh) * | 2020-09-17 | 2020-12-15 | 北京中科微澜科技有限公司 | 基于开源软件图谱的许可证选取方法和系统 |
CN112800430A (zh) * | 2021-02-01 | 2021-05-14 | 苏州棱镜七彩信息科技有限公司 | 适用于开源组件的安全与合规治理方法 |
Non-Patent Citations (2)
Title |
---|
周小煊: ""基于AHP层次分析法建立的开源软件许可证决策模型",", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
李晓明 等: ""开源组成分析工具发展现状及建议"", 《信息通信技术与政策》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302042A (zh) * | 2023-05-25 | 2023-06-23 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
CN116302042B (zh) * | 2023-05-25 | 2023-09-15 | 南方电网数字电网研究院有限公司 | 协议要素内容推荐方法、装置和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kuznetsova et al. | The open images dataset v4: Unified image classification, object detection, and visual relationship detection at scale | |
Raharjana et al. | User stories and natural language processing: A systematic literature review | |
Chen et al. | Fairness testing: A comprehensive survey and analysis of trends | |
Jiang et al. | Recommending new features from mobile app descriptions | |
Moran et al. | Detecting and summarizing GUI changes in evolving mobile apps | |
Behrang et al. | GUIfetch: supporting app design and development through GUI search | |
Itzik et al. | Variability analysis of requirements: Considering behavioral differences and reflecting stakeholders’ perspectives | |
Li et al. | Reverse engineering variability from natural language documents: A systematic literature review | |
Bajammal et al. | Generating reusable web components from mockups | |
Tsay et al. | Aimmx: Artificial intelligence model metadata extractor | |
Triandini et al. | Software similarity measurements using UML diagrams: A systematic literature review | |
Adkins et al. | Method cards for prescriptive machine-learning transparency | |
Pargent et al. | Predictive modeling with psychological panel data | |
Akli et al. | Predicting flaky tests categories using few-shot learning | |
Nguyen et al. | Multilingual diversity improves vision-language representations | |
Tsay et al. | Extracting enhanced artificial intelligence model metadata from software repositories | |
Ahmed et al. | Negative results of image processing for identifying duplicate questions on stack overflow | |
CN113268713A (zh) | 基于软件依赖的开源软件许可证选择方法 | |
Carbonera et al. | Software merge: A two-decade systematic mapping study | |
Kirbas et al. | Evolutionary coupling measurement: Making sense of the current chaos | |
Wan et al. | Keeper: Automated testing and fixing of machine learning software | |
Fawad et al. | Android Source Code Smells: A Systematic Literature Review | |
Peng et al. | An approach of extracting feature requests from app reviews | |
Pranatawijaya et al. | Unveiling User Sentiment: Aspect-Based Analysis and Topic Modeling of Ride-Hailing and Google Play App Reviews. | |
Reinhartz-Berger et al. | Reuse of similarly behaving software through polymorphism-inspired variability mechanisms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210817 |
|
RJ01 | Rejection of invention patent application after publication |