Continuous Integration

Continuous Integration

June 13, 2011 by Neil

Sorry, this entry is not available in English

La pratica del Continuous Integration rappresenta un passo fondamentale nello sviluppo del software. I componenti di un team devono integrare costantemente il loro lavoro. Ad ogni integrazione viene verificato se il software viene compilato correttamente e i test vengono eseguiti con successo. Questo consente di verificare con velocità la presenza di errori, riducendo il tempo d’integrazione e sviluppare software più velocemente.

Ecco una lista degli strumenti e metodologie che non dovrebbero mancare in un team, per costruire un ambiente di continuous integration.

Avere un repository

Un sistema di controllo di versione open source, che può essere utilizzato è Subversion. Questo strumento consente di gestire file e directory che durante lo sviluppo subiscono svariate modifiche, in questo modo si ha la possibilità di risolvere velocemente un problema introdotto tornando ad una versione precedente. Inoltre consente a persone distanti di lavorare sugli stessi file in maniera sicura e semplice. Il repository deve contenere tutto il software e i framework, le librerie e le dipendenze che vengo usate, in modo che sia in grado di funzionare da solo, senza interventi esterni.

Scrivere i test del software

Non è possibile eseguire dei test manualmente, perché qualcosa prima o poi sarà dimenticata, meglio utilizzare metodologie come il Test Driven Development che ci facilita questo lavoro.
E’ fondamentale scrivere il test che verifica una funzionalità del software, poi andare a modificare o a scrivere il codice.
Prima di effettuare il commit sul repository bisogna sempre assicurarsi che vengano eseguiti con successo tutti i test, e non solo quelli collegati alla modifica fatta, in modo da risolvere subito gli eventuali errori introdotti e non avere nel repository una versione non funzionante.

Eseguire il commit del lavoro svolto, al termine di ogni task

Organizzare il lavoro in piccoli task consente di scrivere del codice più pulito, senza inutili complessità. E’ importante che lo sviluppatore, ogni volta che termina un task e ha verificato che tutto funzioni, esegua il commit, naturalmente dopo aver scaricato dal repository eventuali cambiamenti apportati da altri sviluppatori ed essersi accertato che dopo l’integrazione funzioni sempre correttamente.

Automatizzare il processo di compilazione

Ogni volta che nel repository viene aggiornato un progetto, esso deve essere compilato e testato su una macchina dedicata, che deve riprodurre l’ambiente di produzione e deve utilizzare esclusivamente le librerie e le dipendenze presenti nel repository, in modo tale che lo sviluppatore si renda conto che il software non dipende dalla sua configurazione locale.
Questo processo può essere effettuato manualmente o tramite un continuous integration server, come Hudson. Quest’ultimo eseguirà la compilazione, fornendo una dashboard con i risultati dei test e altri dati importanti. Inoltre avviserà il programmatore con l’invio di un’email se qualcosa non è andata a buon fine, in modo da porre subito rimedio.

Pro e contro

Sicuramente questa soluzione avrà un costo iniziale, dato dall’acquisto di macchine dedicate e dall’apprendimento delle buone tecniche di programmazione che dovranno essere assimilate dai programmatori, ma tutto questo sarà ripagato dalla qualità del codice sviluppato, che è dovuto al testing continuo su un continuous integration server e quindi alla certezza che il software non presenti errori.

Link

http://en.wikipedia.org/wiki/Continuous_integration
Hudson

This entry was posted in Consulting, Mobile Apps, Software Development, Web Solutions. Bookmark the permalink.

Leave a Reply

+ 2 = seven