Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria...

18
1 - Ingegneria del Software 2 – Gestione della Configurazione 1 Gestione della Configurazione - Ingegneria del Software 2 – Gestione della Configurazione 2 Riferimenti Sommerville , Capitolo 29

Transcript of Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria...

Page 1: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

1

- Ingegneria del Software 2 – Gestione della Configurazione 1

Gestione della Configurazione

- Ingegneria del Software 2 – Gestione della Configurazione 2

Riferimenti

• Sommerville , Capitolo 29

Page 2: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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?

Page 3: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della 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

Page 4: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 5: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 6: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 7: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 8: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 9: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 10: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 11: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 12: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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)

Page 13: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 14: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 15: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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

Page 16: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

16

- Ingegneria del Software 2 – Gestione della Configurazione 31

Esempio di ticket

- Ingegneria del Software 2 – Gestione della Configurazione 32

Esempio di Changeset

Page 17: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

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/

Page 18: Gestione della Configurazioneunina.stidue.net/Ingegneria del Software 2/Materiale...2 - Ingegneria del Software 2 – Gestione della Configurazione 3 Gestione della configurazione

18

- Ingegneria del Software 2 – Gestione della Configurazione 35