Empirical Methods and Studies in Software Engineering, Experiences from ESERNET (original) (raw)

Empirical research methods for software engineering

Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering - ASE '07, 2007

 Learn how to plan, conduct and report on empirical investigations.  Understand the key steps of a research project:  formulating research questions,  theory building,  data analysis (using both qualitative and quantitative methods),  building evidence,  assessing validity,  publishing.  Motivate the need for an empirical basis for SE  Cover all principal empirical methods applicable to SE:  controlled experiment, case studies, surveys, archival analysis, action research, ethnographies,…  Relate these methods to relevant meta-theories in the philosophy and sociology of science.

Support Mechanisms to Conduct Empirical Studies in Software Engineering

Context: Empirical studies are gaining recognition in the Software Engineering(SE) research community. In order to foster empirical research, it is essential understand the environments, guidelines, process, and other mechanisms available to support these studies in SE. Goal: Identifying the mechanisms used to support the empirical strategies adopted by the researches in the major Empirical Software Engineering (ESE) scientific venues. Method: We performed a systematic mapping study that included all full papers published at EASE, ESEM and ESEJ since their first editions. A total of 898 studies were selected. Results: We provide the full list of identified support mechanisms and the strategies that uses them. The most commonly mechanisms used to support the empirical strategies were two sets of guidelines, one to secondary studies and another to experiments. The most reported empirical strategies are experiments and case studies. Conclusions: The use of empirical methods in SE has increased over the years but many studies do not apply these methodsnor use mechanisms to guide their research. Therefore, the list of support mechanisms, where and how they were applied is a major asset to the SE community. Such asset can foster empirical studies aiding the choice regarding which strategies and mechanisms to use in a research. Also, we identified new perspectives and gaps that foster the development of resources to aid empirical studies.

Research types

Testing used to determine the target audience reaction to alternative advertising approaches or preliminary ad concepts.

Investigations about replication of empirical studies in software engineering: A systematic mapping study

Information and Software Technology, 2015

I also thank to Ana Patrícia, Andresa, Bel, Celina and all the friends that supported me somehow during the development of this work. Thanks to Leandro, Sidartha, Carla, Aline and Mouglas who also shared several moments of this journey. Finally, thanks to HASE research group, specially for those people who I had the opportunity to work with: Isabella, Cleviton, Anderson e Roberta.

Software Engineering Research

Concepts, Methodologies, Tools, and Applications, 2014

The classical scientific method has been settled through the last centuries as a cyclic, iterative process of observation, hypothesis formulation, and confirmation/refutation of hypothesis through experimentation. This "experimental scientific method" was mainly developed in the context of natural sciences dealing with the physical world, such as Mechanics, Thermodynamics, Electromagnetism, Chemistry and so on. But when we try to apply this classical view of the scientific method to the various branches of Computer Science and Computer Engineering, among which Software Engineering, we find two kinds of obstacles. First, Computer Science is rooted both in formal sciences such as Mathematics and experimental sciences such as Physics, therefore an excessive emphasis on the experimental side is not appropriate to give a full account of this kind of scientific activity. Second, the production of software systems has to deal not only with the behavior of complex physical systems such as computers, but also with the behavior of complex human systems (developers interacting with stakeholders, for instance, or users interacting with machines) where educational, cultural, sociological and economical factors are essential. Therefore, empirical methods in their narrow sense, even though valuable in some respects, are rather limited to understand a reality that exceeds the mere physical world. Moreover, neither formal nor empirical methods can provide a full account of scientific activity, which relies on something that is beyond any established method. Qualitative (i.e. meta-methodical) reasoning plays the directive role in scientific activity. In this chapter we claim that acknowledging a plurality of research methods in software engineering will benefit the advancement of this branch of science.

Status of Empirical Research in Software Engineering

Lecture Notes in Computer Science, 2007

We provide an assessment of the status of empirical software research by analyzing all refereed articles that appeared in the Journal of Empirical Software Engineering from its first issue in January 1996 through June 2006. The journal publishes empirical software research exclusively and it is the only journal to do so. The main findings are: 1. The dominant empirical methods are experiments and case studies. Other methods (correlational studies, meta analysis, surveys, descriptive approaches, ex post facto studies) occur infrequently; long-term studies are missing. About a quarter of the experiments are replications. 2. Professionals are used somewhat more frequently than students as subjects. 3. The dominant topics studied are measurement/metrics and tools/methods/frameworks. Metrics research is dominated by correlational and case studies without any experiments. 4. Important topics are underrepresented or absent, for example: programming languages, model driven development, formal methods, and others. The narrow focus on a few empirically researched topics is in contrast to the broad scope of software research.