Comparing pre‐commit reviews and post‐commit reviews using process simulation

Code review in practice is often performed change‐based, ie, using the code changes belonging to a task to determine which code to review. Previous studies found that 2 variations of this process are used in industry: pre‐commit review and post‐commit review. The choice between these has implications not only for practitioners deciding on a code review process to use but also for the development of review tools and for experimentation with review processes. In some situations, a specific variant is clearly preferable due to the nature of the development process or team. In other situations, there are conflicting opinions. So we asked: Are there practically relevant performance differences between pre and post‐commit reviews? How are these differences influenced by contextual factors? To assess these questions, we designed a parametric discrete event simulation model of certain agile development processes. We validated this model with practitioner's feedback and in part also with empirical data from industry. Our analysis indicates that the best choice does depend on the context but also that there are many situations with no practically relevant difference between both choices. We identified the main influencing factors and underlying effects and condensed our findings into heuristic rules.

[1]  P. Wernick,et al.  Getting the Best out of Software Process Simulation and Empirical Research in Software Engineering , 2007, Second International Workshop on Realising Evidence-Based Software Engineering (REBSE '07).

[2]  Thomas Hanne,et al.  Creating a Code Inspection Model for Simulation-based Decision Support , 2003 .

[3]  Kai Petersen,et al.  A Consolidated Process for Software Process Simulation: State of the Art and Industry Experience , 2012, 2012 38th Euromicro Conference on Software Engineering and Advanced Applications.

[4]  Audris Mockus,et al.  Understanding the sources of variation in software inspections , 1998, TSEM.

[5]  Daniel M. German,et al.  Understanding open source software peer review: Review processes, parameters and statistical models, and underlying behaviours and mechanisms , 2011 .

[6]  Tobias Baum Leveraging pre-commit hooks for context-sensitive checklists: a case study , 2015, Software Engineering & Management.

[7]  James S. Collofello,et al.  Evaluating the effectiveness of process improvements on software development cycle time via system dynamics modelling , 1995, Proceedings Nineteenth Annual International Computer Software and Applications Conference (COMPSAC'95).

[8]  Mika Mäntylä,et al.  What Types of Defects Are Really Discovered in Code Reviews? , 2009, IEEE Transactions on Software Engineering.

[9]  Christian Bird,et al.  Convergent contemporary software peer review practices , 2013, ESEC/FSE 2013.

[10]  Averill M. Law,et al.  Simulation Modeling and Analysis , 1982 .

[11]  Dietmar Pfahl,et al.  Software Process Simulation Modeling: An Extended Systematic Review , 2010, ICSP.

[12]  Rory V. O'Connor,et al.  The situational factors that affect the software development process: Towards a comprehensive reference framework , 2012, Inf. Softw. Technol..

[13]  Stefan Biffl,et al.  Supporting Decision-Making in Software Engineering with Process Simulation and Empirical Studies , 2003, Int. J. Softw. Eng. Knowl. Eng..

[14]  Marco Melis,et al.  Modeling and simulation of open source development using an agile practice , 2006, J. Syst. Archit..

[15]  Claes Wohlin,et al.  A systematic literature review on the industrial use of software process simulation , 2014, J. Syst. Softw..

[16]  Jürgen Münch,et al.  Using empirical knowledge from replicated experiments for software process simulation: a practical example , 2003, 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings..

[17]  Thomas Grechenig,et al.  On the understanding of programs with continuous code reviews , 2013, 2013 21st International Conference on Program Comprehension (ICPC).

[18]  Rory V. O'Connor,et al.  A Complexity Theory Viewpoint on the Software Development Process and Situational Context , 2016, 2016 IEEE/ACM International Conference on Software and System Processes (ICSSP).

[19]  B. Page,et al.  Simulating discrete event systems with UML and JAVA , 2006 .

[20]  Guilherme Horta Travassos,et al.  Simulation Based Studies in Software Engineering: A Matter of Validity , 2015, CLEI Electron. J..

[21]  Joseph A. C. Delaney Sensitivity analysis , 2018, The African Continental Free Trade Area: Economic and Distributional Effects.

[22]  Arie van Deursen,et al.  An exploratory study of the pull-based software development model , 2014, ICSE.

[23]  Kurt Schneider,et al.  Factors influencing code review processes in industry , 2016, SIGSOFT FSE.

[24]  Raymond J. Madachy System dynamics modeling of an inspection-based process , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[25]  Peter J. Middleton,et al.  Software Inspection , 1994, J. Inf. Technol..

[26]  Kurt Schneider,et al.  A Faceted Classification Scheme for Change-Based Industrial Code Review Processes , 2016, 2016 IEEE International Conference on Software Quality, Reliability and Security (QRS).

[27]  Marion Lepmets,et al.  Harnessing software development contexts to inform software process selection decisions , 2013 .

[28]  Michael E. Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[29]  Kurt Schneider,et al.  Comparing Pre Commit Reviews and Post Commit Reviews Using Process Simulation , 2016, 2016 IEEE/ACM International Conference on Software and System Processes (ICSSP).

[30]  Wayne W. Wakeland,et al.  Using design of experiments, sensitivity analysis, and hybrid simulation to evaluate changes to a software development process: a case study , 2004, Softw. Process. Improv. Pract..

[31]  Marco Melis,et al.  Evaluating the impact of test-first programming and pair programming through software process simulation , 2006, Softw. Process. Improv. Pract..

[32]  Rory V. O'Connor,et al.  Exploring the Relationship between Software Process Adaptive Capability and Organisational Performance , 2015, IEEE Transactions on Software Engineering.

[33]  Alan MacCormack,et al.  Managing the Sources of Uncertainty: Matching Process and Context in Software Development , 2003 .

[34]  Jack P. C. Kleijnen,et al.  EUROPEAN JOURNAL OF OPERATIONAL , 1992 .

[35]  Michele Marchesi,et al.  A Comparative Study of Scrum and Kanban Approaches on a Real Case Study Using Simulation , 2012, XP.

[36]  Krzysztof Pawlikowski,et al.  On credibility of simulation studies of telecommunication networks , 2002, IEEE Commun. Mag..