Crossover Designs in Software Engineering Experiments: Review of the State of Analysis
<|reference_start|>Crossover Designs in Software Engineering Experiments: Review of the State of Analysis: Experimentation is an essential method for causal inference in any empirical discipline. Crossover-design experiments are common in Software Engineering (SE) research. In these, subjects apply more than one treatment in different orders. This design increases the amount of obtained data and deals with subject variability but introduces threats to internal validity like the learning and carryover effect. Vegas et al. reviewed the state of practice for crossover designs in SE research and provided guidelines on how to address its threats during data analysis while still harnessing its benefits. In this paper, we reflect on the impact of these guidelines and review the state of analysis of crossover design experiments in SE publications between 2015 and March 2024. To this end, by conducting a forward snowballing of the guidelines, we survey 136 publications reporting 67 crossover-design experiments and evaluate their data analysis against the provided guidelines. The results show that the validity of data analyses has improved compared to the original state of analysis. Still, despite the explicit guidelines, only 29.5% of all threats to validity were addressed properly. While the maturation and the optimal sequence threats are properly addressed in 35.8% and 38.8% of all studies in our sample respectively, the carryover threat is only modeled in about 3% of the observed cases. The lack of adherence to the analysis guidelines threatens the validity of the conclusions drawn from crossover design experiments<|reference_end|>
@article{frattini2024crossover,
    title={Crossover Designs in Software Engineering Experiments: Review of the
  State of Analysis},
    author={Julian Frattini, Davide Fucci, Sira Vegas},
    journal={arXiv preprint arXiv:2408.07594},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.07594},
    primaryClass={cs.SE}
}