《基于大数据的软件智能化开发方法与环境》由会员分享,可在线阅读,更多相关《基于大数据的软件智能化开发方法与环境(28页珍藏版)》请在金锄头文库上搜索。
1、基于大数据的软件智能化开发方法与环境Big data based intelligent software development methodology and environment摘要阐述了围绕软件工程大数据的汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术开展的一系列研究工作,建立了基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成了“人-工具-数据”融合的新一代软件智能化开发环境,并构建了软件智能化开发云平台。面向万众创新的社会需求,构建了服务大众的公共服务平台;针对企业创新能力的提升,提供了智能化的企业软件开发环境。关键词:软件复用;大数据;
2、智能化软件开发;知识图谱;推荐AbstractA series of researches were conducted on the collection and organization of software engineering big data, software development knowledge representation and extraction, intelligent software development tools and service platforms. The purpose is to establish big data based int
3、elligent software development technique systems, develop intelligent software development supporting tools, and form the next-generation intelligent software development environment and cloud-based platforms incorporating human, tools, and data. The outcome of the project includes a public service p
4、latform for the widespread innovation of the people and a series of intelligent software development environments for enterprises.Keywords:software reuse;big data;intelligent software development;knowledge graph;recommendation1 引言以开源软件为代表的互联网软件开发具有边界开放、群体分散、交付频繁、知识复杂等特征。与此同时,企业软件开发也逐渐转向以开发运维一体化(DevO
5、ps)为特征的云化开发平台。这些网络化开发方式产生了包含源代码、缺陷报告、版本历史、测试用例等在内的全生命周期数据1。例如,开源软件社区GitHub已经集聚了超过2.7亿个软件项目,软件开发问答网站Stack Overflow已经积累了超过1 700万个与软件开发相关的问题。这些数据中蕴含的规律可以通过统计和机器学习等技术进行吸收和泛化,用于构造各种智能化的软件工程工具2。智能化软件开发一直是软件工程追求的核心目标之一。学术界著名的以软件开发智能化为核心主题的自动化软件工程(ASE)会议始于20世纪80年代。近年来,在软件工程领域顶级会议ICSE、FSE等中出现了越来越多基于数据、知识驱动的开
6、发智能化技术研究。例如,于2001年发起的软件仓库挖掘会议(MSR)已经得到了广泛关注,并开启了一个重要的软件工程研究子领域。2010年,Robillard M P等人3综述了软件工程中的智能推荐系统,指出这些系统在大范围的软件开发活动(如代码复用、软件维护等)中显著地提升了软件开发者的工作效率与质量。软件开发中的知识获取与应用一直是产业界关注的焦点之一。软件开发问答网站Stack Overflow利用专家回答的群智机制,提供了大量软件开发问题的答案。Eclipse和Visual Studio等集成开发环境(integrated development environment, IDE)都提供
7、了代码自动补全功能。此后流行的IntelliJ IDEA则将智能编码支持作为特色,提供了智能化代码规范检查、自动生成Java规范的基础方法框架、自动补充方法或类代码框架等智能推荐支持。近年来,Eclipse和Visual Studio都在云开发平台方面取得了突破,在云端可以汇集大量开发数据,为更高层次的基于大数据的开发智能化提供了基础平台。国内主要软件工程研究团队在此方面也开展了大量的研究工作。北京大学2012年提出了知识驱动的软件复用方法;南京大学在基于数据的软件分析、测试方面进行了算法、工具和实践研究;中国科学院软件研究所基于云平台和数据分析技术,在软件运行时测试和演化方面开展研究;北京航
8、空航天大学在开源软件数据的基础上研究了开发人员推荐问题;国防科技大学在开源数据收集和知识获取方面进行了大量的工作,维护并运行了Trustie社区和网络群体化软件开发环境。国内的浪潮通用软件有限公司、金蝶软件(中国)有限公司等也在获取开发人员操作、数据等方面研发了相应的工具环境;CSDN和OSCHINA等在软件开发技术论坛、代码托管和软件资源汇聚方面建立了大规模的社区。当前,软件智能化开发成为热点的关键原因在于新时代带来的技术发展的新环境:开源及企业软件开发产生了大数据源,机器学习和信息检索技术的发展提供了知识获取的核心支撑,企业领域工程的广泛实践积累了大量的领域资源。然而,作为智能化软件开发基
9、础的软件开发数据具有规模巨大、碎片分散、快速膨胀的特点。在此基础上实现智能化软件开发支持仍然需要解决一系列基础性的数据采集分析以及知识抽取利用等方面的问题,并以智能推荐、问答等方式提升软件开发工具的智能程度,提高软件开发的质量和效率。在此基础上,智能化的软件工具可以基于数据和知识向开发人员提供推荐、检索和问答等方面的智能化支持。围绕相关方面,学术界和工业界已经开展了大量的技术研究和实践探索。然而,从总体方法论和技术体系来看,目前的研究和实践探索仍然局限于特定的技术关注点,使用的数据都是针对特定问题本身进行采集的,缺少大数据环境支撑的跨领域智能化技术研究,也没有形成完善的技术体系和环境。为此,笔
10、者团队在国家重点研发计划项目“基于大数据的软件智能开发方法和环境”的支持下,围绕软件工程大数据的汇聚组织、知识表示提炼、软件工具智能化和智能开发服务环境等关键技术开展研究工作,建立基于大数据的软件智能化开发技术体系,研发关键性的软件智能化开发工具,形成“人-工具-数据”融合的新一代软件智能化开发技术体系和环境,并构建软件智能化开发云平台。本项目构建的基于大数据的软件智能化开发方法和环境面向万众创新的社会需求,运行服务大众的公共服务平台;针对企业创新能力提升,提供智能化的企业软件开发环境。本文将从系统架构、核心技术、应用效果3个方面介绍基于大数据的软件智能化开发方法与环境。2 系统架构基于大数据
11、的软件智能化开发方法与环境整体技术架构如图1所示。整个方法体系和环境以开源及企业软件项目代码仓库、交付制品、部署和运维监控等多种类型的软件开发数据源为基础,包含软件大数据汇聚及知识提炼、软件智能化开发支持、软件智能化开发服务3个层次。其中,软件大数据汇聚及知识提炼通过自动化的方法采集和汇聚各种类型的软件开发数据,形成自生长的多源异构软件大数据环境,在此基础上,以知识图谱、经验案例、分类器、规则、模板等多种形式提炼和抽取各种软件开发知识。软件智能化开发支持从软件构造、测试验证、群体协作、运维演化4个重要的方面构建相应的工具平台和支撑环境,为相应的软件开发活动提供智能化支持。软件智能化开发服务基于
12、以软件仓库为中心的分布式智能化开发环境集成技术,构建软件智能化开发云环境运行体系结构与集成框架,实现高可扩展的智能开发环境集成与部署,从而建立面向公众和企业的软件智能化开发服务平台。图1基于大数据的软件智能化开发方法和环境整体架构(1)软件大数据汇聚及知识提炼基于主动感知、定向采集、多源关联、增量检测等技术,构建软件工程大数据处理体系结构与支撑系统,形成自生长的多源异构软件大数据环境。建立软件大数据的数据分类和数据汇聚、收集和整理技术体系,研发了相应的采集、存储和服务平台,原始数据、处理后数据以及元数据等不同类型的数据涵盖开发、交付、应用等不同阶段。在此基础上,利用自然语言处理、深度学习、数据
13、挖掘、优化搜索等智能化技术,建立软件开发智能推荐技术研究体系,基于源数据提炼知识图谱、代码模式、主题模型等核心软件知识,形成一批智能推荐、问答技术与工具。(2)软件智能化开发支持围绕软件开发中的软件构造、测试验证、群体协作、运维演化4个重要方面,分别形成相应的智能化工具体系,提供数据驱动的智能化推荐和优化技术。 在软件构造方面,构建以代码库为核心的软件构造大数据环境以及相应的软件构造知识分析和提炼方法,提供软件构造智能问答、软件开发知识图谱可视化、代码生成与补全、自动化重构推荐等智能化软件构造支持。 在测试验证方面,采用机器学习、启发式搜索、自然语言理解等智能化途径,面向测试用例生成、代码模型
14、检验、静态分析缺陷警报确认、程序缺陷定位和修复等软件质量保障的多个方面提供复杂软件测试与验证智能化支持。 在群体协作方面,基于软件大数据的收集与分析构建了软件开发者知识库,形成基于多源软件大数据的开发者知识库体系结构,提供基于学习曲线的开发者能力动态刻画方法和跨社区的开发者画像等智能化支持,同时构建了大规模开发者智能协作支撑环境。 在运维演化方面,汇聚了以 Docker镜像为代表的大规模开发运维一体化数据,形成了自生长、可追溯的领域数据集合。通过智能化持续集成与持续部署流水线系统等一系列工具系统,形成了面向开发运维一体化的运行演化智能支撑环境,提升了开发运维一体化过程的动态调节能力。(3)软件
15、智能化开发服务在软件智能化开发技术与工具的基础上,通过以软件仓库为中心的分布式智能化开发环境集成技术,构建软件智能化开发云环境运行体系结构与集成框架,实现高可扩展的智能开发环境集成与部署,建立面向公众和企业的软件智能化开发服务平台。目前已经基于Trustie平台,通过提升改进形成了软件智能化开发服务环境平台IntelligentDE,同时基于Eclipse Che架构实现了智能化推荐工具的整体集成。最终建立的软件智能化开发服务平台面向公众提供网络化的智能化开发服务,同时面向企业提供私有化部署的智能化开发支持。3 核心技术基于大数据的软件智能化开发方法与环境包括7个方面的核心技术:软件大数据汇聚
16、、软件知识提炼、智能化软件构造、智能化测试验证、智能化协作、智能化运维演化、智能化开发服务环境。3.1 软件大数据汇聚软件工程大数据以代码、文档、开发记录等文本为主体,语义丰富。通过对当前软件工程领域的数据进行分析,从数据类型、数据格式、数据用途和所属的软件生命周期阶段等多个方面进行归纳,建立了综合互联的软件工程大数据分类体系(如图2所示),以支持多维度、多谱系、贯通性的软件知识提炼和智能释放。该体系包括开发数据、交付数据和应用数据三大类,分别又细分为多个子类,并将该分类体系与当前的多种软件仓库、社区和论坛的具体数据格式建立了映射。围绕软件工程大数据分类体系,面向智能开发服务建立了贯穿数据源、数据存储、数据处理与数据服务的全链条软件大数据框架,实现对海量软件工程数据的采集、分析和应用等全链条管理。整个软件工程大数据管理框架与环境包括数据源、数据存储、数据处理与数据实例4个层次。