Convergent Contemporary Software Peer Review Practices

22
Convergent Contemporary Software Peer Review Practices Peter C. Rigby - Concordia University, Montreal, Canada Christian Bird – Microsoft Research, Redmond, USA European Software Engineering Conference August 2013

Transcript of Convergent Contemporary Software Peer Review Practices

Page 1: Convergent Contemporary Software Peer Review Practices

Convergent Contemporary Software Peer Review Practices

● Peter C. Rigby - Concordia University, Montreal, Canada● Christian Bird – Microsoft Research, Redmond, USAEuropean Software Engineering Conference

August 2013

Page 2: Convergent Contemporary Software Peer Review Practices

Outline

2

● Motivazioni● Ipotesi● Metodologia● Background● Condivisione conoscenza● Minacce alla validità● Conclusioni

Page 3: Convergent Contemporary Software Peer Review Practices

Motivazioni

3

Pratiche tradizionali di revisione: ● Rigidità● Inefficienza

Assenza di studi sistematici:● Progetti eterogenei● Principi generali● Condivisione della conoscenza

Page 4: Convergent Contemporary Software Peer Review Practices

Ipotesi

4

Diversi progetti

+

simili pratiche di revisione

Metodi di revisione di successo

Page 5: Convergent Contemporary Software Peer Review Practices

Ipotesi – domanda di ricerca

5

In cosa differiscono le revisioni paritarie in progetti diversi? Processo di revisione Durata e frequenza Dimensione artefatti Persone coinvolte Efficacia (problemi discussi) Conoscenza

Page 6: Convergent Contemporary Software Peer Review Practices

Metodologia

6

Molteplici casi di studio Tradizionali, OSS, Ibridi

Chi ha creato la revisione Quali file Quante modifiche Commenti

Page 7: Convergent Contemporary Software Peer Review Practices

Background – revisione paritaria

7

Planning Overview Preparation Meeting

Rework

Follow-up

Page 8: Convergent Contemporary Software Peer Review Practices

Background – revisione paritaria

8

Open Source Sofftware (OSS): Patch → revisione → modifiche → commit Mailing list / bug tracking system

RTC style (Review-Then-Commit) Talvolta CTR (Commit-Then-Review)

Dati di confronto:

Page 9: Convergent Contemporary Software Peer Review Practices

Background – revisione paritaria

9

Tool di supporto (CodeFlow): modifiche → notifiche email → commenti,

domande, risposte → sign off → version control system

Conoscenza, awareness

Nuovi dati Constant development VS sviluppo tradizionale

Page 10: Convergent Contemporary Software Peer Review Practices

Background – revisione paritaria

10

Tool di supporto (Gerrit):

Page 11: Convergent Contemporary Software Peer Review Practices

Background – revisione paritaria

11

Tool di supporto (CodeCollaborator):1) Caricamento artefatto

2) Assegnazione revisori

3) Discussione (asincrona, chat), fix dei problemi

4) Approvazione e commit● Ruoli● Business rules● Nuovi dati

Page 12: Convergent Contemporary Software Peer Review Practices

Contemporary Peer Review

12

1) Un autore sottopone una modifica

2) Sviluppatori discutono e suggeriscono fix (re-submit)

3) Uno o più revisori approvano

4) Main version control repository

No:✗ Grandi Artefatti, incontri co-locati, ruoli

1. Il processo di revisione è leggero e flessibile

Page 13: Convergent Contemporary Software Peer Review Practices

Risultati – sviluppo iterativo

13

Intervallo di revisione:● Lucent: 10 giorni ● AMD: 17,5 ore● MS: 14,7 - 19.8 ore● Google: 15,7 – 20,8 ore● OSS: < 1 giorno

Page 14: Convergent Contemporary Software Peer Review Practices

Risultati – sviluppo iterativo

14

Numero di revisioni mensili:● AMD: 500● Bing: 2290● Office: 4348 (ciclico)● OSS = Chrome, SQL (stabile)

Page 15: Convergent Contemporary Software Peer Review Practices

Contemporary Peer Review

15

● OSS: 11 – 32 linee● Android, AMD: 44 linee● Chrome: 78 linee, 5 file (≈ Bing, Office, SQL)● Lucent: 263 linee

2. Revisioni eseguite presto (prima del commit), velocemente, frequentemente

3. Modifiche di piccole dimensioni

Page 16: Convergent Contemporary Software Peer Review Practices

Risultati – selezione revisori

16

● Sviluppatori → revisioni● Revisioni → sviluppatori● Dibattito (costi)● Tool: suggerimenti, notifiche

4. Due revisori trovano un numero ottimale di difetti

● 3 – 4 invitati

Page 17: Convergent Contemporary Software Peer Review Practices

Risultati – discussione VS difetti

17

Ispezioni tradizionali Focus: trovare (e non risolvere) difetti Lucent: 3 difetti/revisione ( + 4 falsi positivi)

Revisioni asincrone Focus: discussione di difetti e soluzioni L'autore non è solo al momento del fix

5. La revisione si è evoluta da attività di ricerca dei difetti ad attività di problem solving di gruppo

Page 18: Convergent Contemporary Software Peer Review Practices

Risultati – discussione VS difetti

18

Difetti registrati automaticamente Non esplicitamente “Are you sure you don't need to check against

NULL here?” è un difetto? Thread marcato come “risolto”

Misure alternative #re-submit ≤ #difetti ≤ #(argomenti dei) commenti

1 – 2 ≤ ? ≤ 2 – 3 3 - 4

Page 19: Convergent Contemporary Software Peer Review Practices

Risultati – condivisione conoscenza

19

# file modificati # ∪file revisionati

Benefici Coinvolgimento Integrazione

+66% +44% +100% +122% +150%

“drive-by developers”

Page 20: Convergent Contemporary Software Peer Review Practices

Minacce alla validità

20

Carenza di controllo Anomalie

Revisioni usate impropriamente Dati di sintesi (AMD, Lucent)

Page 21: Convergent Contemporary Software Peer Review Practices

Conclusioni

21

1. Il processo di revisione è leggero e flessibile

2. Revisioni eseguite presto (prima del commit), velocemente, frequentemente

3. Modifiche di piccole dimensioni

4. Due revisori trovano un numero ottimale di difetti

5. La revisione si è evoluta da attività di ricerca dei difetti ad attività di problem solving di gruppo

Page 22: Convergent Contemporary Software Peer Review Practices

Sviluppi futuri

22

Misure “leggere” Varietà e quantità di discussioni

È più importante discutere del sistema o trovare e riportare i difetti?

Misura di condivisione della conoscenza varietà