Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria...
Transcript of Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria...
1
- Ingegneria del Software 2 – Gestione della Configurazione 1
Gestione della Configurazione
- Ingegneria del Software 2 – Gestione della Configurazione 2
Riferimenti
• Sommerville , Capitolo 29
2
- Ingegneria del Software 2 – Gestione della Configurazione 3
Gestione della configurazione
• La gestione della configurazione è un’attività fondamentale per ognisoftware– I sistemisoftware non vengono mai realizzati tutti in una volta.
• Cicli di vita evolutivi• Cicli di vita XP, nei quali si forza una integrazione delle parti del
software molto frequente (“nightly build”), allo scopo di evidenziare al più presto eventuali problemi di integrazione
– Dopo essere stati rilasciati, essisono soggetti a numerosi interventidi manutenzione dovuti ad errori, cambiamento dei requisiti, estensioni, etc
– Spesso, inoltre, uno stessosoftware necessita di essere rilasciatoin diverse configurazioni
• Versioni complete e versioni ridotte• Versioni in diverse lingue• Aggiornamento di versioni• Versioni diverse per diverse configurazioni hardware
- Ingegneria del Software 2 – Gestione della Configurazione 4
Pianificazione
1. Cosa deve essere gestito?• Non solo codice sorgente, ma anche la
documentazione di progetto e di sviluppo2. Chi è responsabile della procedura di gestione?3. Quali sono le politiche di gestione della
configurazione?4. Quali strumenti supportano i processi di gestione
della configurazione?5. Quale è la struttura del database di configurazione?
3
- Ingegneria del Software 2 – Gestione della Configurazione 5
Processo di gestione delle modifiche
Richiesta di modificaAnalisi della richiesta di modificaIf modifica valida then
Valutare come implementare la modificaValutare i costi di modificaRegistrare la richiesta di modifica nel dbInviare la richiesta alla commissione di controllo delle modifiche (CCB)if modifica accettata then
repeatmodificare il softwareregistrare le modificheinviare il software modificato per la verifica di qualità
until qualità del software accettabileelse
richiesta di modifica rifiutataElse
richiesta di modifica rifiutata
- Ingegneria del Software 2 – Gestione della Configurazione 6
• Usualmente le richieste di cambiamento sono formalizzateattraverso la definizione di un apposito modulo di richiesta
• Tra I campi sicuramente presenti:– Modifica proposta– Proponente– Motivo del cambiamento– Priorità o urgenza– Impatto del cambiamento
– Costo
Change request form
4
- Ingegneria del Software 2 – Gestione della Configurazione 7
Change request formChange Request Form
Project: Proteus/PCL-Tools Number: 23/02Change requester: I. Sommerville Date: 1/12/02Requested change:When a component is selected from the structure, displaythe name of the file where it is stored.
Change analyser: G. Dean Analysis date: 10/12/02Components affected: Display -Icon.Select, Display -Icon.Display
Associated components: FileTable
Change assessment: Relatively simple to implement as a file name table isavailable. Requires the design and implementation of a display field. No changesto associated components are required.
Change priority: Low
Change implementation:Estimated effort: 0.5 days
Date to CCB: 15/12/02 CCB decision date: 1/2/03CCB decision: Accept change. Change to be implemented in Release 2.1.Change implementor: Date of change:Date submitted to QA: QAdecision:Date submitted to CM:Comments
CCB: Change Control Board
- Ingegneria del Software 2 – Gestione della Configurazione 8
Identificazione delle versioni
• Numerazione– #versione.#modifica.#variazione
• Identificazione basata su attributi– Le modifiche vengono etichettate con attributi
(eventualmente ordinati), in modo da potercaratterizzare anche l’impatto della modifica oltreche l’ordine delle versioni
• Identificazione orientata alle modifiche– Le modifiche al sistema vengono etichettate in base
alle modifiche sui singoli componenti
5
- Ingegneria del Software 2 – Gestione della Configurazione 9
Gestione delle release
• Una release di un sistema è una sua versione che vienedistribuita ai clienti. Essa comprende, tra l’altro:– Codice eseguibile– File di configurazione– Programma di installazione– Documentazione elettronica e cartacea– Imballaggio e pubblicità– …
• Il processo di creazione e rilascio di una release deve quindiriuscire a gestire la generazione di tutti questi deliverables – In particolare, bisogna decidere se distribuire l’intero sistema
oppure se distribuire unicamente delle patch diaggiornamento
- Ingegneria del Software 2 – Gestione della Configurazione 10
Requisiti di supporto per la gestione delle versioni
• Supporto per la gestione delle versioni– Identificazione delle versioni e delle release– Gestione della memorizzazione– Registrazione dello storico delle modifiche– Sviluppo indipendente
• Gestione dei branch e delle versioni concorrenti
– Supporto di progetto• Gestione di progetti concorrenti
6
- Ingegneria del Software 2 – Gestione della Configurazione 11
Requisiti di supporto per la costruzione del sistema
• Supporto per la costruzione del sistema– Un linguaggio di specifica delle dipendenze e un
interprete associato– Una selezione di strumenti e un supporto
all’esecuzione– Compilazione distribuita– Gestione degli oggetti derivati
- Ingegneria del Software 2 – Gestione della Configurazione 12
Strumenti CASE a supporto
Due tipologie principali:• Workbench aperti
– Si tratta di strumenti stand-alone che si occupano di uno degliaspetti della gestione delle versioni e delle release
• Spessosi tratta di strumenti open source– Strumenti di bug-tracking (es.: Bugzilla)– Strumenti di gestione delle versioni (es. CVS, SVN, GIT, Mercurial)– Strumenti per il build (es. make, ant, maven)
• Workbench integrati– Si tratta di strumenti che vanno a integrarsi con gli ambienti di
sviluppo in modo da supportare la gestione di versioni e release contestualmente allo sviluppo
• Rational Clear Case e Clear Quest• Microsoft Source Safe• Strumenti integrati in NetBeans, Eclipse, Dev
7
- Ingegneria del Software 2 – Gestione della Configurazione 13
CVS: Concurrent Versioning System
• Sistema di controllo delle versioni di un progetto legato alla produzione e allamodifica di file. In pratica, permette a un gruppo di persone di lavoraresimultaneamente sullo stesso gruppo di file (generalmente si tratta di sorgenti diun programma), mantenendo il controllo dell'evoluzione delle modifiche chevengono apportate.
• Per attuare questo obiettivo, il sistema CVS mantiene un deposito centrale(repository) dal quale i collaboratori di un progetto possono ottenere una copiadi lavoro. I collaboratori modificano i file della loro copia di lavoro e sottopongono le loro modifiche al sistema CVS che le integra nel deposito.
• ll compito di un sistema CVS non si limita a questo; per esempio è semprepossibile ricostruire la storia delle modifiche apportate a un gruppo di file, oltre a essere anche possibile ottenere una copia che faccia riferimento a una versionepassata di quel lavoro.
• Storicamente, il primo strumento open source di gestione della configurazionecon ampia diffusione
- Ingegneria del Software 2 – Gestione della Configurazione 14
Modello Lock/Modify/Unlock
• In principio, l’unico modello secondo il quale più programmatoriaccedevano in concorrenza ai diversi file di un progetto era ilmodello “lock/modify/unlock”– Secondo questo modello un utente che vuole modificare un
file del progetto, prima di tutto lo blocca (lock), impedendo a chiunque altro di modificarlo, dopodichè, quando ha terminatole modifiche lo sblocca (unlock)
– Questa strategia, per quanto garantisca la massima sicurezzada problemi di manomissione contemporanea involontaria, non ottimizza nel modo migliore le operazioni
• Adoperando questo modello, si tende a spezzettare il piùpossibile un progetto, in modo da ridurre gli impedimenti al lavoro causati dai lock
8
- Ingegneria del Software 2 – Gestione della Configurazione 15
Modello Copy/Modify/Merge
• In alternativa, il modello Copy/Modify/Merge prevede che:
1. Lo sviluppatore A scarica una copia del progetto (working copy o sandbox) dal server CVS (repository)
2. Applica liberamente tutte le modifiche. Nel frattempo altriprogrammatori (B) potrebbero fare lo stesso
3. Al termine del suo lavoro il programmatore A aggiorna ilprogetto sul server CVS (commit)
4. Altri programmatori potrebbero richiedere aggiornamenti della loro working copy (update) al repository o generaredelle ulteriori versioni (commit)
- Ingegneria del Software 2 – Gestione della Configurazione 16
Modello Copy/Modify/Merge
9
- Ingegneria del Software 2 – Gestione della Configurazione 17
Conflitti
• Nel caso in cui due programmatori modificano lo stesso file, ilsistema CVS può fondere (merge) le due versioni, sovrapponendo le modifiche, allorchè si riferiscano a linee dicodice diverse
• Se invece ci sono modifiche alle stesse righe di codice si verificaun conflitto– La soluzione del conflitto è in questo caso demandata ai
singoli programmatori: la versione unificata che vienegenerata diventa la nuova versione di riferimento
– In alternativa si potrebbe scegliere di mantenere entrambe le versioni come alternative, generando un branch
- Ingegneria del Software 2 – Gestione della Configurazione 18
CVS
• Il sistema CVS è un software, presente per diversi sistemi operativi, che consente di gestire a linea di comando le principali operazionipreviste dai modelli lock/modify/unlock e copy/modify/merge
• Il lato server gestisce il repository, contenente sia tutti i file da gestireche tutte le informazioni sulle versioni– In alternativa il deposito potrebbe anche trovarsi sulla macchina
client
• Il lato client consente di effettuare tutte le operazioni riguardanti la copia locale (sandbox) del progetto
10
- Ingegneria del Software 2 – Gestione della Configurazione 19
Operazioni CVS
• Ogni persona coinvolta nel progetto, ha una copia locale dei file (sandbox)
• Chi avvia il progetto crea per la prima volta il repository (Make new module), indicando anche quali directory dovranno esseregestite
• Successivamente un qualsiasi collaboratore può aggiungerenuovi file/directory al CVS (add)
• Un collaboratore che voglia inserirsi nel CVS dovrà per prima cosa effettuare il Checkout per prelevare dal repository le versioni più recenti di ogni file
- Ingegneria del Software 2 – Gestione della Configurazione 20
Operazioni CVS
• Sui file presenti nella propria sandbox si possono effettuare le seguentioperazioni:– Checkout (o update): preleva una copia aggiornata dal repository;
• Se copia locale e copia del repository non coincidono viene segnalatoun conflict
• Dopo il checkout, la copia locale è in stato di lock e non può esseremodificata
– Edit: richiede il permesso di scrivere sul file locale• Se il file è già in stato di edit da parte di qualche altro utente, viene
segnalato il rischio di modifiche concorrenti (nel caso di file binari o dipolitica di lock/modify/unlock viene impedito l’accesso)
– Commit: rende pubbliche a tutti le proprie modifiche al file• Le modifiche vengono propagate al repository. Il repository incamera il
file ricevuto come nuova versione; le versioni precedenti rimangonoreperibili
11
- Ingegneria del Software 2 – Gestione della Configurazione 21
Operazioni CVS
– Gestione conflitti• Se due utenti vanno a modificare in concorrenza lo stesso file, e il
primo di essi effettua il commit, verrà impedito al secondo di fare lo stesso
– In questo caso si consiglia al secondo di fare un update: il sistema nota la differenza tra la versione sul repository e quella locale e popone alcunesoluzioni semiautomatiche (merge) per la soluzione dei conflitti. Al termine, il secondo utente avrà una versione locale che tiene conto sia delle propriemodifiche che di quelle degli altri utenti. Di questa versione potrà esserefatto il commit, ottenendo quindi una versione successiva
– Generazione branch• Genera un ramo “alternativo” nella storia del file (se ne terrà conto nella
diversa numerazione: ad esempio dopo 1.2 ci sarà 1.2.1 anzichè 1.3)– Sono disponibili funzionalità per vedere graficamente tutta la “storia” delle
versioni del files
– Fusione tra versioni diverse– Eliminazione copia locale– Eliminazione originale (da operare direttamente sul repository)
- Ingegneria del Software 2 – Gestione della Configurazione 22
Tag
• Ogni versione può essere annotata e ad essa possono essereaggiunte delle informazioni dette tag– I tag sono particolarmente utili per distinguere tra loro le release
di un software
12
- Ingegneria del Software 2 – Gestione della Configurazione 23
TortoiseCVS
• TortoiseCVS è un front-end client che rende l’uso diCVS pù semplice, più intuitivo e più produttivo. Siinterfaccia direttamente con Windows Explorer™.
• One dei maggiori vantaggi è quello di mostrare, per ogni comando dato da interfaccia, le corrispondentioperazioni a linea di comando effettuate
• TortoiseCVS non include un CVS Server ma supporta la creazione di repository CVS locali
- Ingegneria del Software 2 – Gestione della Configurazione 24
Tortoise CVS
• Tortoise CVS supporta anche una serie di operazionidi più alto livello– Gestione dei conflitti– Cronologia delle versioni– Grafo delle versioni– Creazione di patch– Scelta delle politiche di accesso– Operazioni in batch– …
(riferirsi al manuale utente per una descrizionecompleta)
13
- Ingegneria del Software 2 – Gestione della Configurazione 25
SVN
• Strumento open source, naturale successore ed estensione di CVS– http://subversion.apache.org/
• Tra i client SVN più utilizzati:– TortoiseSVN, standalone
• http://tortoisesvn.net/– Subclipse, plug-in di Eclipse:
• http://subclipse.tigris.org/
- Ingegneria del Software 2 – Gestione della Configurazione 26
SVN: cenni alle features
• Importazione (checkout) di un progetto esistente
• Può essere importato anche un branch di un progetto
14
- Ingegneria del Software 2 – Gestione della Configurazione 27
• Commit– Upload della
copia locale sul server
• Update– Download in
locale della copia sul server
• Patch• Branch & Merge• Revert
– Ritorna alla copia precedente
SVN: cenni alle features
- Ingegneria del Software 2 – Gestione della Configurazione 28
Version History
• Le release iniziano con r, le issue segnalano problemi da risolvere
15
- Ingegneria del Software 2 – Gestione della Configurazione 29
Bugtracking
• Gli strumenti di bugtrackingconsentono una più precisa gestione degli interventi di manutenzione in un progetto gestito tramite un sistema di controllo di versione
• Ticket: segnalazione di problema
• Changeset: insieme di modifiche che dovrebbero aver risolto il problema segnalato in un ticket
- Ingegneria del Software 2 – Gestione della Configurazione 30
Bugtracking
• Caratteristiche di ogni coppia ticket/changeset
16
- Ingegneria del Software 2 – Gestione della Configurazione 31
Esempio di ticket
- Ingegneria del Software 2 – Gestione della Configurazione 32
Esempio di Changeset
17
- Ingegneria del Software 2 – Gestione della Configurazione 33
Revision History
• Esempio di pagina web dalla quale sono partiti due branch, uno dei quali si è poi riunito con il branchoriginale
- Ingegneria del Software 2 – Gestione della Configurazione 34
Altri strumenti
• Controllo di versione– Git, proposto da Linux Torvalds
• http://git-scm.com/– Mercurial, di Matt McKall
• http://mercurial.selenic.com/
• BugTracking– Bugzilla
• http://www.bugzilla.org/
• Controllo di versione e bugtracking integrati– Trac
• http://trac.edgewall.org/
18
- Ingegneria del Software 2 – Gestione della Configurazione 35