随着经验研究数量的增长,需要汇聚多个经验研究取得的证据,比如,重现研究。首先,研究应该建立在彼此的基础上,新的研究应该考虑将现有知识作为起点。其次,有些问题需要多个经验研究共同给出答案,任何独立的研究都不足以单独回答这些问题。经验证据的收集和综合本身也必须符合科学标准。
系统文献综述(Systematic Literature Review)是收集和综合不同来源的经验证据的重要手段。
Kitchenham和Charter将系统文献综述定义为:“它采用一套良定义的方法,以一种无偏见的、(一定程度上的)可重复的方式去识别、分析和解释所有与被研究问题相关的证据的一种二次研究形式”[96]。被检索到的经验研究称为原始研究(Primary study),系统文献综述被称为二次研究(secondary study)。Kitchenham和Charter为该类综述的开展给出了指南,详见第4章。
和其他经验研究类似,每个系统文献综述也有一个特定的研究问题。其研究问题与所综述的经验研究的结果相关,通常都是这种形式:“A技术/方法是否比B更好(或更差)”[106]。
经验研究的搜索通常采用基于关键字的数据库查询、期刊/会议文集/灰色文献(如技术报告)检索等方式 [96]。“滚雪球(Snowballing)”过程是指通过一篇论文的参考文献去找到其他的相关论文,反之亦然 [145]。注意滚雪球既可以是后向的也可以是前向的。后向就是查询该论文的参考文献,而前向就是寻找哪些相关的论文引用了该篇论文。
如果研究问题是很通用的问题,或者对于该领域的研究成果较少,可以采用映射研究(Mapping Study)的方法(也称为概览研究,Scoping study)。映射研究针对更宽泛的研究问题,目的是识别某个主题的实践或研究现状,尤其是识别研究趋势[106]。由于涉及范围较广,搜索和分类规程没那么严格,有更多定性的特征。
系统文献综述和映射研究对于检索到的研究是否应该纳入其中都必须有明确的判别准则和分类标准。对于系统文献综述而言,一个自然的标准就是研究应该是经验研究,而映射研究也可以包括非经验研究。
当针对一个主题的经验研究被收集起来后,就可以进行综合或聚合了。基于统计方法的综合称为元分析(Meta?analysis)。软件工程中元分析的例子有缺陷检测方法[74,121]、敏捷方法[46]和结对编程[73]。
如果不能用元分析法,则可以使用描述性综合法,包括数据的可视化、数据表格和数据的描述性统计[96]。文献综述研究的问题越宽泛,其证据综合就需要越多的定性方法。 Cruzes 和Dyb?发表过一篇有关定性综合方法的综述论文[39]。
软件工程领域的系统文献综述在21世纪的头10年有了实质性增长。Kitchenham等称在2004~2008年期间发表了53篇不同的系统文献综述 [103,104]。这些综述除了进行经验发现的综合之外,也对经验研究的报告方法以及存储经验研究的数据库给出了改进建议。
23第4章将对系统文献综述进行更深入的阐述。