软件工程 经验软件工程概述

转载自:https://blog.csdn.net/ytomc/article/details/78638657

因为我的研究领域一个是软件架构,而另一个就是经验软件工程 (Emprical Software Engineering)。今天随意搜了下CSDN,发现竟然没有任何介绍经验软件工程的文章。于是就开了这篇文。

什么是经验软件工程?

经验型研究(Empirical Study)原来是社会科学、心理学、医学、哲学等领域的体系。顾名思义,经验型研究主要研究的是经验型的数据。这些数据可以通过观察或者经验获得。

近二十年来经验型研究逐渐在软件工程的研究中扮演越来越重要的角色,即经验软件工程。究其原因,我认为很重要的一点在于当遇到一个问题时,我们拥有的知识往往无法很好地解决该问题,所以我们需要获得更多的数据(“经验”)来帮助我们。比如我们想解释一个现象或者我们想知道一个方法在真实企业开发中是否真的有效等。另一个方面我认为是软件工程在现阶段无法全自动化,即其仍然需要人的大量参与。如果有一天比如人工智能可以全面接管软件工程(感觉还很遥远),哪怕大部分自动化,经验软件工程的重要性将大大降低。但是直到今天为止,我们只看到了软件工程中极小的一些部分实现了自动化。除了这两个可能的原因外,也许还有其他原因,但不管如何,我们可以预见经验软件工程在未来的一段时间内仍然将占据非常重要的地位。

为什么经验型研究在软件工程中很重要?

这可以从三个方面来说。第一,经验型研究中的方法集成了人的行为,而我们知道,人工参与目前在软件工程中占据相当的比重。第二,经验型研究为软件工程提供了科学的基础。因为经验型研究可以帮助验证理论或方法,以及解释特定的现象。比如UML的理论多大程度上被用于工业界,为什么?再比如我们提出一个新的架构归档方法,该方法在真正的企业软件开发中是否有效?这些都可以用经验型方法来研究。第三,经验型研究帮助人们获得知识,以及促进知识的共享。

经验型研究方法有哪些?

不同人可能对经验型研究方法的理解不同。比如Wohlin等人在文章“Empirical Research Methods in Software Engineering”中认为其包括实验(Experiment)、案例研究(Case Study)、调研(Survey)和回溯性研究(Post-mortem Analysis)。又比如Easterbrook等人在文章“Selecting Empirical Methods for Software Engineering Research”中认为其包括实验、案例研究、调研、种群研究(Ethnographies,字典翻译为民族志、人种志、人种学,但我觉得用种群似乎更贴切)和行为研究(Action Research)。在”Experimentation in Software Engineering“这本书中,作者将系统文献综述(Systematic Literature Review)和系统文献分析(Systematic Mapping Study)也纳入经验型研究方法的范畴。

我个人认为以上提到的方法都属于经验型的研究方法。以后我将会逐一介绍实验、案例研究、调研、系统文献综述和系统文献分析。回溯性研究我个人认为和其他研究是有重叠的,比如和案例研究或者调研多少都有重叠,所以不做介绍。种群研究和行为研究我接触得非常少,感觉似乎没什么人做这方面的研究,特别是种群研究,所以后文中也不会涉及这两种类型。

猜你喜欢

转载自blog.csdn.net/qq_16488989/article/details/108776968