Ogni lavoro svolto con l’utilizzo di strumenti software ha come effetto quello di generare una quantità, più o meno grande, di deliverable o artefatti (di seguito saranno usati indifferentemente, ma sempre con lo stesso significato)
Nella sua accezione più generale, un artefatto (deliverable) è un prodotto - materiale o immateriale - derivante da un’attività di un processo di creazione.
L’attività di scrittura di un testo può essere parte di un processo di business che ha come deliverable il documento prodotto; un video è un deliverable di un processo di montaggio video; un logo è un deliverable di una fase di creazione di un marchio aziendale etc.
Ciò che si produce, solitamente, è sottoposto a correzioni e raffinamenti, cioè è soggetto ad un continuo processo di revisione. La stesura di un libro è forse l’esempio calzante di quanto detto. Ma di casi ne possiamo trovare tanti altri, come la stesura di un documento di specifica dei requisiti.
In diversi casi può accadere che lo stesso artefatto venga utilizzato per esigenze differenti seguendo “linee” di realizzazione affini ma che generano altrettanti nuovi deliverable. Ad esempio, un’icona derivata da un’attività di grafica può essere applicata in diversi siti ma con colori differenti. In tal caso, pur mantenendo lo stile base, l’icona di partenza subirà “n” variazioni che possono essere successivamente ricondotte nuovamente all’icona di partenza per produrne una nuova.
Da queste considerazioni basate sull’analisi di semplici casi pratici, che qualsiasi utilizzatore di pc si è trovato ad affrontare nella propria attività “informatica”, si deduce che l’organizzazione di quanto prodotto diventa determinante ai fini della loro rintracciabilità e, nei casi più drammatici, ai fini della loro conservazione.
Solitamente tale processo organizzativo comincia con una opera a carattere puramente manuale, per poi approdare all’uso di programmi più o meno complessi per la conservazione di quanto prodotto. Lo stato più avanzato raggiunto da queste tecnologie è quello basato sul cloud computing che, tra i tanti pregi, ha la caratteristica di garantire una notevole affidabilità .
In ambito ingegneristico (ci riferiremo in particolare ai processi di sviluppo software), la presenza di un gran numero di artefatti è una costante che spesso diventa determinante anche ai fini dell’efficienza produttiva. La necessità di gestire in modo organico i deliverable e le loro revisioni diventa tanto più pressante quanto più elevato il numero di figure professionali coinvolte ed il numero di tecnologie e piattaforme scelte.
Per fronteggiare tutte le problematiche citate sono nati e si sono perfezionati negli anni i cosiddetti software di versioning. Tali sistemi agiscono a qualsiasi livello di un processo di produzione, gestendo nel contempo i rilasci dei deliverable, i bug prodotti, la stabilità del codice fino ad arrivare alla gestione delle revisione dei documenti.
Il principio base di funzionamento di un software di versioning è quello di tracciare le modifiche apportate agli artefatti “versionati”, creando uno storico di tutte le modifiche effettuate e corredate di opportuni messaggi di revisione inseriti dagli utenti. L’attività di tracciamento condotta è successivamente utilizzabile per accedere alle versioni precedenti di un deliverable o per analizzare l’evoluzione del prodotto o per effettuare operazioni di confronto ed unione di deliverable provenienti da rami di lavoro differenti.
Autore
Vincenzo Tirelli
Innovation Manager – Senior Software Designer
Ho iniziato a collaborare con la SNAP a partire dal 2007, in qualità di ...