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

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


                                             0.8           Before  After
                                             0.6

                                             0.4
                                             0.2

                                             0
                                                  1    2     3     4     5
                                                             n 行

                                   Fig.10    Precision comparison under different contextual code lines
                                          图 10   不同上下文代码行数下 Precision 对比
                 4.3.3    给定超参数下的推荐结果对比
                    表 9 是开源源码数据质量评估前后两个模型的最佳推荐结果在所有结果中的位置信息的比较,从表中可
                 以看出:
                    •   本文的代码行推荐方法在成功推荐时,最好情况下(Frank)和最坏情况下(LRank),使用经过开源源码数
                        据质量评估之后的数据集的模型并没有表现有更好的效果.
                    •   此外,在整体的 MRR 指标上,使用经过数据质量评估数据集的模型对比使用没有经过数据质量评估数
                        据集的模型,值提高只有 0.018 1,提升幅度比较小.
                    这说明本文所提出的数据质量评估方法,在程序语句推荐方法中,对 MRR 指标影响有限.这也反映了本文
                 所提出的针对代码行推荐结果,利用信息检索方法进行二次排序方法的有效性.

                          Table 9    MRR of model recommendation results before and after data quality assessment
                                      表 9   数据质量评估前后数据对应模型推荐结果的 MRR
                                                                    指标

                                                   FRank           LRank             MRR
                                 Before              1               10             0.306 6
                                  After              1               10             0.324 7

                 4.4   实用性验证

                    前面的实例化验证评估侧重于检测方法在准确性和 MRR 等通用推荐衡量指标上的表现.而推荐结果对于
                 开发人员的实用性是另外一个重要的问题,我们通过对 100 名初步学习 Java 软件开发的学生进行调查来研究
                 这个问题.这项调查要求每个参与者对本文编程现场上下文深度感知的代码行推荐方法的推荐结果有效性进
                 行评分.
                    调查以问卷的方式进行,要求参与者在尝试使用我们方法的推荐结果协助编程开发之后,从以下 4 个待选
                 项中选择最符合个人体验的选项.
                    (1)  推荐结果比较有用,能够有效地帮助开发人员更好地进行程序开发;
                    (2)  推荐结果部分可用,但所推荐代码行需要较多的人工修改才完全可用;
                    (3)  在大多数的情况下,推荐的代码行无用或不可用;
                    (4)  我无法正确地回答这个问题.
                    我们分析了参与调查问卷的同学反馈回来的意见,发现 100 参与者中有 62 个(62%)选择第 1 个选项.剩下
                 的 38 个参与者中,选择第 2 个选项的有 14 个,选择第 3 个选项的有 24 个(24%).调查结果一方面说明本文方法
                 在实际开发过程中确实能够对开发人员有所帮助,并且在提高数据集的处理程度以提高准确性和降低数据集
                 的处理程度以保证更好的可用性之间获得较好的平衡,实用性较好.但是,24%的负面评价也说明我们方法的推
                 荐性能仍有很大的提升空间.第 3 个选项“在大多数的情况下,推荐的代码行无用或不可用”说明在大部分情况
   35   36   37   38   39   40   41   42   43   44   45