La gestione della configurazione è un’attività fondamentale per ogni software.
I sistemi software non vengono mai realizzati tutti in una volta:
Dopo essere stati rilasciati, essi sono soggetti a numerosi interventi di manutenzione dovuti ad errori, cambiamento dei requisiti, estensioni, etc.
Spesso, inoltre, uno stesso software necessita di essere rilasciato in diverse configurazioni:
Una release di un sistema è una sua versione che viene distribuita ai clienti. Essa comprende, tra l’altro:
Il processo di creazione e rilascio di una release deve quindi riuscire a gestire la generazione di tutti questi deliverables.
In particolare, bisogna decidere se distribuire l’intero sistema oppure se distribuire unicamente delle patch di aggiornamento.
Due tipologie principali:
Sistema di controllo delle versioni di un progetto legato alla produzione e alla modifica di file. In pratica, permette a un gruppo di persone di lavorare simultaneamente sullo stesso gruppo di file (generalmente si tratta di sorgenti di un programma), mantenendo il controllo dell’evoluzione delle modifiche che vengono apportate.
Per attuare questo obiettivo, il sistema CVS mantiene un deposito centrale (repository) dal quale i collaboratori di un progetto possono ottenere una copia di 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 è sempre possibile ricostruire la storia delle modifiche apportate a un gruppo di file, oltre a essere anche possibile ottenere una copia che faccia riferimento a una versione passata di quel lavoro.
In principio, l’unico modello secondo il quale più programmatori accedevano in concorrenza ai diversi file di un progetto era il modello “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 terminato le modifiche lo sblocca (unlock).
Questa strategia, per quanto garantisca la massima sicurezza da 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.
In alternativa, il modello Copy/Modify/Merge prevede che:
Nel caso in cui due programmatori modificano lo stesso file, il sistema CVS può fondere (merge) le due versioni, sovrapponendo le modifiche, allorchè si riferiscano a linee di codice diverse.
Se invece ci sono modifiche alle stesse righe di codice si verifica un conflitto.
La soluzione del conflitto è in questo caso demandata ai singoli programmatori: la versione unificata che viene generata diventa la nuova versione di riferimento.
In alternativa si potrebbe scegliere di mantenere entrambe le versioni come alternative, generando un branch.
Il sistema CVS è un software, presente per diversi sistemi operativi, che consente di gestire a linea di comando le principali operazioni previste dai modelli lock/modify/unlock e copy/modify/merge.
Il lato server gestisce il repository, contenente sia tutti I file da gestire che 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.
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 essere gestite.
Successivamente un qualsiasi collaboratore può aggiungere nuovi 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.
Sui file presenti nella propria sandbox si possono effettuare le seguenti operazioni:
Ogni versione può essere annotata e ad essa possono essere aggiunte delle informazioni dette tag. I tag sono particolarmente utili per distinguere tra loro le release di un software
TortoiseCVS è un front-end client che rende l’uso di CVS pù semplice, più intuitivo e più produttivo. Si interfaccia direttamente con Windows Explorer™.
One dei maggiori vantaggi è quello di mostrare, per ogni comando dato da interfaccia, le corrispondenti operazioni a linea di comando effettuate.
TortoiseCVS non include un CVS Server ma supporta la creazione di repository CVS locali.
Tortoise CVS supporta anche una serie di operazioni di più alto livello
(riferirsi al manuale utente per una descrizione completa).
1. Introduzione
4. Casi d'uso
6. Class Diagram – parte prima
7. Class diagram – parte seconda
8. Class diagram – parte terza
9. Modellazione architetturale
10. Sequence Diagram
14. Progettazione Architetturale
15. Design Patterns – Parte prima
16. Design Patterns – Parte seconda
17. Progettazione dell'interfaccia utente