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

xiaoxiao2020-10-23  18

基于本体的代码片段标注与重用系统的制作方法
【技术领域】
[0001] 本发明设及一种基于本体的代码片段标注与重用系统,属于计算机软件设计与实 现领域,适用于高效软件集成开发环境的构建。
【背景技术】
[0002] 代码片段是指使用某种程序设计语言编写的一小段程序,通常包含1行到上百行 代码,其存在的意义在于;(1) 一个代码片段给出了某个接口API的使用方法;(2)实现了 某个特定的功能,例如堆排序或者基数排序;(3)是使用某种程序设计语言编程时频繁输 入的一个代码模板或者语句组合。程序设计人员在软件设计与开发过程中,预期某些代码 片段会重复编写,通常会通过文本文件、博客系统、软件集成开发环境或者代码片段管理系 统保存大量的代码片段。在后续的程序设计和开发过程中,通过查找、拷贝和修改等步骤重 用保存的代码片段W提高程序设计与开发的效率。
[0003] 保存在文本文件中的代码片段不利于代码片段的检索和重用,且由于时间和空间 的限制,程序设计人员需要在多台计算机之间手动完成代码片段数据的同步工作。此外,在 上一个项目实施过程中积累的代码片段,由于记忆消退和查找困难等原因,很难在下一个 项目中得到重用。发布在博客系统中的代码片段不受时间和空间的限制,但是由于博客系 统中发布的通常是非结构化的文本,且文本中包含了大量的自然语言描述,不利于集中检 索,程序设计人员只能使用通用捜索引擎进行捜索,并逐条阅读和过滤,费时费力,与代码 片段快速重用的基本思想不符。
[0004] 集成开发环境(例如Eclipse和VisualS化dio)或者专用的代码片段管理系统 (例如github的gist子系统,CSDN的code子系统)能够方便的实现代码片段的管理和捜 索,但是对于代码片段的高效复用仍然存在较大的障碍;部分代码片段是程序设计人员在 开发过程中匆忙提交的,因此代码片段标题和相应的功能描述非常简短,部分代码片段在 提交时并没有给出相应的功能和用途描述,因此非常不利于代码片段的分享和重用。部分 博客系统或者代码片段管理系统提供了标签标记每个代码片段的功能和用途,但是该些标 签通常是系统根据已有代码片段的描述自动抽取,或者由用户在提交代码片段时自行添加 的,因此没有统一的标准,不仅不利于代码片段的共享,而且无法在多个代码片段管理系统 之间高效实现代码片段的异构集成和联合检索。

【发明内容】

[0005] 本发明的是为了克服已有代码片段管理系统存在的缺陷,提出一种基于本体的代 码片段标注与重用系统,利用程序设计领域专用本体,对代码片段进行标注,通过代码片段 的本体标签实现代码片段标注的标准化,为本体共享和重用检索奠定良好基础。
[0006] 所述代码片段包括但不限于W下属性:标题、描述、开发语言、源代码、本体标签和 权限。其中标题为代码片段的名称;描述是代码片段功能和用途的文本描述;开发语言是 编写代码片段的程序设计语言;源代码是代码片段的具体内容;本体标签是由代码片段本 体标注模块在代码片段提交时根据标题、描述和源代码计算出的本体标签;权限分为私有 和共享两种,私有的代码片段只能由提交者本人访问,共享的代码片段可W被其他程序设 计人员通过客户端管理模块访问。
[0007] 本发明的目的是通过W下技术方案来实现的:
[000引一种基于本体的代码片段标注与重用系统,包括代码片段本体标注模型,代码片 段本体标注模块,本体标注模型学习模块,服务器端管理模块,客户端管理模块。
[0009] 所述代码片段本体标注模型用于对新提交的代码片段进行自动标注,模型根据代 码片段的标题、描述和具体源代码内容进行计算。代码片段本体标注模型是由本体标注模 型学习模块生成的,将会通过网络发送给客户端管理模块。
[0010] 所述本体标注模型学习模块运行在服务器端,定期被服务器管理模块调用。采用 某种机器学习算法,利用人工手动标注的代码片段,或系统中已有的已完成本体标注的代 码片段,学习并生成代码片段本体标注模型。目前已有可W采用的机器学习算法包括但是 不限于W下算法;人工神经网络、支持向量机、决策树和贝叶斯等分类算法。
[0011] 所述的服务器端管理模块运行在远程服务器端,负责用户管理,接收客户端提交 的代码片段并将其存入数据库中,根据客户端的查询请求返回多个代码片段给客户端,定 期调用本体标注模型学习模块生成最新的代码片段本体标注模型,并将最新生成的代码片 段本体标注模型发送给客户端管理模块。服务器端管理模块为每个注册用户提供一个唯一 的URL该U化对应了服务器上的一个代码片段库,该代码片段库中存储了该U化对应的用 户提交的所有代码片段。
[0012] 所述的客户端管理模块W集成开发环境插件的形式运行在编程人员使用的计算 机上。主要完成代码片段的采集、本体标注、提交、查询和重用功能。客户端管理模块通过 网络接收服务器端发送过来的代码片段本体标注模型,并基于该模型调用代码片段本体标 注模块对代码片段进行标注。
[0013] 其中,客户端管理模块初始化方法为:
[0014] (1)程序设计人员下载客户端管理模块并将其安装到集成开发环境中;
[0015] (2)程序设计人员打开集成开发环境,客户端管理模块随之启动;
[0016] (3)程序设计人员通过客户端管理模块申请注册一个新的账号,注册成功后服务 器端管理模块将分配给该用户一个唯一的U化;
[0017] (4)程序设计人员在客户端管理模块中输入注册的用户名和密码,完成客户端到 服务器端的认证;
[0018] (5)客户端管理模块从服务器端下载最新的代码片段本体标注模型;
[0019] (6)程序设计人员登录成功后,该登录账号对应的U化默认被自动添加到客户端 管理模块的一个U化列表中,程序设计人员可W手动添加一个或多个其他用户对应的U化 到客户端管理模块的U化列表中;
[0020] (7)客户端管理模块从服务器端获取当前已登录用户的U化对应的所有代码片 段,并缓存在本地;客户端管理模块从服务器端获取非当前登录用户U化对应的代码片段 库中所有权限设置为共享的代码片段,并缓存在本地;
[0021] (8)客户端管理模块不定期从服务器端更新缓存在本地的所有代码片段,W保证 缓存的代码片段与服务器端数据库中的代码片段数据的一致性。
[0022] 所述代码片段本体标注模块包含标注方法和重用方法,主要负责对代码片段的标 注和重用。模块运行在客户端,被客户端管理模块进行调用,产生标注好的代码片段并将该 些片段存储在数据库中。
[0023] 其中,代码片段本体标注方法为:
[0024] (1)程序设计人员在集成开发环境的代码编辑器中选中一段代码,并按下一个快 捷键或者点击菜单打开代码片段提交窗口;
[0025] (2)客户端管理模块自动从代码编辑器中提取程序设计人员选中的代码片段,W 及编写该代码片段的程序设计语言类型,并显示在提交窗口中;
[0026] (3)程序设计人员在提交窗口中输入代码片段的标题和描述,设置代码片段的权 限;
[0027] (4)客户端管理模块根据代码片段的标题、描述和源代码,基于代码片段本体标注 模型计算相应的本体标签,并显示在提交窗口中;
[002引 (5)如有必要,程序设计人员修改代码片段对应的本体标注,确认代码片段本体标 注无误后提交,客户端管理模块将代码片段的标题、描述、源代码、语言类型、本体标注和权 限发送给服务器端管理模块;
[0029] (6)服务器端管理模块将代码片段存入数据库中;
[0030] (7)客户端管理模块将新提交的代码片段缓存到本地,保持与服务器端数据一致 性。
[0031] 代码片段重用方法为:
[0032] (1)客户端管理模块监测用户在代码编辑器中的输入,当当前输入的字符串与某 个缓存的代码片段集合中的某个代码片段的标题或本体标注部分或者完全匹配时,显示一 个候选的代码片段列表给程序设计人员;
[0033] (2)程序设计人员从候选列表中选择一个代码片段,客户端管理模块将选中的代 码片段自动插入到代码编辑器中当前光标所在位置;
[0034] (3)如有必要,客户端管理模块将删除部分已有的代码;
[0035] (4)如有必要,客户端管理模块将对代码编辑器中的所有代码进行格式化。
[0036] 本发明的"基于本体"的描述是本体论的一种概念。本体是指一种"形式化的,对 于共享概念体系的明确而又详细的说明"。本体该一单词原本是从哲学领域出现的,用来描 述世界上物体的存在。本体是人们W自己兴趣领域的知识为素材,运用信息科学的本体论 原理而编写出来的作品。本体一般可W用来针对该领域的属性进行推理,亦可用于定义该 领域(也就是对该领域进行建模)。本体是由五个基本建模元语构成的:类或概念、关系、 函数、公理和实例。在实现上,是概念化的详细说明,一个本体包含了一个完整的词汇列表, 用于定义某一领域的专业词汇W及他们之间的关系。该些词汇所描述的概念及其之间的关 系是领域知识的具体表述,为交流各方提供了一个统一交流语言和工具。在本体概念的支 持下,知识的捜索、积累和共享的效率将大大提高,真正意义上的知识重用和共享也成为可 能。
[0037] 有益效果
[003引 (1)利用程序设计领域专用本体对代码片段进行标注,对代码片段的功能和用途 进行统一定义,实现了代码片段在不同的程序设计人员之间,W及不同的代码片段管理系 统之间的相互理解、相互操作和相互共享。
[0039] (2)本体是对领域知识的一种形式化描述,可W很好地被计算机理解,能够有效提 高计算机对代码片段操作的效率,为代码片段的查询和分析提供了一种新的方法。
[0040] (3)本系统利用云平台实现了代码片段的透明化管理,代码片段的管理和重用不 再局限于时间和空间的限制,提高了代码片段存储和复用效率。
【附图说明】
[0041] 图1是部分程序设计领域本体示例;
[0042] 图2是基于云平台的代码片段管理系统框图;
[0043]图3是系统初始化时序图;
[0044] 图4是代码片段提义的流程图;
[0045] 图5是代码片段复用的流程图。
【具体实施方式】
[004 6] 下面结合附图和实施例对本发明作进一步的详细描述。
[0047] 实施例
[0048] 参见图1,一个与程序设计有关的领域本体包括四个主要的组成部分,分别 是;算法(Algorithm)、数据结构值ataStrucUire)、程序设计语言(Language)和应用 (Application)。在该个本体片段中,算法又分为排序和捜索两种,排序进一步分为冒泡排 序、快排和插入排序等。使用不同的程序设计语言实现的同一排序算法都可W使用同样的 本体类进行标注。例如使用C和化va实现的快排算法,标记为"Programming/Algorithm/ Sort/如ick_sod"。数据结构也是独立于具体的程序设计语言的,同一个抽象的数据结构 "set"既可W使用C实现,也可W用化va实现。Programming下面的Language分支与每种 程序设计语言密切相关,例如面向对象程序相关的术语都是在该个分支下面。Application 是与具体的应用相关的,例如常见的APP开发和网站设计等。当不同代码片段管理系统使 用同一套面向程序设计的领域本体时,则可W基于此实现不同系统之间的代码片段交换和 集成。同理,如果众多程序设计人员使用同一套本体对代码片段进行标注,也可W高效地实 现不同程序设计人员之间的代码片段共享。
[0049] 参见图2,介绍本发明基于集成开发环境Eclipse的本体标注和复用系统的组成 部分及其之间的互联关系。客户端管理模块WEclipse插件的形式运行在程序设计人员的 计算机上,服务器端管理模块WWeb服务的形式运行在云平台上,二者之间通过网络互联。 服务器端管理模块定时调用本体标注模型学习模块生成代码片段本体标注模型,在此实施 例中,我们的本体标注模型使用的是空间向量模型。生成的模型通过网络将其下发给客户 端管理模块。客户端管理模块调用代码片段本体标注模块,基于从服务器接收的代码片段 本体标注模型,对即将提交的代码片段进行标注。将标注好的本体代码片段存在数据库中 供下一次服务器调用。用户也可W使用网站前端展示模块,通过网站查看和管理自己的代 码片端库。
[0050] 如图3所示,介绍客户端与服务器端连接W及初始化的各个操作步骤:
[0化1] 步骤1 ;用户通过客户端或者服务器端的网站前端展示模块注册一个用户,例如 用户名为;userl;
[005引步骤2 ;用户通过客户端连接并登陆服务器;
[0化3]步骤3;服务器端将最新的代码片段标注模型发送到客户端;
[0054]步骤4 ;如有必要,服务器端将与用户相关的代码片段发送到客户端缓存。
[0化5] 如图4所示,代码片段标注方法的步骤为:
[0056] 步骤1 ;用户在集成开发环境Eclipse的代码编辑器中选中一段Java代码,例如 选中如下代码片段:
[0057]
,
[0化9]步骤2 ;用户按下快捷键Ctrl+0打开提交窗口,在提交窗口中输入标题"快速排 序"和描述"该是一段java的快速排序算法",并设定代码片段的查看权限为public; [0060]步骤3 ;客户端管理系统中的代码片段本体标注模炔基于代码片段内容, 用户填写的标题和描述,利用代码片段本体标注模型自动计算出建议的本体标签为 "Programming/Algorithm/Sort/Quick_sort";
[006U步骤4 ;用户如果满意自动该计算的本体标签,则转步骤6,否则转步骤5 ;
[0062] 步骤5 ;用户手动修改本体标签,具体为从系统定义的本体标签中选择合适的标 签,并替换系统自动计算的代码标签;
[0063] 步骤6;用户为该段代码片段命名为qsort,提交添加本体标签的代码片段;
[0064] 步骤7 ;服务器端模块接收用户提交的代码片段并根据用户信息将其存入到数据 库中。
[00化]如图5所示,代码片段重用方法的步骤为:
[0066] 步骤1;依附于集成开发环境Eclipse的代码片段管理客户端插件监控用户输入 的代码内容,例如用户输入userl.qsort,当捕获到对代码片段的引用时转步骤2 ;
[0067]步骤2 ;从代码片段库中捜索与用户输入信息相符的代码片段,并给出候选的代 码片段列表;
[0068] 步骤3 ;用户从候选代码片段列表中选择一个代码片段;
[0069] 步骤4;客户端管理软件自动将选中的代码片段插入到用户代码光标所在位置, 并对代码格式进行相应的调整。
[0070] 从上述实施例可W看出,本发明具有代码片段在不同的程序设计人员之间,W及 不同的代码片段管理系统之间的相互理解、相互操作和相互共享等优点。
【主权项】
1. 一种基于本体的代码片段标注与重用系统,其特征在于:包括代码片段本体标注 模型,代码片段本体标注模块,本体标注模型学习模块,服务器端管理模块,客户端管理模 块; 所述代码片段本体标注模型用于对新提交的代码片段进行自动标注,模型根据代码片 段的标题、描述和具体源代码内容进行计算;代码片段本体标注模型是由本体标注模型学 习模块生成的; 所述本体标注模型学习模块运行在服务器端,采用某种机器学习算法,利用人工手动 标注的代码片段,或系统中已有的已完成本体标注的代码片段,学习并生成代码片段本体 标注模型;目前已有可以采用的机器学习算法包括但是不限于以下算法:人工神经网络、 支持向量机、决策树和贝叶斯等分类算法; 所述的服务器端管理模块运行在远程服务器端,负责用户管理,接收客户端提交的代 码片段并将其存入数据库中,根据客户端的查询请求返回多个代码片段给客户端,定期调 用本体标注模型学习模块生成最新的代码片段本体标注模型,并将最新生成的代码片段本 体标注模型发送给客户端管理模块; 所述服务器端管理模块为每个注册用户提供一个唯一的URL,该URL对应了服务器上 的一个代码片段库,该代码片段库中存储了该URL对应的用户提交的所有代码片段; 所述的客户端管理模块以集成开发环境插件的形式运行在编程人员使用的计算机上; 主要完成代码片段的采集、本体标注、提交、查询和重用功能; 所述代码片段本体标注模块运行在客户端,被客户端管理模块进行调用,产生标注好 的代码片段并将这些片段存储在数据库中。2. 根据权利要求1所述的一种基于本体的代码片段标注与重用系统,其特征在于,所 述客户端管理模块初始化流程为: (1) 程序设计人员下载客户端管理模块并将其安装到集成开发环境中; (2) 程序设计人员打开集成开发环境,客户端管理模块随之启动; (3) 程序设计人员通过客户端管理模块申请注册一个新的账号,注册成功后服务器端 管理模块将分配给该用户一个唯一的URL ; (4) 程序设计人员在客户端管理模块中输入注册的用户名和密码,完成客户端到服务 器端的认证; (5) 客户端管理模块从服务器端下载最新的代码片段本体标注模型; (6) 程序设计人员登录成功后,该登录账号对应的URL默认被自动添加到客户端管理 模块的一个URL列表中,程序设计人员可以手动添加一个或多个其他用户对应的URL到客 户端管理模块的URL列表中; (7) 客户端管理模块从服务器端获取当前已登录用户的URL对应的所有代码片段,并 缓存在本地;客户端管理模块从服务器端获取非当前登录用户URL对应的代码片段库中所 有权限设置为共享的代码片段,并缓存在本地; (8) 客户端管理模块不定期从服务器端更新缓存在本地的所有代码片段,以保证缓存 的代码片段与服务器端数据库中的代码片段数据的一致性。3. 根据权利要求1所述的一种基于本体的代码片段标注与重用系统,其特征在于:代 码片段本体标注模块包含标注方法为: (1) 程序设计人员在集成开发环境的代码编辑器中选中一段代码,并按下一个快捷键 或者点击菜单打开代码片段提交窗口; (2) 客户端管理模块自动从代码编辑器中提取程序设计人员选中的代码片段,以及编 写该代码片段的程序设计语言类型,并显示在提交窗口中; (3) 程序设计人员在提交窗口中输入代码片段的标题和描述,设置代码片段的权限; (4) 客户端管理模块根据代码片段的标题、描述和源代码,基于代码片段本体标注模型 计算相应的本体标签,并显示在提交窗口中; (5) 如有必要,程序设计人员修改代码片段对应的本体标注,确认代码片段本体标注无 误后提交,客户端管理模块将代码片段的标题、描述、源代码、语言类型、本体标注和权限发 送给服务器端管理模块; (6) 服务器端管理模块将代码片段存入数据库中; (7) 客户端管理模块将新提交的代码片段缓存到本地,保持与服务器端数据一致性。4.根据权利要求1所述的一种基于本体的代码片段标注与重用系统,其特征在于:代 码片段本体标注模块包含重用方法为: (1) 客户端管理模块监测用户在代码编辑器中的输入,当当前输入的字符串与某个缓 存的代码片段集合中的某个代码片段的标题或本体标注部分或者完全匹配时,显示一个候 选的代码片段列表给程序设计人员; (2) 程序设计人员从候选列表中选择一个代码片段,客户端管理模块将选中的代码片 段自动插入到代码编辑器中当前光标所在位置; (3) 如有必要,客户端管理模块将删除部分已有的代码; (4) 如有必要,客户端管理模块将对代码编辑器中的所有代码进行格式化。
【专利摘要】本发明涉及一种基于本体的代码片段标注与重用系统,适用于高效软件集成开发环境的构建。该系统包括代码片段本体标注模型,代码片段本体标注模块,本体标注模型学习模块,服务器端管理模块,客户端管理模块。其中,代码片段标注模型用于对新提交的代码片段进行自动标注;本体标注模型学习模块学习并生成代码片段本体标注模型;客户端管理模块完成代码片段的采集、提交、查询功能;服务器端管理模块负责用户管理,接收客户端提交的代码片段并存入数据库中;代码片段本体标注模块负责对代码进行标注和重用。本发明实现了代码片段在不同的程序设计人员之间,以及不同的代码片段管理系统之间的相互理解、相互操作和相互共享。
【IPC分类】H04L29/06, G06F9/44
【公开号】CN104881285
【申请号】CN201510272310
【发明人】计卫星, 廖心怡, 高志伟, 王一拙, 高玉金, 石峰
【申请人】北京理工大学
【公开日】2015年9月2日
【申请日】2015年5月25日
转载请注明原文地址:https://www.famiwei.com/read-8138790.html

最新回复(0)