Cognitive-Support Code Review Tools
Total Page:16
File Type:pdf, Size:1020Kb
Cognitive-Support Code Review Tools Improved Efficiency of Change-Based Code Review by Guiding and Assisting Reviewers Von der Fakult¨atf¨ur Elektrotechnik und Informatik der Gottfried Wilhelm Leibniz Universit¨atHannover zur Erlangung des akademischen Grades Doktor-Ingenieur (abgek¨urzt:Dr.-Ing.) genehmigte Dissertation von Herrn M. Eng. Tobias Baum geboren am 28.04.1985 in Hannover, Deutschland 2019 Betreuer: Prof. Dr. Kurt Schneider 1. Referent: Prof. Dr. Alberto Bacchelli 2. Referent: Prof. Dr. S¨oren Auer Vorsitzende der Pr¨ufungskommission: Prof. Dr. Eirini Ntoutsi Tag der Promotion: 25. Oktober 2019 c 2019 Tobias Baum. Some figures contain icons made by Freepik from www.flaticon.com Parts of this thesis share material with published articles (see pg. 273f) and are c the respective publishers. To my family . Abstract Code reviews, i.e., systematic manual checks of program source code by other developers, have been an integral part of the quality assurance canon in software engineering since their for- malization by Michael Fagan in the 1970s. Computer-aided tools supporting the review process have been known for decades and are now widely used in software development practice. De- spite this long history and widespread use, current tools hardly go beyond simple automation of routine tasks. The core objective of this thesis is to systematically develop options for improved tool support for code reviews and to evaluate them in the interplay of research and practice. The starting point of the considerations is a comprehensive analysis of the state of research and practice. Interview and survey data collected in this thesis show that review processes in practice are now largely change-based, i.e., based on checking the changes resulting from the iterative-incremental evolution of software. This is true not only for open source projects and large technology companies, as shown in previous research, but across the industry. Despite the common change-based core process, there are various differences in the details of the review processes. The thesis shows possible factors influencing these differences. Important factors seem to be the process variants supported and promoted by the used review tool. In contrast, the used tool has little influence on the fundamental decision to use regular code reviews. Instead, the interviews and survey data suggest that the decision to use code reviews depends more on cultural factors. Overall, the analysis of the state of research and practice shows that there is a potential for developing better code review tools, and this potential is associated with the opportunity to increase efficiency in software development. The present thesis argues that the most promising approach for better review support is reducing the reviewer's cognitive load when reviewing large code changes. Results of a controlled experiment support this reasoning. The thesis explores various possibilities for cognitive support, two of these in detail: Guiding the reviewer by identifying and presenting a good order of reading the code changes being reviewed, and assisting the reviewer through automatic determination of change parts that are irrelevant for review. In both cases, empirical data is used to both generate and test hypotheses. In order to demonstrate the practical suitability of the techniques, they are also used in a partner company in regular development practice. For this evaluation of the cognitive support techniques in practice, a review tool which is suitable for use in the partner company and as a platform for review research is needed. As such a tool was not available, the code review tool \CoRT" has been developed. Here, too, a combination of an analysis of the state of research, support of design decisions through scientific studies and evaluation in practical use was employed. Overall, the results of this thesis can be roughly divided into three blocks: Researchers and practitioners working on improving review tools receive an empirically and theoretically sound catalog of requirements for cognitive-support review tools. It is available explicitly in the form of essential requirements and possible forms of realization, and additionally implicitly in the form i of the tool \CoRT". The second block consists of contributions to the fundamentals of review research, ranging from the comprehensive analysis of review processes in practice to the analysis of the impact of cognitive abilities (specifically, working memory capacity) on review perfor- mance. As the third block, innovative methodological approaches have been developed within this thesis, e.g., the use of process simulation for the development of heuristics for development teams and new approaches in repository and data mining. Keywords: Software Engineering, Code Reviews, Cognitive Load, Code Reading Techniques, Software Development Tools ii Zusammenfassung Code Reviews, d. h. manuelle Pr¨ufungenvon Programmquellcode durch andere Entwick- ler, sind seit ihrer Formalisierung durch Michael Fagan in den 1970er Jahren fester Bestandteil des Qualit¨atssicherungs-Kanons im Software Engineering. Auch computerbasierte Werkzeuge zur Unterst¨utzungdes Review-Prozesses sind seit Jahrzehnten bekannt und inzwischen in der Softwareenwicklungspraxis weit verbreitet. Trotz dieser langen Historie und weiten Verbrei- tung gehen auch aktuelle Werkzeuge kaum ¨uber einfache Automatisierung anfallender Rou- tineaufgaben hinaus. Das Kernziel der vorliegenden Arbeit ist, systematisch M¨oglichkeiten zur verbesserten Werkzeugunterst¨utzungf¨urCode Reviews zu erarbeiten und im Zusammenspiel von Wissenschaft und Praxis zu evaluieren. Ausgangspunkt der Uberlegungen¨ ist eine umfassende Analyse des Standes der Forschung und der Praxis. Im Rahmen dieser Arbeit erhobene Interview- und Umfragedaten zeigen, dass Review-Prozesse in der Praxis inzwischen zu einem großen Teil ¨anderungsbasiert sind, d.h. auf dem Pr¨ufenvon Anderungen,¨ die sich aus der iterativ-inkrementellen Weiterentwicklung von Software ergeben, basieren. Dies gilt nicht nur, wie in der vorherigen Forschung gezeigt wurde, f¨urOpen-Source-Projekte und große Technologiefirmen, sondern in der gesamten Branche. Dem gemeinsamen ¨anderungsbasiertenKernprozess stehen jedoch diverse Unterschiede in der De- tailumsetzung der Reviewprozesse gegen¨uber. Die Arbeit zeigt m¨ogliche Einflussfaktoren f¨ur diese Unterschiede auf. Wichtige Faktoren scheinen die vom genutzen Review-Werkzeug un- terst¨utztenund bevorzugten Prozessvarianten zu sein. Diesem großen Einfluss der verwende- ten Werkzeuge auf die Auspr¨agungdes Review-Prozesses steht ein geringer Einfluss auf die grunds¨atzliche Entscheidung f¨urdie Nutzung regelm¨aßigerCode Reviews entgegen. Die Inter- views und Umfragedaten legen stattdessen nahe, dass die Entscheidung f¨urdie Nutzung von Code Reviews eher von kulturellen Faktoren abh¨angigist. Aus der Analyse des Stands der Forschung und der Praxis ergibt sich insgesamt, dass es ein Potential zur Entwicklung besserer Code-Review-Werkzeuge gibt und mit diesem Potential die Chance zur Effizienzsteigerung in der Softwareentwicklung einhergeht. In der vorliegenden Arbeit wird dargelegt, dass der vielversprechendste Ansatz f¨urbessere Review-Unterst¨utzungin der kognitiven Entlastung des Reviewers beim Pr¨ufengroßer Code-Anderungen¨ besteht. Diese Argumentation kann durch Ergebnisse eines kontrollierten Experiments gest¨utztwerden. Die Ar- beit untersucht verschiedene M¨oglichkeiten zur kognitiven Unterst¨utzung,zwei davon im Detail: Das Leiten des Reviewers durch Ermitteln und Pr¨asentieren einer guten Abfolge des Lesens der zu pr¨ufendenCode-Anderungen¨ sowie das Entlasten des Reviewers durch automatisches Erken- nen f¨urdas Review irrelevanter Teile der Anderungen.¨ In beiden F¨allenwerden empirische Daten sowohl zur Generierung als auch zur Pr¨ufungvon Hypothesen verwendet. Um die Praxis- tauglichkeit der Unterst¨utzungsvarianten zu zeigen, werden diese zus¨atzlich in einem Partnerun- ternehmen in der regul¨arenEntwicklungspraxis eingesetzt. F¨urdiese Evaluation der kognitiven Unterst¨utzungsfunktionenim Praxiseinsatz wird ein Review-Werkzeug ben¨otigt,das sich f¨urden iii Einsatz im Partnerunternehmen und als Plattform f¨urReviewforschung eignet. Da ein solches Werkzeug nicht verf¨ugbarwar, wurde im Rahmen dieser Arbeit das Code-Review-Werkzeug CoRT\ entwickelt. Auch hierbei wurde wieder auf eine Kombination aus einer Analyse des " Standes der Forschung, Unterst¨utzungvon Designentscheidungen durch wissenschaftliche Stu- dien und Evaluation im Praxiseinsatz zur¨uckgegriffen. Insgesamt lassen sich die Ergebnisse dieser Arbeit grob in drei Bl¨ocke einteilen: Forscher und Praktiker, die an der Verbesserung von Review-Werkzeugen arbeiten, erhalten einen empirisch und theoretisch fundierten Katalog von Anforderungen an kognitiv-unterst¨utzendeReview- Werkzeuge. Dieser liegt einmal explizit in Form essentieller Anforderungen und m¨oglicher Reali- sierungsformen vor, und zus¨atzlich implizit in Form der im Praxiseinsatz bew¨ahrtenAuspr¨agung CoRT\. Der zweite Block besteht aus Beitr¨agenzu den Grundlagen der Reviewforschung und " erstreckt sich von der umfassenden Analyse von Review-Prozessen in der Praxis bis hin zur Analyse des Einflusses kognitiver F¨ahigkeiten (konkret der Arbeitsged¨achtniskapazit¨at)auf die Reviewleistung. Aus den erzielten Ergebnissen ergeben sich Ans¨atzef¨urweitere Forschung und die weitere Verbesserung der Softwareentwicklung durch Code Reviews. Als dritter Block wur- den im Rahmen dieser Arbeit innovative methodische