Contenuti - Obiettivi del controllo delle versioni - Modelli per il versionamento - Obiettivi del controllo delle configurazioni - Tecniche di configurazione - Esempio: controllo della concorrenza Storia di prodotto - Ogni prodotto è un patrimonio che va difeso - Ripercorrere la storia del prodotto è utile - Per capire come vi si è arrivati - Per documentare il lavoro svolto e le ragioni delle modifiche - Problemi - Conservare, trovare ed organizzare lo spazio necessario - Identificare, recuperare e ripristinare la versione desiderata - Mantenere, fare ordine e pulizia Definizioni – 1 - Versione - Istanza di sistema funzionalmente distinta dalle altre istanze - Uno stato definito che un prodotto può assumere nel suo ciclo di vita - Variante - Istanza di sistema funzionalmente identica ad altre istanze ma distinta dal loro per caratteristiche non funzionali - Rilascio (release) - Istanza di sistema visibile ad altri che gli sviluppatori - Configurazione - Una delle forme che un prodotto può assumere in relazione a come è realizzato, aggregato, installato - Una configurazione di prodotto si compone di componenti e procedure, ciascuna identificata da una specifica versione Definizioni – 2 - Gestione di configurazione (CM) - Processo di supporto in ISO 12207 - Non riguarda solo il codice! - Comprende il controllo di versione - Controllo di versione - L’insieme di attività, tecniche e metodologie necessarie a gestire le versioni di un prodotto - Ripristino - Poter tornare indietro con certezza ed in economia di risorse - Quando una modifica si rivelasse inadeguata - Per recuperare una versione da usare come termine di confronto - A fronte di sviluppo sperimentale Sviluppo lineare - Modello semplice - Modello più realista Sviluppo ramificato Gestione delle modifiche – 1 - Richiesta di modifica - Mediante compilazione ed emissione di un modulo specifico - Analisi della la modifica - Se valida - Valutazione del costo e dell’impatto realizzativo e di manutenzione - Emissione della richiesta all’autorità di controllo - Se la richiesta di modifica è accettata - Realizzazione della modifica - Controllo di qualità fino ad approvazione - Creazione di nuova versione di sistema Gestione delle modifiche – 2 - La richiesta di modifiche deve essere sottoposta a valutazione strategica e organizzativa - Considerazioni prevalenti rispetto alla valutazione tecnica - L’autorità di valutazione dovrebbe essere indipendente dal responsabile di progetto - Spesso denominata Change Control Board - Può includere rappresentanti del committente Gestione dei rilasci – 1 - I rilasci incorporano modifiche di sistema rese necessarie dalla correzione di errori rilevati in uso e da cambi di tecnologia - I rilasci possono anche incorporare nuove funzionalità - Occorre pianificare come e quando versioni di sistema debbano diventare rilasci Gestione dei rilasci – 2 - Un rilascio è molto più di un insieme di eseguibili - Un rilascio include almeno - Le informazioni di configurazione che specificano come il sistema va configurato per una specifica installazione - I dati necessari per l’attivazione e l’esecuzione - La guida all’installazione e/o il programma autoinstallante - La documentazione associata al sistema Gestione di configurazione – 1 - Nuove versioni di un sistema software sono create per ogni modifica introdotta - Per tener conto di cambi di piattaforma hardware e/o software - Per incorporare nuove funzionalità - Per adattarsi a bisogni specifici di alcune categorie di utenti - La gestione di configurazione si occupa di tenere sotto controllo l’evoluzione dei sistemi software - Ogni modifica in un sistema è il risultato di lavoro di gruppo - Il processo CM serve per limitare il costo e l’impatto delle modifiche Gestione di configurazione – 2 - CM è un processo di supporto in ISO 12207 - Spesso è visto come un elemento strategico del piano di qualità aziendale - Essenziale in previsione di modifiche durante il ciclo di vita - Un sistema software sottoposto a CM è spesso detto baseline - Come punto di partenza per sviluppi successivi Gestione di configurazione – 3 - Pianificazione di processo CM - Considerare tutti i prodotti dei processi controllati - Specifiche - Progetti architetturali e di dettaglio - Codice - Dati di analisi statica e dinamica - Manualistica - Un sistema software complesso può produrre diverse centinaia di prodotti soggetti a CM - Il piano di CM sancisce quali prodotto vadano sottoposti a CM e quale debba essere la loro identità in codice - Configuration item - Il piano di CM fissa - Responsabilità e procedure per la creazione di baseline - Politiche per il controllo dei cambiamenti e la gestione delle versioni - La strumentazione tecnica di supporto e le sue regole d’uso Gestione di configurazione – 4 - Software configurabile - Sistemi di cui è possibile modificare parametri di costruzione, installazione ed esecuzione per soddisfare insiemi diversi di requisiti - Controllo di configurazione - L’insieme di attività, tecniche e metodologie necessarie per gestire le diverse configurazioni di un prodotto - Configurazioni diverse per usi diversi nel tempo o nello spazio - Con impatto su aspetti di qualità del prodotto - Funzionalità, efficienza, portabilità Strumenti di versionamento - Versionamento di base - Realizzato dall’editore di testo (versionamento ad uno stadio) - Può essere previsto dal file system (e.g. VMS) - Strumenti dedicati - SCCS 1975 su IBM 370 e poi su UNIX - Source Code Control System - RCS (GNU) 1984 su UNIX - Revision Control System - CVS (open source, http://www.cvshome.org) - Concurrent Versions System per il controllo di sviluppo concorrente - Ambienti moderni - SourceSafe, Clearcase, … - Ambienti integrati di versionamento e configurazione Strumenti di configurazione - make, gmake - Utilità distribuita inizialmente con tutte le versioni proprietarie di UNIX, successivamente parte di GNU/Linux - Nata per la ricostruzione automatica - Viene utilizzata anche per il controllo di configurazione - autoconf, imake, metaconfig - Strumenti più recenti - Orientati alla configurazione in fase di installazione - ClearCase, TrueChange ... - Operano in congiunzione con utilità di versionamento Ricostruzione automatica - Supporto all’invocazione degli strumenti - Invocazione dei compilatori - Parametrizzazione del codice - Scelta dei moduli oggetto - Automazione del processo - Garanzia di ricostruzioni identiche - Efficienza nell’uso delle risorse Gestione di grandi progetti - Configurare significa scegliere - Le configurazioni individuano specifici insiemi di componenti - Servono attività, tecniche e metodologie specifiche per gestire tali insiemi - Supporto alla realizzazione modulare - Componenti fisicamente distinti - Logicamente individuabili e rintracciabili - Selezionati all’atto di costruzione del prodotto Tecniche di configurazione - Durante la progettazione - Progettazione modulare - Architettura “and” / “or” - Durante la realizzazione - Programmazione modulare - Inclusione selettiva e programmazione condizionale - Tecniche decise durante la progettazione - Applicate in costruzione ed installazione Grafi “and” / “or” - Nodi “and” - Composizione - Nodi “or” - Esclusione Software parametrico - Opzioni di compilazione - Supporto intenzionale a piattaforme diverse - Scelta di algoritmi diversi - Anche a tempo di esecuzione - Opzioni di installazione - Personalizzazioni Programmazione modulare - Aderisce alla progettazione modulare e consente realizzazione modulare - Consentita (o impedita) da specifiche proprietà del linguaggio - Esportazione delle definizioni (abstraction, information hiding) - Dichiarazioni per importazione - Programmazione condizionale, inclusione, etc. - Proprietà degli strumenti e della piattaforma - Compilazione incrementale - Linking dinamico (p.es.: DLL in Win32) Controllo di lavoro concorrente - Dimensioni di un progetto - Molte persone e molte attività - Molti prodotti su cui lavorare - Il codice è una risorsa condivisa - Modifiche contemporanee possono introdurre errori - Il coordinamento è oneroso ed è fattore di rischio - La ripartizione dei compiti non è sufficiente - Vi sono attività che operano in modo trasversale - Vi sono compiti “urgenti” che sovrappongono al lavoro “normale” Archivi e spazi di lavoro - Lo spazio di lavoro (workspace) - È il luogo in cui si “lavorano” i prodotti - Appartiene ad una singola persona - Contiene le copie di lavoro, anche in uno stato inconsistente - Sequenza: “check out” ? lavoro ? approvazione ? “commit” (check in) - L’archivio (repository) - È il luogo in cui si “conservano” i prodotti - È unico ed ad accesso controllato - Contiene prodotti anche non definitivi, ma consistenti Concorrenza e cooperazione - Archivio - Contiene le versioni stabili dei prodotti - Le versioni bloccate non sono modificabili (ammettono solo revisioni) - Le versioni non bloccate sono modificabili incrementalmente (per delta) - Spazio di lavoro - Contiene prodotti in lavorazione - Le copie in esso sono immagini di versioni bloccate oppure sono i prodotti parziali conferiti all’archivio Riepilogo - Obiettivi del controllo delle versioni - Modelli per il versionamento - Obiettivi del controllo delle configurazioni - Tecniche di configurazione - Esempio: controllo della concorrenza Riferimenti - M.J. Rochkind, The Source Code Control System, IEEE Transaction on Software Engineering, dicembre 1975 - Software CM - Technologies and Applications, STSC Technical Report, 1999 (Crosstalk) http://www.stsc.hill.af.mil/ - The CVS Home, http://www.cvshome.org/