Small Software Factories



Documenti analoghi
Strumenti per la gestione della configurazione del software

DRUPAL CONTINUOUS INTEGRATION. Parte I - Introduzione

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

ARCHIVIAZIONE DOCUMENTALE NEiTdoc

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Manuale di Aggiornamento BOLLETTINO. Rel H4. DATALOG Soluzioni Integrate a 32 Bit

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

PROCEDURA OPERATIVA PER LA GESTIONE DELLO SVILUPPO DEL SOFTWARE BM-33T

Release Management. Obiettivi. Definizioni. Responsabilità. Attività. Input

MANUALE PARCELLA FACILE PLUS INDICE

Configuration Management

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

CP Customer Portal. Sistema di gestione ticket unificato

Scrum. Caratteristiche, Punti di forza, Limiti. versione del tutorial: Pag. 1

ISTRUZIONI PER LA GESTIONE BUDGET

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

Voi sapete cosa vi serve, noi sappiamo come farlo. SoftRail Sistema integrato per rotabili

Procedura Gestione Pratiche Sicurezza Cantiere

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

1 CARICAMENTO LOTTI ED ESISTENZE AD INIZIO ESERCIZIO

Collegamento Gestionale 1 e Contabilità Studio AGO Infinity

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Guida Compilazione Piani di Studio on-line

Server Galileo.

11. Evoluzione del Software

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Preparazione di una immagine di Windows XP per la distribuzione

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

Licenza per sito Manuale dell amministratore

ACQUISIZIONE DATI DI PRODUZIONE SISTEMA PDA

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

12. Evoluzione del Software

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Ciclo di vita dimensionale

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Mon Ami 3000 Lotti e matricole Gestione della tracciabilità tramite lotti/matricole

ƒ Gli standard e la gestione documentale

LogiTrack OTG. LogiTrack Gestione logistica controllo ordine spedizioni. OTG Informatica srl

Finalità della soluzione Schema generale e modalità d integrazione Gestione centralizzata in TeamPortal... 6

la possibilità di usufruire di un sistema di gestione documentale.

4.5 CONTROLLO DEI DOCUMENTI E DEI DATI

Soluzioni integrate per la gestione del magazzino

lem logic enterprise manager

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Libretto di Impianto (Dpr74)

Guida alla redazione del Fascicolo XBRL

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Registratori di Cassa

CHIUSURE di MAGAZZINO di FINE ANNO

Ministero del Lavoro e della Previdenza Sociale

Descrizione generale del sistema SGRI

Sistemi informativi secondo prospettive combinate

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

REGISTRAZIONE. Che applicativi devo scegliere per la registrazione all Osservatorio?...2

Dynamic 07 -Software per la lettura ottica e data capture. G.Q.S. Srl Global Quality Service Via Bernini, 5/7 Corsico (MILANO)

Nuova procedura di Cassa Contanti Wingesfar: istruzioni per le farmacie Novembre 2009

Base di dati e sistemi informativi

Gestione Turni. Introduzione

Il modello di ottimizzazione SAM

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Strumenti di gestione del ciclo di vita del software

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Mon Ami 3000 Cespiti Gestione cespiti e calcolo degli ammortamenti

Manuale per la gestione del protocollo, dei flussi documentali e degli archivi

La gestione manageriale dei progetti

Nuovo Order Manager per il software NobelProcera

ALICE AMMINISTRAZIONE UTENTI WEB

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

1) GESTIONE DELLE POSTAZIONI REMOTE

e/fiscali - Rel e/fiscali Installazione

GESTIONE 770 TRASFERIMENTO DATI DA ARCHIVIO CONTABILE

CONFIGURAZIONE DI UN AZIENDA IN MODALITÀ REAL TIME

Alma Mater Studiorum Università di Bologna. Controllo di versione. S. Golovchenko (UNIBO) INGEGNERIA DEI SISTEMI SOFTWARE / 18

Automazione Industriale (scheduling+mms) scheduling+mms.

Software di gestione della stampante

Corso di Amministrazione di Sistema Parte I ITIL 2

Software Servizi Web UOGA

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

ILSISTEMA INTEGRATO DI PRODUZIONE E MANUTENZIONE

Software per Helpdesk

Sistemi Informativi e Sistemi ERP

Software testing. Lezione 8 Configuration Management Federica Spiga federica_spiga@yahoo.it. A.A Autori: F.Spiga

Laboratorio di Informatica

Test e collaudo del software Continuous Integration and Testing

Gruppo Buffetti S.p.A. Via F. Antolisei Roma

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

GESTIONE CONTRATTI. Contratti clienti e contratti fornitori

Concetti di base di ingegneria del software

Gestire le NC, le Azioni Correttive e Preventive, il Miglioramento

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Transcript:

NEWITS SERVIZI PER LE NUOVE TECNOLOGIE DELL INFORMAZIONE Small Software Factories Sviluppare software in piccole realtà per grandi clienti Software Configuration Management 1

Software Configuration Management Concetti base (da Wikipedia) Il configuration management ha lo scopo di controllare e gestire le attività (sia documentali sia implementative) che portano alla produzione di software. Gestisce gli input/output direttamente o indirettamente legati alla costruzione di un prodotto software. Correla tra di loro i vari oggetti archiviati relativamente ad un prodotto software, mantenendo allo stesso tempo traccia delle varie versioni degli oggetti e della loro applicabilità. La gestione è di tipo formale ovvero nel processo vengono seguite procedure definite in precedenza tramite opportuni moduli di gestione. 3

Software Configuration Management Perché introdurre la metologia Gestione strutturata dei software assets aziendali. Salvaguardia degli oggetti da perdite e/o modifiche accidentali. Abilitazione dello sviluppo collaborativo di software Abilitazione dello sviluppo collaborativo in organizzazioni territorialmente distribuite. Raccolta dei semilavorati nei vari stadi intermedi del processo di sviluppo software. Facilitare e supportare i procedimenti di integrazione del software. Tracciamento delle attività di implementazione. Supporto ai processi di produzione automatizzata e ripetitiva. Facilitare e supportare le attività personalizzazione dei prodotti (varianti per cliente, mercato, piattaforma, ) 4

Software Configuration Management Gestione delle varianti di prodotto Ovvietà: i costi di manutenzione di un prodotto sono direttamente proporzionali al numero di versioni supportate. Le versioni si moltiplicano in funzione di: Stato di rilascio (test, pre-produzione, produzione) Evoluzione naturale del prodotto con l aggiunta di nuove funzionalità e successivi rilasci. Personalizzazioni per: Cliente Piattaforma Sistema operativo. Obiettivo primario: minimizzare il numero di versioni supportate. Quando è necessario mantenere più versioni: La sola gestione delle versioni via SCM non è più sufficiente. E necessario intervenire sull architettura del software e ricorrere a pratiche di SCM più complesse (vedi Software Product Lines e Variant Management). Queste pratiche sono supportate da procedure e strumenti di SCM. 5

Obiettivi dell implementazione La procedura di Software Versioning viene implementata per: Mantenere un archivio del software di proprietà dell azienda Mantenere un copia di tutte le versioni installate presso i clienti Mantenere copia di tutte le variazioni effettuate sul codice per poter permetter di annullare qualsiasi modifica. Tracciare gli autori delle modifiche Supportare il processo di sviluppo software: Abilitare lo sviluppo in parallelo tra più gruppi o semplicemente più sviluppatori e tra più stati (es. test, stage, produzione) Supportare il processo di trasferimento del codice (nuove implementazioni, patch, ) tra le versioni Abilitare l accesso da remoto al repository. Portafoglio prodotti: Singolo prodotto e personalizzazione per cliente Progetti speciali basati sul prodotto e no Canale di distribuzione: Singola versione per cliente Distribuzione dell intero prodotto compilato Rare patch di emergenza. 6

Software Version Control Terminologia Item: oggetto di cui vengono gestite le versioni (es. file). Change: rappresenta una specifica modifica ad un documento sottoposto al controllo di versione. Repository: archivio delle modifiche. Commit: operazione di sincronizzazione tra le directory di lavoro ed il contenuto del repository. Change list (o changeset): identifica un insieme di modifiche fatte in un singolo commit. Update: copia le modifiche fatte sul repository nella propria directory di lavoro (può essere visto come l'operazione contraria al commit). Merge / Integrazione: unisce modifiche concorrenti in una revisione unificata. Revisione : una revisione è una versione in una catena di modifiche. Conflitto: un conflitto si presenta quando diversi soggetti fanno modifiche allo stesso item. Non essendo il software abbastanza intelligente da decidere quale tra le modifiche è quella 'corretta', si richiede ad un utente di risolvere il conflitto. 7

Aree della fabbrica Gli elementi in lavorazione devono poter essere identificati univocamente e tracciati durante il loro percorso nella fabbrico L identificatore viene assegnato dal gestore dei work item Le procedure di gestione delle varie aree tracciano le operazioni svolte usando l identificatore SCM funziona come magazzino di semilavorati e prodotti finiti Gestione elementi da produrre (work items tracking) Magazzino (SCM, Source control) Reporting Pianificazione (Project management e capacity planning) Produzione (Metodologie, Linee di produzione, strumenti, risorse) 8

Pattern per il controllo di versione Introduzione Branch: per ogni prodotto sviluppato od in fase di sviluppo viene creata nel repository un area di archiviazione (branch) in cui memorizzare l insieme di oggetti che costituiscono il prodotto. Branch owner & policy Regola: ogni branch ha un responsabile ed una politica di gestione. La politica di gestione determina quale tipologia di oggetti può essere memorizzato nel branch. Il responsabile del branch definisce la politica di accesso e controlla che sia rispettata. Il concetto di finito Assunto: finito = rilasciabile Un elemento (modulo, funzione, script..) è rilasciabile quando ha passato unit, integration e functional tests. Se un elemento è rilasciabile allora in qualsiasi momento un cliente potrebbe dire Bene, andiamo in produzione ora senza che nessuno nel gruppo di sviluppo possa dire si ma. aspetta!! Attenzione: finito = regression tested Lo sviluppo deve procedere senza tempi di attesa anche se due sviluppatori operano sullo stesso modulo (vedi librerie condivise). Configurare il tool di gestione delle versioni per l opzione copy-modifymerge. 10

Pattern per il controllo di versione Aree di lavoro (workspace) Ogni sviluppatore dispone di un area riservata sulla propria postazione di lavoro in cui creare i componenti software, correggerli e provarli (debug). Possiamo considerare quest area come un ramo del repository esteso alla stazione di lavoro. Anche questo ramo ha una sua politica di gestione: L area di lavoro è privata e non può essere condivisa (nessun tipo di filesystem sharing, un area di lavoro per ogni sviluppatore). Si opera solo all interno delle aree di lavoro (nessuna copia temporanea su cui sviluppare). Sincronizzare frequentemente (tutte le mattine) il proprio lavoro con quello degli altri membri del gruppo. Salvare (check-in) frequentemente (tutte le sere) il lavoro svolto. 11

Pattern per il controllo di versione Ramo principale (trunk branch) Quando un elemento finito deve essere depositato nel repository. Deve esistere un ramo del repository in cui depositare l elemento finito per un successivo rilascio in produzione. Questo è il ramo dei prodotti finiti. Un qualsiasi ramo può essere quello dei prodotti finiti. Il ramo principale del repository (altrimenti detto trunk, mainline,..) è un buon punto di partenza. Assunto: trunk è il ramo dei prodotti finiti. Politica di gestione di trunk Gli elementi possono essere rilasciati in qualsiasi momento. Nell esempio seguente viene eseguito un rilascio contenente cinque elementi. trunk 1 2 3 4 5 = Check-in Release 12

Pattern per il controllo di versione Quando creare nuovi rami (branch) Il più raramente possibile. Più rami = Maggiori costi. Più rami = Maggiori conflitti = Maggiori tempi di sviluppo Creare un nuovo ramo solo quando c è qualcosa da memorizzare e non c è altro ramo del repository che possa essere usato senza violarne la politica di accesso. Motivi per nuovi branch: Nuovi rilasci (release): la release deve essere mantenuta nel tempo anche dopo il rilascio di successive release. Nuovi metodi di rilascio (service packs, fix,..) Più gruppi di sviluppo sullo stesso prodotto Sviluppo di nuove funzionalità 13

Branch Pattern per il controllo di versione branch for release Ogni rilascio ha bisogno di un area di parcheggio per essere salvaguardato e mantenuto nel tempo. trunk 5 Branch = Release Viene definito un nuovo rilascio per: Nuovo pacchetto destinato a più clienti RELEASE 1.0 Release 1.0 Nuovo pacchetto destinato ad un singolo cliente Nuovo pacchetto destinato ad un nuovo ambiente (test, stage, produzione, ) Ad ogni nuovo rilascio viene creato un branch La creazione di un branch è immediatamente seguita dalla creazione di un identificativo (tag, label,..) che ne fissa l immagine del contenuto all istante della creazione. Se il contenuto del branch verrà successivamente modificato tale immagine non subirà cambiamenti. Il normale sviluppo continua su trunk. Il software nel branch appena creato viene rigorosamente testato. Le correzioni (patch, hotfix) vengono applicate alla release/al branch. Se opportuno vengono riportate su trunk (Merge - Reverse Integration) A test ultimato viene applicato un nuovo tag ed il software rilasciato al cliente. Durante la vita della release si possono scoprire problemi su trunk da riportare eventualmente sul branch (Merge = Forward Integration) 14

Branch RI Branch FI Branch RI Pattern per il controllo di versione branch for release - schema base trunk 5 6 7 8 9 10 11 12 13 RELEASE 1.0 1 2 V1.0 V1.0.1 V2.0 V2.0.1 V2.0.2 Patch 1 2 3 5 RELEASE 2.0 Patch V2.1 Al cliente 2 RELEASE 2.1 V2.1.1 Al cliente Al cliente Al cliente 15 Patch

Branch Branch Branch Branch Branch Branch Branch FI Branch Pattern per il controllo di versione branch for release - schema alternativo In funzione dello schema di servizio offerto si devono creare rami dedicati ai vettori di rilascio previsti (service pack, hotfix, release) Ricordare: + rami = + tempo = + costi Ricordare: lo schema di servizio va ripetuto per ogni variante (cliente, piattaforma, ) trunk 1 SERVICE PACK 3 R1 (SP) 6 R2 (SP) Quando trunk è pronto per il rilascio creare I rami SERVICE PACK, HOT FI e RELEASE contemporaneamente. HOT FIX 4 R1 (SP0) R1 (SP1) 7 R2 (SP0) Il ramo RTM è una copia in sola lettura di quanto rilasciato RTM 5 R1 (SP0) R1 (SP1) 8 R2 (SP0) 16

Branch Branch Pattern per il controllo di versione branch for development - rami di sviluppo Lo sviluppo del prodotto continua su trunk. Quando un nuovo sviluppo non può essere realizzato senza violare la politica di trunk si crea un nuovo ramo. Esempio: Sviluppo di un oggetto di durata superiore ad un giorno. La politica dei workspace richiede di salvare il lavoro tutti i giorni. Non si può salvare l oggetto in trunk senza violarne la politica visto che l oggetto non è finito. Si deve creare un ramo temporaneo di sviluppo. L inizio di uno sviluppo deve essere marcato con un tag. Sul nuovo ramo possono salvare tutti i componenti il gruppo di sviluppo. DEV 2 4 DEV-1 1 3 trunk 1 17

Pattern per il controllo di versione branch for development - branch policy La politica di gestione del ramo di sviluppo condiziona ed è condizionata dalla metodologia. Prendiamo in prestito un obiettivo di SCRUM ed introduciamo una piccola variazione: L implementazione di una nuova funzionalità di un prodotto software deve essere suddiviso in unità elementari sviluppabili (fino alla fase di Unit Testing) in una giornata di lavoro. Politica di gestione: Dopo ogni check-in il ramo deve essere compilabile senza errori. Gli item salvati in un ramo di sviluppo sono Unit Tested Questo condiziona la metodologia costringendo a suddividere l architettura dei moduli software in unità elementari (classi, funzioni, procedure, scripts,..) realizzabili e testabili nel corso di una giornata. Se si elimina il vincolo Unit tested la politica è meno stringente permettendo, ad esempio, il rilascio di scheletri di classe (class skeleton). 18

Branch Merge - FI Merge - FI Lock Merge - FI Copy Merge RI Unlock Update - FI Update - FI Commit -RI Commit -RI Update - FI Update - FI Commit -RI Commit -RI Commit -RI Commit -RI Pattern per il controllo di versione branch for development operatività a) Creazione nuovo ramo per lo sviluppo di una nuova variante di prodotto (es. personalizzazione per un cliente). Al ramo viene applicata una etichetta. b) Operazioni periodiche. Come da politica dei rami di sviluppo, il periodo è pari ad un giorno. c) Rilascio della variante finita. Il ramo viene chiuso. Workspace N 5 5 6 Workspace 1 5 5 6 Variante 1 2 4 4 4 4 7 9 10 12 trunk 1 3 3 8 11 a b b c 19

Pattern per il controllo di versione branch for development operatività (continua) a) Creazione iniziale del ramo. 1. Branch. Viene creato il nuovo ramo di sviluppo. L operazione è istantanea e va fatta all inizio delle operazioni. 2. Tag. Viene applicata una etichetta per identificare lo stato originale del ramo. b) Operazioni periodiche 3. Merge. Il responsabile del ramo di sviluppo provvede a sincronizzarlo con trunk; vengono raccolti i rilasci degli altri team di sviluppo. Si procede alla risoluzione di eventuali conflitti. 4. Update. Ogni sviluppatore sincronizza la propria area di lavoro con il ramo di sviluppo; vengono raccolti i rilasci degli altri team di sviluppo e degli altri membri del team. Si procede alla risoluzione di eventuali conflitti. 5. Commit. La produzione periodica viene rilasciata sul ramo di sviluppo compatibilmente con la politica del ramo stesso (es. gli item non testati non si rilasciano). c) Rilascio 6. Commit. Vengono rilasciati gli ultimi sviluppi da parte di tutti i membri del team. 7. Lock. Ove ammesso dalle procedure e dagli strumenti usati, il ramo trunk viene bloccato per impedire ulteriori rilasci da parte di altri team. 8. Merge pre rilascio. Vengono recuperati eventuali rilasci di altri team. Si risolvono gli ultimi conflitti. 9. Build e test finale (regression test). Si costruisce il prodotto software completo e si procede con il test finale. 10. Merge Copy - Reintegrate. Rilascio del prodotto finito su trunk; viene copiato il ramo di sviluppo su trunk. 11. Tag. Il rilascio viene etichettato con una opportuna label. 12. Unlock. Se si è bloccato trunk si procede con lo sblocco. 20

Pattern per il controllo di versione Regole generali Risolvere i conflitti sul ramo meno stabile. ES. I conflitti vanno risolti sui rami di sviluppo e non su trunk Maggiore è la frequenza di merge e minore è la probabilità di conflitti complessi. Pubblicare il lavoro su trunk il più frequentemente possibile e non solo al momento del rilascio di nuove release. Effetto collaterale: chi prima rilascia su trunk vince! Eventuali conflitti devono essere risolti da altri. Per quanto possibile limitare i rilasci (changeset) a singole unità elementari di lavoro (work-item) come patch, classi, singole pagine o parti di pagina. Tracciare i singoli rilasci mediante l accoppiata changset-id e workitem-id in modo da poter sempre individuare i rilasci che contengono un particolare work-item. Per iniziare, un tool di bugtracking è sufficiente. 21

Pattern per il controllo di versione Vista d insieme TEST Meno stabile TEST-1 DEV DEV-1 MAIN 1 REL-1 REL-2 Cliente 1 REL-1.1 Stage Produzione Più stabile 22

Pattern per il controllo di versione Note sulle operazioni di merge Le operazioni di merge sono pericolose quanto tutte le altre operazioni di sviluppo. Ogni operazione di merge dovrebbe essere seguita da una fase di test. L automazione dei test incrementa il tempo di scrittura del codice ma permette di eseguirli di frequente, aumenta la qualità del software e diminuisce il costo globale di sviluppo. I conflitti devono essere risolti ed il risultato deve essere testato. I conflitti aumentano e le operazioni di merge si complicano al crescere della distanza tra ramo di origine e ramo di destinazione sia in termini di tempo di aggiornamento che percorso di navigazione nell albero. E necessario minimizzare le operazioni di merge tra rami non direttamente collegati e le operazioni di merge di changeset non contigui (baseless merge, cherrypicking). 23

Branch RI Branch FI Branch RI Pattern per il controllo di versione Baseless merge - cerrypicking trunk 5 6 7 8 9 10 11 12 13 RELEASE 1.0 1 2 V1.0 V1.0.1 V2.0 V2.0.1 V2.0.2 Patch 1 2 3 4 RELEASE 2.0 Patch V2.1 Al cliente 1 2 3 RELEASE 2.1 V2.1.1 Trasferimento di patch tra rami non direttamente collegati Al cliente Al cliente Al cliente Trasferimento di changesets non contigui Patch 24

Automazione dei test Prossimi passi Passaggio alla gestione Software Product Lines e Variant Management (riusabilità del software). 25

Riferimenti InfoQ: Agile version control with multiple teams Microsoft: Team Foundation Server 2008 branching guidance Vari: Version control with Subversion Perforce Software: High level best practices in Software Configuration Management Perforce Software: Branching and merging in the face of agile development, extreme programming, team collaboration, and parallel releases. Stanford University: Branching and merging with CVS 26