李荣 张伟 李强
甘肃银光化学工业集团有限公司730900
摘要:开源软件开发过程中包含大量有价值的数据,针对其数据规模巨大、碎片分散、快速膨胀的特点,研究了软件工程开源生态大数据体系,提出了一种自生长的采集处理框架与汇聚共享环境,阐述了基于软件工程开源生态大数据的智能化软件开发,以及基于软件工程开源生态大数据分析挖掘的典型应用,为面向智能化软件开发的开源生态大数据研究与应用提供相关指导。
关键词:智能化软件开发;开源软件;开源生态;大数据
引言
近10年来,大数据管理技术的发展日新月异,传统以本地文件系统和关系数据库进行数据管理的技术方案在性能和性价比上受到越来越严峻的挑战。2003年,谷歌公司发表谷歌文件系统,提出了使用廉价服务器在不可靠的硬件上构建高可用的分布式文件系统以实现海量数据管理的思想。后又于2008年发表了宽表系统的技术思路。以此为代表,分布式、非关系模型的数据管理技术逐渐被广泛接受,引领了近10年来大数据管理技术的变革浪潮。2009年,非结构化查询语言NoSQL提出,进一步推动了基于非关系模型的、面向特定应用需求的数据管理技术的发展。
1系统架构
1.1软件大数据汇聚及知识提炼
基于主动感知、定向采集、多源关联、增量检测等技术,构建软件工程大数据处理体系结构与支撑系统,形成自生长的多源异构软件大数据环境。建立软件大数据的数据分类和数据汇聚、收集和整理技术体系,研发了相应的采集、存储和服务平台,原始数据、处理后数据以及元数据等不同类型的数据涵盖开发、交付、应用等不同阶段。在此基础上,利用自然语言处理、深度学习、数据挖掘、优化搜索等智能化技术,建立软件开发智能推荐技术研究体系,基于源数据提炼知识图谱、代码模式、主题模型等核心软件知识,形成一批智能推荐、问答技术与工具。
1.2软件智能化开发支持
围绕软件开发中的软件构造、测试验证、群体协作、运维演化4个重要方面,分别形成相应的智能化工具体系,提供数据驱动的智能化推荐和优化技术。在软件构造方面,构建以代码库为核心的软件构造大数据环境以及相应的软件构造知识分析和提炼方法,提供软件构造智能问答、软件开发知识图谱可视化、代码生成与补全、自动化重构推荐等智能化软件构造支持。在测试验证方面,采用机器学习、启发式搜索、自然语言理解等智能化途径,面向测试用例生成、代码模型检验、静态分析缺陷警报确认、程序缺陷定位和修复等软件质量保障的多个方面提供复杂软件测试与验证智能化支持。在群体协作方面,基于软件大数据的收集与分析构建了软件开发者知识库,形成基于多源软件大数据的开发者知识库体系结构,提供基于学习曲线的开发者能力动态刻画方法和跨社区的开发者画像等智能化支持,同时构建了大规模开发者智能协作支撑环境。在运维演化方面,汇聚了以Docker镜像为代表的大规模开发运维一体化数据,形成了自生长、可追溯的领域数据集合。通过智能化持续集成与持续部署流水线系统等一系列工具系统,形成了面向开发运维一体化的运行演化智能支撑环境,提升了开发运维一体化过程的动态调节能力。
2软件工程开源生态大数据
2.1基于缺陷与社区问答数据的软件
代码缺陷智能定位与修复
基于软件工程开源生态大数据中的开发数据和应用数据,相关研究团队围绕基于缺陷和社区问答数据的软件代码缺陷智能定位与修复问题开展了大量研究。
他们针对缺陷报告与关联代码间的词共现关系、缺陷报告文本附着的元数据,以及代码规模越大越容易出现软件缺陷等特点,构造了一个基本的监督式文本主题模型STMLocator,并给出了相关训练与预测算法。相较于传统的信息检索方法以及基于频谱的方法,该方法能够将修复历史作为监督信息,同时将文本相似度与语义相似度结合,实现更高精度的缺陷定位。在开源项目Eclipse的多个子项目(PDE、Platform、JDT)收集的真实数据上的预测准确率相较同类工作最高提升23.6%。另外,为了研究缺陷报告文本附加信息对缺陷定位的影响,提出了L2SS+模型簇,在多个实际数据集上的实验结果表明,L2SS+CM模型,即产品模块信息对缺陷定位准确率影响最显著,预测准确率较同类工作最高提升18.7%。
2.2MapReduce开发流程优化
在离线处理集群的运营过程中,除了积累Hadoop系统的应用和改进经验之外,对于优化MapReduce开发流程本文也进行了探索和尝试.分布式环境中,当程序出现问题时,快速准确地定位问题是一个巨大挑战.通常情况下,MapReduce程序的开发者在编写完程序后会在集群上直接运行测试,当出现异常时,很多时候需要查看作业日志,甚至到远程计算节点上分析问题.这种方式的问题定位成本非常高,既耗费了开发者的大量时间,也浪费了宝贵的集群计算资源.在协助用户定位问题的过程中发现,很多问题并不需要在集群上运行作业才能暴露出来,通过单元测试或本地模式运行就可以有效地排查.因此本文提出一个优化的开发流程如下:1)开发程序时,利用MR Unit测试框架为Mapper和Reducer等编写单元测试.通过单元测试覆盖主要场景,保证程序的基本正确性.2)取部分真实输入数据,利用MapReduce的本地模式运行作业,排查真实数据中的边界情况.如果遇到错误,则可以利用Eclipse等集成开发环境单机调试,分析定位问题.之后可以把新的场景补充到单元测试之中.3)上述2个阶段运行成功之后,再在集群上对更多的数据进行测试.在这一过程中重点关注作业的运算性能和资源使用情况,可以利用MapReduce的计数器功能查看系统及用户自定义的计数器,从而优化作业配置。
3大数据开源技术发展带来的启示
大数据时代,开源项目在大数据技术发展过程中所起的作用日益重要。大数据领先企业进行前沿创新,并将创新成果通过开源方式向全社会辐射,引导和推动大数据技术发展方向,在国际上逐渐形成了一套高效运转的研发产业化体系。相比闭源开发模式,开源可以有效降低企业部署成本,提供统一接口和个性化定制需求,减少企业对硬件和解决方案供应商的依赖;开源提供了一种高效生产软件的方法,降低了企业进入大数据应用服务市场的壁垒,催生更多技术和服务应用的创新。开源大数据参与厂商众多,基于开源项目发展的大数据技术成为行业事实标准的可能性很大,业内领先企业积极参加开源项目,希望在开源大数据技术发展方向上发挥主导作用。华为、新浪、腾讯、阿里巴巴等国内企业大数据开源项目的参与程度逐渐提升。例如,2011年华为公司在Hadoop项目的开源贡献企业名单中排在第18位,超过了谷歌和思科等公司。国内企业有必要更多、更广泛地了解和参与开源大数据项目和生态,特别是业界广泛关注和接受的一些开源项目,以便更好地利用开源项目和技术服务于大数据应用,并逐步更深入地参与一些重要的大数据开源项目,在大数据开源技术发展方向上起到一定的引导作用。
结语
本文提出了软件工程开源生态大数据体系,构建了自生长的采集处理框架和汇聚共享环境,并阐述了基于软件工程开源生态大数据的智能化软件开发的相关研究以及典型应用情况。面向智能化软件开发的开源生态大数据研究具有很强的研究意义和实际价值,未来需要进行进一步的深入探索。
参考文献
[1]董贺,徐凌宇.基于云平台的软件服务流体系结构[J].上海大学学报:自然科学版,2013,19(1):14-20.
[2]凌春阳,邹艳珍,林泽琦,等.基于图嵌入的软件项目源代码检索方法[J].软件学报,2019,30(5):1481-1497.