<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5910162226627422453</id><updated>2011-11-28T02:08:49.202+01:00</updated><category term='versionamento'/><category term='processo'/><title type='text'>Progettazione del software</title><subtitle type='html'>I migliori suggerimenti su come condurre una attività di sviluppo software.
A cura di Luigi Poderico</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-547375887526775467</id><published>2011-04-04T22:33:00.000+02:00</published><updated>2011-04-04T22:33:50.267+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Memento mori</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jYBWJmMmQLw/TZooq9-K-rI/AAAAAAAADXo/3Pya0rSXzGA/s1600/MementoMori.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-jYBWJmMmQLw/TZooq9-K-rI/AAAAAAAADXo/3Pya0rSXzGA/s320/MementoMori.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Il "memento mori" è un modo per ricordare a tutti i membri del team le varie scadenza. Per mia abitudine, mi piace concordare le scadenze, per cui non sarebbe necessario ricordarle. Ma ho visto che, poi in pratica, è meglio ricordare a tutti le scadenze di tutti.&lt;br /&gt;&lt;br /&gt;Il "memento mori", una volta stampato, appare molto simile ad un foglio con dei post-it appiccicati sopra. I post-it verdi indicano i vari flussi di sviluppo; i post-it gialli riportano il nome della risorse coinvolta, scadenza e una breve descrizione dei risultati attesi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-547375887526775467?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/547375887526775467/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=547375887526775467' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/547375887526775467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/547375887526775467'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2011/04/memento-mori.html' title='Memento mori'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jYBWJmMmQLw/TZooq9-K-rI/AAAAAAAADXo/3Pya0rSXzGA/s72-c/MementoMori.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-6163890880789480734</id><published>2011-02-13T23:01:00.000+01:00</published><updated>2011-02-13T23:01:48.955+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Attività in corso</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9qUIjc8GB80/TVhOJKJfx_I/AAAAAAAADXg/zGPwa_b-x7U/s1600/AttivitaInCorso.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-9qUIjc8GB80/TVhOJKJfx_I/AAAAAAAADXg/zGPwa_b-x7U/s320/AttivitaInCorso.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Con questo foglio del nostro &lt;i&gt;Cruscotto di progetto&lt;/i&gt; siamo in grado di tenere sotto controllo le attività in corso e assegnate ai vari membri del gruppo di sviluppo.&lt;br /&gt;Le informazioni da inserire sono organizzate per colonne, alcune in input ed altre calcolate con delle formule del foglio elettronico. Vediamo i dettagli&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;title&lt;/b&gt; - questa colonna ospita il nome della persona in carico dell'attività&lt;/li&gt;&lt;li&gt;&lt;b&gt;start&lt;/b&gt; - qui inseriamo la data di inizio dell'attività&lt;/li&gt;&lt;li&gt;&lt;b&gt;end&lt;/b&gt; - è una colonna calcolata e rappresenta la data di fine dell'attività, calcolata sommando alla data in &lt;b&gt;start&lt;/b&gt; i giorni lavorativi della colonna &lt;b&gt;effort&lt;/b&gt; e i giorni di ritardo della colonna &lt;b&gt;delay&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;description&lt;/b&gt; - contiene una descrizione sintetica dell'attività.&lt;/li&gt;&lt;li&gt;&lt;b&gt;estend&lt;/b&gt; - è la data stimata di fine dell'attività, senza prendere in considerazione l'eventuale ritardo.&lt;/li&gt;&lt;li&gt;&lt;b&gt;effort&lt;/b&gt; - è il numero di giorni lavorativi stimati per il completamento dell'attività.&lt;/li&gt;&lt;li&gt;&lt;b&gt;delay&lt;/b&gt; - è lo scostamento della previsione iniziale dell'effort dalla reale durata dell'attività. In quanto scostamento, può essere un numero sia positivo che negativo.&lt;/li&gt;&lt;li&gt;&lt;b&gt;ellapsed&lt;/b&gt; - è il numero di giorni solari che intercorrono dall'inizio dell'attività alla sua fine.&lt;/li&gt;&lt;/ul&gt;Alcune note importanti su questo foglio:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;i dati qui presenti sono usati direttamente come input per i gant visualizzati nella &lt;a href="http://progettisw.blogspot.com/2010/10/lo-stato-del-progetto-in-un-colpo.html"&gt;pagina iniziale&lt;/a&gt; del cruscotto è nella pagina &lt;i&gt;Timeline&lt;/i&gt;. I campi title, start, end e description hanno questi nomi, anche se non proprio chiarissimi, perché i componenti grafici che disegnano i gant fanno assunzione sulla presenza di colonne così denominate.&lt;/li&gt;&lt;li&gt;&amp;nbsp;per inserire una nuova riga ovvero una nuova attività da tracciare, conviene copiare una riga già esistente.&lt;/li&gt;&lt;li&gt;le milestone sono delle attività senza la colonna &lt;b&gt;end&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;la milestone &lt;b&gt;oggi&lt;/b&gt; ha lo scopo di identificare in un solo colpo d'occhio quali attività devono ancora iniziare e quali potrebbero essere già finite.&lt;/li&gt;&lt;li&gt;per ordinare le attività rispetto alla data di inizio, ad esempio quando si inseriscono delle nuove attività o quando si vuole aggiornare la posizione della milestone oggi, basta semplicemente ordinare la colonna B del foglio elettronico.&lt;/li&gt;&lt;li&gt;l'attributo delay va aggiornato giornalmente, in base a variazione di stime o ritardi effettivamente misurati.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Quando una attività viene completata, verificato che il campo delay sia opportunamente compilato, va spostata nel foglio &lt;i&gt;Attività terminate&lt;/i&gt;. Ci sono alcuni casi in cui una attività programmata debba essere sospesa per poi essere ripresa in un secondo momento; in questo caso l'attività in questione va spostata nel foglio &lt;i&gt;Attività sospese&lt;/i&gt;. L'ultimo caso preso in considerazione è quello di una attività annullata perché non più utile per il progetto; in questo caso l'attività in questione va spostata nel foglio &lt;i&gt;Attività annullate&lt;/i&gt;.&lt;br /&gt;Questa classificazione delle attività non più in corso è molto importante per effettuare delle statistiche sul progetto, ad esempio per misurare la velocità di sviluppo o l'accuratezza delle stime fatte.&lt;br /&gt;Per esperienza, questo è il foglio di lavoro giornaliero durante l'attività di coordinamento di un progetto di sviluppo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-6163890880789480734?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/6163890880789480734/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=6163890880789480734' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6163890880789480734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6163890880789480734'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2011/02/attivita-in-corso.html' title='Attività in corso'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-9qUIjc8GB80/TVhOJKJfx_I/AAAAAAAADXg/zGPwa_b-x7U/s72-c/AttivitaInCorso.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-2800657334186327291</id><published>2011-01-31T22:50:00.000+01:00</published><updated>2011-01-31T22:50:13.324+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Punti Aperti</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Q4H3I9BZPVk/TUcs2X_DK9I/AAAAAAAADXI/7I-YhiEqHss/s1600/Punti+Aperti.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_Q4H3I9BZPVk/TUcs2X_DK9I/AAAAAAAADXI/7I-YhiEqHss/s320/Punti+Aperti.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La pagina dei &lt;em&gt;Punti aperti&lt;/em&gt; è abbastanza semplice e ci aiuta a tener traccia dei punti aperti e della loro risoluzione. Le colonne presenti sono:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Punto aperto&lt;/em&gt; - descrive brevemente il punto aperto.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Risoluzione&lt;/em&gt; - deve dare in maniera chiara la risoluzione del punto aperto, per poi considerarlo risolto.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Data apertura&lt;/em&gt; - indica la data in cui il punto è stato aperto&lt;/li&gt;&lt;li&gt;&lt;em&gt;Data chiusura&lt;/em&gt; - indica in che data il punto è stato risolto e quindi considerato chiuso.&lt;/li&gt;&lt;/ul&gt;Attenzione ad inserire le date di apertura e chiusura, in quanto a partire da questi dati si aggiorna il bilancio dei punti aperti, rappresentato dal grafico a barre della pagina &lt;strong&gt;Cruscotto&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-2800657334186327291?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/2800657334186327291/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=2800657334186327291' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2800657334186327291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2800657334186327291'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2011/01/punti-aperti.html' title='Punti Aperti'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Q4H3I9BZPVk/TUcs2X_DK9I/AAAAAAAADXI/7I-YhiEqHss/s72-c/Punti+Aperti.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-8386507730399087212</id><published>2010-10-17T22:53:00.000+02:00</published><updated>2010-10-17T22:53:54.398+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Lo stato del progetto in un colpo d'occhio</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Q4H3I9BZPVk/TLte6Jps9bI/AAAAAAAADWk/mjWEg2WPqug/s1600/Cruscotto.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_Q4H3I9BZPVk/TLte6Jps9bI/AAAAAAAADWk/mjWEg2WPqug/s320/Cruscotto.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La prima pagina del&amp;nbsp;&lt;em&gt;&lt;a href="https://spreadsheets.google.com/ccc?key=0An7EJD3vXnp_dGRaUEVyVUdEUkZ1UjYxSWlqYzR5RWc&amp;amp;hl=it"&gt;Cruscotto&lt;/a&gt;&lt;/em&gt; fornisce una visione di insieme sullo stato del progetto. Troviamo 4 sezioni distinte:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Bilancio dei punti aperti&lt;/em&gt; - Un diagramma con due barre verticali indica il bilancio dei &lt;em&gt;punti aperti&lt;/em&gt; e dei &lt;em&gt;punti chiusi&lt;/em&gt;. Per punto aperto si intende una questione che impatta, prima o poi, l'andamento del progetto e che necessità di una azione. Per punto chiuso si intende un punti aperto risolto.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Attività in corso&lt;/em&gt; - Un piccolo gant illustra le attività in corso e quelle prossime. Nella figura è possibile notare due attività, rispettivamente assegnate a Tony e Mary; la data odierna che aiuta a riconoscere le attività in corso; le due mile-stone M1 e M2.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Ritardo&lt;/em&gt; - I tre quadranti indicano, in termini percentuali, il &lt;em&gt;ritardo accumulato&lt;/em&gt; dall'inizio del progetto e relativo alle attività terminate; il &lt;em&gt;ritardo in corso&lt;/em&gt; relativo alle attività in corso, ovvero iniziate e non ancora terminate; il &lt;em&gt;ritardo totale&lt;/em&gt; dato dalla somma del ritardo accumulato e da quello in corso.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Statistiche&lt;/em&gt; - Una breve sezione riguardante l'effort medio stimato, il ritardo medio e l'effort medio effettivo, espresso in giorni/uomo.&lt;/li&gt;&lt;/ul&gt;Tutte le informazioni &amp;nbsp;necessarie per compilare questo primo foglio del nostro cruscotto, vengono tutte dedotte dagli altri fogli:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Punti aperti&lt;/li&gt;&lt;li&gt;Attività in corso&lt;/li&gt;&lt;li&gt;Attività terminate&lt;/li&gt;&lt;li&gt;Attività sospese&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;Completano il cruscotto altri fogli di supporto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Memento mori&lt;/li&gt;&lt;li&gt;Timeline&lt;/li&gt;&lt;li&gt;Attività annullate&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-8386507730399087212?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/8386507730399087212/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=8386507730399087212' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/8386507730399087212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/8386507730399087212'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2010/10/lo-stato-del-progetto-in-un-colpo.html' title='Lo stato del progetto in un colpo d&apos;occhio'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Q4H3I9BZPVk/TLte6Jps9bI/AAAAAAAADWk/mjWEg2WPqug/s72-c/Cruscotto.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-4697957961365333470</id><published>2010-05-07T10:41:00.002+02:00</published><updated>2010-10-03T22:42:21.082+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Cruscotto di progetto</title><content type='html'>Dopo un po' di tempo rieccomi su questo blog.&lt;br /&gt;Vi voglio presentare quello che ho chiamato cruscotto di progetto.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Q4H3I9BZPVk/S-PT5EhlXSI/AAAAAAAAC_4/lNg9WAE9pCU/s1600/cruscotto+-+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_Q4H3I9BZPVk/S-PT5EhlXSI/AAAAAAAAC_4/lNg9WAE9pCU/s320/cruscotto+-+01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Lo trovate come &lt;a href="https://spreadsheets.google.com/ccc?key=0An7EJD3vXnp_dGRaUEVyVUdEUkZ1UjYxSWlqYzR5RWc&amp;amp;hl=it#gid=5"&gt;template&lt;/a&gt; su google docs, questo perché lo scopo principale del cruscotto è di coordinare le attività di sviluppo di un team. Quindi avere la possibilità di condividere in maniera distribuita le informazioni sulle attività in corso e quelle a breve scadenza.&lt;br /&gt;&lt;br /&gt;L'ho messo a punto mentre lo usavo per un progetto di sviluppo, composto da due filoni principali: uno di modifiche adattative e un altro di evolutive. La composizione del team è variata durante il progetto, da un minimo di 3 ad un massimo di 6 persone. Tutto questo per dire che è il risultato di una esigenza ed applicazione reale.&lt;br /&gt;&lt;br /&gt;Proviamo a scoprirlo un po' alla volta, anche con l'aiuto vostro. Soprattutto le critiche.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-4697957961365333470?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/4697957961365333470/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=4697957961365333470' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4697957961365333470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4697957961365333470'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2010/05/cruscotto-di-progetto.html' title='Cruscotto di progetto'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Q4H3I9BZPVk/S-PT5EhlXSI/AAAAAAAAC_4/lNg9WAE9pCU/s72-c/cruscotto+-+01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-4752961334424534026</id><published>2008-06-17T18:57:00.000+02:00</published><updated>2008-06-17T18:58:46.531+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Controlla il tuo lavoro prima di ogni commit</title><content type='html'>&lt;p&gt;Può sembrare una banalità, ma controllare cosa viene messo in configurazione è molto importante perché 1. evita di rompere la continuità della repository e 2. è un ottimo punto di auto revisione del proprio lavoro.&lt;/p&gt; &lt;p&gt;Come sistema di versionamento uso &lt;i&gt;SVN&lt;/i&gt; e come interfaccia grafica &lt;i&gt;TortoiseSVN&lt;/i&gt;, che ha una funzionalità molto utile proprio per la verifica del proprio lavoro. Nella versione inglese si chiama &lt;i&gt;check &lt;/i&gt;&lt;span lang="en-US"&gt;&lt;i&gt;for&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span lang="en-US"&gt;&lt;i&gt;modification&lt;/i&gt;&lt;/span&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: normal;"&gt;Tramite questo comando riesco a vedere in maniera chiara e semplice il diff tra la mia area di lavoro e la &lt;/span&gt;&lt;i&gt;base area&lt;/i&gt;&lt;span style="font-style: normal;"&gt;, ovvero il contenuto dell'ultima update. Riesco anche a vedere, in maniera analoga, il diff tra la mia area di lavoro e l'ultima revisione presente sul sistema di configurazione.&lt;/span&gt;&lt;/p&gt; &lt;p style="font-style: normal;"&gt;Come già detto, con il primo diff analizzo le mie ultime modifiche, riuscendo anche a parcellizzarle in modo da fare commit con commenti diversi a partire dallo stesso set di modifiche. La seconda diff permette invece di andare a capire cosa accadrà se faccio una update, in particolare di scoprire se ci saranno dei conflitti.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-4752961334424534026?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/4752961334424534026/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=4752961334424534026' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4752961334424534026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4752961334424534026'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/06/controlla-il-tuo-lavoro-prima-di-ogni.html' title='Controlla il tuo lavoro prima di ogni commit'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-5558849173694662874</id><published>2008-05-07T17:11:00.003+02:00</published><updated>2008-05-07T17:18:30.019+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>La metafora della mappa</title><content type='html'>Leggendo &lt;a href="http://www.ibm.com/developerworks/rational/library/sep07/kroll/"&gt;&lt;span style="font-style: italic;"&gt;OpenUp in a nutshell&lt;/span&gt;&lt;/a&gt; di Per Kroll, ho trovato una considerazione molto interessante su i processi:&lt;br /&gt;&lt;blockquote&gt;A process is like a map: Use it to understand the big picture and as a reference, but when reality and the map don't match, trust reality.&lt;br /&gt;&lt;/blockquote&gt;ovvero:&lt;br /&gt;&lt;blockquote&gt;Un processo è come una mappa: usala per capire il quadro d'insieme e come riferimento, ma quando la realtà e la mappa non coincidono, allo credi alla realtà.&lt;br /&gt;&lt;/blockquote&gt;Cosa ci insegna questa metafora? Che quando si adotta un processo di sviluppo, questo va saputo adottare ed adattare. Che le descrizioni dei processi sono, per quanto precisi e dettagliati, non adatti o ideali per ogni applicazione o ogni situazione.&lt;br /&gt;&lt;br /&gt;L'intelligenza e il buon senso devono sempre prevalere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-5558849173694662874?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/5558849173694662874/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=5558849173694662874' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/5558849173694662874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/5558849173694662874'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/05/la-metafora-della-mappa.html' title='La metafora della mappa'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-3783277913684266706</id><published>2008-04-01T17:16:00.000+02:00</published><updated>2008-04-01T18:16:15.281+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>I dodici passi per un codice migliore</title><content type='html'>&lt;p&gt;Seguo da molto tempo e con molto interesse il &lt;a href="http://www.joelonsoftware.com/"&gt;blog&lt;/a&gt; di Joel Spolsky. Ecco un &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;articolo&lt;/a&gt; molto interessante su i criteri da seguire per scrivere del codice migliore. Sono espressi sotto forma di test, in modo da fotografare in pochi secondi la situazione di un team di sviluppo.&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Usi un sistema di versionamento  del codice sorgente?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Puoi fare un build in un solo  passo?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Effettui dei build giornalieri?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Hai un database dei bug?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Sistemi i bug prima di scrivere  del nuovo codice?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Hai sempre una schedulazione  aggiornata?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Hai delle specifiche?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;I programmatori hanno un ambiente  di lavoro tranquillo?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Usi il migliore strumento che è  possibile acquistare?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Hai dei tester?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;I candidati scrivono del codice  durante il loro colloquio di lavoro?&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;Effettui dei test di usabilità?&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;A quante risposte rispondente con un si? Se sono meno di 11 c'è qualcosa di consistente da migliorare nel processo di sviluppo.&lt;/p&gt; &lt;p&gt;Aggiungi un commento all'articolo con il numero di si, così possiamo costruire una fotografia della qualità del software sviluppato in Italia.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul processo di sviluppo di progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-3783277913684266706?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/3783277913684266706/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=3783277913684266706' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3783277913684266706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3783277913684266706'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/02/i-dodici-passi-per-un-codice-migliore.html' title='I dodici passi per un codice migliore'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-7005012150908786556</id><published>2008-03-30T15:25:00.002+02:00</published><updated>2008-03-30T15:26:36.604+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Usa una working directory solo quando serve</title><content type='html'>&lt;p&gt;Come faccio a lavorare su un progetto sotto versionamento? In quanti modi è possibile farlo? Finora abbiamo visto come è possibile creare una working directory, avendo in mente il nostro obiettivo di modificare il codice per poi pubblicare.&lt;/p&gt; &lt;p&gt;Ci possono essere altre situazioni dove io voglio poter lavorare sulla copia dei sorgenti di un dato progetto senza però avere la necessità di pubblicare le mie modifiche. Ad esempio perché non è il motivo per cui ho bisogno dei codici sorgenti.&lt;/p&gt; &lt;p&gt;Ad esempio posso essere un tester o un responsabile della qualità, per cui mi basta avere una copia pulita dell'ultima revisione. Oppure mi posso occupare di delivery, per cui anche in questo caso mi basta una copia pulita di un certo tag.&lt;/p&gt; &lt;p&gt;Per tutti questi casi è utile e sufficiente fare, usando la terminologia subversion, l'export piuttosto che un check-out. Infatti in questo modo evitiamo di copiare anche tutti i file di controllo che altrimenti sarebbero creati che, per quantificare, raddoppiano la dimensione dello spazio occupato. In questo modo evitiamo pure che, con altri sistemi di versionamento diversi da subversion, il server tenga traccia dell'operazione di check-out che non vedranno mai nessuna commit.&lt;/p&gt;  &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-7005012150908786556?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/7005012150908786556/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=7005012150908786556' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/7005012150908786556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/7005012150908786556'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/03/usa-una-working-directory-solo-quando.html' title='Usa una working directory solo quando serve'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-6339329535892090132</id><published>2008-03-27T23:23:00.002+01:00</published><updated>2008-03-30T15:26:53.865+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Il valore di una working directory</title><content type='html'>&lt;p&gt;Abbiamo appena fatto il check-out del progetto su cui dobbiamo lavorare in una directory: la nostra working directory. Da questo momento in poi inizia il nostro ciclo “modifica, fondi, pubblica” e con esso cambia il valore del contenuto della working directory.&lt;/p&gt; &lt;p&gt;Siamo sul “modifica”, quindi stiamo aggiungendo o modificando del codice. Arriviamo alla fine della nostra modifica. Cosa succede se per sbaglio cancellassimo tutta la nostra directory? Perderemmo tutto il lavoro fatto, ovvero la mia working directory ha un valore, che economicamente è pari almeno alla controparte economica del lavoro fatto.&lt;/p&gt; &lt;p&gt;Purtroppo non sono ancora nelle condizioni di poter fare una commit. Infatti ho una certa confidenza che il mio lavoro sia corretto con lo stato della repository al momento dell'ultimo update; quello che devo fare è fare un update e verificare se le mie ultime modifiche sono ancora compatibili con le modifiche fatte dagli altri miei colleghi.&lt;/p&gt; &lt;p&gt;Ed è esattamente quello che devo fare. Faccio quindi il mio bel update, lancio i miei test, faccio dei piccoli aggiustamenti che a questo punto mi rendono confidente sul fatto che ora le mie modifiche sono compatibili con l'ultima revisione disponibili. Cosa è successo al valore della mia working directory? Questo è chiaramente aumentato, però ora posso finalmente pubblicare le mie modifiche con una commit.&lt;/p&gt; &lt;p&gt;Stimare il valore di una working directory con l'equivalente economico del lavoro speso per apportare le modifiche è una semplice stima per difetto. Questa stima è tanto più precisa tanto più è alta la frequenza del ciclo “modifica, fondi, pubblica”. Infatti quante più modifiche funzionanti sono presenti solo in una working directory e tanto più alto è il suo valore, che sempre più si scosta dalla semplice equivalenza economica del lavoro speso. Possiamo arrivare fino al paradosso che una working directory assume un valore pari al valore dell'intero progetto.&lt;/p&gt; &lt;p&gt;I consigli che si possono dare sono quindi due:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p&gt;organizzare il lavoro in maniera da avere delle commit  frequenti e, ovviamente, corrette;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;dotarsi di un sistema di backup che provveda automaticamente  alla salvaguardia delle working directory.&lt;/p&gt; &lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-6339329535892090132?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/6339329535892090132/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=6339329535892090132' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6339329535892090132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6339329535892090132'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/03/il-valore-di-una-working-directory.html' title='Il valore di una working directory'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-6655538512674714697</id><published>2008-03-17T17:37:00.004+01:00</published><updated>2008-03-17T18:27:50.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Lo strumento principale per sviluppare software</title><content type='html'>Qual'è lo strumento principale per sviluppare software? Intendo proprio quello che senza non si fa alcun software di qualità.&lt;br /&gt;Pensiamoci un po'... ci sono i compilatori, gli IDE, i libri e manuali. Il c++, java e python? Linux anzi no windows, anzi no il mac.&lt;br /&gt;&lt;br /&gt;Davanti a tutti, però, ce ne sta uno senza il quale non riusciamo a fare niente di buono: il nostro cervello. Se il nostro cervello funziona bene, allora anche il software che produciamo funziona bene.&lt;br /&gt;&lt;br /&gt;Chiaramente il sillogismo si applica a tutti i campi della nostra vita, ma a noi interessa il processo di sviluppo del software. E nello specifico, come si mette in relazione il software prodotto e la nostra mente.&lt;br /&gt;&lt;br /&gt;Possiamo dire che se quello che stiamo scrivendo, il software che ci è stato commissionato, non funziona bene è perché la nostra mente, il nostro cervello, non ha dato il massimo di se? Anzi, senza scomodare il massimo, non ha dato quanto bastava?&lt;br /&gt;&lt;br /&gt;Secondo &lt;a href="http://www.pragprog.com/titles/ahptl"&gt;Andy Hunt&lt;/a&gt; il problema è proprio biologico. Io aggiungo quello che deriva dalla mia esperienza.&lt;br /&gt;&lt;br /&gt;La pace e la calma mentale è il miglior posto dove scrivere software. Quali sono gli agenti che agitano la quiete interiore? Vedo almeno due grosse spinte: le distrazioni e i problemi extra lavorativi.&lt;br /&gt;Le distrazioni sono peggiori quando auto generate dalla nostra mente. Ad esempio l'uso compulsivo di chat, web e posta elettronica: verificare ogni 5 minuti se è arrivata posta anche se abbiamo impostato un alert che ci avvisa; ricaricare la pagina di repubblica.it che non si sa mai cascasse il mondo; 15 chat aperte contemporaneamente che vuol dire una interruzione ogni 5 minuti. Il consiglio che do in questi casi è di cercare di educare se stessi e chi ci sta vicino ad un uso più ragionato di questi strumenti.&lt;br /&gt;Per i problemi extra-lavorativi, che sono molto delicati, il consiglio che posso dare è proprio di sfruttare l'opportuinità lavorativa per ritagliarsi quel breve intervallo di tempo dove si riesce ad estraniarsi dalla realtà.&lt;br /&gt;&lt;br /&gt;Una volta riconosciuto il punto debole nel nostro processo creativo, dobbiamo essere abbastanza maturi da cercare anche le soluzioni. Prima regola è quella di trasformare ogni fallimento in un'occasione per imparare dai propri errori e migliorarsi continuamente. Questo implica uno studio e ricerca continui: tecniche, linguaggi, metodologie. Ma anche leggere un buon libro di cucina, o di storia o di sociologia, perché dalle affinità c'è sempre occasione per imparare.&lt;br /&gt;&lt;br /&gt;Nel processo di riconoscimento e auto miglioramento, che a questo punto possiamo quasi chiamarlo di correzione dell'errore che c'è nella nostra mente, cerchiamo sempre di farci aiutare da un mentore. Se ne abbiamo uno come vicino di scrivania, ovviamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-6655538512674714697?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/6655538512674714697/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=6655538512674714697' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6655538512674714697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6655538512674714697'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/03/lo-strumento-principale-per-sviluppare.html' title='Lo strumento principale per sviluppare software'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-1490313872132620340</id><published>2008-03-10T10:40:00.003+01:00</published><updated>2008-03-12T17:01:31.014+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Documentazione e revisione del codice</title><content type='html'>Il consiglio di non scrivere la documentazione del codice dopo aver scritto il codice è, in generale, un buon consiglio. Quello che accade però in pratica è che viene puntualmente disatteso.&lt;br /&gt;&lt;br /&gt;Come rimediare allora?&lt;br /&gt;&lt;br /&gt;Ad esempio introducendo nel processo di sviluppo una fase di revisione del codice, accompagnata dalla scrittura della documentazione. Ancora meglio se questa documentazione finisce nei commenti al codice sorgente, come si fa con doxygen e compagni.&lt;br /&gt;&lt;br /&gt;La revisione e scrittura della documentazione può essere fatta profiquamente anche dall'autore del codice sorgente. E garantisco che il numero di errori o di potenziali problemi scoperti non è trascurabile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-1490313872132620340?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/1490313872132620340/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=1490313872132620340' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/1490313872132620340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/1490313872132620340'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/03/documentazione-e-revisione-del-codice.html' title='Documentazione e revisione del codice'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-3973094870956361182</id><published>2008-03-05T10:42:00.003+01:00</published><updated>2008-03-05T11:17:48.327+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processo'/><title type='text'>Agile Software Development</title><content type='html'>Alcuni principi che sento di consigliare sono quelli indicati dal &lt;a href="http://www.agilemanifesto.org/"&gt;manifesto&lt;/a&gt; per lo sviluppo agile del software, meglio conosciuto come Agile Software Development.&lt;br /&gt;&lt;br /&gt;Il valore dato ad alcuni elementi del proceso di sviluppo vengono cambiati. Valgono di più le persone e l'interazione tra di loro che i processi e gli strumenti; vale di più un software funzionante che una documentazione esauriente; vale di più la collaborazione con il cliente che la contrattazione di un contratto; vale di più saper rispondere ai cambiamenti che seguire un piano.&lt;br /&gt;&lt;br /&gt;Quali sono i &lt;a href="http://www.agilemanifesto.org/principles.html"&gt;principi&lt;/a&gt; dietro il Manifesto Agile?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;La nostra priorità più alta è di soddisfare il cliente attraverso il rilascio continuo e frequente di software da provare.&lt;/li&gt;&lt;li&gt;I cambiamenti dei requisiti sono i benvenuti, anche se durante lo sviluppo avanzato. Un processo agile gestisce i cambiamenti a favore della competitività del cliente.&lt;/li&gt;&lt;li&gt;Rilasciare frequentemente del software funzionante, da un paio di settimane ad un paio di mesi, preferendo interavalli più piccoli possibili.&lt;/li&gt;&lt;li&gt;Commerciali e sviluppatori devono lavorare insieme giorno per giorno al progetto.&lt;/li&gt;&lt;li&gt;Costruire i progetti intorno a persone motivate. Dargli l'ambiente e il supporto necessario e confida nel fatto che un buon lavoro verrà fatto.&lt;/li&gt;&lt;li&gt;Il modo più efficace ed efficiente di trasmettere informazioni a e dentro un gruppo di sviluppo e una conversazione faccia a faccia.&lt;/li&gt;&lt;li&gt;Avere del software funzionante è la prima misura del progredire del progetto.&lt;/li&gt;&lt;li&gt;I processi agili promuovono uno sviluppo sostenibile. Gli sponsor, gli sviluppatori e gli utenti dovrebbero mantenere uno stato costante di pace indefinitamente.&lt;/li&gt;&lt;li&gt;Un'attenzione continua verso l'eccellenza tecnica e alla buona progettazione migliorano l'agilità.&lt;/li&gt;&lt;li&gt;Semplicità -- l'arte di massimizzare la quantità di lavoro non fatto -- è essenziale.&lt;/li&gt;&lt;li&gt;Le migliori architetture, requisiti e progetti emergono da gruppi auto-organizzati.&lt;/li&gt;&lt;li&gt;Ad intervalli regolari, il gruppo riflettere su come diventare più efficace, regolando ed aggiustando l'ambiente circostante di conseguenza.&lt;/li&gt;&lt;/ol&gt;Stampateli su un foglio ed affiggeteli!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-3973094870956361182?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/3973094870956361182/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=3973094870956361182' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3973094870956361182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3973094870956361182'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/03/agile-software-development.html' title='Agile Software Development'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-2876608137775595218</id><published>2008-02-08T15:06:00.001+01:00</published><updated>2008-02-08T15:06:49.656+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Cancellare in maniera definitiva dal sistema di versionamento con molta parsimonia</title><content type='html'>&lt;p&gt;I sistemi di versionamento devono essere visti come dei buchi neri, come dei pozzi, dai quali non è permesso cancellare niente. Se un file o una directory è entrata a far parte di una revisione di un software, allora non deve essere più possibile cancellarlo; pena la perdità del requisito di base di ogni sistema di versionamento: essere in grado di riprodurre in qualunque momento una data revisione di un software.&lt;/p&gt; &lt;p&gt;Per questo motivo molti sistemi di versionamento non presentano affatto un comando per cancellare definitivamente un file o directory; altri invece la presentano come un comando riservato al solo amministratore del sistema.&lt;/p&gt; &lt;p&gt;Può infatti accadere che per errore contenuti non pertinenti col il software che si sta sviuppando vengano introdotti nel sistema di versionamento. Magari può pure capitare che questi file siano anche molto pesanti in termini di occupazione dello spazio disco. In questi casi è ragionevole pensare che l'amministratore possa in maniera sicura rimuovere definitivamente questi contenuti.&lt;/p&gt; &lt;p&gt;Quindi la regola di base è di usare la possibilità di cancellare in maniera definitiva con molta attenzione. Distinguere i casi in cui un file non avrebbe mai dovuto entrarne a far parte o semplicemente un file che non deve far parte parte più delle nuove revisioni.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-2876608137775595218?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/2876608137775595218/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=2876608137775595218' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2876608137775595218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2876608137775595218'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/02/cancellare-in-maniera-definitiva-dal.html' title='Cancellare in maniera definitiva dal sistema di versionamento con molta parsimonia'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-7241755792601765461</id><published>2008-01-30T10:00:00.000+01:00</published><updated>2008-01-30T10:01:51.579+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Usare repository diverse per cose che sono veramente scorrelate</title><content type='html'>&lt;p lang="it-IT"&gt;Quanti repository diversi usare all'interno della nostra azienda? Diciamo che la piccola o media impresa di sviluppo software lavora completamente con un unico repository.&lt;/p&gt; &lt;p lang="it-IT"&gt;Ad esempio, in una piccola impresa di sviluppo, un unica istanza di subversion è sufficiente per 1. supportare le attività degli sviluppatori; 2. mantenere le versioni ufficiali pronte per il rilascio; 3. coordinare il lavoro degli sviluppatori fuori sede.&lt;/p&gt; &lt;p lang="it-IT"&gt;Chiaramente sono attività tutte correlate e quindi trovano normale coesistenza in un unico sistema di versionamento.&lt;/p&gt; &lt;p lang="it-IT"&gt;Provvederei a fare repository diverse se, ad esempio, fornissi servizi di hosting. Quindi ogni cliente avrebbe la propria istanza del sistema di versionamento.&lt;/p&gt; &lt;p lang="it-IT"&gt;Personalmente non ho mai vissuto la necessità di repository diverse, ma ho sentito di organizzazioni molto complesse che usano più repository per riflettere il loro processo di sviluppo, separando fisicamente i vari flussi di sviluppo.&lt;/p&gt;  &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-7241755792601765461?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/7241755792601765461/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=7241755792601765461' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/7241755792601765461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/7241755792601765461'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/usare-repository-diverse-per-cose-che.html' title='Usare repository diverse per cose che sono veramente scorrelate'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-6312294439406667775</id><published>2008-01-28T15:27:00.000+01:00</published><updated>2008-01-28T15:28:05.240+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Mettere sotto configurazione quello che serve strettamente</title><content type='html'>&lt;p&gt;Di un progetto software, cosa mettere sotto configurazione? Non esiste una regola generale, come sempre bisogna usare un po' di logica nelle cose che si fanno. E' però possibile dare delle linee guida.&lt;/p&gt; &lt;p&gt;Sicuramente di un progetto c/c++, non dovrebbero essere messi sotto configurazione tutti i file intermedi; analogamente anche i file temporanei generati dall'ambiente di sviluppo. Generalmente, anche gli eseguibili e librerie generate non dovrebbero essere messe sotto configurazione. Tutto questo evita che il repository cresca più del necessario rispetto alle finalità di sviluppo e si evitano finti conflitti.&lt;/p&gt; &lt;p&gt;Quindi la regola generale è di mettere sotto configurazione solo quello che è strettamente necessario.&lt;/p&gt; &lt;p&gt;Personalmente rompo questa regola quando metto sotto configurazione librerie o eseguibili di terze parti, che quindi hanno una particolare versione e che non sono soggetti a modifiche o attività di sviluppo. In questo caso, l'utilizzo che se ne vuole fare è quello di essere usati da un altro progetto; ad esempio, di una libreria si vorranno usare i “.h” e le librerie già compilate, evitando possibilmente l'onere di ricompilazione.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-6312294439406667775?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/6312294439406667775/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=6312294439406667775' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6312294439406667775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/6312294439406667775'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/mettere-sotto-configurazione-quello-che.html' title='Mettere sotto configurazione quello che serve strettamente'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-861332194821793222</id><published>2008-01-24T21:30:00.000+01:00</published><updated>2008-01-24T21:32:30.766+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Provare lo sviluppo concorrente come meccanismo per massimizzare le potenzialità di un gruppo di sviluppo.</title><content type='html'>&lt;p&gt;Molti responsabili di progetto ritengono che avere due o più persone che lavorano sugli stessi insiemi di file sorgenti è una cosa molto pericolosa e, in generale, da evitare.&lt;/p&gt; &lt;p&gt;Sicuramente questo è vero quando non viene usato nessuno strumento di configurazione. Accade in questi casi che la separazione del lavoro è molto netta: Tizio lavora su certi file; Caio su altri file diversi da quelli di Tizio; Mamozio su file diversi ancora e così via. I file sorgenti sono duplicati su file system diversi; ogni sviluppatore modifica i propri senza avere una diretta visione di quello che stanno facendo gli altri, in questo modo si rinvia senza un motivo giustificato il momento in cui eventuali problemi verranno al pettine. Da ultimo non togliamo l'operazione noiosa quanto pericolosa, di fondere i vari sorgenti a mano.&lt;/p&gt; &lt;p&gt;Tutti i problemi appena evidenziati sono risolti agevolmente da un sistema di configurazione. Questo permette di liberare le potenzialità represse, sfruttando a pieno i vantaggi dello sviluppo concorrente.&lt;/p&gt; &lt;p&gt;Facciamo l'esempio banale di due sviluppatori: uno che scrive il codice e l'altro che scrive il codice di test. Quello che normalmente accade è che il secondo scopre gli errori che il primo ha scritto. In molti casi il secondo sarebbe anche in grado di risolverli in maniera automatica. Senza l'uso di un sistema di configurazione il secondo non potrebbe fare altro che segnalare al primo gli errori trovati e aspettare che vengano risolti; viceversa viene data la possibilità al secondo di lavorare in maniera molto autonoma, obbligandolo a rivolgersi al primo solo in casi di vera necessità.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-861332194821793222?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/861332194821793222/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=861332194821793222' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/861332194821793222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/861332194821793222'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/provare-lo-sviluppo-concorrente-come.html' title='Provare lo sviluppo concorrente come meccanismo per massimizzare le potenzialità di un gruppo di sviluppo.'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-2704245621775598848</id><published>2008-01-23T11:02:00.001+01:00</published><updated>2008-01-23T11:02:29.138+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Mantenere la propria copia locale il più possibile allineata con il repository.</title><content type='html'>&lt;p&gt;Quando più sviluppatori lavorano in maniera concorrente sullo stesso progetto, mantenere un alto grado di aderenza della propria copia locale con l'ultima versione è una cosa molto importante.&lt;/p&gt; &lt;p&gt;Questo garantisce che le modifiche e i test che stiamo scrivendo, sono compatibili con le modifiche e i test che gli altri. Nulla vieta, infatti, che possa accadere che uno sviluppatore riesca a lavorare senza mai fare un update. Né sarebbe giusto prevedere un meccanismo automatico di update, perché questo potrebbe rallentare e interferire con la normale e naturale attività di programmazione.&lt;/p&gt; &lt;p&gt;Il mio consiglio è quello di agire su due fronti. Il primo è quello di abituare i membri del team di sviluppo di comunicare agli altri membri le modifiche inserite sotto configurazione; questo porta ad una naturale verifica e condivisione di quello che si sta facendo.&lt;/p&gt; &lt;p&gt;Il secondo è quello di abituarsi a fare update ogni volta sia possibile, ad esempio farlo sempre prima di una commit.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-2704245621775598848?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/2704245621775598848/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=2704245621775598848' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2704245621775598848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2704245621775598848'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/mantenere-la-propria-copia-locale-il-pi.html' title='Mantenere la propria copia locale il più possibile allineata con il repository.'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-4109508743195313218</id><published>2008-01-14T11:12:00.000+01:00</published><updated>2008-01-14T11:13:37.195+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Dottrina del “modifica, fondi e pubblica”.</title><content type='html'>&lt;p&gt;Usando sistemi di versionamento tipo subversion il ciclo di operazione svolte assume la forma del “modifica, fondi e pubblica”.&lt;/p&gt; &lt;p&gt;Effettua le tue modifiche al codice sorgente; fondile con le modifiche che nel frattempo sono state pubblicate; se il codice sorgente non è rotto pubblica le nuove modifiche.&lt;/p&gt; &lt;p&gt;A me piace aggiungere due fasi di test: una tra il modifica e fondi e l'altra tra il fondi e pubblica. I test che devono essere rigorosamente automatici devono avere lo scopo di verificare l'aderenza del codice ai requisiti da realizzare.&lt;/p&gt; &lt;p&gt;Il primo test ha lo scopo di verificare che le modifiche che sono state scritte sono corrette. Almeno in maniera ragionevole. Il secondo test ha lo scopo di verificare se le modifiche fatte da altri non hanno rotto o modificato la semantica di quello che abbiamo scritto.&lt;/p&gt; &lt;p&gt;Mi piace rimarcare il concetto che i test devono essere automatici: i test manuali non sono adeguati allo scopo. Appena possibile analizzeremo le problematiche dei test automatici.&lt;/p&gt; &lt;p&gt;Oltre al ciclo è anche importante saperne calibrare la frequenza. Deve essere adeguatamente stretto in modo da pubblicare e importare quasi in tempo reale le modifiche scritte da se stesso e dagli altri. Non troppo stretto per non perdere troppo tempo nell'importare e verificare le modifiche degli altri; né troppo largo in modo da non scrivere modiche per un codice troppo cambiato. Nella mia esperienza da 3 a 5 cicli al giorno sono un buon compromesso, ma come sempre dipende dall'ambiente e dal progetto.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-4109508743195313218?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/4109508743195313218/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=4109508743195313218' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4109508743195313218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/4109508743195313218'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/dottrina-del-modifica-fondi-e-pubblica.html' title='Dottrina del “modifica, fondi e pubblica”.'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-3526546772721679764</id><published>2008-01-05T16:51:00.000+01:00</published><updated>2008-01-05T16:52:16.508+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Raggruppare logicamente i file coinvolti in una operazione di check-in</title><content type='html'>A fine giornata può capitare che siano stati modificati più file, ed è normale. E' altrettanto normale che le modifiche effettuate non siano logicamente correlate. Ad esempio può capitare che, per implementare una nuova funzionalità, siano state apportate modifiche a strati o blocchi logici diversi. Per i ben noti principi di programmazione modulare, le diverse modifiche ai vari blocchi sono tra di loro indipendenti; se così non fosse c'è qualche serio problema di progettazione.&lt;br /&gt;In questo caso è buona norma raggruppare i file in operazioni distinte di check-in, commentandole opportunamente. Nel fare queste operazioni fare attenzione a non rompere il codice versionando delle modifiche che dipendono da altre.&lt;br /&gt;Questa accortezza permette di estrarre con facilità il più piccolo insieme di modifiche logicamente correlate. Operazione utile quando le modifiche riguardano codice condiviso da più progetti.&lt;br /&gt;&lt;br /&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-3526546772721679764?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/3526546772721679764/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=3526546772721679764' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3526546772721679764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/3526546772721679764'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/raggruppare-logicamente-i-file.html' title='Raggruppare logicamente i file coinvolti in una operazione di check-in'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-594904199106321717</id><published>2008-01-04T22:20:00.001+01:00</published><updated>2008-01-04T22:20:36.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Commentare in maniera appropriata ogni check-in</title><content type='html'>L'operazione di check-in applicata su un insieme di modifiche le rende pubbliche e disponibili agli altri membri del gruppo di sviluppo. Gli strumenti di versionamento permettono di verificare con estrema semplicità le modifiche effettuate; non è altrettanto semplice capire che effetto hanno o dovrebbero avere tali modifiche.&lt;br /&gt;Per questo motivo è possibile associare al check-in un commento, che ha lo scopo di descrivere le modifiche inserite e l'effetto dichiarato che hanno rispetto all'intero progetto. Il commento deve essere chiaro, sintetico ma allo stesso tempo esauriente.&lt;br /&gt;Una pratica molto utile è quella di inserire nel commento un riferimento ad un sistema esterno di gestione delle attività. Ad esempio, se inserisco nel sistema di gestione delle attività un difetto da risolvere, posso inserire nel commento l'ID associato al difetto. O magari direttamente l'indirizzo http alla descrizione e storia del difetto.&lt;br /&gt;Sicuramente quello che sconsiglio è di effettuare dei check-in senza commenti. Fanno perdere molto tempo quando si guarda la storia delle modifiche di un file e fanno innervosire chi deve capire in poco tempo quando e come una certa funzionalità è stata modificata.&lt;br /&gt;Probabilmente come nel caso di check-in che rompono il codice versionato, dei dissuasori sociali possono aiutare ad evitare l'assenza di commenti. Esiste pure la possibilità di vietare check-in senza commenti, me ritengo più utile che sia lo scrupolo e l'attenzione dei membri del gruppo a ricordare l'uso dei commenti.&lt;br /&gt;&lt;br /&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-594904199106321717?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/594904199106321717/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=594904199106321717' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/594904199106321717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/594904199106321717'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2008/01/commentare-in-maniera-appropriata-ogni.html' title='Commentare in maniera appropriata ogni check-in'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-2617642596014222617</id><published>2007-12-31T15:33:00.001+01:00</published><updated>2007-12-31T15:33:44.862+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Modifiche in maniera esclusiva di file.</title><content type='html'>&lt;p&gt;Ci troviamo sempre nell'ipotesi che un gruppo di sviluppo lavori in maniera concorrente su un insieme di sorgenti. La possibilità che più di una persona si trovi a lavorare sullo stesso file non è trascurabile. Anzi, nella pratica di tutti i giorni è un evento che capita spesso.&lt;/p&gt; &lt;p&gt;Cosa fare in questi casi di modifiche concorrenti allo stesso file? Alcuni sistemi di versionamento forniscono la possibilità di inibire modifiche ad un file che è sottoposto a modifiche. Questa è una politica molto conservativa che, a mio avviso, limita in maniera eccessiva i gradi di libertà di un team di sviluppo.&lt;/p&gt; &lt;p&gt;Può accadere che una o più persone rimangano ferme con le proprie attività, fino alla fine delle attività di chi ha bloccato per primo un file. O peggio creare un vero e proprio dead-lock: un primo programmatore ha bloccato il file1 mentre il secondo programmatore ha bloccato il file2; poi ad un certo punto il primo programmatore ha bisogno di modificare il file2, però il secondo programmatore prima di rilasciare il file2 ha bisogno di modificare il file 1.&lt;/p&gt; &lt;p&gt;Ma è poi così pericoloso modificare contemporaneamente lo stesso file? La pratica di tutti i giorni dice che assolutamente i problemi sono minimi. Infatti per prima cosa c'è l'esperienza e bravura del capo progetto ad assegnare i task in maniera tale da rendere minimi le sovrapposizioni. Nel caso poi di modifiche allo stesso file e molto raro che le modifiche riguardino la stessa funzione o porzione di codice. Questi sono i casi risolti agevolmente da uno strumento di fusione o merge del codice sorgente.&lt;/p&gt; &lt;p&gt;Meno frequentemente capita che due modifiche coinvolgano la stessa porzione di codice, in questo caso una decisione umana è necessaria. Nella maggior parte di questi casi entrambe le modifiche vanno bene, va solo scelto l'ordine esatto. Ancora una volta gli strumenti di merge ci aiutano semplificandoci le operazioni di fusione.&lt;/p&gt; &lt;p&gt;Quando capita che più modifiche alla stessa porzione di codice risultano non compatibili, vuol dire che qualche cosa nel processo di gestione non ha funzionato. Questo è l'unico e vero caso dove l'intervento umano è fondamentale per dirimere il conflitto.&lt;/p&gt; &lt;p&gt;In conclusione il consiglio finale è di favorire e controllare le modifiche concorrenti allo stesso file, in modo da rendere agile le attività di sviluppo.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-2617642596014222617?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/2617642596014222617/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=2617642596014222617' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2617642596014222617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2617642596014222617'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2007/12/modifiche-in-maniera-esclusiva-di-file.html' title='Modifiche in maniera esclusiva di file.'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5910162226627422453.post-2955124045570971616</id><published>2007-12-30T00:00:00.000+01:00</published><updated>2007-12-30T00:02:49.366+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versionamento'/><title type='text'>Non rompere mai il codice versionato</title><content type='html'>&lt;p&gt;Il versionamento dei codici sorgenti è probabilmente lo strumento più necessario per un team di sviluppo software, ma allo stesso tempo quello meno usato. Iniziamo con questo articolo a fornire alcuni suggerimenti sul versionamento del codice, prendendo subversion come strumento di riferimento e la mia attività professionale come base di analisi.&lt;/p&gt; &lt;p&gt;In una normale attività di sviluppo portata avanti da un team di persone, accade normalmente che ogni membro del team prende in carico la risoluzione di una attività, che fa avanzare lo stato generale del progetto. Quindi più attività lavorative concorrono a modificare contemporaneamente il codice sorgente.&lt;/p&gt; &lt;p&gt;Compito di chi gestisce il progetto è quello di assegnare i compiti in maniera tale che le attività concorrenti non vadano ad intralciarsi, l'una con l'altra. Questo però in genere non basta a rendere stagni i vari ambienti di lavoro; può infatti accadere che una modifica fatta da qualcuno possa interferire con le attività di qualcun altro.&lt;/p&gt; &lt;p&gt;Per questo la pratica consigliata è quella di effettuare con la frequenza più alta possibile il ciclo “code, test, update, test, commit”. Ovvero effettuare un insieme di modifiche, testarle, aggiornare la propria copia locale dei sorgenti con l'ultima versione presente nel sistema di versionamento, rilanciare i test, se non ci sono fallimenti aggiornare il codice versionato con le proprie modifiche.&lt;/p&gt; &lt;p&gt;Le due fasi di test sono importantissime perché aiutano a non mettere sotto configurazione un codice che non funziona o peggio non compila. Non è richiesto che al commit venga sottomesso il codice che risolva il compito assegnato; l'importante è che il codice non venga rotto, ovvero che continui a compilare e a fare le cose che faceva prima nella maniera attesa.&lt;/p&gt; &lt;p&gt;In alcuni casi reali ho anche sentito di piccoli espedienti che aiutano al rispetto di questa regola. Ad esempio, chi rompe il codice esegue ogni sera, prima di lasciare il lavoro, un check-out dell'intero progetto, lo compila e stila un report sui test automatici. Oppure, ogni volta che viene rotto il codice sorgente si paga un pegno di un euro, che finisce in un salvadanaio che finanzia una qualche attività di socializzazione extra lavorativa.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Per una consulenza sul versionamento dei progetti software contattami su poderico@gmail.com.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5910162226627422453-2955124045570971616?l=progettisw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://progettisw.blogspot.com/feeds/2955124045570971616/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5910162226627422453&amp;postID=2955124045570971616' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2955124045570971616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5910162226627422453/posts/default/2955124045570971616'/><link rel='alternate' type='text/html' href='http://progettisw.blogspot.com/2007/12/non-rompere-mai-il-codice-versionato.html' title='Non rompere mai il codice versionato'/><author><name>Luigi Poderico</name><uri>http://www.blogger.com/profile/11811449869515258247</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
