基于证据的软件工程起源于循证医学(evidence-based medicine),其主要观点是:如果没有对已有的医学证据进行系统的调研,可能会让患者付出生命的代价;因为有时专家的临床判断比系统调研的结果会差。
B.A.基奇纳姆(Barbara Ann Kitchenham)等人在21世纪初提出了基于证据的软件工程,在2004年的软件工程国际会议(International Conference on Software Engineering)上发表Evidence-based Software Engineering一文。B.A.基奇纳姆等人还提出用系统文献综述(systematic literature review)的方法来获得相关证据,并提出了进行系统文献综述的步骤和指导原则。随后,很多研究者依照Barbara给出的步骤,针对特定的研究问题,进行系统文献综述,以便获取服务于该研究问题的证据。系统文献综述是严格遵循系统的、定义良好的、可重复性的方法,搜索和汇总与特定研究问题相关的所有研究。通过系统文献综述收集相关证据,并应用于软件工程的开发和维护活动中。
基于证据的软件工程的作用包括:①只要有着相同的研究目标,基于证据的软件工程对于不同的研究者来说采用的是相同的方法和步骤,因此能够为工业实践者和其他涉众提供更可信的决策依据。②工业实践者当决定是否采用某项新技术时,可以通过基于证据的软件工程得到更合理的决定。③基于证据的软件工程能够提高软件密集型系统的可靠性,从而能够为开发新技术提供更优的选择。④基于证据的软件工程可以作为专业认证过程(例如,专利审批)的输入。
基于证据的软件工程相关的研究涵盖了软件开发和维护的全生命周期。近年来,随着软件工程领域文献的增多,更需要系统文献综述的方式对已有研究进行汇总和整理,对相关领域的研究状况进行总结,以便为软件开发实践提供更有效的决策支持。在这种背景下,基于证据的软件工程和系统文献综述方法更为流行,每年都有大量的系统综述发表。这些相关研究表明,自从基于证据的软件工程提出以来,相关的理念和方法已经渗透到软件开发过程的各个环节,软件工程的研究者和实践者对软件开发的方方面面都提供了证据,这些证据可以为软件开发中的各项决策提供支持。
基于证据的软件工程的优势有:①能够为某种现象以及其影响从多方面全方位提供信息,如果不同源头的信息是一致的,那么说明该结论的鲁棒性;如果信息不一致,则需要重新核实不同源头信息的可靠性。②提供的元数据,不仅能够进行定性分析,也可以用于进行定量的分析。③能够为未来研究提供更坚实的基础,能够更清晰地了解个人研究在已有研究中的位置。④能够排除一些已经有很多成熟工作的研究方向;发现一些需要进行研究的方向和主题。⑤通过识别一些共有的趋势,或者对冲突的结果进行解释,可以帮助我们建立新的理论。⑥通过系统调研,能够有效反驳一些人们思想的共识。
基于证据的软件工程的缺点有:①要收集证据就需要进行文献综述。比起常规调研,文献综述通常需要花费更多的时间。②对于单个研究者很难进行,因为文献综述的过程至少需要两个研究者,以便最小化个人偏见。