A Personal Perspective on the Evolution of Empirical Software Engineering
This paper offers a four-decade overview of the evolution of empirical software engineering from a personal perspective. It represents what I saw as major milestones in terms of the kind of thinking that affected the nature of the work. I use examples fro
- PDF / 209,617 Bytes
- 19 Pages / 439.36 x 666.15 pts Page_size
- 94 Downloads / 200 Views
Abstract
This paper offers a four-decade overview of the evolution of empirical software engineering from a personal perspective. It represents what I saw as major milestones in terms of the kind of thinking that affected the nature of the work. I use examples from my own work as I feel that work followed the evolution of the field and is representative of the thinking at various points in time. I try to say where we fell short and where we need to go, in the end discussing the barriers we still need to address.
1
Introduction
I presented an earlier version of this work in a keynote at ISESE 2006 and published it in the Journal of the Brazilian Computer Society (JBCS) [1]. At the time I had been asked to offer a 40-year perspective on the evolution of empirical software engineering, from the past to the future. That was an arduous task. So I decided to simplify the task by making it a personal perspective, as I have worked in the field for 40 years. My hypothesis is that my work followed the evolution of the field. So, I offer my own opinions on how the field has evolved using mostly examples from my own work to support those opinions. I have some thoughts on how the field started, where we fell short, and where we need to go. But first, I would like to discuss what makes Software Engineering uniquely hard to research, i.e., to build a body of usable knowledge for the discipline of software engineering [2]. Software engineering has several characteristics that distinguish it from other disciplines. Software is developed in the creative, intellectual sense,
V.R. Basili () Fraunhofer Center for Empirical Software Engineering, University of Maryland, College Park, USA e-mail: [email protected] J. M¨unch and K. Schmid (eds.), Perspectives on the Future of Software Engineering, DOI 10.1007/978-3-642-37395-4 17, © Springer-Verlag Berlin Heidelberg 2013
255
256
V.R. Basili
rather than produced in the manufacturing sense, and so the processes we need to study are development processes, not production processes. This unique aspect of the discipline, that each product is created rather than replicated, is probably the most important one, and greatly affects how we build models, evolve, and learn about the software discipline. It means that the context variables for different software developments greatly affect how we develop software, i.e., there will always be variation in study results and we will never be able to control or maybe even identify all the context variables. The discipline creates a need for continual experimentation, as we explore how to modify and tailor processes for different environments, i.e., different sets of context variables. One consequence of this is that process is a variable, goals are variable, and environment is a variable. That is, we need to select the right processes for the right goals for the environment we are analyzing. So, before we decide how to study a technique and its effects, we need to know something about the environment and the characteristics of the product we are a
Data Loading...