一种程序代码编程模式著作权归属检测模型及著作权归属检测方法技术

技术编号:8533325 阅读:325 留言:0更新日期:2013-04-04 16:38
一种程序代码编程模式著作权归属检测模型及著作权归属检测方法,它涉及一种编程模式及程序代码著作权归属检测方法。本发明专利技术的目的是要解决现在的程序代码雷同检测方法和工具存在不能有效提取大规模程序集合中的编程模式,以及不考虑每个作者的历史数据,无法判定程序代码的著作权归属的问题。一种程序代码编程模式著作权归属检测模型由已知著作权归属的程序代码库、查询程序代码、编程模式及其索引文件、编程模式挖掘器、著作权归属分析器和著作权归属度列表组成。著作权归属检测方法:以待确认著作权归属的程序代码作为程序代码的编程模式的查询程序代码输入,即可得到著作权归属度列表。本发明专利技术主要提供一种程序代码的编程模式及著作权归属检测方法。

【技术实现步骤摘要】

本专利技术涉及一种编程模式及程序代码著作权归属检测方法。
技术介绍
程序代码编程模式及著作权归属检测方法在教育领域和软件开发领域,如程序代码抄袭检测,软件版权侵犯、著作权纠纷的判定,以及软件维护,都有着重要的应用。现今在计算机教学中,尤其是在程序类课程设计中,大量存在着抄袭他人作业或者作品的行为。在完成上机编程任务或者在编程训练考核中,被考核者抄袭他人程序代码后,稍作修改甚至不做任何修改便拿来作为自主设计作品提交;或者在网络上搜索他人已有的算法代码,“复制-粘贴”到自己的程序中,这些学生程序设计中存在的抄袭现象是产生雷同代码的一个重要原因。除了学生程序设计中存在的抄袭现象产生的雷同代码之外,软件企业中的未经授权的代码重用也受到密切关注。由于一些软件功能之间存在的共通性,使得某些软件企业也存在程序代码的非授权使用的现象,因此大型软件系统中时有发生的抄袭、雷同现象,导致了软件侵权案的不断发生,给正当软件公司造成了严重的影响和危害。无论是针对学生程序还是企业开发的软件,采用人工的方法去查找雷同代码,采用很费时,特别是程序非常多、或程序规模很大时,很难度量抄袭行为性质以及程度。判定程序代码的著作权归属,即判定程序代码的真正作者,就更加困难了。因此,提供自动的程序代码代码的雷同检测及著作权归属判定具有重要的意义。同一个作者,或同一个企业的软件开发人员,由于编程习惯或软件开发实践(如重用通用的框架、遵循特定的编程模式、以及拷贝-粘贴代码),在解决同一类问题时,通常在编程过程中遵循特定的编程模式(如关键字、程序结构、处理思路等),因此,在同一种编程语言解决类似问题时,会产生类似的程序代码。软件维护中,开发人员修改了一段代码,同样需要对与该代码有相同编程模式的程序代码片段进行相似的修改,而开发人员很可能忽略了这些代码片段。自动查找相似编程模式则可以有效缓解上述问题。雷同代码由于存在抄袭现象,因此也具有相似的编程模式,挖掘两个代码集合中的相似的编程模式,则可以检测出这两个代码集合中的雷同代码。此外,如果能够自动挖掘已知作者来源的程序代码集合中的编程模式,则可以为著作权归属判定提供有效依据。如果给定代码与某个作者的编程模式一致,则可能是该作者的代码。综上所述,如果能够自动提取程序代码中的编程模式,则可为程序代码的雷同检测、软件维护、以及程序代码的著作权归属判定奠定基础。目前已有很多关于自然语言雷同文本的方法和工具,如Turnitin,但是这些方法和工具因忽视了程序代码的编程语法,而不适合于分析程序代码。目前也有一些检测程序代码中的雷同代码的方法和工具。主要方法有属性计数法和结构度量方法。属性计数法计算每一个程序的η个不同的软件度量指标(如控制流、结构、数据依赖、嵌套深度、控制结构等),以便于将程序映射到一个η维的笛卡尔空间,然后考虑彼此邻近的程序组可能为雷同程序。该方法存在的不足之处是抛弃了太多的程序结构信息,导致错误率太高,难于分析大规模程序;也无法有效检测增加或删除了部分语句的相似代码。结构度量方法,如SIM,JPlag和MOSS等系统,在检测雷同代码时考虑了程序的结构信息。但存在以下不足之处通常检测每一对程序的相似度来发现剽窃行为的,而不能有效定位出大规模程序集合中雷同的程序代码片段;SIM,JPlag具有较高的计算复杂度无法分析大规模程序代码。无论是属性计数法还是结构度量(structure metrics)方法,均无法自动提取程序中的编程模式,均不考虑每个作者(程序开发人员或软件公司)的历史数据(已知作者来源的程序代码),即使检测出雷同代码,也无法进一步判断雷同代码的著作权归属,即代码 的真正作者。因此现在的程序代码雷同检测方法和工具存在不能有效提取大规模程序集合中的编程模式,以及不考虑每个作者的历史数据,无法判定程序代码的著作权归属的问题。
技术实现思路
本专利技术的目的是要解决现在的程序代码雷同检测方法和工具存在不能有效提取大规模程序集合中的编程模式,以及不考虑每个作者的历史数据,无法判定程序代码的著作权归属的问题,从而提出。一种程序代码编程模式著作权归属检测模型由已知著作权归属的程序代码库、查询程序代码、编程模式及其索引文件、编程模式挖掘器、著作权归属分析器和著作权归属度列表组成;所述的编程模式挖掘器对所述的已知著作权归属的程序代码库进行分析和转换生成所述的编程模式及其索引文件,所述的著作权归属分析器对所述的查询程序代码进行分析,并在所述的编程模式及其索引文件中进行索引生成所述的著作权归属度列表。一种利用程序代码编程模式著作权归属检测模型的著作权归属检测方法,具体是按以下步骤完成的一、首先利用编程模式挖掘器中词法解析器对已知著作权归属的程序代码库中的程序代码进行解析,生成标准化的token串;二、采用编程模式挖掘器中数字序列转换器对标准化的token串执行字符串散列,计算所对应的hash值,将标准化的token串转换为一个数字序列,然后划分数字序列,将其转换为序列数据库;三、利用编程模式挖掘器中频繁编程模式挖掘器对序列数据库执行闭合频繁子序列挖掘,频繁编程模式挖掘器应用改进的BIDE数据挖掘算法,挖掘支持度大于2的频繁子序列,所述的频繁子序列对应于至少出现两次的编程模式;四、利用编程模式挖掘器中编程模式索引分析器分析挖掘出的支持度大于2的频繁编程模式,建立倒排索引文件,并将编程模式和倒排索引文件信息存入数据库中,生成编程模式及其索引文件;五、以待确认著作权归属的程序代码作为查询程序代码,利用查询代码编程模式解析器根据查询程序代码提供的信息进行分析和数字序列转换,生成标准化的token串,再对标准化的token串执行字符串散列,计算所对应的hash值,将标准化的token串转换为一个数字序列,得到的数字序列即为编程模式,划分数字序列,将其转换为数字序列集合,对生成的数字序列集合进一步分析,判定该数字序列集合中是否含有相同的数字序列,如果存在含有相同的数字序列,则去除重复的数字序列,进而得到无重复的编程模式集合,如果不存在含有相同的数字序列,则直接得到无重复的编程模式集合;六、利用著作权归属度计算器根据无重复的编程模式集合在编程模式及其索引文件进行检索,得出无重复的编程模式集合在编程模式及其索引文件中出现的频度,然后按公式本文档来自技高网
...

【技术保护点】
一种程序代码编程模式著作权归属检测模型,其特征在于程序代码编程模式著作权归属检测模型由已知著作权归属的程序代码库、查询程序代码、编程模式及其索引文件、编程模式挖掘器、著作权归属分析器和著作权归属度列表组成;所述的编程模式挖掘器对所述的已知著作权归属的程序代码库进行分析和转换生成所述的编程模式及其索引文件,所述的著作权归属分析器对所述的查询程序代码进行分析,并在所述的编程模式及其索引文件中进行索引生成所述的著作权归属度列表。

【技术特征摘要】
1.一种程序代码编程模式著作权归属检测模型,其特征在于程序代码编程模式著作权归属检测模型由已知著作权归属的程序代码库、查询程序代码、编程模式及其索引文件、编程模式挖掘器、著作权归属分析器和著作权归属度列表组成;所述的编程模式挖掘器对所述的已知著作权归属的程序代码库进行分析和转换生成所述的编程模式及其索引文件,所述的著作权归属分析器对所述的查询程序代码进行分析,并在所述的编程模式及其索引文件中进行索引生成所述的著作权归属度列表。2.根据权利要求1所述的一种程序代码编程模式著作权归属检测模型,其特征在于所述的已知著作权归属的程序代码库由程序代码的著作权归属集合构成。3.根据权利要求1所述的一种程序代码编程模式著作权归属检测模型,其特征在于所述的编程模式挖掘器由词法解析器、数字序列转换器、数字序列转换器、频繁编程模式挖掘器和编程模式索引分析器组成,利用词法解析器对所述的已知著作权归属的程序代码库中的程序代码进行解析,生成标准化的token串,采用数字序列转换器对标准化的token串执行字符串散列,计算所对应的hash值,将标准化的token串转换为一个数字序列,然后划分数字序列,将其转换为序列数据库,利用频繁编程模式挖掘器对序列数据库执行闭合频繁子序列挖掘,频繁编程模式挖掘器应用改进的BIDE数据挖掘算法,挖掘支持度大于2的频繁子序列,所述的频繁子序列对应于至少出现两次的编程模式,编程模式索引分析器分析挖掘出的支持度大于2的频繁编程模式,建立倒排索引文件,并将编程模式和倒排索引文件信息存入数据库中,生成所述的编程模式及其索引文件。4.根据权利要求3所述的一种程序代码编程模式著作权归属检测模型,其特征在于所述的改进的BIDE数据挖掘算法是对BIDE算法进行了如下改进一、设置gap阈值和密度阈值,序列挖掘中允许序列中插入gap,使得算法可以检测插入或删除了部分语句的编程模式;二、研究将频繁序列挖掘得到的数字序列结果与程序代码相映射的方法,使得算法可以准确定位程序代码。5.根据权利要求1所述的一种程序代码编程模式著作权归属检测模型,其特征在于所述的著作权归属分析器由查询代码编程模式解析器和著作权归属度计算器组成,查询代码编程模式解析器根据所述的查询程序代码提供的信息进行分析和数字序列转换,生成标准化的token串,再对标准化的token串执行字符串散列,计算所对应的hash值,将标准化的token串转换为一个数字序列,然后划分数字序列,将其转换为数字序列集合,对生成的数字序列集合进一步分析,判定该数字序列集合中是否含有相同的数字序列,如果存在含有相同的数字序列,则去除重复的数字序列,进而得到无重复的编程模式集合,如果不存在含有相同的数字序列...

【专利技术属性】
技术研发人员:王甜甜王克朝苏小红马培军
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

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

1