程序代码作业相似度检测系统的研究与实现开题报告

 2022-11-09 11:02:15

1. 研究目的与意义

随着信息技术的高速发展,信息技术与教育教学的结合已经越来越紧密,针对各类程序设计课程,就有统一的程序语言支撑平台来帮助教学,程序语言支撑平台为学生提供了一个综合统一在线练习平台,帮助学生提供编程能力,同时也帮助老师布置程序设计课程的作业和考试,这种利用信息技术实现教学自动化大大提高了教师批改作业和考试的效率。然而也正是因为信息技术的发展,从互联网上获取程序资源也越来越方便和快捷,有些学生可能直接从网上查找相关程序或者从同学那里直接复制程序提交给程序语言支撑平台。教师如果在手工检查每个程序,需要进行两两对比,这样会耗费大量的时间和精力。

从早在20世纪70年代开始,就有学者研究阻止大规模拷贝程序的技术和软件,出现了一批比较典型的程序源代码剽窃检测系统。从国内外的研究现状可以发现,国内在对程序相似度判别的研究做的非常少,大部分集中在对中文和语义的研究上。而国外虽然有很多成熟的系统,也发展结构化度量等成熟的技术,但都是基于文本转换和串匹配算法来实现代码相似度检测的。程序代码的抄袭跟普通文本抄袭还有不同,不同的代码可能实现同样的功能,有些聪明的抄袭者会使用一些技巧对代码进行修改,比如for循环编程while循环、添加一些中间变量,这样会降低串匹配算法的有效性。如何找到一种更合适的方法来检测更智能的抄袭是本文研究的意义。

2. 课题关键问题和重难点

【关键问题】

(1)代码上传到数据库:根据同学根据老师的要求把代码复制到表格中,然后提交,添加到数据库表中。

(2)预处理:包括冗余处理和分词,把代码中的注释,空格等去掉。

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

3. 国内外研究现状(文献综述)

【国外现状】

程序代码相似度检测的研究在国外起步相对较早。最早在20世纪70年代初就有学者研究检测程序代码相似度的技术和软件。1976年,purdue大学的ottenstein首次提出了应用属性计数法(attributecounting)获取相似度的方法analgorithmicapproachtothedetectionandpreventionofplagiarismoottenstein首次使用halstead程序度量方法进行程序相似度识别,他开发一个用来检测fortran程序相似度的系统。该系统直接统计m.halstead提出的可以衡量程序长度的四个基本的软件科学参数:n1,n2,n1,n2。ottenstein认为两个程序具有相同的四个属性值的可能性是非常小的,如果两个程序的四个属性都相同,就可以认为有相似的可能,使用者可以作进一步的调查。然而,实践证明,对于结构化程序设计语台所编制的程序来说,单纯的属性计数法抛弃了太多的程序结构信息,导致错误率太高。

1990年,komondoor和horwitz提出的使用程序切片技术进行检测。通过构造出程序的程序依赖图pdg(programdependencegraph),然后是用文本比较方法,找到相似重复的子句。1992年,b.s.baker通过将源代码中的函数名称、变量、常量、类型等各种标识符(identifier)转换为参数化特征(parameterizedsymbols)而提出了基于parameterizedmatching的重复代码检测工具dup,用于实现同一文件的比较。

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

4. 研究方案

该应用系统属于java应用软件,采用jsp页面作为前端与MySQL数据库进行交互,为学生代码作业等信息建立数据库,通过javaweb开发以下功能:代码上传到数据库、预处理(冗余处理和分词)、代码相似检测、相似度等级评估等。要求都从数据库获取相关信息提交到浏览器显示,并且把查询出来的结果可以转成.xls文件格式。

5. 工作计划

第一周:了解并熟悉课题和翻阅相关书籍

第二周:撰写开题报告和完成外文翻译。

第三周:进行课题总体规划和课题的详细设计。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版