首页> 中国专利> 基于本体的代码片段标注与重用系统

基于本体的代码片段标注与重用系统

摘要

本发明涉及一种基于本体的代码片段标注与重用系统,适用于高效软件集成开发环境的构建。该系统包括代码片段本体标注模型,代码片段本体标注模块,本体标注模型学习模块,服务器端管理模块,客户端管理模块。其中,代码片段标注模型用于对新提交的代码片段进行自动标注;本体标注模型学习模块学习并生成代码片段本体标注模型;客户端管理模块完成代码片段的采集、提交、查询功能;服务器端管理模块负责用户管理,接收客户端提交的代码片段并存入数据库中;代码片段本体标注模块负责对代码进行标注和重用。本发明实现了代码片段在不同的程序设计人员之间,以及不同的代码片段管理系统之间的相互理解、相互操作和相互共享。

著录项

  • 公开/公告号CN104881285A

    专利类型发明专利

  • 公开/公告日2015-09-02

    原文格式PDF

  • 申请/专利权人 北京理工大学;

    申请/专利号CN201510272310.3

  • 申请日2015-05-25

  • 分类号

  • 代理机构

  • 代理人

  • 地址 100081 北京市海淀区中关村南大街5号北京理工大学

  • 入库时间 2023-12-18 10:45:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-15

    未缴年费专利权终止 IPC(主分类):G06F8/73 授权公告日:20180420 终止日期:20190525 申请日:20150525

    专利权的终止

  • 2018-04-20

    授权

    授权

  • 2015-09-30

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20150525

    实质审查的生效

  • 2015-09-02

    公开

    公开

说明书

技术领域

本发明涉及一种基于本体的代码片段标注与重用系统,属于计算机软件设计与实现领域,适用于高效软件集成开发环境的构建。

背景技术

代码片段是指使用某种程序设计语言编写的一小段程序,通常包含1行到上百行代码,其存在的意义在于:(1)一个代码片段给出了某个接口API的使用方法;(2)实现了某个特定的功能,例如堆排序或者基数排序;(3)是使用某种程序设计语言编程时频繁输入的一个代码模板或者语句组合。程序设计人员在软件设计与开发过程中,预期某些代码片段会重复编写,通常会通过文本文件、博客系统、软件集成开发环境或者代码片段管理系统保存大量的代码片段。在后续的程序设计和开发过程中,通过查找、拷贝和修改等步骤重用保存的代码片段以提高程序设计与开发的效率。

保存在文本文件中的代码片段不利于代码片段的检索和重用,且由于时间和空间的限制,程序设计人员需要在多台计算机之间手动完成代码片段数据的同步工作。此外,在上一个项目实施过程中积累的代码片段,由于记忆消退和查找困难等原因,很难在下一个项目中得到重用。发布在博客系统中的代码片段不受时间和空间的限制,但是由于博客系统中发布的通常是非结构化的文本,且文本中包含了大量的自然语言描述,不利于集中检索,程序设计人员只能使用通用搜索引擎进行搜索,并逐条阅读和过滤,费时费力,与代码片段快速重用的基本思想不符。

集成开发环境(例如Eclipse和Visual Studio)或者专用的代码片段管理系统(例如github的gist子系统,CSDN的code子系统)能够方便的实现代码片段的管理和搜索,但是对于代码片段的高效复用仍然存在较大的障碍:部分代码片段是程序设计人员在开发过程中匆忙提交的,因此代码片段标题和相应的功能描述非常简短,部分代码片段在提交时并没有给出相应的功能和用途描述,因此非常不利于代码片段的分享和重用。部分博客系统或者代码片段管理系统提供了标签标记每个代码片段的功能和用途,但是这些标签通常是系统根据已有代码片段的描述自动抽取,或者由用户在提交代码片段时自行添加的,因此没有统一的标准,不仅不利于代码片段的共享,而且无法在多个代码片段管理系统之间高效实现代码片段的异构集成和联合检索。

发明内容

本发明的是为了克服已有代码片段管理系统存在的缺陷,提出一种基于本体的代码片段标注与重用系统,利用程序设计领域专用本体,对代码片段进行标注,通过代码片段的本体标签实现代码片段标注的标准化,为本体共享和重用检索奠定良好基础。

所述代码片段包括但不限于以下属性:标题、描述、开发语言、源代码、本体标签和权限。其中标题为代码片段的名称;描述是代码片段功能和用途的文本描述;开发语言是编写代码片段的程序设计语言;源代码是代码片段的具体内容;本体标签是由代码片段本体标注模块在代码片段提交时根据标题、描述和源代码计算出的本体标签;权限分为私有和共享两种,私有的代码片段只能由提交者本人访问,共享的代码片段可以被其他程序设计人员通过客户端管理模块访问。

本发明的目的是通过以下技术方案来实现的:

一种基于本体的代码片段标注与重用系统,包括代码片段本体标注模型,代码片段本体标注模块,本体标注模型学习模块,服务器端管理模块,客户端管理模块。

所述代码片段本体标注模型用于对新提交的代码片段进行自动标注,模型根据代码片段的标题、描述和具体源代码内容进行计算。代码片段本体标注模型是由本体标注模型学习模块生成的,将会通过网络发送给客户端管理模块。

所述本体标注模型学习模块运行在服务器端,定期被服务器管理模块调用。采用某种机器学习算法,利用人工手动标注的代码片段,或系统中已有的已完成本体标注的代码片段,学习并生成代码片段本体标注模型。目前已有可以采用的机器学习算法包括但是不限于以下算法:人工神经网络、支持向量机、决策树和贝叶斯等分类算法。

所述的服务器端管理模块运行在远程服务器端,负责用户管理,接收客户端提交的代码片段并将其存入数据库中,根据客户端的查询请求返回多个代码片段给客户端,定期调用本体标注模型学习模块生成最新的代码片段本体标注模型,并将最新生成的代码片段本体标注模型发送给客户端管理模块。服务器端管理模块为每个注册用户提供一个唯一的URL,该URL对应了服务器上的一个代码片段库,该代码片段库中存储了该URL对应的用户提交的所有代码片段。

所述的客户端管理模块以集成开发环境插件的形式运行在编程人员使用的计算机上。主要完成代码片段的采集、本体标注、提交、查询和重用功能。客户端管理模块通过网络接收服务器端发送过来的代码片段本体标注模型,并基于该模型调用代码片段本体标注模块对代码片段进行标注。

其中,客户端管理模块初始化方法为:

(1)程序设计人员下载客户端管理模块并将其安装到集成开发环境中;

(2)程序设计人员打开集成开发环境,客户端管理模块随之启动;

(3)程序设计人员通过客户端管理模块申请注册一个新的账号,注册成功后服务器端管理模块将分配给该用户一个唯一的URL;

(4)程序设计人员在客户端管理模块中输入注册的用户名和密码,完成客户端到服务器端的认证;

(5)客户端管理模块从服务器端下载最新的代码片段本体标注模型;

(6)程序设计人员登录成功后,该登录账号对应的URL默认被自动添加到客户端管理模块的一个URL列表中,程序设计人员可以手动添加一个或多个其他用户对应的URL到客户端管理模块的URL列表中;

(7)客户端管理模块从服务器端获取当前已登录用户的URL对应的所有代码片段,并缓存在本地;客户端管理模块从服务器端获取非当前登录用户URL对应的代码片段库中所有权限设置为共享的代码片段,并缓存在本地;

(8)客户端管理模块不定期从服务器端更新缓存在本地的所有代码片段,以保证缓存的代码片段与服务器端数据库中的代码片段数据的一致性。

所述代码片段本体标注模块包含标注方法和重用方法,主要负责对代码片段的标注和重用。模块运行在客户端,被客户端管理模块进行调用,产生标注好的代码片段并将这些片段存储在数据库中。

其中,代码片段本体标注方法为:

(1)程序设计人员在集成开发环境的代码编辑器中选中一段代码,并按下一个快捷键或者点击菜单打开代码片段提交窗口;

(2)客户端管理模块自动从代码编辑器中提取程序设计人员选中的代码片段,以及编写该代码片段的程序设计语言类型,并显示在提交窗口中;

(3)程序设计人员在提交窗口中输入代码片段的标题和描述,设置代码片段的权限;

(4)客户端管理模块根据代码片段的标题、描述和源代码,基于代码片段本体标注模型计算相应的本体标签,并显示在提交窗口中;

(5)如有必要,程序设计人员修改代码片段对应的本体标注,确认代码片段本体标注无误后提交,客户端管理模块将代码片段的标题、描述、源代码、语言类型、本体标注和权限发送给服务器端管理模块;

(6)服务器端管理模块将代码片段存入数据库中;

(7)客户端管理模块将新提交的代码片段缓存到本地,保持与服务器端数据一致性。

代码片段重用方法为:

(1)客户端管理模块监测用户在代码编辑器中的输入,当当前输入的字符串与某个缓存的代码片段集合中的某个代码片段的标题或本体标注部分或者完全匹配时,显示一个候选的代码片段列表给程序设计人员;

(2)程序设计人员从候选列表中选择一个代码片段,客户端管理模块将选中的代码片段自动插入到代码编辑器中当前光标所在位置;

(3)如有必要,客户端管理模块将删除部分已有的代码;

(4)如有必要,客户端管理模块将对代码编辑器中的所有代码进行格式化。

本发明的“基于本体”的描述是本体论的一种概念。本体是指一种“形式化的,对于共享概念体系的明确而又详细的说明”。本体这一单词原本是从哲学领域出现的,用来描述世界上物体的存在。本体是人们以自己兴趣领域的知识为素材,运用信息科学的本体论原理而编写出来的作品。本体一般可以用来针对该领域的属性进行推理,亦可用于定义该领域(也就是对该领域进行建模)。本体是由五个基本建模元语构成的:类或概念、关系、函数、公理和实例。在实现上,是概念化的详细说明,一个本体包含了一个完整的词汇列表,用于定义某一领域的专业词汇以及他们之间的关系。这些词汇所描述的概念及其之间的关系是领域知识的具体表述,为交流各方提供了一个统一交流语言和工具。在本体概念的支持下,知识的搜索、积累和共享的效率将大大提高,真正意义上的知识重用和共享也成为可能。

有益效果

(1)利用程序设计领域专用本体对代码片段进行标注,对代码片段的功能和用途进行统一定义,实现了代码片段在不同的程序设计人员之间,以及不同的代码片段管理系统之间的相互理解、相互操作和相互共享。

(2)本体是对领域知识的一种形式化描述,可以很好地被计算机理解,能够有效提高计算机对代码片段操作的效率,为代码片段的查询和分析提供了一种新的方法。

(3)本系统利用云平台实现了代码片段的透明化管理,代码片段的管理和重用不再局限于时间和空间的限制,提高了代码片段存储和复用效率。

附图说明

图1是部分程序设计领域本体示例;

图2是基于云平台的代码片段管理系统框图;

图3是系统初始化时序图;

图4是代码片段提交的流程图;

图5是代码片段复用的流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细描述。

实施例

参见图1,一个与程序设计有关的领域本体包括四个主要的组成部分,分别是:算法(Algorithm)、数据结构(Data Structure)、程序设计语言(Language)和应用(Application)。在这个本体片段中,算法又分为排序和搜索两种,排序进一步分为冒泡排序、快排和插入排序等。使用不同的程序设计语言实现的同一排序算法都可以使用同样的本体类进行标注。例如使用C和Java实现的快排算法,标记为“Programming/Algorithm/Sort/Quick_sort”。数据结构也是独立于具体的程序设计语言的,同一个抽象的数据结构“set”既可以使用C实现,也可以用Java实现。Programming下面的Language分支与每种程序设计语言密切相关,例如面向对象程序相关的术语都是在这个分支下面。Application是与具体的应用相关的,例如常见的APP开发和网站设计等。当不同代码片段管理系统使用同一套面向程序设计的领域本体时,则可以基于此实现不同系统之间的代码片段交换和集成。同理,如果众多程序设计人员使用同一套本体对代码片段进行标注,也可以高效地实现不同程序设计人员之间的代码片段共享。

参见图2,介绍本发明基于集成开发环境Eclipse的本体标注和复用系统的组成部分及其之间的互联关系。客户端管理模块以Eclipse插件的形式运行在程序设计人员的计算机上,服务器端管理模块以Web服务的形式运行在云平台上,二者之间通过网络互联。服务器端管理模块定时调用本体标注模型学习模块生成代码片段本体标注模型,在此实施例中,我们的本体标注模型使用的是空间向量模型。生成的模型通过网络将其下发给客户端管理模块。客户端管理模块调用代码片段本体标注模块,基于从服务器接收的代码片段本体标注模型,对即将提交的代码片段进行标注。将标注好的本体代码片段存在数据库中供下一次服务器调用。用户也可以使用网站前端展示模块,通过网站查看和管理自己的代码片端库。

如图3所示,介绍客户端与服务器端连接以及初始化的各个操作步骤:

步骤1:用户通过客户端或者服务器端的网站前端展示模块注册一个用户,例如用户名为:user1;

步骤2:用户通过客户端连接并登陆服务器;

步骤3:服务器端将最新的代码片段标注模型发送到客户端;

步骤4:如有必要,服务器端将与用户相关的代码片段发送到客户端缓存。

如图4所示,代码片段标注方法的步骤为:

步骤1:用户在集成开发环境Eclipse的代码编辑器中选中一段Java代码,例如选中如下代码片段:

步骤2:用户按下快捷键Ctrl+0打开提交窗口,在提交窗口中输入标题“快速排序”和描述”这是一段java的快速排序算法”,并设定代码片段的查看权限为public;

步骤3:客户端管理系统中的代码片段本体标注模块基于代码片段内容,用户填写的标题和描述,利用代码片段本体标注模型自动计算出建议的本体标签为“Programming/Algorithm/Sort/Quick_sort”;

步骤4:用户如果满意自动该计算的本体标签,则转步骤6,否则转步骤5;

步骤5:用户手动修改本体标签,具体为从系统定义的本体标签中选择合适的标签,并替换系统自动计算的代码标签;

步骤6:用户为该段代码片段命名为qsort,提交添加本体标签的代码片段;

步骤7:服务器端模块接收用户提交的代码片段并根据用户信息将其存入到数据库中。

如图5所示,代码片段重用方法的步骤为:

步骤1:依附于集成开发环境Eclipse的代码片段管理客户端插件监控用户输入的代码内容,例如用户输入user1.qsort,当捕获到对代码片段的引用时转步骤2;

步骤2:从代码片段库中搜索与用户输入信息相符的代码片段,并给出候选的代码片段列表;

步骤3:用户从候选代码片段列表中选择一个代码片段;

步骤4:客户端管理软件自动将选中的代码片段插入到用户代码光标所在位置,并对代码格式进行相应的调整。

从上述实施例可以看出,本发明具有代码片段在不同的程序设计人员之间,以及不同的代码片段管理系统之间的相互理解、相互操作和相互共享等优点。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号