复杂性

PDF
复杂性/2020年/文章
特殊的问题

复杂性问题由先进的计算机仿真技术在智能城市2020人

把这个特殊的问题

研究文章|开放获取

体积 2020年 |文章的ID 3279053 | https://doi.org/10.1155/2020/3279053

田田Wang Djoko Budi Santoso Kechao王,萧红, 自动分级复杂的多文件程序”,复杂性, 卷。2020年, 文章的ID3279053, 15 页面, 2020年 https://doi.org/10.1155/2020/3279053

自动分级复杂的多文件程序

客座编辑:Zhihan Lv
收到了 2020年3月31日
接受 2020年5月23日
发表 2020年6月13日

文摘

提出了一个自动DGRADER分级方法,处理复杂的多文件程序。动态和静态评分支持多文件程序分析。所以,它可以是一个优势来处理复杂的编程问题,需要一个以上的程序文件。动态分析利用目标文件链接器在编译链接复杂多文件的程序。静态分级模块包括以下步骤。首先,程序解析成抽象语法树,映射到抽象语法树数据地图。然后,预处理器的信息是用于连接外部资源称为linker-fusion算法在主程序通过复杂的多文件程序。接下来,执行标准化过程有问题的代码删除,删除未使用的函数,根据函数调用和函数序列排序。最后,程序匹配成功地解决结构方差问题,之前的标准化过程,通过简单的树匹配使用标签分类器。新奇的方法是处理复杂多文件程序分析与考虑模块化和灵活的分级大规模规划问题的复杂性。 The results have shown improvement in grading precision which gives reliable grading score delivered with intuitive system.

1。介绍

自动评分系统(AGS)程序可以自动确定学生成绩基于分数目标参数。AGS是需要受欢迎特别是计算机科学课程通常有成百上千的学生但只有少数员工(1]。编程作业这些课程是必要的改善技术编程和解决问题技能的学生。手工编程实践的评价方法是一项乏味而耗时的任务(2,3]。这种方法是不够的,因为第一编程课程往往是典型的复杂,准确全面地评估的正确性通过手动讲师评估(4]。在这里,AGS能成为一个关键的角色保持准确性和避免偏见的分级过程是基于客观评分规则。重要的是,系统必须提供即时反馈给学生,这样他们就可以从他们的错误中吸取教训(5),允许他们自学没有教练(6]。

随着信息技术的发展,越来越多的学校和组织试图实现包容性和公平教育通过在线学习,人机交互(7,8)学习,等。如今,各种AGS系统已经存在,被高等教育机构用来加强学习过程(9,10)或编程社区自我改进编程和解决问题的能力。这个问题“为什么这么多自动评估系统存在,为什么每年新建?“弹出讨论在这个研究领域11]。各种AGS的原因之一是,每个系统可能提供一些功能不提供由别人来区分他们的优势因素。

研究仍在继续,直到今天追求可靠的分级系统和解决存在的问题。在这里,列出了当前重大问题,作为一个样本。这给了最后一个想法产生可靠的分级和潜在的未来的工作。

根据表1,这些都是最近的知识问题选为主要目标的概述在这工作要做新奇的作品。


问题 方法 结果

代码差异普遍认为阻碍程序分析,因为不同的源代码必须被认为是相同的(12] 程序规范化使用系统依赖图(西班牙)中实现原型称为标准化者 成功的小型项目,而不是大型或复杂的程序

大多数现有的内联算法不适合代码分析和过程间分析可以分析调用上下文但非常昂贵,不能删除函数调用的变化(13] 基于程序依赖图的内联算法(pdg)使用简单的函数调用树(SCFT)应用于代码规范化 有限的处理程序与多个文件

处理多样性存在的解决方案相同的编程问题提供自动化的评估:即时反馈对学生和分级作业程序(14] 分区块通过使用控制流图(CFG)和程序行为与象征性执行而不是文本上下文或具体的值 解决了众多的解决问题但在实现复杂的大规模项目

首先,代码方差可以表示的最大因素影响静态程序分析的结果。在静态分析中,必须考虑这些问题产生可靠的和精确的分级评分。代码方差问题解决程序规范化机制来改变程序引入一个目的结构需要一个程序表示。程序规范化方法使用系统依赖图的程序表示。它需要改变代码或程序组件称为重构过程。作品的结果解决代码方差问题产生重大影响质量分级结果。

其次,国家目前的内联算法不适合代码分析。工作方法通过使用程序在程序依赖图,扩大和操作程序组件集中介绍了函数调用。这个问题实际上是相关代码差异和侧重于程序结构,由函数调用和函数序列的影响顺序编写的程序代码。结果给更适合的方法内联代码分析算法和改进机制,减少传统的步骤过程间分析。然而,现有的工作不能在几个文件处理功能。

第三,Arifi等人介绍了节目由一块分区如何使用控制流图和生成的象征性方差项目比较解决多重性的问题的解决方案(14]。这项工作可以解决众多的解决方案的问题,但在实现复杂的大规模项目。

这些研究对我们的工作打下良好的基础。然而,仍然需要进一步的工作来支持复杂的多文件程序。作为当前单一文件程序分析是一个比较直接和普遍,复杂的多文件程序分析优先处理大型复杂项目仍然没有解决或适用于最近的研究(15]。在本文中,我们提出一个新颖的工作要处理复杂的多文件程序分析。

2.1。复杂的多文件程序分析

AGS应该能够快速年级多重和复杂的计算机知识的任务,同时提供有意义的反馈,以刺激有效的学习过程(16]。专门为大,而复杂的编程任务,它仍然是不可能的对于大多数现有的系统来评估良好的编程解决方案。在这种情况下,仍然使用半自动的系统,这需要人类的评估者使用部分的结果系统的一部分来决定最终的评分(17]。它使人类更复杂的任务评估模块代码。当前所面临的这一问题将评分系统作为一个编程问题是更多的扩展和复杂预先编程课程或真正实践编程项目。它使自动分级系统不像一个自动系统遵循的主要原则,成为无效。

复杂的多文件程序分析可以是一个优势来处理复杂的编程和扩展项目,这需要一个以上的文件程序。正如之前提到的,这也使得模块化和灵活性等创建基于用户自定义库来支持核心程序文件没有改写成主程序。在这一特性,实现复杂的多文件程序分析使用他们的主要概念。

2.2。动态和静态的分级方法

动态分析使用黑盒概念,取决于输出结果。分析需要编译和运行程序和测试用例。期末成绩使用比较的结果产生输出预期的输出。然而,它也有致命的缺点,学生程序可能不会产生一个输出因为问题比如语法错误代码使程序在编译过程中失败(18]。这意味着该项目将在处理之前测试用例失败。因此,动态分析本身是不够完全给所有客观的分数当失败时,静态分析是必要的。

静态分析使用白盒概念没有编译和运行这个程序。它使用快速进步技术从编译器和基于语言工具。方法还使用代码分析知识来分析程序并给出了基于评分客观评分规则和参数。

然而,这两种方法都有自己的优势和劣势从静态分析需要更复杂的代码分析的过程。它需要预定义的规则和目标。相反,动态分析是一个更直接的方法,但不覆盖所有方面,尤其是当失败时进行评分。选择哪个方法更可行的动态和静态分析成为考虑的主题评分系统。根据动态和静态分析原理在前一节中,这两种方法都有其优势和劣势因素。表2总结他们的比较。


方法 概念 优势 缺点

动态 黑盒测试用例(输出) (我)对分级更直接 (我)需要编译过程和编译不成功时失败
(2)正确性检查 (2)安全问题
(3)受欢迎的用法 (3)不涵盖所有方面的评分
静态 白盒(代码分析)和比较正确的模型 (我)不需要编译过程 (我)计算复杂度
(2)能够分析代码质量 (2)需要设置的规则定义给可靠性分级
(3)没有提供正确性检查

在这里,知识总结,静态分析不能用于检查学生程序使用的正确性测试用例作为输入,产生一个输出。相反,传统的动态分析系统将完全无法执行分级和小姐在评估学生等重要方面检查代码质量(19]。这可能是原因为什么一些现有的自动分级系统结合这两种方法的最佳改善与静态技术的动态测试机制。通过相互组合的分析和提供即时反馈评分结果,它给用户额外的积极价值和分级系统的优势。

回到1992年,当Cellidh [20.]介绍了,它实际上是一个先锋评分系统,结合这两种方法通过引入语义错误检测。它用于检测无限循环问题动态评分至关重要。这一系统也可以利用静态验证包括结构、缩进,发现评论,可读性测量和动态分析的复杂性度量。

1997年,系统称为ASSYST [21]将这两种分析在实践中结合自动化分级的某些方面的入门Ada类,以及一个二年级的C编程课程。学生的评分分级基于正确性(实际输出与期望输出)相比,效率(运行时)在动态分析方面,检查程序源代码的风格,和静态分析其复杂性。在2000年,更多的系统采用这种组合方法,提供灵活的分析和追求潜在的分级系统,提供有意义的中间的反馈。

2006年,绒猴(22始建于马里兰大学。系统的主要目的是收集信息,开发学生的编程技能,做一个编程作业引发自我完善。独特的功能是允许一个完整的快照系统中关于学生进步,所以它可以被使用,详细分析了不同类型的测试用例(学生、公众、释放和分泌)和个人的支持讲师通过评论页面中的代码。

2008年,Web-CAT [23)提供可扩展性和灵活性为plugins-based架构利用最新的开发技术是使用Java servlet。它所提供的安全特性通过身份验证,错误的或危险的代码检测和可移植性。它也支持手动分级,让老师检查学生提交的程序。它允许讲师给评论,建议,和评分修改。支持的编程语言C或c++, Java,帕斯卡,Prolog等灵活性支持集成。成绩是基于正确性通过测试用例,项目的完整性和有效性。

2011年,eGrader [24)提供详细的反馈报告和允许学生们看到模型解决方案提供的讲师或所有者。这也给了具体的评价如果出现语法和语义错误。静态分析过程中实现系统由两部分组成,结构相似度和质量分析。结构相似性分析是基于程序的图形表示。使用软件质量分析是通过测量指标。

同年,一个叫做AutoLEP系统(25),作为一个自动分级系统工具,开发。它改进了传统的静态评分机制通过结合动态代码测试。方法是丰富的源代码分析与比较静态分析程序相比的相似度。动态分析是用来评估的正确性提交程序使用测试用例和比较预期的输出。静态分析不编译或执行程序。它使用模型程序来评估学生项目建设和如何关闭源代码是正确的解决方案模型项目提供的编程作业的讲师。最后的评分结果是通过计算每个粒度分析的总结。据报道,作品从以前的工作区分句法和语义分析。体系结构包括(1)客户端和学生使用的计算机,它执行静态分析和可以提供快速反馈;(2)测试服务器来执行动态分析; and (3) a main server which has to control the information of the other components to establish a grade.

2012年,一个名为Quimera的新自动分级系统(26)是构建基于web的应用程序。它能够评估程序源代码编写的C语言编程竞赛并提供一个完整的管理系统。它还允许创建和管理编程练习在竞争学习和编程竞赛环境。除了传统的动态方法,该系统提供了一个静态分析程序的源代码通过测量质量。因此,期末成绩不仅基于源代码的能力产生预期的输出也在它的质量和准确性。

最后,这些都是与灵活的代码自动评分工具存在的例子分析主要结合方法实现优势的分级评分系统。上市工具将用于比较分析。

3所示。概述

如前所述,我们的方法实现在我们的自动分级系统工具称为DGRADER作为基于web的在线自动编程判断平台。网络平台选择作为一个研究者关注网上评估系统显示积极影响学习效率(27]。也非常有效地分发材料和网上收集学生的作业(28]。我们的工具是由使用Spring模型-视图-控制器(MVC)框架基础弹簧工具套件(STS)的集成开发环境(IDE)用Java编程语言编写的。它使用几种技术集成系统网络公开课来支持。完整的系统将运行在主机服务器可以支持Apache Tomcat服务器。在这个应用程序中使用的数据库技术是MySQL数据库。

架构:图1显示了系统的三个街区。,user, application (front and back-end), and expanded core grading API block. Every core page contains a block of the modular page with defined web services and API. The system manages basic web features provided by Spring such as servlet, session handler, and its core features.

核心系统的分级应用程序编程接口(API)显示在右侧。它有几个API为特定目的和功能。查询参数定义的API是由使用和处理的API处理程序。核心分级api覆盖主要功能的DGRADER分级任务。第一层API是分配处理器。它的主要目的是处理原材料的作业评分任务之前和提取信息。提交API提交活动引发的连接器。它的作用是将信息转发到分级粒度分析api的分析过程。通过查询参数的信息用于目标系统中特定的分级。每个等级将详细的部分。 Finally, the grading activities will produce an output feedback which will be displayed in the interface to users.

3.1。主要特点

DGRADER的主要功能如下:(1)为编程提供在线学习环境管理课程。(2)支持灵活的粒度分析:动态和静态分析。灵活分级使老师或编程作业任务创建者变得更加灵活选择评价方法。评分方法可以根据编程任务的复杂性或它的目的。这也使得该系统能够覆盖分级评估任务的一个分级失败时。(3)支持复杂的多文件程序分析提交活动解决编程问题。(4)提供即时反馈和评分的结果分析编程分配问题。提供了分级分类和数值结果。

在静态分析包括反馈结果

(我)展示最终linked-fused程序源代码及其标准化的结果(2)AST导线与游客活动日志(3)提供可视化变换图比较最终linked-fused和标准化的程序结构(iv)展示功能等信息功能在程序列表,函数调用序列,和未使用的函数列表被标准化(v)最终项目的原始AST数据映射器和标准化的AST数据映射器的标准化程序(vi)提供根树可视化AST根数据映射器(七)提供实验AST可视化的标准化程序标准化的AST数据映射器(八)呈现AST简单的树匹配跟踪分析数据映射器(5)灵活的源程序上传或提交通过使用文件上传或直接使用集成CodeMirror文本编辑器。(6)支持课程体系管理类似于大规模网络公开课网络公开课()和学习管理系统。

4所示。多个程序文件分析

多个程序文件分析是一种新型的自动分级系统的特性。提供此功能的原因是现有系统通常支持单文件保持简单的分级分析过程。然而,如果一个编程问题更为复杂和用户需要更多的文件,这将会是一个限制因素。在其它情况下,用户可能希望使用一些图书馆不需要再写或编译器在动态分析不支持图书馆。为了支持多个程序文件提交,本节提出了实现方法包括文件模式,多个程序文件链接器在每个评分过程中,linker-fusion算法。

4.1。文件模型

模型实现处理多个文件程序提交。它区分为以下两部分:(1)预处理:源语句或预处理语句的开始部分# include <(图书馆)>,可以通过使用ASTPreprocessorStatement解析。用户可以使用一些外部文件来支持主要解决一个编程问题的文件。文件名的文件上传过程中应该是一样的,因为它将通过参数搜索有关。用户自定义库的可以写在这个定义语句# include“[external_sources_filename]”规则。双引号表示它的用户自定义库或外部来源。该系统将流程linker-fusion流程结合多个项目文件有关。(2)内容:这个部分包含源程序或其他的身体部分低于预处理语句。

4.2。多文件链接器在动态评分

动态分级使用处理复杂的多文件编译链接,如图2。作为一个例子连接复杂多文件程序C或c++编程语言,它使用GCC编译过程的链接过程。它使用两个输入:主要来源和外部源(多个文件路径)的路径。从静态的区别是主要来源的类型在这里将成为从ProcessBuilder。bin文件。系统中的链接过程是可能使用GCC命令通过使用参数后端程序为例:

> gcc-o[主要]。exe [multiple_files_path] - w (C复杂多文件程序)> g++ - o[主要]。exe [multiple_files_path] - w (c++复杂多文件的程序)

Multiple_files_path表达式用于main_source的外部资源文件的路径。命令将进程的主程序编译过程成为一个对象,并调用每一个外部源的连接过程。链接过程将继续分析,扩大预处理器,使每一个外部来源成为目标对象- o命令的可执行文件。- w命令用于警告错误反馈预处理器等无关的文件未找到使编译过程失败。

4.3。多文件链接器在静态评分

这个过程仍然有两个输入:主要来源(原始源)和外部源路径的多个文件已经准备过程中生成的。两个输入将联系和融合在接下来的过程,如图3链接器和融合。静态分级使用源程序linker-fusion算法在算法1。最终输出是一个融合的程序的源代码。融合源代码不会通过编译处理,但处理代码分析使用AST解析元素的程序在主程序中使用的外部来源。

变量:
ps []:预处理语句pfname []:预处理程序文件名
fpath:元数据在数据库文件路径fmp:最后的多路径字符串
西文:外部源融合
输入:
女士:程序的主要来源
议员[]:数据库的多路径分配id
输出:最后融合源fs
开始:
(1) 第一步:分析预处理器女士使用AST
(2) 如果女士包含用户定义的自定义库
(3) 添加到ps []
(4) 步骤2:处理ps []女士得到pfname []
(5) 如果ps []大小> 0
(6) = 1,ps []大小
(7) 正则表达式⟵“¥”([^¥”) )¥”“
(8) patternMatch(正则表达式)= = true
(9) 添加到pfname[我]
(10) 步骤3:使用链接外部来源议员[]得到pfname []
(11) = 1,议员[]大小
(12) j= 1,pfname []大小
(13) 如果(议员[我]包含pfname [j])fpath议员[我]
(14) 如果(j= = 1)fmpfmpconcat (议员[我])
(15) 其他的fmpfmp concat(议员[我]concat (,)
(16) 步骤4:融合西文使用fmpfs
(17) fs女士
(18) 如果fmp长度> 0
(19) = 1,fmp长度
(20) 西文searchContent(fmp( 女士))
(21) fsfsconcat ( 西文)
(22) 结束

该算法分为四个步骤:第一步:获取预处理语句设置ps的主要源程序由Eclipse CDT / JDT API特性可以使用getAllPreprocessorStatements生成AST的主要来源()。步骤2:处理预处理语句集合ps。每一个ps发现利用patternMatch过滤()来检测用户自定义库定义为以下格式:#【TYPE_OF_LANGUAGE_IMPORT_WAY(进口/包括)]<空间>”(文件名)。“使用正则表达式来解析预处理程序文件名pfname集。步骤3:链接过程通过分析数据库文件路径mp。每一个pfname发现国会议员将生成fmp最终连接字符串查询每一个外部源用于程序的主要来源。步骤4:过程的最后一步是让融合源代码fs。searchContent()函数将分析代码通过使用文本搜索(例如,. dll, . h)或AST(源代码,可以解析)文件的内容,用∈西文,使用的程序的主要来源。这些内容融合到一个源文件。

4.4。动态评分

动态评分方法涵盖了多道程序文件提交解决一个编程任务。主要的触发源文件在这里说作为一个学生项目,几个预处理语句用于直接外部资源文件。第一阶段是计划准备,涉及项目施工过程准备。bin文件C / c++和java类或其他语言将在未来的更新支持。它还处理外部源定位器基于预处理语句的连接过程。链接和编译任务示例C和c++程序使用GNU GCC编译器产生可执行文件。exe关联和最终的计划。下一个过程是使用可执行文件运行DGRADER主机与测试用例的输入数据。每个测试用例的运行过程产生一个输出。txt文件。它将与测试用例的预期输出数据库分级标准。评分过程后将实现实际产出的比较价值和预期输出。最后,最终会产生动态评分分数。

4.5。静态的分级

静态分级过程的输入包括学生程序与外部来源(如果有的话)和模型项目。一个学生项目及其外部源将完成项目linker-fusion之前已经解释了。在这种情况下,两个融合项目和模型项目的学生将会被解析并出示程序AST。下一个过程将对两个项目进行重构。在我们的首选方法,模型程序之前已经标准化的课程作业的创造者在注册菜单保存分析过程的总时间。只有学生计划将在程序重构作为标准化规则匹配。这种标准化作为避免一些差异问题的“一个规则”将匹配过程中影响精度的结果。在这个过程中,双方可以使用程序相比,使用简单修改AST树匹配的模式匹配算法。标准化和程序匹配的任务将在部分分解4.5.1

4.5.1。程序标准化

所示的程序标准化算法算法2。这是一个本质工作解决程序匹配的代码项目差异等问题。

变量:
ASTdata[]:程序AST数据地图
fASTdata[]:最终重构程序AST数据地图
输入:
过去:程序AST
某人[]:语法
输出:最后的AST fsAST标准化程序
开始:
(1) 步骤1:遍历和访问过去ASTVisitor类,做第2步
(2) 步骤2:处理为AST AST节点数据映射器得到ASTdata []
(3) 指数= 0
(4) 对于每一个AST节点
(5) 初始化ASTdata[]键(见细节表3)
(6) = AST节点= AST节点、当前标签标记
(7) 如果当前标签=函数语句或表达式
(8) 语法= nodeParser(节点)
(9) 如果语法不是存在于某人[]/ /语法分类器
(10) 内部用户函数节点
(11) 其他的
(12) 内部标准函数节点
(13) 如果当前标签≠之前的标签
(14) 退出没有=指数(退出AST节点分支树)
(15) 基于节点和节点信息=国旗标签信息,过程没有=指数
(16) 指数+ +
(17) 添加ASTdata(指数)
(18) 第三步:处理AST数据重构得到最终ASTdata []
(19) fASTdata [] = RefactoringCore (ASTdata[我])
(20) 步骤4:重建最终来源fASTdata fsAST []
(21) = 0到fASTdata[]的大小
(22) fsAST = fsAST添加节点(fASTdata[我])
(23) 结束

它始于项目AST和继续遍历,并使用ASTVisitor访问树的过程。在这里,介绍AST数据映射器的方法而不是直接使用原始程序树或AST操作程序,重构过程中需要缓解数据表示和重建项目树的过程。AST数据映射器存储从ASTVisitor AST信息通过使用地图索引键(ASTdata关键写在表3)。映射过程后,它继续重构过程通过调用RefactoringCore()来修改或改变程序通过使用这种数据映射。此过程将创建决赛fASTdata。它将用于重建最后标准化程序源代码和程序树表示的反馈。


关键 描述

指数 用于索引的访问和遍历序列在使用过程ASTVisitor
节点 语法访问节点
父节点 父节点来表示它的父
子节点 节点的孩子表示其孩子节点解析器
国旗 表示节点类型
(我)。根节点没有父母和孩子或其条目,它也可以显示程序函数的开始)
(2)父母(父母和孩子节点)。
(3)。孩子(节点只有父母,或它的叶子节点)
语法分类器 表明语法来区分是否用户定义的语法或标准编程语言的语法;通过比较标准的编程语言的语法和学习数据库提供的数据
过程 指示流程入口(起动过程)和出口数量的节点

程序重构由以下步骤组成。步骤1:删除有问题的代码,比如语法错误,表达错误,和任何其他标签的问题ASTdata通过问题粘结剂加工而遍历使用AST和映射到程序ASTdata映射器。粘结剂的问题利用解析器检测语法问题。作为一个例子,遍历C和c++程序使用Eclipse CDTASTVisitor CPPASTProblem。第二步:识别和删除未使用的功能ASTdata。这个任务删除其相关元素的使用起始-结束索引节点已映射ASTdata。第三步:重新排序函数调用序列。在这种情况下,主要功能将成为第一个函数调用序列规则的程序。这个过程继续检测通过创建其他调用函数ASTroot数据映射器只有目标根节点的类型与根标记过滤器或分类器。节点是根节点根据国旗根详细表3。转换的结果,可以看到从原始AST转换成根AST。第四步:最后一步是生产最后一个标准化的程序ASTroot。

4.5.2。项目匹配

项目匹配过程需要两个项目树作为输入的学生项目和模型项目。两个程序都已经标准化的自动系统在前面的过程来达到相同的结构作为一个规则政策程序匹配的过程。

在程序匹配、AST简单的树匹配选择比较计划AST利用动态规划计算最大node-pair树相比项目之间语义相似度(29日]。然而,该算法开销内存的问题是代码更改代码时方差都发生在匹配过程使方差相比项目统一。在结果还说明测试一些代码改变活动失败。这将影响匹配的相似性准确性分数。最后,我们改善了AST简单的树匹配算法的方法,如算法所示3

输入:
答:标准化学生程序AST
B:我标准化模型程序AST
输出:相似计算节点
开始:
(1) 步骤1:GenerateMap (A, B)
(2) 一套⟶基于地图信息树树的关键
(3) B组⟶基于地图信息树B树的关键
(4) 全球TagMap⟵
(5) 全球GlobalNodeMap⟵
(6) 每一个根节点r
(7)
(8) 步骤2:SimilarityMatching (A, B)
(9) ns, cp⟵0
(10) 当地LocalNodeMap⟵
(11) 每个(阳极,BNode) (A, B)
(12) 如果(阳极BNode) = (ATag ANodeNo, BTag BNodeNo)
(13) TagMap⟵TagMap {ATag BTag}
(14) LocalNodeMap⟵LocalNodeMap {ANodeNo BNodeNo}
(15) 其他的如果(阳极BNode) = (AChildNo: =一个op ' BChildNo: =bop b”)
(16) SimilarityMatching (a, b)
(17) SimilarityMatching (a, b)
(18) 如果当地isLocal (a)和(b)和TagMap (a, b)是相等的
(19) LocalNodeMap⟵LocalNodeMap {一个 b}
(20) ns + 1, cp + 1
(21) 其他的如果
(22) GlobalNodeMap⟵GlobalNodeMap {一个 b}
(23) cp + 1
(24) 其他的如果
(25) 其他破坏
(26) 结束

修改算法使用AST标签分类器概念的优势可以实现的方法程序AST与任何解析器遍历。这将解决开销和方差的问题。

改进的匹配算法的程序有两个步骤:步骤1:将映射到两个项目ASTMap其中包含关键信息。它使用根节点r已下令在标准化过程遵循规则。标签和节点作为匹配参数。TagMap用于利用AST标签分类器在标签匹配比较。GlobalNodeMapLocalNodeMap用于节点元素也会考虑如果遇到相同的标签相同的根节点的位置。步骤2:在项目树都映射到ASTMap,流程将调用SimilarityMatching ()。每个索引数据地图将会比较和配对。积累在全球TagMap和比较GlobalNodelMapLocalNodeMap每个索引数据ASTMap。下一个过程是遇到的标签相比,它对并添加到TagMap在标签匹配的任务。LocalNodeMap用于检测相同节点的节点匹配。正如之前提到的,只要遵循相同的标签的节点和位置,它将被视为平等的否则它将添加模式找到匹配的目标调用递归SimilarityMatching()调用。为每个匹配节点相同的位置在当地A和B将增加节点相似性和计数模式。总积累ns将相比最大节点覆盖的项目。最后,可以计算最后得分基于多少最大节点所覆盖ns在评分过程中。

5。实验分析

5.1。动态评分

在动态分级、测试行为与表2的任务4。并发进程是用来测量系统能力处理并发分级过程当学生完成他们的同时提交。


任务名称 的主要目标 不。的测试用例 并发进程

任务1 根据数据计算数字 计算nn数据 10 7
任务2 反向斐波纳契数 打印n扭转了斐波纳契数 15 10

所有提交的结果见表5产生评分反馈成功或错误结果的解释与分数。反馈显示与真正的成功或失败,每个测试用例的预期输出。在这里,测试活动还考虑平均执行时间衡量系统所需的时间完成这项工作。最后,它成功实现动态评分机制。并发进程也可以由自动排队过程和多线程处理。


结果
评分的反馈 平均执行时间(女士)

任务1 是的 20.
任务2 是的 136年

5.2。静态的分级

在静态的分级,编程作业任务如表所示6。任务1和任务2重用在这个测试DGRADER提供灵活性分级评价方法改变通过更新任务配置。老师只是需要添加任务模型项目材料。回到测试重点,每个示例解决方案都有其行为和条件根据表7行代码(LOC)等功能,最大的节点数(由遍历项目生成AST)和未使用的节点数(代码节点不使用的程序)。


任务名称 的主要目标

任务1 计算数据(数据) 计算nn数据
任务2 反向斐波纳契数 打印n扭转了斐波纳契数
任务3 硬币改变 考虑问题的变化n分使用最少数量的硬币
Task 4 双调的之旅 输入:n点: ,…, 飞机上有不同x坐标;dij:任何一对点之间的距离( , ), j;输出:双调的旅游与最小距离


疯狂的 函数 马克斯节点 未使用的节点 标准化
转换节点 程序效率提高率(%)

解决方案1 12 1 40 6 38 1。9
解决方案2 48 7 94年 43 49 52.128
解决方案3 55 9 182年 24 158年 13.19
解决方案4 120年 14 424年 35 389年 8.25

标准化数据转换结果的最大数目的节点数量的转换节点自动变换程序标准化的系统。转换节点的数量意味着标准化程序的效率。程序效率提高率可以通过比较原始的最大数量的计算节点和节点数量的变换。例如,方案2数据显示显著地提高程序效率为52.128%。

基于表8测试条件,结果显示在表中9。所有成功解决方案提交给评分反馈和结果。预期的结果意味着每个方差宽容的实现完全100%的关口,因为它使用标签的AST分类器。它使每一个变异发生在程序解决或容忍只要真实情况从标签和节点匹配程序匹配。测试通过手动评估产生的期望。最后,静态分级方法中实现DGRADER可以找到可靠的,因为它是良好的精度等级评分和手动也证明了评估。


任务1 任务2 任务3 Task 4

不。模型项目 2 2 5 8
并发进程 4 3 7 4


结果
评分的反馈 分析时间(女士) 预期的结果

任务1 是的 88年 是的
任务2 是的 90年 是的
任务3 是的 1022年 是的
Task 4 是的 678年 是的

5.3。可靠性和分级精度测试

这个测试是集中在静态的最后评分的分数等级的可靠性评估。在这里,作业“反向斐波纳契数”在前面的样本选择。方法使用1与4模型解决方案提交,看到其比较(选择)提供的任务。解决方案和模型程序如图4。解决方案项目选择方案2在前面的测试,及其条件表中可以看到7和模型条件列在表中10


疯狂的 函数 马克斯节点 方差
变量 函数 控制结构

模型1 48 3 81年 2 2 1
模型2 48 3 64年 1 2 1
模型3 25 2 98年 1 1 2
模型4 22 1 105年 4 0 2

在这里,测试活动假说模型1和模型2将在最终结果给评分满分。模型都是几乎相同的项目解决方案以及其算法递归函数工作用于印刷了斐波那契数。目的是检查逻辑上类似的项目手册的可靠性和精度评价。模型3程序使用数组的方法,实际上是. cpp和模型4使用更多的变量来保存值产生逆转斐波纳契数没有递归函数调用。他们采用不同的算法对学生解决方案。

它从表一览无遗11类似的解决模型的节点1和2有100%最终覆盖。正如之前提到的,模型1和模型2不完全相同的解决方案。成功完美的报道通过方差宽容容忍差异问题程序匹配过程的代码。方差类型分为3类是使用基于方差问题在表9列出代码1。在这里,该部门根据他们的相关影响变量(名字)列出的问题,函数(调用或调用,表情,命名),和控制结构(复合语句、冗余、结构秩序,代码格式,和算法)。


相似的节点 马克斯节点 最后的覆盖率(%) 方差宽容 总模式匹配过程
变量(%) 函数(%) 控制-结构(%)

模型1 81年 81年 One hundred. - - - - - - One hundred. One hundred. 394年
模型2 64年 64年 One hundred. One hundred. One hundred. One hundred. 387年
模型3 13 98年 13日,26日 One hundred. One hundred. < 10 137年
模型4 14 105年 13日,33 One hundred. One hundred. < 20 159年
总模式 1077年
精确匹配 > 98

分析与模型1开始,几乎是相同的,但是程序解决方案代码结构数据{intx ,inty }。增加匹配的模式,因为它试图找到与结束节点首先相关代码找不到任何可能的节点相关的代码。仍然在这里,匹配处理,忽略了宽容的控制结构的代码分类影响复合语句和结构秩序。函数命名时,也会出现方差print()和fib()模型与printReversedFib()和f()解决方案,成功地容忍,因为它将被认为是相同的。留给了剩下的代码是完全相同的解决方案,这意味着相似项目解决方案和模型的节点覆盖1是完美的。它涵盖81个节点模型1的程序有100%(容忍所有方差)在最后的报道。

在模型2中,存在变量方差的节点x这是节点n在程序的解决方案。在匹配过程中,发现x对应节点n下面的代码。匹配的过程被认为是在这个节点是一样的预期,算法使用AST节点标签分类器。此外,结构方差发生的宣言x在main()项目解决方案相比,这是全局变量。匹配的过程也是成功的容忍这个方差和64节点按预期保险完全相似。

然而,模型3和4预期最终覆盖率较低,因为这两个是完全不同的。的主要因素是因为模型都有杰出的控制结构等算法,代码格式,在这个类别分类及相关因素。如前所述模型3 . cpp但系统仍能够比较c程序的解决方案,这个模型是一个加分点。模型3和4用不同的方法解决方案,使用递归方法。它影响匹配的过程,让更少的节点覆盖和宽容的百分比。问题可以通过提供更多的解决分配问题的模板程序的系统。最后,最终评分分数仍然给正确的分数。

5.4。案例研究类似的项目进行比较分析

列在表12参考这一目标的主要特征参数比较。从上面的参数,我们比较DGRADER作为我们的基于网络的自动评分系统与其他类似的项目提供灵活的粒度分析。


方法 主要特点
支持的语言 复杂的多文件分析 平台 工作模式 评分标准
动态 静态

Cellidh Java, c++ 没有 网络 独立、竞争学习 代码的正确性 语义错误检测,验证
ASSYST C / c++ 没有 网络 独立、竞争学习 代码的正确性,运行时检查 代码分析、复杂性矩阵
绒猴 多语言 没有 网络 独立的 代码的正确性 代码分析(模型)
Web-CAT 多语言 没有 Web (Java) 独立的,插件 代码正确性、完整性 有效性检查(模型)
eGrader Java 没有 桌面(Java) 独立的 代码的正确性 结构匹配(模型)
AutoLEP C / c++ 没有 桌面(c#) 独立的 代码的正确性 相似性匹配(模型)
Quimera C / c++ 没有 网络 独立、竞争学习 代码的正确性 代码质量和准确性(模型)
DGRADER C / c++、Java 是的 Web (Java) 独立的,API服务,竞争学习 代码的正确性,运行时检查 AST相似性匹配(模型)

第一个关键元素进行比较分析是编程语言的支持。狨猴和Web-CAT强劲在这方面支持多语言。

第二个是复杂的多文件程序分析功能。只有DGRADER提供复杂的多文件程序分析用户在多个模块解决一个编程问题,图书馆,或文件。它提高了灵活性一个有效的方法来解决复杂问题没有重写程序如果一些图书馆存在。

在平台的角度来看,网络平台已经成为受欢迎的考虑而不是成为当地AutoLEP和eGrader等工具。如今,一切都可以在线访问容易通过使用浏览器或移动设备增加了灵活性的增加价值的可移植性。

第二方面的工作模式,常用工具仅作为独立工作或特定用法。Web-CAT为它们与其它平台的集成提供了插件需要安装。只有DGRADER可以独立或与其他系统集成,提供其API服务潜力普遍使用。它还与用户提供网络公开课与课程管理和编程竞赛平台功能支持竞争学习。Cellidh、ASSYST Quimera也支持这种竞争学习。它所增加的用户系统中的内容可以成为用户基于内容。

在分级指标,而工具提供灵活的粒度分析,动态和静态。然而,每种方法所列是不同的。在动态的方法,它可以通用,所有的方法都是测试代码正确性通过使用测试用例的输入和输出与期望的输出。在静态的,有各种方法使用代码分析。DGRADER使用AST相似性匹配模型项目。该方法与现有模型是普遍使用的工具。这个模型更实用,更容易被测量,但需要更多的模型来提高精度和分级精度。

列在表13请参考这个目标比较的评分特征参数。DGRADER附带各种即时反馈和评分结果分析。即时反馈包括错误解释如果任何错误发生在特殊的动态评分。在静态分级评估,目前反馈如linked-fused程序源代码,标准化的程序源码,映射到AST数据地图用户可以读取的结果分析。还提出了转换图结构变化自动标准化过程,函数调用序列,AST的可视化程序,和匹配跟踪分析。


方法 评分功能
分类分级 数值评分 反馈 排名 抄袭检测
错误 结果分析

Cellidh 没有 没有 是的 是的 是的 是的
ASSYST 是的 没有 是的 是的 是的 是的
绒猴 没有 没有 没有 是的 没有 没有
Web-CAT 没有 没有 详细的(强调) 代码风格(强调) 没有 没有
eGrader 没有 是的 是的 程序结构 没有 没有
AutoLEP 没有 是的 详细(报告) 语义分析 没有 没有
Quimera 没有 是的 是的 是的 没有 没有
DGRADER 是的 是的 详细(报告) 标准化、AST映射变换图,函数调用,AST可视化和匹配跟踪分析(语义分析) 是的 可配置的

最终得分提供号码范围0 - 100和分类得分与恒星系统更多的互动。用户排名也提供了刺激的使用和改进用户编程和解决问题的技能通过奖励系统和水平。剽窃检测功能也被认为是在这个进球的特性将影响最终的评分分数。在这些工具相比,只有Cellidh ASSYST,工具DGRADER提供这个特性。编程作业的创造者也可以使剽窃检测功能。

最后,所有的比较分析可以测量每个工具相比的改进。回到DGRADER,我们作为上市的工具目前有限的编程语言。然而,API服务将是未来发展潜力的跨平台的集成意味着更多的支持的编程语言和其他特性。DGRADER还提供了有意义的和新奇复杂的多文件程序分析和信息反馈功能。

6。结论

在本文中,我们提出了一种新的方法来处理复杂的多文件程序与灵活的静态和动态评分。它实际上实现一个名为DGRADER的自动分级系统平台。为了处理多文件程序,动态分析过程需要一个优势的编译器在编译链接过程复杂的多文件的程序。静态分析过程使用了复杂的多文件程序linker-fusion解析算法,预处理程序AST找到其他外部来源。成功的联系和融合元素在主程序中使用的外部资源。在代码静态分析,方差匹配得到解决的问题计划AST简单的树匹配的改进算法。AST标签标识符创建宽容的因素的差异相比,节点的解决方案和模型项目。程序标准化也促成了转换程序遵循程序匹配的规则。结果显示良好的准确性是预期的最终分级精度的情况下足够的模型项目。

数据可用性

使用的数据来支持本研究的结果包括在本文中。

的利益冲突

作者宣称没有利益冲突。

确认

这项工作得到了国家自然科学基金(批准号61977020和61977020),黑龙江省自然科学基金(批准号LH2019F046),哈尔滨科技创新人才的研究项目(批准号2016 raqxj013),哈尔滨大学的博士研究基金(批准号HUDF2019101)。

引用

  1. 李,x,巴塞特,t·谢和n•蒂尔曼,“测量代码行为相似的编程和软件工程教育,”诉讼的ACM 38 IEEE软件工程国际会议上的伙伴奥斯汀,页501 - 510年,TX,美国,2016年5月。视图:出版商的网站|谷歌学术搜索
  2. s . Gulwani i Radiček, f . Zuleger”自动聚类和项目维修入门编程作业,”美国第39 ACM SIGPLAN会议上编程语言设计和实现(PLDI 2018),页465 - 480,纽约,纽约,美国,2018年6月。视图:出版商的网站|谷歌学术搜索
  3. 苏j . t . Wang, x, c·李和y太极,“自动调试基于高效突变分析的操作失误,“多媒体工具和应用程序,卷78,不。21日,第29898 - 29881页,2019年。视图:出版商的网站|谷歌学术搜索
  4. d·g·凯,t .猛冲,p .艾萨克森,k . a .冒烟,“自动分级帮助学生计划,”ACM SIGCSE公告,26卷,不。1,第382 - 381页,1994。视图:出版商的网站|谷歌学术搜索
  5. p·李和l . Toderick”自动评分和反馈系统,电子学习在信息技术教育”《美国卫生工程师协会(ASSE)年度会议和博览会新兴计算和信息技术,页1 - 11,西雅图,华盛顿,2015年6月。视图:出版商的网站|谷歌学术搜索
  6. c·威尔科克斯”,测试学生项目的自动分级策略,”计算科学学报》第47届ACM技术研讨会Education-SIGCSE 16孟菲斯,页437 - 442年,TN,美国,2016年3月。视图:出版商的网站|谷歌学术搜索
  7. j .气江g, g . Li y太阳,和b .道,“基于表面EMG手势识别、智能人机交互”IEEE访问7卷,第61387 - 61378页,2019年。视图:出版商的网站|谷歌学术搜索
  8. l . g . Li张、y太阳和j .香港”对面肌手:物联网传感器和触觉反馈应用程序中,“多媒体工具和应用程序,卷78,不。21日,第29782 - 29765页,2019年。视图:出版商的网站|谷歌学术搜索
  9. g . Conole和b·沃伯顿”回顾计算机辅助评估。”ALT-J,13卷,不。1,17-31,2005页。视图:出版商的网站|谷歌学术搜索
  10. k . m . Ala-Mutka”自动评估方法编程作业的调查,“计算机科学教育,15卷,不。2、83 - 102年,2005页。视图:出版商的网站|谷歌学术搜索
  11. p . Ilhantola t . Ahoniemi诉Karavirta, o . Seppala”审查最近的系统自动编程的评估,评估”学报第十Koli称Research-Koli计算机教育国际会议上称“10Koli,页86 - 93年,芬兰,2010年10月。视图:出版商的网站|谷歌学术搜索
  12. 苏x t . Wang, p .妈,“项目规范化删除代码变化,”学报2008年IEEE计算机科学和软件工程国际会议湖北,页306 - 309年,中国,2008年12月。视图:出版商的网站|谷歌学术搜索
  13. 苏x t . Wang, p .妈,“函数内联程序分析的算法,”学报2009年IEEE国际会议上计算智能和软件工程,页1 - 4,武汉,中国,2009年12月。视图:出版商的网站|谷歌学术搜索
  14. s . m . Arifi, a .扎西·r·Benabbou“基于语义相似度的评价C程序通过使用符号执行,”《2016年IEEE全球工程教育会议,页826 - 833,阿布扎比,阿拉伯联合酋长国、2016年4月。视图:出版商的网站|谷歌学术搜索
  15. a . n . Jacobvitz公元希尔顿,d·j·索林“Multi-program基准的定义,”《2015年IEEE国际研讨会上的系统和软件性能分析(ISPASS),页72 - 82年,费城,宾夕法尼亚州,美国,2015年3月。视图:出版商的网站|谷歌学术搜索
  16. k·马修斯,t . Janicki l .他和l·帕特森”实现自动评分系统的自适应学习组件来影响学生的反馈和响应时间,“信息系统教育杂志》上,23卷,不。1,第83 - 71页,2012。视图:谷歌学术搜索
  17. m . Pozenel l·福斯特,诉Mahnic”引入自动化评估大学编程课程的作业”学报2015年第38国际公约信息和通信技术、电子和微电子(MIPRO)奥,页761 - 766年,克罗地亚,2015年5月。视图:出版商的网站|谷歌学术搜索
  18. 苏x h . t . Wang, p . j .马“语义相似性分级学生项目,”信息软件技术卷,49号2,17-31,2007页。视图:出版商的网站|谷歌学术搜索
  19. d .丰特·d·克鲁斯,A . l . Gancarski p . r .戴安娜,”一个灵活的动态系统自动评分的编程练习,”第二届研讨会上语言,应用程序和技术Dagstuhl,页129 - 144年,德国,2013年。视图:谷歌学术搜索
  20. s . d .本福德·e·k·伯克,e . Foxley和c·a·希金斯,“同乐会系统自动评分的学生编程课程,”美国第33在东南地区年会ACM-SE 33美国克莱姆森,SC, 1995年3月。视图:出版商的网站|谷歌学术搜索
  21. d·杰克逊和m .开创“分级使用ASSYST学生项目,”《28日SIGCSE技术计算机科学教育研讨会上,页335 - 339,1997年2月,美国圣何塞。视图:出版商的网站|谷歌学术搜索
  22. j . Spacco d . Hovemeyer w·普f . Emad j·k·霍林,和n . Padua-Perez“绒猴的经历。”ACM SIGCSE公告,38卷,不。3 - 17,2006页。视图:出版商的网站|谷歌学术搜索
  23. s·h·爱德华兹和m·a·佩雷斯·奎诺恩斯”Web-CAT。”ACM SIGCSE公告,40卷,不。3,p。328年,2008年。视图:出版商的网站|谷歌学术搜索
  24. f . Alshamsi和a . Elnagar”一个介绍性的Java程序的自动评估和报告工具,”学报2011年信息技术创新国际会议(IIT),页324 - 329,阿布扎比,阿拉伯联合酋长国、2011年4月。视图:出版商的网站|谷歌学术搜索
  25. 苏x t . Wang, p .妈,y . Wang和k·王,“Ability-training-oriented自动化编程入门课程的评估,”计算机与教育卷,56号1,第226 - 220页,2011。视图:出版商的网站|谷歌学术搜索
  26. d .丰特诉博厄斯,d·克鲁斯,a . l . Gancarski和p·r·戴安娜“使用quimera程序分析和评估,”ICEIS学报》弗罗茨瓦夫,页209 - 219年,波兰,2012年6月。视图:谷歌学术搜索
  27. 郭宏源。王”,基于网络的动态评估:以评估为教学和学习策略对提高学生的学习效率,”计算机与教育,54卷,不。4、1157 - 1166年,2010页。视图:出版商的网站|谷歌学术搜索
  28. d·穆尼奥斯德拉佩纳f . Gomez-Estern, s . Dormido”一个新的网络工具进行自动评估在控制系统和编程中,“计算机与教育卷,59号2、535 - 550年,2012页。视图:出版商的网站|谷歌学术搜索
  29. 即Neamtiu、j·s·福斯特和m·希克斯”理解源代码使用抽象语法树匹配的进化,”《2005年国际研讨会上挖掘软件存储库,页1 - 5,圣路易斯,密苏里州,美国,2005年5月。视图:出版商的网站|谷歌学术搜索

版权©2020王天天et al。这是一个开放分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。


更多相关文章

PDF 下载引用 引用
下载其他格式更多的
订单打印副本订单
的观点388年
下载334年
引用

相关文章

文章奖:2020年杰出的研究贡献,选择由我们的首席编辑。获奖的文章阅读