Page 204 - 《软件学报》2024年第6期
P. 204

2780                                                       软件学报  2024  年第  35  卷第  6  期


                  3.1   方法形式化

                    本文旨在提出一个可解释的、自动化的评价方法                 G . 该方法属于混合方法, 形式化表达如公式            (1) 所示:
                                                         G = F ◦Z                                     (1)
                      F  表示目标函数, 如公式                                                         Y  .
                 其中,                     (2) 所示, 旨在使用自动化模型从评审意见          X  中学习若干个质量属性
                                                        F = Φ(X,Y)                                    (2)
                      Z  表示映射, 如公式  (3) 所示, 旨在基于启发式规则/人工经验建立起质量属性与质量等级                   Q 之间的关联.
                                                         Z : F → Q                                    (3)
                  3.2   方法具体化: 质量属性和映射
                    质量属性和映射关系是本文提出的方法实现“可解释的和具有指导性的评价”的目标的支持要素. 质量属性也
                 是构建和优化模型以实现“自动化评价”的目标的指导依据. 关于质量属性和映射关系的详细介绍如下.
                  3.2.1    质量属性
                    为了识别和总结用于评价代码评审意见质量的属性                   (即评价标准), 本文使用了社会科学研究领域中经典的
                 (4) 提升团队协作意识; (5) 探索替代方法. 主要的挑战包括: (1) 推荐评审者; (2) 时间/精力开销; (3) 理解代码意图
                 “三角论证   (triangulation)”方法  [32] . 三角论证又被称作“三角互证”, 是质性研究领域中一种典型的研究方法, 其旨在
                 使用多种方法、数据源、理论交互证实, 从而保证研究发现的有效性和可信度. 三角论证主要有                              3  种实施形式. 其
                 中, 方法三角论证     (method triangulation) 强调使用多种方法  (如访谈、问卷调查等) 来收集与研究问题相关的证据;
                 数据三角论证     (data source triangulation, source 一词常被省略) 强调从多种数据源收集证据; 理论三角论证        (theory
                 triangulation) 强调使用多种理论来分析和解释数据. 本文使用的是“数据三角论证”, 3                种数据源分别是: (1) 正式文
                 件; (2) 学术文献; (3) 实例分析结果.
                    ● 数据源   1: 正式文件
                    本文首先回顾了两份重要的文件. 其中一份              [1] 是  Fagan  在  IBM  公司首次正式提出“代码审查”概念的文章; 另
                 一份  [33] 是  IEEE  计算机协会发布的关于“软件评审和审计标准”的文件. 总结发现, 尽管软件评审存在若干种变体,
                 如“technical reviews”“inspections”和“walk-throughs”等, 但都需要评审代码, 并且评审的核心目标是发现和识别编
                 码缺陷.
                    ● 数据源   2: 学术文献
                    尽管本文尝试在      IEEE Xplore Digital Library、ACM Digital Library  和  Google Scholar 等知名的电子数据库检
                 索研究代码评审意见的文献, 使用的检索字符串为: ((“code review” OR “code inspection”) AND (“comment” OR
                 “feedback”)). 但返回的与代码评审意见直接相关的文献数量极少. 于是本文使用快速文献综述                       (rapid reviews) [34] 方
                 法寻找研究代码评审的文献. 具体地, 本文选择了两篇最新的、研究主题为代码评审的高质量系统文献综述
                 (systematic literature reviews) [35,36] . 两篇文献综述均于  2021  年发表在国际知名的软件工程期刊《Journal of Systems
                 and Software》上, 分别包含了  139、112  篇原始研究   (primary studies). 经过汇总和去重后, 还剩下   182  篇.
                    本文的两位作者独立地阅读每一篇原始研究的至少摘要和引言部分, 从中识别代码评审的获益和挑战. 另一
                 位作者在最后的集体讨论中加入进来解决前两位作者的分歧. 本文期望通过评价和提升代码评审意见质量, 在最
                 大化代码评审的获益的同时, 在一定程度上克服代码评审的挑战. 经过数据抽取和合成, 本文识别出了代码评审
                 的  22  项获益和  35  项挑战. 主要的获益包括: (1) 发现与修复缺陷; (2) 保证与提高软件            (代码) 质量; (3) 传播知识;


                 和实现; (4) 公平/争执; (5) 未能发现缺陷; (6) 增加工作负担; (7) 缺少工具支持.
                    本文首先移除了与代码评审意见文本无关的数据项, 如推荐评审者、时间/精力开销、增加工作负担和缺少
                 工具支持等. 然后将提升团队协作意识、公平/争执等合成为“情绪”; 将发现与修复缺陷、保证与提高软件                                (代码)
                 质量、传播知识、探索替代方法和未能发现缺陷等合成为“质量保证”. 此外, 仍有一些数据项未在该阶段的集体
                 讨论中达成一致, 如理解代码意图和实现. 本文期望提出的质量属性不仅是可解释的, 而且是完备的, 即能够覆盖
                 尽可能多的情形. 为此, 本文设计了“数据三角论证”的第                3  部分  (实例分析结果), 即通过分析评审意见实例来进一
   199   200   201   202   203   204   205   206   207   208   209