Linea guida: Revisioni
Un'analisi è una procedura formale in cui un prodotto di lavoro viene presentato alle parti interessate per eventuali commenti e per l'approvazione. Questa linea guida spiega come preparare e condurre una revisione.
Relazioni
Descrizione principale

Generale

  • Condurre le revisioni utilizzando il formato della riunione, anche se alcune revisioni dovranno essere preparate dai partecipanti indipendentemente.
  • Monitorare continuamente la qualità di quanto svolto nel processo per prevenire che in fase di revisione emergano un gran numero di difetti. Per sottolineare tutto ciò, in ogni compito RUP (Rational Unified Process), si fa riferimento costante all'elenco di controllo riportato di seguito; utilizzarlo anche in riunioni di revisione informali o nel lavoro quotidiano.

Tipi di revisioni

In un glossario standard del 1990, IEEE definisce tre tipi di revisioni:

Revisione
Riunione informale in cui un prodotto di lavoro o un insieme di prodotti di lavoro sono presentati all'utente, al cliente o altra parte interessata per commenti e approvazione.
Ispezione
Valutazione tecnica formale in cui i prodotti di lavoro vengono esaminati in dettaglio da una persona o un gruppo diverso dall'autore, per individuare errori, violazioni degli standard di sviluppo ed altri problemi.
Walkthrough
Processo di revisione in cui uno sviluppatore conduce uno o più membri del team di sviluppo attraverso i segmenti del prodotto di lavoro di cui è autore, mentre gli altri rivolgono domande e fanno commenti su tecnica, stile, possibili errori, violazioni degli standard di sviluppo e altri problemi.

Quando implementate tra team, le revisioni offrono l'opportunità di scoprire progettazione e codice dagli altri gruppi e aumentare la possibilità di individuare codice sorgente in comune, opportunità di riutilizzo e opportunità di generalizzazione. Le revisioni forniscono un modo per coordinare lo stile strutturale dei vari gruppi.

Nel RUP, le revisioni assumono un ruolo importante, sebbene secondario nell'assicurare la qualità. I principali fattori che contribuiscono alla qualità del RUP sono descritti nel dettaglio in [ROY98] nella sezione Peer Inspections. Tuttavia, questo testo non identifica i preziosi effetti collaterali delle revisioni nello sviluppo professionale dell'individuo: il personale meno esperto ha la possibilità di esaminare il lavoro di esperti ed avere il proprio analizzato da mentor.

Pianificazione

Le revisioni vengono pianificate per determinare il punto focale e l'ambito della revisione e per verificare che tutti i partecipanti abbiano compreso il proprio ruolo e gli obiettivi della stessa.

Prima di revisionare, definire l'ambito della revisione, determinando le domande da porsi; definire ciò che verrà valutato e perché. Consultare l'elenco di controllo dei prodotti di lavoro da revisionare per i tipi di domande che ci si può porre. Adeguare le domande alla fase del progetto in corso: le revisioni iniziali devono concentrare l'attenzione su problematiche strutturali più ampie, mentre le finali devono essere più specifiche.

Una volta determinato l'ambito, definire i partecipanti, l'ordine del giorno, le informazioni necessari per eseguire la revisione. Nel selezionare i partecipanti, stabilire un equilibrio tra gli esperti in architettura software e gli esperti in dominio. Designare chiaramente e senza ambiguità un leader per la valutazione, con il compito di coordinare la revisione. Se necessario, appoggiarsi ad altri team o altri reparti dell'organizzazione per ottenere esperti tecnici e di dominio.

Il numero di revisori deve essere massimo sette. Se scelti con cura, saranno capaci di identificare i problemi nell'architettura. Un numero superiore di revisori riduce la qualità della revisione, prolungando le riunioni, riducendo la possibilità di partecipazione dei singoli e inserendo problemi e argomentazioni marginali nella revisione. Meno di 4 revisori aumenta il rischio di "miopia" in quanto si riduce la quantità di argomentazioni.

I revisiori devono essere esperti nell'area da revisionare: per i casi d'uso, i revisori devono essere in grado di comprendere le problematiche legate al dominio; per l'architettura software, si richiede una conoscenza delle tecniche di progettazione software. I revisori inesperti possono apprendere qualcosa sull'architettura partecipando; è il caso di considerare tuttavia che il loro contributo alla revisione in sé sarà minimo e la loro presenza potrebbe essere motivo di distrazione. Mantenere i gruppi piccoli; non più di sette individui e non meno di tre. Un numero inferiore può mettere a rischio la qualità della revisione e un numero superiore previene l'instaurarsi di discussioni costruttive limitando la qualità della revisione.

Selezionare i revisori appropriati in base al materiale:

  • coloro che hanno esperienza con il materiale presentato
  • coloro che hanno un interesse attivo nella qualità del prodotto o del prodotto di lavoro revisionato

Preparazione

Prima di iniziare, radunare e distribuire i prodotti di lavoro e l'eventuale documentazione di base ai partecipanti alla revisione. Questo è da farsi con sufficiente anticipo prima dell'inizio della riunione di revisione per dare agio ai partecipanti di esaminare il materiale e raggruppare le problematiche. Distribuendo la documentazione da revisionare con sufficiente anticipo e concedendo ai partecipanti il tempo di prepararsi migliora notevolmente la qualità dei risultati della revisione. La preparazione per le revisioni migliora di molto anche l'efficienza e l'efficacia della revisione.

I revisori devono esaminare la documentazione, preparare domande e identificare problematiche da discutere prima della revisione. Dati i normali carichi di lavoro dei revisori, pochi giorni lavorativi è in genere il minimo necessario per prepararsi alla revisione.

Conduzione delle revisioni

Gli elementi chiave per condurre una revisione di successo sono diversi:

Di seguito, ciascuno di questi elementi verrà esaminato nel dettaglio.

Comprendere il processo di revisione Per condurre una revisione

In genere, il processo di revisione segue un ciclo ripetitivo:

  • Una problematica viene evidenziata da un revisore
  • La problematica viene discussa e possibilmente confermata
  • Un difetto viene identificato (ovvero qualcosa viene identificato che deve essere risolto)
  • Continuare finché tutte le problematiche sono esaurite

Per funzionare con efficacia, ognuno deve comprendere che l'obiettivo di una revisione è di migliorare la qualità del prodotto di lavoro revisionato. I prodotti di lavoro devono essere revisionati con occhio critico alla ricerca di problemi. Il che può essere difficile, ma tutti i revisori devono sforzarsi di concentrare la propria attenzione all'identificazione dei problemi (di natura, siamo tutti portati a risolvere i problemi, ma come revisori questa tendenza deve essere abbandonata).

Abbiamo tutti un forte senso di titolarità del nostro lavoro e spesso è difficile accettare critiche, anche se costruttive. Ne consegue, che è necessario impegnarsi ancora di più per concentrare l'attenzione sugli obiettivi della revisione e renderla fruttuosa.

Comprendere i ruoli dei revisori Per condurre una revisione

Al fine di condurre una revisione efficace, tutti devono assumere un ruolo. In modo più specifico, esistono certi ruoli che devono essere assunti e non sono facilmente intercambiabili. I ruoli base in una revisione sono:

  • il moderatore
  • l'addetto alla registrazione
  • l'autore
  • i revisori

Il moderatore verifica che i revisori seguano l'ordine del giorno e restino concentrati sull'argomento discusso. Inoltre, evita che la revisione venga sviata da argomentazioni marginali e che tutti i revisori partecipino in ugual misura al dibattito.

L'addetto alla registrazione è un ruolo spesso sottovalutato, sebbene essenziale del team di revisione. Il suo compito a tempo pieno è tenere traccia di quanto discusso e documentare i provvedimenti da attuare. Assegnare questo ruolo a uno dei revisori significa eliminarlo dalla discussione. Ancora peggio è tuttavia non documentare le decisioni prese, che conduce inevitabilmente al ripresentarsi del problema. Verificare che sia stato assegnato il ruolo di addetto alla registrazione e che l'individuo lo svolga in maniera esclusiva.

L'autore è colui che presenta il prodotto di lavoro in esame. Il suo ruolo è di spiegare il prodotto di lavoro e offrire tutte le informazioni di base necessarie per comprenderlo, anche se un prodotto di lavoro che non si spiega da sé probabilmente ha bisogno di essere perfezionato. È importante che le revisioni non diventino dei "processi" - il punto focale deve essere il prodotto di lavoro non l'autore. È compito del moderatore garantire che i partecipanti, compreso l'autore, ricordino questo particolare. L'autore avvia la discussione, risponde alle domande e offre chiarimenti.

I revisori evidenziano i problemi. È importante concentrarsi su questo punto e non farsi trascinare in discussioni marginali su come risolvere il problema. Focalizzare sui risultati, non i mezzi per ottenerli.

Nominare un moderatore Per condurre una revisione

Come esaminato in precedenza, il moderatore assume un ruolo chiave nell'evitare che la revisione perda il suo punto focale. È importante che il moderatore sia concentrato sul mantenere la revisione sui binari; un moderatore non deve assumere la responsabilità di revisore. Il ruolo di moderatore è di mantenere la discussione attiva, garantire uguale partecipazione e neutralizzare contenziosi. Questo è un compito a tempo pieno. Una moderazione poco efficace genera revisioni che si trascinano oltre il previsto e non raggiungono l'obiettivo.

Mantenere la revisione breve Per condurre una revisione

Le revisioni più efficaci sono quelle brevi in cui l'attenzione è concentrata su obiettivi identificati chiaramente. Poiché è difficile mantenere l'attenzione concentrata per molto tempo e poiché i revisori devono svolgere anche altre mansioni, limitare la durata a non più di due ore. Se si prevede che la revisione si prolunghi, inserire degli intervalli, suddividendola in riunioni più brevi e concentrate. I risultati saranno migliori se i revisori riescono a mantenere la propria concentrazione.

La chiave per ottenere questo risultato è di avere un ordine del giorni ben suddiviso e gli obiettivi espressi con chiarezza. Entrambi devono essere comunicati al momento della distribuzione della documentazione della revisione e il moderatore deve ripeterli nuovamente all'avvio della revisione. Il moderatore deve quindi costantemente, avvolte con determinazione, ripetere questi obiettivi anche nel corso della riunione.

Identificare i problemi, non risolverli Per condurre una revisione

Uno dei principali motivi per cui le riunioni di revisione non raggiungono i risultati previsti è la tendenza a degenerare in discussioni su come risolvere il problema. La risoluzione dei problemi richiede, di solito, indagine e riflessione; il formato di una revisione non è uno strumento efficace per questo tipo di discussione. Una volta identificato il problema, determinare se è un difetto che deve essere risolto e quindi assegnarlo a qualcuno per risolverlo. La riunione di revisione deve concentrarsi esclusivamente sull'identificazione del problema.

Se il problema richiede un approfondimento, allora formare un gruppo dedicato all'argomento in questione. In genere questo tipo di riunione richiede un po' di indagine e preparazione, nonché individui con skill appropriati. La revisione deve concentrare l'attenzione sull'identificazione degli altri problemi. Il moderatore dovrà spesso esercitare pressione per mantenere la riunione entro questi limiti.

Provvedimenti per i risultati della revisione

La revisione ha poco valore se non si ottiene alcun risultato. A conclusione della revisione:

  • Prioritizzare l'elenco dei problemi
  • Creare difetti per tenere traccia dei problemi e relative risoluzioni.
  • Se è necessario un ulteriore approfondimento, assegnare un piccolo team di ricerca al problema; per identificarlo e non risolverlo.
  • Assegnare i problemi che devono essere risolti nell'iterazione corrente a un individuo o un team addetto a risolverli.
  • Immettere l'elenco di problemi insoluti in iterazioni di impegni di pianificazione futuri.

Ulteriori informazioni

Consultare inoltre [MCO97].