Page 30 - 《软件学报》2021年第11期
P. 30

3356                                Journal of Software  软件学报 Vol.32, No.11, November 2021

















                                            Fig.3    An example of unifying source code
                                                图 3   源代码的统一化处理实例

                 2.3   训练数据处理模块
                    在抽取训练数据集时,具体方法是:对一个功能完整的方法块,忽略第 1 行方法的声明,从第 n+1 行开始,以前
                 n 行为模型输入、第 n+1 行为模型的输出构建模型的一个实例,并依次向下直至方法块最后一行,构建训练数据
                 集.根据经验,并充分考虑实际开发中的情况,为了得到关系最紧密的代码上下文,n 的可能取值为 1~5.理论上来
                 说,n 取值越大越好.但是在实际开发过程中,除了功能特别复杂的方法块以外,普通方法块的代码行数通常不会
                 很大.因此,在保证准确率的情况下,n 的取值越小,在实际使用中实用性会提高.最合适的取值,在本文后面的实
                 例验证将讨论 n 的合适取值.在此之前,我们假定 n 的取值为 3.
                 2.4   编程现场数据处理模块
                    编程现场是指软件生产中与当前编码相关的要素集合,如编程现场行为数据、源代码数据、软件任务数据
                 和软件系统运维数据等.在本文中没有使用编程现场的所有可用数据,而是根据实际需求抽取了一部分真正需
                 要的数据.为了更好地获取编程现场大数据,我们开发编程现场数据处理模块,包括开发现场数据采集模块、现
                 场数据清洗模块和现场数据组织管理模块,对开发现场的数据进行实时采集、清洗、组织和管理.如图 4 所示.





















                               Fig.4    A structure diagram of data processing module in onsite programming
                                             图 4   编程现场的数据处理模块结构图

                    开发现场数据采集模块主要处理编程现场数据抽取问题.在本文中,开发人员已经输入的编程现场代码行
                 上下文通过采集模块自动获取,以便根据获取到的代码行上下文,利用训练好的模型预测最可能的当前代码行.
   25   26   27   28   29   30   31   32   33   34   35