点击上方蓝字关注我们

提高软件开发、软件维护的效率和质量的利器

SnowGraph可将知识图谱融入机器对无结构文本的处理过程之中,进而为复用者提供准确、有效的智能问答服务,从而提高软件复用过程的效率与质量。

北京大学的邹艳珍副教授所在团队提出了基于大数据的软件项目知识图谱构造及问答方法,设计并实现了相应的软件项目知识图谱构造及智能问答平台SnowGraph,并在Apache开源社区以及国内著名软件企业成功展开应用实践。该技术成果具有很好的通用性与可扩展性,能够对未来可能出现的新的知识需求、知识来源,以及知识抽取、关联、提炼方法进行适应与支持,有效提高了软件项目理解和软件复用的效率。该研究以“基于大数据的软件项目知识图谱构造及问答方法”为题发表在《大数据》2021年第1期。

01 为什么要构建软件知识图谱?

软件项目在其整个生命周期中形成并积累了大量的数据,如源代码、邮件列表、缺陷报告和问答文档等。这些数据中蕴含了规模庞大、结构复杂、语义关联丰富的软件知识,能够帮助软件开发人员理解软件功能,进行软件复用。然而,组织、利用这些知识面临着以下挑战:(1)软件规模扩大引发的软件知识爆炸问题;(2)软件数据中蕴含的信息在多源异构数据中呈碎片化分散的形态;(3)大量信息是以无结构文本的形式表示的,如代码标识符、代码注释、邮件、用户手册、缺陷描述。因此,亟需构建一个语义关联丰富的软件知识图谱。

02 取得了哪些重大突破?

针对上述问题,邹艳珍副教授所在团队设计并实现了相应的软件项目知识图谱构造及智能问答平台SnowGraph,其系统框架如图1所示。

图1 SnowGraph平台的系统框架

具体的,首先针对传统软件项目知识图谱需要开发人员熟悉并掌握Cypher语法,人工将用户意图转化为Cypher查询语句,学习成本较高的问题,邹艳珍副教授所在团队提出了一种基于自然语言的知识库/知识图谱查询方法。该方法能够将用户的自然语言问句自动转化为Cypher形式化查询语句,有效支持了面向软件项目知识图谱的自然语言问答,降低了开发人员的学习成本。然后提出了融合代码知识的智能问答方法,借助软件项目的知识图谱来计算不同单词之间的潜在语义相关度,从而对候选文本集合进行筛选与评估,返回更准确的答案。与现有的基于LDA、Word2Vec等统计学习方法的文档搜索改进策略相比,该方法借助软件项目源代码中的代码实体对自然语言文本的语义进行结构化表示,并利用代码实体之间的结构依赖关系实现了对文本之间的潜在语义关联的更直接、更有效的挖掘与利用,显著提高了文档搜索的效果。

03 下一步的工作内容是什么?

未来,基于软件开发过程中的更多数据类型,进一步的工作是进行软件知识图谱知识实体的扩充,以及建立更多的语义关联,并提供更精准的交互式智能问答服务。

研究详情请阅原文:

http://www.infocomm-journal.com/bdr/CN/10.11959/j.issn.2096-0271.2021002

联系我们:

Tel:010-81055448

010-81055490

010-81055534

E-mail:bdr@bjxintong.com.cn

http://www.infocomm-journal.com/bdr

http://www.j-bigdataresearch.com.cn/

转载、合作:010-81055537

大数据期刊

《大数据(Big Data Research,BDR)》双月刊是由中华人民共和国工业和信息化部主管,人民邮电出版社主办,中国计算机学会大数据专家委员会学术指导,北京信通传媒有限责任公司出版的期刊,已成功入选中国科技核心期刊、中国计算机学会会刊、中国计算机学会推荐中文科技期刊,并被评为2018年、2019年国家哲学社会科学文献中心学术期刊数据库“综合性人文社会科学”学科最受欢迎期刊。

关注《大数据》期刊微信公众号,获取更多内容

提高软件开发、软件维护的效率和质量的利器相关推荐

  1. 提高软件开发效率的方法

    一个开发任务下达以后,我们希望尽快的实现的,对软件开发工程师的要求是:多快好省 多--单位时间产量高 快--同样的产量所需的时间少 好--质量高 省--省钱,省时,省资源 这四个目标中最主要的又是&q ...

  2. 如何提高软件开发质量

    在软件开发中质量一直是人们重点关注的,根据权威机构数据统计在整个软件行业中开发失败率极高,大约20%左右的软件是开发成功的,80%左右的软件开发是失败的(这当然包括功能开发完成而最终无法使用或者使用率 ...

  3. 关于提高软件开发知识的建议

    1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很 ...

  4. 《软件开发工具》要点

    2019独角兽企业重金招聘Python工程师标准>>> 1.绪论 2.软件开发过程及其组织 3.软件开发工具的理论基础 4.软件开发工具的技术要素 5.软件开发工具的使用与开发 6. ...

  5. 人工智能技术在软件开发中的应用

    人工智能技术的不断发展和成熟,使得它在软件开发中的应用越来越广泛.人工智能技术的应用可以帮助软件开发人员提高效率.降低成本.增强软件的功能性和可靠性.在本文中,我们将探讨人工智能技术在软件开发中的应用 ...

  6. 如何提高创业团队的软件开发效率

    如何提高创业团队的软件开发效率 艰难的推行 失败案例 可能的方案 技术债务 一个技术债务的故事 解决方案 代码接龙游戏 代码集体所有制 结对编程 避免台球短跑 避免半成品 马拉松长跑计划 偿还债务 1 ...

  7. 软件工程-软件开发的工程思维

    软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...

  8. 北京图王软件开发有限公司产品介绍-Visual Graph专业图形引擎

    北京图王软件开发有限公司产品介绍                           ――Visual Graph专业图形引擎 一.产品概述: Visual Graph是一套强大的交互图形开发平台,她 ...

  9. 软件开发管理与质量控制(二)

    3.5   开发人员技术结构 宏观上讲,软件开发机构基本可分为二种角色,管理角色和技术角色.不同角色各有其不同的发展方向,如图7所示. 不论是走技术路线还是管理路线,不存在那种角色地位更高的问题.高级 ...

最新文章

  1. P1063 能量项链
  2. kindeditor java 上传图片_java中KindEditor本地图片上传与上传失败问题
  3. Windows10怎么创建后门?
  4. 【C++】 C++标准模板库(一) Vector
  5. DB2 9 底子(730 考试)认证指南,第 3 局部: 拜访 DB2 数据(3)
  6. 理解group by
  7. 分布式事务实践 解决数据一致性 分布式事务实现,模式和技术
  8. 你为什么要学习WordPress?
  9. 以实战之名尽兵法之意
  10. 我的IOS学习历程-第三天
  11. Julia : 1亿条记录读取测试,及几个优化点
  12. 易用宝项目记录day4-代码生成器
  13. Sigma Function LightOJ - 1336
  14. 一款基于Zigbee技术的智慧鱼塘系统研究与设计
  15. unity 3d实例:创建游戏对象、旋转的立方体、Unity3D Button、图片按钮、Box控件、Label控件、Background Color、Color
  16. python打开ie浏览器_python+selenium启动IE浏览器
  17. “D语言风采不再”的说法言过其实
  18. 从你的全世界路过(张嘉佳)
  19. FLINK 极客时间
  20. Oracle表空间碎片查询以及整理

热门文章

  1. 哈夫曼编码和带权路径计算
  2. 连接真机开发安卓(Android)移动app MUI框架 完善购物车订单等页面——混合式开发(五)
  3. VMware workstation 15.5.2及镜像文件下载
  4. react-json渲染
  5. golang中的接口实现(二)
  6. 【工具与解决方案】从做项目中积累学习
  7. winform 菜单激发窗体切换做法
  8. 查看oracle死锁进程并结束死锁
  9. node.js 针对不同的请求路径(url) 做出不同的响应
  10. (转载)mysql 用drop和delete方法删除用户的区别