Tutorial: Contemporary Peer Code Review in Scientific Software Development


Abstract

Contemporary peer code review is a lightweight, asynchronous, tool-supported method for ensuring the quality, maintainability, and sustainability of software. While this approach has been useful in the development of traditional software, it is underutilized in the development of scientific HPC software. Because the complexity of scientific HPC software makes testing difficult, peer code review is a good option. Under the umbrella of Software Engineering for Science https://se4science.org/ and supported by the Better Scientific Software http://BSSw.io initiative, this tutorial introduces eScience developers (and students) to the concepts of code review and its tool support. The tutorial will begin with a general introduction to code review, a more specific discussion of the unique nature of scientific code review, and an overview of avaiable tool support. Then, tutorial attendees will participate in hands-on exercises to practice tool-supported code review. We will conclude the tutorial with a group discussion about best practices for performing scientific code review.

Detailed Description

Tutorial Goals

  1. Help participants learn about the practice and tools associated with contemporary peer code review.
  2. Help participants learn how tool-based contemporary code review differs from code reviews based upon mailing lists or pull request.
  3. Help participants begin to understand how contemporary code review can be applied to the development of eScience software.

Targeted Audience

  1. Developers of eScience software who are interested in learning how to use tool-supported peer code review to improve the quality and maintainability of their software.
  2. Students who are still learning the process of writing effective eScience software.

Audience Prerequisites

  1. Laptop with command line tools for git installed
  2. Github account

Overview of “Hands-on” Exercises

  1. Participants will follow along with the presenter to learn the use of a code review tool.
  2. Participants will set-up their own GitHub account to work with the code review tool.
  3. Participants will use the code review tool to request a code review and to perform a code review.

Attendee Benefits

  1. Learn how to employ contemporary code review on their own projects.
  2. Use of code review will improve scientific results in the short term (through higher quality software) and in the longer term (through development of more maintaiable and sustainable software).

Schedule

8:30 - Introductions

8:45 - Background Lecture on Contemporary Peer Code Review

9:30 - Gerrit Tutorial

10:15 - Code Review Task 1 (dayOfYear.java)

10:30 - Coffee Break

11:00 - Q/A From Code Review Task 1

11:10 - Code Review Task 2 (leapYear.java)

11:40 - Q/A from Code Review Task 2

11:50 - Overview of other code review tools

12:05 - Feedback survey and Discussion

12:30 - Lunch

Zip file of code