基于大数据的软件智能化开发方法与环境

点击上方蓝字关注我们

基于大数据的软件智能化开发方法与环境

谢冰1, 彭鑫2,3, 尹刚4,5, 李宣东6, 魏峻7,8, 孙海龙9,10

1 北京大学信息科学技术学院,北京 100871

2 复旦大学计算机科学技术学院,上海 200438

3 上海市数据科学重点实验室,上海 200438

4 绿色计算产业联盟,北京 100036

5 湖南智擎科技有限公司,湖南 长沙 410073

6 计算机软件新技术国家重点实验室(南京大学),江苏 南京 210023

7 上中国科学院大学,北京 100190

8 中国科学院软件研究所,北京 100190

9 软件开发环境国家重点实验室(北京航空航天大学),北京 100191

10 北京航空航天大学计算机学院,北京 100191

摘要阐述了围绕软件工程大数据的汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术开展的一系列研究工作,建立了基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成了“人-工具-数据”融合的新一代软件智能化开发环境,并构建了软件智能化开发云平台。面向万众创新的社会需求,构建了服务大众的公共服务平台;针对企业创新能力的提升,提供了智能化的企业软件开发环境。

关键词软件复用 ; 大数据 ; 智能化软件开发 ; 知识图谱 ; 推荐

论文引用格式:

谢冰, 彭鑫, 尹刚, 等. 基于大数据的软件智能化开发方法与环境[J]. 大数据, 2021, 7(1): 3-21.

XIE B, PENG X, YIN G, et al. Big data based intelligent software development methodology and environment[J]. Big Data Research, 2021, 7(1): 3-21.


1 引言

以开源软件为代表的互联网软件开发具有边界开放、群体分散、交付频繁、知识复杂等特征。与此同时,企业软件开发也逐渐转向以开发运维一体化(DevOps)为特征的云化开发平台。这些网络化开发方式产生了包含源代码、缺陷报告、版本历史、测试用例等在内的全生命周期数据。例如,开源软件社区GitHub已经集聚了超过2.7亿个软件项目,软件开发问答网站Stack Overflow已经积累了超过1 700万个与软件开发相关的问题。这些数据中蕴含的规律可以通过统计和机器学习等技术进行吸收和泛化,用于构造各种智能化的软件工程工具。

智能化软件开发一直是软件工程追求的核心目标之一。学术界著名的以软件开发智能化为核心主题的自动化软件工程(ASE)会议始于20世纪80年代。近年来,在软件工程领域顶级会议ICSE、FSE等中出现了越来越多基于数据、知识驱动的开发智能化技术研究。例如,于2001年发起的软件仓库挖掘会议(MSR)已经得到了广泛关注,并开启了一个重要的软件工程研究子领域。2010年,Robillard M P等人综述了软件工程中的智能推荐系统,指出这些系统在大范围的软件开发活动(如代码复用、软件维护等)中显著地提升了软件开发者的工作效率与质量。

软件开发中的知识获取与应用一直是产业界关注的焦点之一。软件开发问答网站Stack Overflow利用专家回答的群智机制,提供了大量软件开发问题的答案。Eclipse和Visual Studio等集成开发环境(integrated development environment, IDE)都提供了代码自动补全功能。此后流行的IntelliJ IDEA则将智能编码支持作为特色,提供了智能化代码规范检查、自动生成Java规范的基础方法框架、自动补充方法或类代码框架等智能推荐支持。近年来,Eclipse和Visual Studio都在云开发平台方面取得了突破,在云端可以汇集大量开发数据,为更高层次的基于大数据的开发智能化提供了基础平台。

国内主要软件工程研究团队在此方面也开展了大量的研究工作。北京大学2012年提出了知识驱动的软件复用方法;南京大学在基于数据的软件分析、测试方面进行了算法、工具和实践研究;中国科学院软件研究所基于云平台和数据分析技术,在软件运行时测试和演化方面开展研究;北京航空航天大学在开源软件数据的基础上研究了开发人员推荐问题;国防科技大学在开源数据收集和知识获取方面进行了大量的工作,维护并运行了Trustie社区和网络群体化软件开发环境。国内的浪潮通用软件有限公司、金蝶软件(中国)有限公司等也在获取开发人员操作、数据等方面研发了相应的工具环境;CSDN和OSCHINA等在软件开发技术论坛、代码托管和软件资源汇聚方面建立了大规模的社区。

当前,软件智能化开发成为热点的关键原因在于新时代带来的技术发展的新环境:开源及企业软件开发产生了大数据源,机器学习和信息检索技术的发展提供了知识获取的核心支撑,企业领域工程的广泛实践积累了大量的领域资源。然而,作为智能化软件开发基础的软件开发数据具有规模巨大、碎片分散、快速膨胀的特点。在此基础上实现智能化软件开发支持仍然需要解决一系列基础性的数据采集分析以及知识抽取利用等方面的问题,并以智能推荐、问答等方式提升软件开发工具的智能程度,提高软件开发的质量和效率。在此基础上,智能化的软件工具可以基于数据和知识向开发人员提供推荐、检索和问答等方面的智能化支持。

围绕相关方面,学术界和工业界已经开展了大量的技术研究和实践探索。然而,从总体方法论和技术体系来看,目前的研究和实践探索仍然局限于特定的技术关注点,使用的数据都是针对特定问题本身进行采集的,缺少大数据环境支撑的跨领域智能化技术研究,也没有形成完善的技术体系和环境。为此,笔者团队在国家重点研发计划项目“基于大数据的软件智能开发方法和环境”的支持下,围绕软件工程大数据的汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术开展研究工作,建立基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成“人-工具-数据”融合的新一代软件智能化开发技术体系和环境,并构建软件智能化开发云平台。本项目构建的基于大数据的软件智能化开发方法和环境面向万众创新的社会需求,运行服务大众的公共服务平台;针对企业创新能力提升,提供智能化的企业软件开发环境。

本文将从系统架构、核心技术、应用效果3个方面介绍基于大数据的软件智能化开发方法与环境。

2 系统架构

基于大数据的软件智能化开发方法与环境整体技术架构如图1所示。整个方法体系和环境以开源及企业软件项目代码仓库、交付制品、部署和运维监控等多种类型的软件开发数据源为基础,包含软件大数据汇聚及知识提炼、软件智能化开发支持、软件智能化开发服务3个层次。其中,软件大数据汇聚及知识提炼通过自动化的方法采集和汇聚各种类型的软件开发数据,形成自生长的多源异构软件大数据环境,在此基础上,以知识图谱、经验案例、分类器、规则、模板等多种形式提炼和抽取各种软件开发知识。软件智能化开发支持从软件构造、测试验证、群体协作、运维演化4个重要的方面构建相应的工具平台和支撑环境,为相应的软件开发活动提供智能化支持。软件智能化开发服务基于以软件仓库为中心的分布式智能化开发环境集成技术,构建软件智能化开发云环境运行体系结构与集成框架,实现高可扩展的智能开发环境集成与部署,从而建立面向公众和企业的软件智能化开发服务平台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值