谢冰:大数据的软件智能化开发技术体系研究
发表时间:2023-10-04 18:01:42
文章来源:炫佑科技
浏览次数:153
菏泽炫佑科技
谢冰:大数据的软件智能化开发技术体系研究
基于大数据的智能软件开发方法和环境
谢冰 1, 彭鑫 2,3, 殷刚 4,5, 李宣东 6, 魏军 7,8, 孙海龙 9,10
1北京大学信息科学与技术学院,北京
2复旦大学计算机科学与技术学院,上海
3上海市数据科学重点实验室,上海
4绿色计算产业联盟,北京
5湖南智清科技有限公司,湖南长沙
6计算机软件新技术国家重点实验室(南京大学),江苏南京
7就读于中国科学院大学(北京)
8中国科学院软件研究所,北京
9软件开发环境国家重点实验室(北京航空航天大学),北京
10北京航空航天大学计算机学院,北京
摘要:本文阐述了围绕软件工程大数据的汇聚与组织、知识表示与细化、软件工具智能化和智能开发服务环境等关键技术开展的一系列研究工作。 建立并研发基于大数据的软件智能开发技术体系。 关键智能软件开发工具形成了“人-工具-数据”一体化的新一代智能软件开发环境,构建了智能软件开发云平台。 适应社会创新需求,搭建公共服务平台,服务公众; 为提高企业创新能力,提供了智能化的企业软件开发环境。
关键词:软件复用; 大数据; 智能软件开发; 知识图谱; 推荐
论文引用格式:
谢兵,彭欣,殷刚,等。 基于大数据的智能软件开发方法及环境[J]. 大数据,2021,7(1):3-21。
谢斌,彭旭,殷刚,等。 基于大数据的研究[J]. 大数据,2021,7(1):3-21。
1 简介
以开源软件为代表的互联网软件开发具有边界开放、群体分散、交付频繁、知识复杂等特点。 与此同时,企业软件开发也逐渐转向以开发、运维一体化为特征的云开发平台()。 这些网络化的开发方式生成了包括源代码、缺陷报告、版本历史、测试用例等全生命周期数据。例如,开源软件社区已经聚集了超过2.7亿个软件项目,软件开发问答网站Stack也积累了超过 1700 万个问题与软件开发相关。 这些数据中包含的模式可以通过统计和机器学习等技术来吸收和概括,并用于构建各种智能软件工程工具。
智能软件开发一直是软件工程追求的核心目标之一。 学术界著名的自动化软件工程(ASE)会议,以智能软件开发为核心主题,始于20世纪80年代。 近年来,越来越多的基于数据、知识驱动的开发智能技术研究出现在ICSE、FSE等软件工程领域的顶级会议上。 例如,2001年发起的采矿软件知识库会议(MSR)受到了广泛关注,开辟了软件工程研究的一个重要子领域。 2010 年,MP 等人。 回顾了软件工程中的智能推荐系统,并指出这些系统在广泛的软件开发活动(如代码复用、软件维护等)中显着提高了软件开发人员的工作效率和质量。
软件开发中的知识获取和应用一直是业界关注的焦点之一。 Stack是一个软件开发问答网站,通过专家回答的群体思维机制,为大量软件开发问题提供答案。 、等集成开发环境(IDE)提供代码自动完成功能。 此后流行的IDEA以智能编码支持为特色,提供智能代码规范检查、自动生成Java规范的基本方法框架、自动补充方法或类代码框架等智能推荐支持。 近年来,Hedu在云开发平台方面取得了突破。 云端可以汇聚大量的开发数据,为基于大数据的更高层次的开发智能提供基础平台。
国内主要软件工程研究团队也在这方面开展了大量的研究工作。 北京大学于2012年提出知识驱动的软件复用方法; 南京大学开展基于数据的软件分析与测试的算法、工具及实践研究; 中科院软件所基于云平台和数据分析技术,在软件运行中开展实时测试和演化研究; 北航研究了基于开源软件数据的开发者推荐问题; 国防科技大学在开源数据收集和知识获取、维护和运营社区和网络集团软件开发环境方面做了大量工作。 国内浪潮通用软件有限公司、金蝶软件(中国)有限公司等在获取开发者操作和数据方面也开发了相应的工具环境; CSDN等建立了软件开发技术论坛、代码托管和软件资源聚合。 一个大规模的社区。
当前,智能软件开发成为热门话题的关键原因是新时代带来的技术发展新环境:开源和企业软件开发产生了大数据源谢冰:大数据的软件智能化开发技术体系研究,机器学习和信息检索技术的发展为知识获取提供了核心支撑。 企业领域工程的广泛实践积累了大量的领域资源。 然而,作为智能软件开发基础的软件开发数据具有规模大、碎片分散、快速膨胀的特点。 在此基础上,要实现软件开发智能化支撑,还需要解决数据采集与分析、知识提取与利用等一系列基础问题,通过智能推荐、问答方式、智能问答等方式,提高软件开发工具的智能化程度。提高软件开发效率。 质量和效率。 在此基础上,智能软件工具可以为开发者提供基于数据和知识的推荐、检索、问答等方面的智能支持。
学术界和工业界围绕相关方面开展了大量的技术研究和实践探索。 但从总体方法论和技术体系来看,目前的研究和实践探索仍局限于具体的技术关注点。 所使用的数据本身是针对特定问题收集的,缺乏大数据环境支持的跨领域智能技术。 研究尚未形成完整的技术体系和环境。 为此,作者团队在国家重点研发计划“基于大数据的智能软件开发方法与环境”的支持下,围绕软件工程中大数据的聚合与组织、知识表示的细化、智能软件工具和智能开发服务环境。 开展关键技术研究,建立基于大数据的软件智能开发技术体系,开发关键软件智能开发工具,形成“人-工具-数据”一体化的新一代软件智能开发技术体系和环境,构建智能软件开发云平台。 本项目构建的基于大数据的智能软件开发方法和环境,面向创新的社会需求,运行服务大众的公共服务平台; 为提高企业创新能力,提供智能化企业软件开发环境。
本文将从系统架构、核心技术、应用效果三个方面介绍基于大数据的智能软件开发方法和环境。
2 系统架构
基于大数据的智能软件开发方法和环境的总体技术架构如图1所示。整个方法体系和环境基于开源和企业软件项目代码仓库等各类软件开发数据源,交付产品、部署和运维监控,包括软件大数据聚合和知识提取、软件智能开发支持、软件智能开发服务三个层面。 其中,软件大数据聚合和知识提炼通过自动化的方法收集和聚合各类软件开发数据,形成自生长的多源异构软件大数据环境。 在此基础上,利用知识图谱、经验案例、分类,以工具、规则、模板等多种形式提炼和提炼出各种软件开发知识,智能软件开发从四个方面支撑相应的工具平台和支撑环境的构建。重要方面:软件构建、测试验证、团队协作、运维演进,为相应的软件开发活动提供智能支撑。 智能软件开发服务基于以软件仓库为核心的分布式智能开发环境集成技术,构建软件智能开发云环境运行架构和集成框架,实现高度可扩展的智能开发环境集成和部署,从而建立面向智能的智能开发环境。面向公众和企业的软件开发服务平台。
图1 基于大数据的智能软件开发方法及整体环境架构
(1)软件大数据聚合与知识提炼
基于主动感知、定向采集、多源关联、增量检测等技术,构建软件工程大数据处理架构和支撑系统,形成自生长的多源异构软件大数据环境。 建立软件大数据的数据分类和数据聚合、采集整理技术体系,开发相应的采集、存储和服务平台。 原始数据、加工数据、元数据等不同类型的数据涵盖开发、交付、应用等阶段。 在此基础上,利用自然语言处理、深度学习、数据挖掘、优化搜索等智能技术,建立软件开发智能推荐技术研究体系,提炼知识图谱、代码模式、基于源数据的主题模型,形成一批智能推荐和问答技术和工具。
(2) 智能化软件开发支持
围绕软件开发中的软件构建、测试验证、群体协作、运维演进四个重要方面,形成相应的智能工具系统,提供数据驱动的智能推荐和优化技术。
● 在软件构建方面,构建以代码库为核心的软件构建大数据环境以及相应的软件构建知识分析和提取方法,提供软件构建智能问答、软件开发知识图谱可视化、代码生成和补全、和自动重建。 推荐等智能软件结构支持。
● 在测试验证方面,采用机器学习、启发式搜索、自然语言理解等智能手段,覆盖测试用例生成、代码模型检查、静态分析缺陷报警确认、程序缺陷等软件质量保障多个方面位置和维修。 为复杂的软件测试和验证提供智能支持。
● 在群体协作方面,基于软件大数据的采集和分析,构建软件开发者知识库,形成基于多源软件大数据的开发者知识库架构,提供基于学习曲线的动态表征方法以及开发人员能力的跨平台方法。 提供社区开发者画像等智能支撑,构建大规模开发者智能协作支撑环境。
● 在运维演进方面,汇聚以镜像为代表的大规模开发运维一体化数据,形成自增长、可追溯的领域数据集合。 通过智能持续集成、持续部署流水线系统等一系列工具系统,为开发运维一体化形成运营演进的智能支撑环境,提高开发运维一体化流程的动态调整能力。
(三)智能软件开发服务
基于智能软件开发技术和工具,通过以软件仓库为核心的分布式智能开发环境集成技术,构建智能软件开发云环境运行架构和集成框架,实现高度可扩展的智能开发环境。 整合部署,建立面向公众和企业的智能软件开发服务平台。 目前,基于该平台经过升级完善,已形成智能软件开发服务环境平台。 同时,基于Che架构实现了智能推荐工具的整体集成。 *终建立的软件智能开发服务平台,向公众提供网络化的智能开发服务,为企业私有化部署提供智能开发支撑。
3大核心技术
基于大数据的智能软件开发方法和环境包括七个方面的核心技术:软件大数据聚合、软件知识提炼、智能软件构建、智能测试验证、智能协作、智能运维演进、智能开发服务环境。
3.1 软件大数据聚合
软件工程大数据主要由代码、文档、开发记录等文本组成,语义丰富。 通过对当前软件工程领域的数据进行分析,从数据类型、数据格式、数据用途、软件生命周期阶段等多方面进行总结,建立了全面、互联的软件工程大数据分类体系(如图所示) 2展示)支持多维度、多谱系、连贯的软件知识提炼和智能发布。 系统包括开发数据、交付数据和应用数据三大类,并分别细分为多个子类。 该分类体系与当前各种软件仓库、社区、论坛的具体数据格式进行映射。
围绕软件工程大数据分类体系,建立贯穿数据源、数据存储、数据处理、数据服务的智能开发服务全链条软件大数据框架,实现采集、分析的全链条管理海量软件工程数据及应用。 。 整个软件工程大数据管理框架和环境包括四个层次:数据源、数据存储、数据处理和数据实例。
● 数据来源:软件工程大数据涵盖开发、发布、应用、运维等不同流程、数据类型和来源,包括版本库、代码仓库、配置产品、软件镜像等,实时、增量采集和这些多源异构数据的聚合可以通过相应的爬虫来实现。
● 数据存储:主要实现大规模异构软件工程大数据的高效存储和访问。
● 数据处理:围绕特定任务和目标,按需扩展存储的数据并进行相应处理,形成软件知识库。 例如,软件知识图谱通过数据分析、融合等技术对数据进行二次处理和处理; 通过分析不同数据类型之间的关联和依赖关系,基于图数据库等存储技术构建软件领域知识图谱,并通过按需数据扩展机制进一步有效减少存储资源占用。
图2 软件工程大数据分类体系
● 数据实例:通过丰富的接口和服务,针对不同的需求和应用,提供相应的数据服务,针对不同类型的数据提供不同的外部数据服务,包括以项目为中心的数据服务和以测试为中心的数据服务。 数据服务、以人为中心的数据服务、以运维为目标的数据服务等。
在此基础上,针对网页数据、版本库数据、缺陷库数据等提出了主动感知、定向采集、多源关联、增量检测等一系列关键技术,分布式数据如图所示3 已设计并建造。 采集处理框架部署分布式爬虫,基于网络爬虫和API实现数据采集、数据包下载等多种采集方式。
其主要特点如下:
● 构建大规模、多类型的分布式爬虫,实现对全球数十个开源社区的代码仓库、开发历史、软件知识等各类数据的主动感知、定向采集和增量更新。
● 针对异构代码数据和代码历史提交数据,基于Git版本管理工具实现差异分析和增量拉取;
● 对于软件知识数据,通过分析不同网站帖子的历史浏览数据,形成帖子注意力衰减模型,然后根据该模型确定每个网站帖子的更新和抓取频率。
采用实时监控、元数据本地存储、按需采集构建的模式,同时兼顾可控性和成本效益,对不同类型数据的软件数据进行聚合、采集和组织,实现全局PB级开源数据自主控制(包括原始数据、处理后的数据和元数据)。 它采用去中心化存储和平台聚合的模式,提供统一的共享管理和在线访问的门户。 部署在阿里云等公有云中,提供统一的统一数据描述和访问入口。 在此基础上,建立了以下三个软件工程大数据采集与服务平台。
(1) 全球开源软件检索分析平台
汇集和收集了软件问答社区、开源软件项目、软件开发工具、开发者等各类数据,构建了全球开源软件检索分析平台。 它包括3层:数据采集层、数据分析层、数据显示层。 其中,数据采集层完成数据采集工作,为平台提供高效、稳定、持续、准确的数据服务; 数据分析层对数据采集层获得的页面信息进行提取,提取每个页面中的关键信息,并对提取结果进行验证,通过数据挖掘(如社区关联、软件评测等)对提取的数据进行分析; 数据显示层根据平台显示的数据格式对获得的数据处理结果进行处理,并将处理结果存储在数据缓冲池中,为平台显示提供数据支持。 目前数据采集模块已覆盖全球20多个主要开源社区。 通过持续监控,已实时捕获超过1400万个开源项目/仓库元数据和超过2000万个在线讨论数据。 还提供开源软件分析、检索、排序、热点分析等服务。
图3 分布式数据采集与处理框架
(2)软件工程大数据共享平台SBD
依托平台,采用开放共享、去中心化存储、平台聚合、按需获取的方法,设计制定统一的多源异构大数据门户,形成大型软件工程大数据共享平台SBD 。 共享平台采用去中心化存储和平台聚合的模式,为共享管理和在线访问提供统一入口。 平台部署在阿里云上,提供聚合数据描述和访问入口。 目前,该平台可以通过原始数据、加工数据、元数据等方式,对开发、交付、应用等不同阶段的软件工程数据进行跟踪采集,并提供不同类型的软件工程研究、智能开发工具等。服务。
(3)软件交付产品获取和管理平台RAISE
设计了海量数据聚合、管理、知识抽取和镜像质量评估的系统化解决方案和服务,实现了增量、高并发的数据聚合和管理方法,支持Hub上百万级数据的自动获取和增量更新、数据是可发现、可追踪的。 开发了软件交付产品(镜像)数据采集和在线管理服务平台RAISE。 以提高产品质量、产品统一管理、实现高效复用为目标,提供多维度的产品信息统计和可视化展示,支持图像分析。 、检索、排名、评价和修复建议等
3.2 软件知识提炼
为了实现智能软件开发的目标,需要通过各种手段从这些数据中提取软件知识,形成智能软件开发支撑能力。 针对这一目标,形成了一系列基于机器学习、知识图谱、数据挖掘、信息可视化等智能技术,以检索、推荐、提问等服务形式的软件知识抽取和应用方法。并回答,并进行错误检查。 系统。 其中,基于机器学习和知识图谱两大智能分析技术的软件开发知识抽取方法和技术体系分别如图4和图5所示。
基于机器学习(包括深度学习)的智能分析是以源代码、软件开发库、项目开发文档、众包开发网站、众包问答、API文档等软件开发数据为基础,通过训练数据准备而形成的和模型训练具有智能推荐能力的服务形式。 其中,训练数据准备和模型选择是关键。 训练数据准备阶段的目的是从原始软件开发数据中提取出满足智能推荐能力需求的训练样本,例如API使用代码推荐的API/控制单元与代码上下文的对比,以及缺陷修复分配的推荐缺陷报告与修复器及其所属模块的比较关系等。为此,本项目采用程序分析、信息抽取、过滤等多种分析方法从修复报告中提取相关信息。原始软件开发数据并形成包含所需比较关系的训练样本。 在模型选择上,本项目大量采用了先进的深度学习技术,包括用于API使用代码推荐的Tree-LSTM模型、用于缺陷修复调度推荐的biRNN模型等。此外,本项目还采用了传统技术,例如基于聚类的无监督学习,适应不同的数据规模和应用场景。
图4 基于机器学习的软件开发知识抽取方法及技术体系
图5 基于知识图谱的软件开发知识抽取方法及技术体系
软件是人类思维的抽象,反映了人们对客观世界的认识。 软件开发是一个高度基于知识的过程。 软件代码、文档、数据等都体现了人们的认知知识。 这些知识是结构化的并且普遍相关,同时广泛分布在不同的软件数据中。 知识图谱作为描述知识的基本表达方法,可以根据概念实体之间的关系显式地定义知识系统。 大多数人类知识系统都是由专家(如领域知识图)或群体智能(如)编译而成。 软件领域的相关知识如果由众智或专家编写,会存在工作量大、质量难以保证等问题。 本项目确定了基于多源异构软件数据自动获取并组织相应的软件知识图谱的技术目标,并开展了利用知识图谱进行推理匹配、有效获取软件知识并提供一系列相关智能支撑功能的研究。支持。
基于知识图谱的软件开发知识抽取方法和技术系统具体包括软件项目图和API知识图。 其中,软件项目图谱自动构建及问答系统(图)采用以源码为核心,多种信息抽取方法相结合的方法,实现软件知识图谱的自动构建,并基于插件-支持新数据源和新知识扩展的机制。 与其他主流软件知识图谱相比,它具有以下方面的优势:以源代码为核心,采用多种信息抽取方法协同构建完全自动化的知识图谱; 采用插件机制,知识图谱可以对其他数据源软件相关的数据具有良好的通用性和可扩展性,可以支持未来可能出现的新的知识需求和知识源,以及知识抽取、关联、细化等; 数据源多样、关联广泛且语义丰富。 它具有丰富的实体类型和关系类型,在相应的软件知识表示和知识利用方面具有较好的效果。
基于知识图谱的问答服务也已经实现。 针对基于事实的问题,提出了一套基于推理子图的自然语言-形式查询转换方法。 针对复杂的自然语言问题,提出了一套基于知识图谱的语义匹配机制。 在Stack的实际数据集上进行测试可以看出,比传统的信息检索技术更加准确。 值得一提的是,该项目通过分析开源软件API之间的语义关联,构建开源软件项目的知识图谱,提出了问答文档中关键代码元素与用户查询之间的相似度匹配方法。 实验表明,该方法对软件问答文档的检索精度超过了Stack自带的搜索工具,帮助开发者更快地定位相关问答内容。
系统框架如图6所示。系统遵循数据-信息-知识-智慧(数据--,DIKW)的层次体系:对于一个要复用的软件项目,其中的多源异构数据被处理为an way, and the and The is into and , and in the form of graph; on this basis, the graph is into the 's of text, and for . and , the and of the reuse .
6 of graph
3.3
is to three main : , code , and code . It code , code , and .
(1) code
often rely on APIs (such as APIs in JDK and JDK) to tasks. , there are so many such APIs that it is for to be with the and usage of all APIs. How to the API in a code and use it in the way is a that often . To this end, the team a code based on and deep , as shown in 7. This the Tree-LSTM model and uses a code based on an code tree . Among them, nodes API usage , , or , and edges the flow them.
7 Code based on deep
The model of this two parts: model and model . model based on in the data code. The main idea is to part of the code at in the code to of code and code to be . On this basis, the API by each node in the tree of all is to a , and then all are input into Tree-LSTM for to a model. model is based on of the data paths in the code tree in the data, and the of data each node and the API node. The the , the more the by its node will a in the API .
The code for this the steps:
● The user a code to be ;
● Based on user input, run the model and model to API ;
● Users make based on API ;
● the user input based on user .
(2) Code
the of code , code and , need to spend a lot of time code . Code is a used . In to the of text- and tree-based , the team a new code based on trees. This and the of tree-based code , the size of the based on tree , and at the same time, it can high-level code and their .
The three steps, as shown in 8. The first is the "" step, which the code files and after the into an tree, and the nodes that have not hash value , the of code ; and then "" The step of " Code " is to use the code based on trees to fine- code (ie, the of tree nodes), and the in the in or . and are at to more code (for , a code block); , there is the " of code " step, which uses to the code . 5 (for , 3 new code are the same).
8 Code based on tree
(3)
is an means to . It the of the by and the of the the of the , the and of the . , the IDE's for is to the of the , and there is no tool for and . In the of , the of the code and the ideal high-level often . This logic and to give an ideal . , the team an based on high-level and , and a high-level - tool. For that long-term , this can of high-level and code, and signs of in the , the of . , of .
3.4 test
The goal of and is to break the faced by and , the of , and and tools based on data and and other the and . and .
Based on data and such as , , , , , , user , etc., we use , , and other Based on this , we focus on links such as , , , and , and on in test case , code model , alarm , and , :
● In terms of test case , a test case based on is in view of the of in of such as , point , and third-party calls;
● In terms of code model , in view of the of in with the scale and of code , an model based on path and is ;
● In terms of alarm , in view of the that the of is very large and on , the and of is ;
● In terms of , in view of the low and of , an for code based on and is ;
● In terms of , in order to solve the of low of in , an for based on Q&A is .
3.5
is a - , and has been one of the the and of . in based on big data aims to the of . It a base based on multi- big data, as well as and , of , and of . and other key build a - base by ' and and . On this basis, and task are based on and , and (code, Q&A, etc.) are and based on , of . The is shown in 9.
9
(1) Data
In view of the base based on multi- big data, it has the of big data in the four of Stack, CSDN and Group Co., Ltd., Wanda Co., Ltd. and other code .的分布式增量爬取工具,实现对多源异构的软件开发大数据的获取和存储;实现面向开发者特征和关系挖掘分析的分布式处理架构,支持增量式数据的实时分析处理,构建了包含4 397万名开发者、24亿个结点、80.7亿条协作关系的知识库;研制了面向开发者和开发资源的高效管理技术和管理工具,实现对开发者和资源关联关系的高效存储、维护、更新及检索。
(2)开发者知识库
针对开发者能力评估和关系挖掘技术,提出了基于学习曲线的开发者能力动态刻画方法、跨社区的开发者画像方法和开发者情感分析方法;建立了定性定量相结合的多维开发者能力模型,从17个维度对开发者的能力进行全面刻画;建立开发者协作关系模型,主要包含开发者-开发者社交关系、直接协作关系和间接协作关系;实现了开发者的能力评估技术和工具,能够实现对开发者能力属性的定性判断或量化计算;实现了协作关系模型研制相应的挖掘分析技术和工具,建立了开发者-开发者与开发者-资源之间的量化关联。
(3)推荐与搜索
针对面向开发任务的开发者智能推荐,提出了基于元学习的众包开发者推荐方法、团队协作能力评估指标以及开发者团队推荐方法;提出了面向的代码评审者推荐、面向Stack 的问题回答者推荐、面向的众包开发者推荐、面向企业的问题解决者推荐等关键技术,并开发了相应的支撑工具,形成了软件开发者智能推荐工具集,极大地提高了自组织模式下的软件开发效率。
(4)工具集
针对基于开发者关联的软件资源推荐,提出了基于深度神经网络的程序代码向量化表示方法,提高了代码克隆等任务处理的准确性;实现了基于开发者行为偏好与上下文信息的开发资源智能推荐工具集,包含Java编程助手工具和代码API自动生成工具,辅助开发者进行代码、问答、缺陷修复方案等软件资源的高效获取。
基于以上研究工作,项目团队建立了开发者关联分析的智能协作工具集合,初步形成了大规模软件智能协作开发支撑环境平台,该平台已在阿里云服务器上稳定运行超过1年。
3.6 智能化运维演化
快速响应变化并持续交付是面向互联网软件(特别是云应用)开发运维追求的主要目标之一。传统软件过程存在软件生命周期“开发部署-运行演化”两阶段割裂,各阶段数据汇聚与知识提炼、关联、运用程度低下的问题,无法实现正向过程自动化与反馈调节智能化相融合的一体化开发与运维,*终影响软件开发运维的效率和质量。
针对上述问题,以软件开发运维中多源异构数据汇聚和领域知识提炼方法为基础,结合多种知识运用技术,提升软件开发与运维有机集成的智能化程度,通过开发运维一体化的软件过程实现软件生命周期各阶段的无缝集成,*终实现正向过程自动化与反馈调节智能化相融合的开发运维一体化智能支撑环境。该环境使用技术和集群管理技术搭建基础设施环境,集成项目研发的多个工具系统,覆盖了数据汇聚管理、知识抽取、运维支撑技术与持续集成( ,CI)/持续交付( ,CD)过程管理3个方面,涉及开发运维一体化中的部署配置、测试评估和运行演化等多个软件生命周期阶段,有助于提升开发运维一体化中的智能化程度和过程调节能力。
该环境实现了开发运维从“事件驱动的单向自动化处理模式”向“传统模式与知识驱动的反馈调节模式相结合”的转换。开发运维一体化框架基于“实时分析、闭环调节、在线演化、持续交付”的体系,实现了知识驱动的自调节开发运维一体化框架,支持大规模云应用的持续交付。相比于已有的技术和研究工作,该框架具有过程灵活定制、执行适应性自动调节的能力。如图10所示,其实现途径和机制具体包括:
● 面向CI/CD过程的实时监测与智能分析,形成智能决策方法;
● 基于智能决策的过程适应性调节,形成闭环调节机制;
● 闭环调节驱动构件开发与应用组装的持续演化,支撑从“构件”到“应用”的高效持续交付。
图10自调节的开发运维一体化
3.7 智能化开发服务环境
软件智能化开发服务环境突破以软件仓库为中心的分布式智能化开发环境集成技术,构建软件智能化开发云环境运行体系结构与集成框架,实现高可扩展的智能开发环境集成与部署。围绕软件开发制品和活动的完整数据,设计智能化开发环境的集成方法与工具,包括运行环境集成和桌面开发环境的集成机制、基于Che的架构设计与交互技术,以及智能化开发工具管理中心,设计实现了以软件项目版本管理为中心,以平台为基础,基于版本库串联的协同开发环境、Che在线编程环境以及运行部署环境,实现按需接入、高可扩展的智能化开发体系架构。依托该架构,协同开发、在线编程和部署运维等智能化工具和服务均可以基于插件模式快速集成,并形成智能化开发环境。
在面向创新实践的软件智能化开发公共服务平台方面,面向创新实践和安全可控需求,突破智能化推荐等关键技术,构建面向开放创新和人才培养的软件智能化开发公共服务平台,支撑我国开源生态的建设。本项目针对开源生态中软件资源和知识资源呈现的多层次、多维度特性,研究了面向协同开发社区的代码贡献者推荐算法、基于多维特征的开源项目个性化推荐方法,以及跨项目的贡献审查者推荐方法等技术。在此基础上,面向国家基础及前沿技术安全可控和自主创新的重大需求,依托智能开发技术与工具,构建形成了开源模式的开放创新服务环境和大规模开放在线实践( open ,MOOP)模式的人才培养服务环境,围绕大规模开放创新实践和人才培养开展了大规模的应用和服务。
在软件智能化企业开发支撑技术与服务平台方面,研发企业大型软件资源库和领域知识图谱,为企业智能化软件开发提供支撑技术与服务平台。项目汇聚涵盖需求、设计、开发、测试、运行、运维、支持服务等软件全生命周期的数据资源,突破了装备制造和智能仓储领域的知识库构建技术,研发了面向企业管理软件的智能化云开发服务环境。在此基础上,浪潮通用软件有限公司集成项目研究成果搭建的智能化企业开发平台有效提升了现有开发方法和平台的智能化水平。同时,应用项目研发的软件工程教育平台开展企业研发人员的培训,可有效提升研发人员的开发实践能力,降低企业的运营成本。
4 应用效果
面向公众的软件智能开发服务平台通过衔接高校、科研机构、软件园区、软件企业等利益相关方,降低软件开发门槛、释放软件开发潜力,推动软件驱动的“产学研用”创新创业生态的构建。
在多源异构软件工程大数据的汇聚与管理方面,研究并建立了覆盖“开发-交付-应用”的软件生命全周期的数据分类体系,突破主动感知、定向采集、多源关联、增量检测等关键技术,构建了自生长的软件工程大数据共享平台SBD。SBD以原始数据、处理后数据以及元数据等形式汇聚了全球主流开源社区的开源软件项目、软件问答讨论、软件开发工具、镜像、开发者等不同类型的数据;通过对数据源进行感知与监测,利用元数据分析比对等技术实现对数据变化的感知和追踪,实现持续演化的软件工程大数据的增量式获取,提升对开源软件大数据的掌控能力。目前,平台上可跟踪和获得的数据总量超过1.5 PB,其中集中存储约25 TB,分散存储约217 TB,实时监控数据约1 278 TB。
在数据与工具开源方面,针对开源软件基金会中的192个开源软件项目(共计482.48 GB软件项目数据),分别构建了相应的软件项目知识图谱。以项目的知识图谱为例,共抽取出了378 897个实体,以及这些实体之间的1 902 683条关联关系;在此基础上,对外提供了软件项目智能问答服务。开发者可以提出自然语言问题,系统基于知识推理在知识图谱以及项目文档中进行搜索,并给出答案。同时自动化软件开发,项目将项目团队自主研发的、自主可控的35项智能开发工具与相关软件数据进行了汇聚整理,开源到木兰开源社区。
在国内开源生态建设方面,项目支持GCC建成了面向“开放计算架构+开源软件技术”的中国绿色计算开源技术和产品开发社区,汇聚了国内的企业团队和大众贡献者;基于构建的中国绿色计算开源技术已经发展成我国*大的ARM开源开发和创新社区,有效支持了产、学、研、用各界的开源开发和评测活动;支持新一代人工智能产业技术创新联盟OpenI启智开源社区的建设,推动人工智能领域开源开放协同创新生态的构建;支持的可控开源创造行动是我国2020年启动的重大创新体系建设计划,核心是激活和汇聚开放群体智慧和贡献,构建一种可持续发展的生态。
在科学研究创新方面,项目有效地帮助了机器人操作系统团队、NuBot国际顶尖机器人竞技团队、群体化软件开发研究团队等解决了智能化软件开发和持续性质量改进等难题。
在高校实践教学方面,智能化实践学习平台头歌()支撑产教各界开发了超过6.9万个在线计算机训练项目、391万个开源代码仓库,各类师生和开发者超过80万人,提供实践课程3 900余门。此外,项目还参与支撑了3届“全国高校绿色计算创新大赛”,参赛人数总量超过2万人次。
5 结论
围绕基于大数据的软件智能开发方法和环境,项目团队提出了一套大数据驱动的软件智能化开发方法,涉及软件开发多个主要过程中的智能化支撑技术。项目团队研发了一批软件智能化开发工具原型系统,在基于知识图谱的软件开发问题复杂查询、数据驱动的测试、智能化群体协作、智能化开发运行一体化决策等方面均提供了基于软件大数据的智能推荐和开发支持。基于对国际开源软件社区级技术的整体分析和研究,项目团队建立了一套互联网及开源软件数据资源的获取汇聚技术和方法,以及融合利用技术方案,目前可以跟踪和获取超过1.5 PB的软件工程数据,分析监测了392万个开源软件,为全球开源领域的4 397万名开发人员建立了画像,提升了我国对此类数据的掌控能力。
在前期国家计划形成的软件资源共享与群智开发平台基础上,项目团队进一步发展了软件开发中的数据智能支撑功能,形成了较为完善的云化开发平台,并对外提供公共服务。目前,开源开发平台注册的各类用户约41.5万人,开源项目1.5万个;开源教育平台汇聚了5.4万个开源训练项目,293万个开源代码仓库,来自982所高校与企业的1.1万名注册教师、33.2万名注册学生和开发者,提供实践课程1 600余门。在6家大型软件开发企业中取得了一批应用示范的成果,显著提高了软件企业的生产效率和质量;形成了一个自主可控的软件开发共享服务的技术框架,并基于此方案支持了一批国内开源社区的支撑环境建设,包括“云计算与大数据”重点专项的集成平台的环境建设。
关于作者
谢冰(1970-),男,博士,北京大学教授、信息科学技术学院常务副院长、软件研究所所长,国家杰出青年科学基金获得者,中国软件行业协会理事,中国计算机学会高级会员,编委,入选教育部新世纪优秀人才支持计划、北京市科技新星计划,获得“中创软件人才奖”。主要研究方向为软件工程、计算机理论科学和分布式系统等。
彭鑫(1979-),男,博士,复旦大学教授、计算机科学技术学院副院长、软件学院副院长。中国计算机学会软件工程专业委员会副主任,:联合主编,编委,《软件学报》编委,编委,IEEE软件维护与进化国际会议(ICSME)执行委员(2017—2020年)。2016年获得NASAC青年软件创新奖。主要研究方向为软件开发大数据分析、智能化软件开发、云原生与智能化运维、泛在计算软件系统等。
尹刚(1975-),男,博士,绿色计算产业联盟实践教学工作委员会副主任,中国计算机学会会员,主要研究方向为在线教育、分布式计算、软件工程、数据挖掘、云计算等。
李宣东(1963-),男,博士,南京大学计算机科学与技术系教授、博士生导师,软件学院院长,主要研究方向为软件建模与分析、软件测试与验证。
魏峻(1970-),男,博士,中国科学院软件研究所研究员、博士生导师,主要研究方向为软件工程、网络分布式计算等。
孙海龙(1979-),男,博士,北京航空航天大学计算机学院教授、博士生导师,主要研究方向为智能软件工程、群体智能和分布式系统。
联系我们:
电话:
电子邮件:
转载、合作:
大数据期刊
《大数据(Big Data ,BDR)》双月刊是由中华人民共和国工业和信息化部主管,人民邮电出版社主办,中国计算机学会大数据专家委员会学术指导,北京信通传媒有限责任公司出版的期刊,已成功入选中文科技核心期刊、中国计算机学会会刊、中国计算机学会推荐中文科技期刊,并被评为2018年、2019年国家哲学社会科学文献中心学术期刊数据库“综合性人文社会科学”学科*受欢迎期刊。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等