Empirical Methods in Software Engineering
Empirical software engineering is a research area concerned with the study of software engineering processes and artifacts, with the goal to understand and improve software engineering tools, processes, culture and software quality. This topic is of relevance to researchers, practitioners and the users of software systems. This course will prepare students for advanced research in industrial and academic settings by examining how to plan, conduct and report on empirical investigations of software engineering phenomena. The course will cover techniques applicable to each of the steps of an empirical software engineering research project, including formulating and identifying relevant research questions, data analysis (using both qualitative and quantitative methods), building evidence, developing new and refining existing theories, assessing validity and novelty of the research methods and outcomes, and publishing and presenting findings to different audiences. The course will emphasize research methods that are used to study human interactions with software engineering methods and tools:
- controlled experiments,
- user studies,
- field studies,
- surveys,
- archival data analysis methods,
- action research,
- and ethnographies.
We will explore, understand and critique the methods used in several examples of studies of software engineering methodologies and tools used in industry, and through academic peer reviewed articles published in empirical software engineering venues.