Strumenti di sviluppo: Issue Tracker

A marzo pubblicai un post intitolato Strumenti di sviluppo: Subversion (SVN) che doveva essere il primo di una serie di post sugli strumenti di sviluppo, sfortunatamente altre priorità me lo hanno impedito.

Riprendo la serie preparando in anticipo una serie di post da pubblicare nel tempo. Dopo i repository SVN passiamo a parlare di un altro strumento fondamentale in ambito collaborativo: l’Issue Tracker.

Un sistema di issue tracking, che troverete chiamato anche con altri termini come bug tracking system, è un software che ha il compito di raccogliere e mantenere organizzati tutti gli “appunti” relativi alla gestione, sviluppo e programmazione di un prodotto.

Questi appunti possono essere note, funzioni da sviluppare, bug da correggere, miglioramenti da apportare…

Esempio pratico: Zend Framework

Prendiamo ad esempio Zend Framework, un framework per PHP 5 sviluppato da Zend con il contributo di programmatori in tutto il mondo.

Per coordinare lo sviluppo, la crescita ed il mantenimento del framework Zend si è affidata all’issue tracker Jira. Come potete notare dall’homepage, su Jira sono presenti tutti i prodotti in sviluppo e per ciascuno esiste una sotto classificazione che identifica ogni singola libreria, ad esempio Zend_Feed o Zend_Uri.

Il compito dell’issue tracker è quello di tenere traccia di ogni attività da eseguire, dai bug ai miglioramenti, in modo centralizzato affinché qualsiasi programmatore possa intervenire con facilità su un qualsiasi componente del prodotto.

Ogni programmatore ha a disposizione un account con il quale è possibile interagire: segnalare un bug, inviare una patch, suggerire una modifica. Ciascuna attività è organizzata a livello di task con la possibilità di assegnare una priorità al ticket, assegnarlo al componente del team che è in carico della libreria, posticiparlo o chiuderlo non appena risolto.

Project Overview

L’issue tracker consente quindi di lavorare a più mani su un progetto, senza il rischio di fare le stesse cose contemporaneamente a più mani o correre il rischio di scordarsi dei pezzi. Obiettivo dell’issue tracker è quello di semplificare l’organizzazione e la gestione del progetto.

Caratteristiche di un Issue Tracker

Ogni issue tracker ha le proprie caratteristiche, tuttavia ognuno di questi prodotti condivide alcuni elementi comuni nella sua architettura. Normalmente si tratta di applicazioni web, basate su un database che ha il compito di salvare in modo centralizzato tutte le attività dai ticket alle revisioni. Ciascun programmatore dispone di un account con il quale interagire.

Si tratta di un elemento fondamentale in un issue tracker per consentire all’intero team di lavoro di capire chi sta lavorando a cosa e non sovrapporre le attività. Ogni modifica, inserimento o attività viene tracciata dall’issue tracker ed associata all’utente. In questo modo, il programmatore stesso può individuare agevolmente i ticket a lui assegnati o, viceversa, le richieste che può prendere in gestione.

Sotto molti versi l’issue tracker è una versione potenziata di una classica todo list, fusa ad un calendario e con funzionalità orientate allo sviluppo collaborativo.

Todo List

Quasi tutti gli issue tracker sono particolarmente rivolti all’aspetto di gestione di quelli che in programmazione sono definiti bug, ovvero difetti di un programma che necessitano un intervento ed una correzione. E’ quindi possibile creare un bug, assegnarlo ad una o più categorie, classificarlo per importanza e priorità, allegare suggerimenti o correzioni (patch).

Molto spesso gli issue tracker integrano al loro interno uno o più moduli per interagire con i repository, come Subversion. Ad esempio, ecco come si presenta l’integrazione di SVN in Trac, un altro noto issue tracker.

E’ possibile navigare il repository così come analizzare due revisioni in cerca di modifiche. Ovviamente, anche in questo caso ogni revisione è identificata con un autore e categorizzata.

Changeset View

Ticket

Come anticipato nella sezione precedente, il centro di un issue tracker sono i ticket, una sorta di TODO (attività da fare) potenziato. Ciascun ticket corrisponde ad un’attività, normalmente classificabile come bug o suggerimento.

Al ticket, parte di uno specifico componente del prodotto, è possibile assegnare una priorità, una milestone (ovvero una ipotetica data per la sua risoluzione), attribuire dei dettagli come il sistema operativo che causa il problema ed attribuire un componente del team che si occuperà di gestire l’elemento.

Issue Types

Lo status consente di verificare se il ticket è in lavorazione, in standby o completato.

A seconda dell’issue tracker possono essere disponibili ulteriori caratteristiche e funzioni avanzate.

Statuses

Elenco di Issue Tracker

Ora che senz’altro avrete più chiare le potenzialità di questo sistema vi starete probabilmente chiedendo dove trovare un issue tracker da installare e provare.

La lista dei prodotti è lunga e per un elenco completo vi rimando alla specifica categoria Bug Tracking su Dmoz. Quella seguente è una piccola raccolta di quelli più diffusi.

Bugzilla

Bugzilla è uno tra gli issue tracker più diffusi, se non il più diffuso.

E’ sviluppato dalla Mozilla Foundation ed adottato per la gestione dei progetti della fondazione tra i quali anche Firefox e Thunderbird. E’ scritto in PERL e si appoggia su MySQL, disponibile gratuitamente.

Edgewall Trac

Trac è sviluppato in python e si appoggia ad un database PostgreSQL.

Il supporto per MySQL è attualmente sperimentale. E’ disponibile gratuitamente. E’ una soluzione che ha trovato spazio negli ultimi anni anche grazie all’eccezionale integrazione con SVN.

Atlassian Jira

Jira è un issue tracker sviluppato in Java, adatto a progetti di medio grande livello.

E’ tanto complesso quanto potente, integra un Wiki, SVN ed un elevato numero di personalizzazioni. Il prodotto non è gratuito, tuttavia la licenza viene concessa grauitamente in caso di progetti open source.

Vanta alcuni clienti di rilievo, tra i quali la Apache Software Foundation.

vBulletin Project Tool

vBulletin Project Tool è uno tra gli issue tracker più recenti, rilasciato meno di un mese fa da vBulletin, l’azienda che molti di voi conosceranno per essere gli sviluppatori della famosa piattaforma per forum in PHP.

Il sistema si integra perfettamente con il forum e condivide il sistema di account e molte proprietà di gestione.

In conclusione

I software di Issue Tracking rappresentano una soluzione alle esigenze di gestione e sviluppo di progetti in ambito collaborativo.

Nonostante il loro scopo primario sia quello di coordinare team di più persone, anche l’uso per singoli programmatori si rivela efficace e di supporto. Consentono di gestire in modo ordinato ed efficace i ticket, ovvero le attività come bug o suggerimenti.

Spesso integrano prodotti utili come Subversion o Wiki per migliorare la produttività.