面向智能化软件开发的开源生态大数据
张洋1, 王涛1, 尹刚2,3, 余跃1, 黄井泉3
1 国防科技大学计算机学院,湖南 长沙 410073
2 绿色计算产业联盟,北京 100036
3 湖南智擎科技有限公司,湖南 长沙 410073
摘要:开源软件开发过程中包含大量有价值的数据,针对其数据规模巨大、碎片分散、快速膨胀的特点,研究了软件工程开源生态大数据体系,提出了一种自生长的采集处理框架与汇聚共享环境,阐述了基于软件工程开源生态大数据的智能化软件开发,以及基于软件工程开源生态大数据分析挖掘的典型应用,为面向智能化软件开发的开源生态大数据研究与应用提供相关指导。
关键词: 智能化软件开发 ; 开源软件 ; 开源生态 ; 大数据
论文引用格式:
张洋, 王涛, 尹刚, 等. 面向智能化软件开发的开源生态大数据[J]. 大数据, 2021, 7(1): 94-106.
ZHANG Y, WANG T, YIN G, et al. Big data of open source ecosystem for intelligent software development[J]. Big Data Research, 2021, 7(1): 94-106.
1 引言
自20世纪末以来,开源软件在现代 会的各个领域得到了广泛的应用,取得了令人瞩目的成就。Black Duck公司2017年的调查 告显示,全球86%的企业在搭建业务时全部或部分使用了开源软件,其中60%的公司还在增加开源软件的使用比重。开源软件的开发活动以互联 软件 区为平台,其开发过程和制品数据对外开放,允许不同类型的开发者参与其中,形成一种大众参与的开源模式,给开源世界带来了强大的生产力。开源模式中大众贡献者可以自由地实践分布式协同,催生了许多群体化软件开发方法和一系列优质的开源 区。特别是,近年来云计算、大数据、人工智能、物联 等对国民经济发展产生重大影响的信息化基础设施绝大多数是以开源软件为核心构建而成的,开源软件已经在全球软件产业占据主导地位。
与传统工业化软件生产相比,大众化开源软件生产的开发数据和应用数据高度开放且规模巨大。目前,支持大众化软件生产和应用活动的开源 区包含了大量有价值的数据,如软件代码、软件版本、容器镜像等软件制品和过程数据,以及软件问答、软件评价等软件交流和反馈数据,这些数据涵盖开发数据、交付数据及应用数据等全维度数据类型,涉及开发制品、开发过程、软件产品、软件镜像、咨询讨论与应用问答等各个方面,具有规模巨大、碎片分散、快速膨胀的特点。如何构造高扩展、高性能的软件工程开源生态大数据处理体系结构,建立多源异质、广泛关联、语义丰富、覆盖全面的软件工程开源生态大数据环境,分析提炼软件知识并设计实现辅助开发工具,以提升软件开发的智能化程度,已成为重要的科学问题。
2 软件工程开源生态大数据
2.1 软件工程开源生态大数据体系
图2 软件工程开源生态大数据采集处理框架
● 基于 络爬虫的数据收集方法:针对特定的软件库采用定点爬取的方式,通过分析特定数据源 页中的数据特点和Schema格式,基于爬虫常用的标签匹配和正则表达式匹配等策略获取相应的数据信息。为了解决爬取效率低和重复爬取的问题,采用分布式 络爬虫技术进行多任务的并行处理,从而大幅提高大规模软件数据的爬取效率,另外,基于时间戳等信息实现周期性、增量式爬取,避免数据的重复获取。其中,多数软件数据基于爬虫技术获取,包括Apache基金项目的源码、邮件、 页和版本控制,Eclipse 区项目的缺陷 告和代码,配资代码库和Docker Hub中的元数据信息、代码制品及容器的Dockerfile,CSDN的博客、问答和论坛等。
● 基于API的数据收集方法:除了 络爬虫,部分开源软件库对外提供获取和下载数据信息的开放API,因此可以通过调用API的方式获取相应的数据信息,其中包括Topcoder的众包开发数据、Apache基金会项目的缺陷 告等。
● 数据包直接下载方法:一些 区对历史数据进行压缩存档,并直接对外提供数据下载地址,例如Stack Overflow 区的文档数据等。
在此基础上,软件工程开源生态大数据采集处理框架整体可分为3层,包括数据获取层、数据分析层以及持久化层,通过3个层次的协同配合,最终完成从数据的最初采集、数据的分析处理,到最后数据的展示。其中,数据获取层的主要功能是完成数据的采集工作,为平台提供高效、稳定、持续、准确的数据服务。数据分析层对数据获取层获取的页面信息进行抽取,提取出每个页面中的关键信息,并对抽取结果进行验证,通过验证的页面数据会被存储到数据库中,为数据分析做准备。该层还有一些数据挖掘算法,对所抽取的数据进行数据分析操作,包括 区关联、软件评估等。持久化层按照最终需要展示的数据格式,对之前得到的数据处理结果进行处理,并将处理结果存放于数据缓冲池中,最终源源不断地向展示平台传输,为平台的展示提供数据支持。
2.3 软件工程开源生态大数据的汇聚共享
图4 基于软件工程开源生态大数据的智能化软件开发研究
3.2 基于缺陷与 区问答数据的软件代码缺陷智能定位与修复
基于软件工程开源生态大数据中的开发数据和应用数据,相关研究团队围绕基于缺陷和 区问答数据的软件代码缺陷智能定位与修复问题开展了大量研究。他们针对缺陷 告与关联代码间的词共现关系、缺陷 告文本附着的元数据,以及代码规模越大越容易出现软件缺陷等特点,构造了一个基本的监督式文本主题模型STMLocator,并给出了相关训练与预测算法。相较于传统的信息检索方法以及基于频谱的方法,该方法能够将修复历史作为监督信息,同时将文本相似度与语义相似度结合,实现更高精度的缺陷定位。在开源项目Eclipse的多个子项目(PDE、Platform、JDT)收集的真实数据上的预测准确率相较同类工作最高提升23.6%。另外,为了研究缺陷 告文本附加信息对缺陷定位的影响,Wang Y J等人提出了L2SS+模型簇,在多个实际数据集上的实验结果表明,L2SS+CM模型,即产品模块信息对缺陷定位准确率影响最显著,预测准确率较同类工作最高提升18.7%。在基于 区问答 站的软件缺陷修复信息智能推荐技术方面,为了进一步精确获取和分类 区问答 站的内容,相关研究分析了 站文本内容的自动标签推荐问题,针对标签与文本词之间的共现关系、标签之间的关联关系等特点,Tang S J等人提出了一个iTAG深度学习模型,并给出了相关训练与预测算法。在从Stack Overflow程序员 区问答 站等获取的真实数据集上,iTAG模型较其他同类工作(#TagSpace、Maxide等)在预测准确率上有显著提升。另外,iTAG模型在结果可视化解释、发现更多合理的标签等方面具有优势。
3.3 基于上下文感知的软件问答资源推荐技术
近些年,相关研究团队立足于软件工程开源生态大数据中的应用数据和交付数据,围绕上下文感知的软件问答资源推荐技术开展了富有成效的研究。目前大部分的软件问答推荐系统没有考虑上下文,有的虽然考虑了上下文,但是还是以代码本身关键词为主,没有考虑其中的语义信息,也没有充分挖掘已有的海量的问答知识。参考文献针对此设计了基于主题模型的软件问答推荐系统,推荐系统通过主题模型组织整理现有的全量问答数据,并推断用户代码的行为,通过不同场景下的用户行为抽取不同的代码上下文,根据代码上下文向开发人员推荐不同的问答。推荐问答的关键操作是计算代码上下文与问答数据的相关性,其中的一个关键问题在于问答数据的范围,直观的选择是计算代码上下文与全量问答数据的相关性,然而这在实际应用中是不可能的,因此首先要做的是缩小计算范围,计算代码上下文和一部分问答数据的相关性。为了缩小计算的范围,降低计算复杂度,Shao B等人抽取代码上下文中的关键词,利用关键词检索得到较小的问答数据集合,然后计算代码上下文和每一个问答数据的相关性,对所有结果进行排序后推荐给开发人员。推荐系统监测开发人员开发代码,当开发人员停止代码或者程序运行时,抛出异常等行为触发推荐机制,推荐系统通过抽象语法树和主题模型分析代码上下文,抽取关键词,检索多源数据,对返回的数据进行分析排序,并最终展示给用户。
3.4 面向软件一体化开发运维的数据汇聚和知识管理
基于软件工程开源生态大数据中的交付数据,相关研究团队针对Docker镜像设计了一种海量数据汇聚、管理、知识抽取和质量评价的系统化方案和服务。其成果首先实现了增量式、高并发的Docker数据汇聚和管理方法,支持对Docker Hub上百万级Docker项目数据的自动获取与增量更新,实现了项目数据的可发现和可追踪。具体地,在数据汇聚方面,针对Docker项目数据量大、难以获取项目整体列表等技术问题,参考文献提出了一种增量式的数据并发获取方式,突破了高命中率的检索关键词生成算法、高效的Docker项目元数据更新比对与融合算法,从而提高数据获取的覆盖度以及对Docker项目数据更新的敏感度。在基于返回的检索结果列表进行Docker项目详细元数据获取的过程中,考虑到检索结构数据量大(通常能够达到万级或十万级),他们采用“分而治之”的策略,对大规模的搜索返回结果实施并发的多线程获取方式,显著地提升了数据汇聚效率。最后,基于多种启发性规则对初步获取的Docker项目元数据进行分析、对比和过滤,识别其中的冗余和更新内容,保证数据内容的一致以及数据内容的更新,实现了海量Docker项目相关数据的高效汇聚和增量更新。
4 基于软件工程开源生态大数据分析挖掘的典型应用
近年来,越来越多的基于软件工程开源生态大数据分析挖掘的应用诞生,并不断发展。其中,针对软件问答 区(如Stack Overflow)、开源软件项目(如Apache、安卓项目等)、软件开发工具(如Eclipse)、开发者数据(众包开发者数据、开发过程数据等)类型的数据进行了汇聚和收集整理,OSSEAN构建了面向全球开源软件的检索与分析平台。OSSEAN平台的基本思路为:在软件消费 区中找到关于软件项目的文档;利用这些文档对软件进行评估、比较、排序。通过获取到的海量的开源 区数据,OSSEAN平台能够提供一些有趣的服务,如开源生态系统的度量、软件排序以及热点话题分析。OSSEAN平台数据获取模块已覆盖全球20多个主要的开源 区,并对这些 区进行持续监控、实时抓取,抓取和分析的数据包括超过14 0万个开源项目/仓库的元数据以及超过2 000万条在线讨论数据。同时,OSSEAN平台的跨 区关联与分析模块通过对多源异构数据的深度互联,建立相应的异质信息 络,并在此基础上实现对开源软件的分析、检索与排序等服务。
CodeWisdom开发了代码大数据与智能化软件开发研究成果展示与服务平台。该平台在GitHub等开源软件 区的软件代码及软件开发历史、Stack Overflow等软件开发问答 站的问答知识,以及API文档等互联 软件开发资源的基础上,利用程序分析、深度学习、自然语言处理、知识图谱、数据挖掘等技术,充分发掘代码大数据中蕴含的知识,通过检索、推荐、问答、可视化等多种手段提供智能化软件开发支持。
5 结束语
张洋(1991-),男,博士,国防科技大学计算机学院助理研究员,中国计算机学会会员,主要研究方向为实证软工程、软件版本库挖掘、DevOps等。
王涛(1986-),男,博士,国防科技大学计算机学院副研究员,中国计算机学会会员,主要研究方向为分布式计算、软件工程、数据挖掘等。
尹刚(1975-),男,博士,绿色计算产业联盟实践教学工作委员会副主任,中国计算机学会会员,主要研究方向为在线教育、分布式计算、软件工程、数据挖掘、云计算等。
余跃(1988-),男,博士,国防科技大学计算机学院副研究员,中国计算机学会会员,主要研究方向为数据挖掘、实证软件工程、 交化编码等。
黄井泉(1986-),男,湖南智擎科技有限公司高级工程师,主要研究方向为在线教育、软件工程、数据挖掘等。
联系我们:
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/
大数据期刊

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树首页概览11141 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!