# Gestione della configurazione

In informatica la gestione delle configurazioni (o configuration management) è un'attività del processo di sviluppo del software.

## Scopo della gestione della configurazione

Il configuration management ha lo scopo di permettere la gestione ed il controllo degli oggetti (documentali e non) di sistemi complessi quali sistemi software, sistemi militari, sistemi ingegneristici ecc. Tale gestione è basata sul database (base di dati) in cui sono censiti gli oggetti sottoposti a controllo di configurazione (i configuration item). La gestione è di tipo formale, cioè nel processo vengono osservate delle procedure definite in precedenza, tramite opportuni moduli di gestione.
Nell'ambito del configuration management vengono gestiti gli input/output direttamente o indirettamente legati alla costruzione di un prodotto software. Si tratta quindi non solo di archiviare in modo controllato le varie versioni del codice sorgente sviluppato, ma anche le altre entità create nel corso delle diverse fasi dello sviluppo. Ogni elemento oggetto delle attività di gestione della configurazione viene normalmente chiamato configuration item (elemento di configurazione).
Una delle funzioni svolte da un sistema di controllo della configurazione è quella di correlare tra loro i vari oggetti archiviati relativamente ad un prodotto software, mantenendo allo stesso tempo traccia delle varie versioni degli oggetti e della loro applicabilità (gestione della versione, a volte detta versioning).
Perché tutti i configuration items possano essere adeguatamente gestiti è necessario che siano definite le possibili tipologie e le operazioni che su di essi possono essere compiute, compresi i ruoli dei vari attori dello sviluppo del software. Tutto ciò viene tipicamente definito all'inizio del processo di sviluppo del software.

## I principali elementi di configurazione

La gestione della configurazione può essere applicata a qualunque categoria di documenti o di "artefatti" che svolga un ruolo nello sviluppo software. Alcuni esempi di elementi di configurazione ("configuration item") sono:
* Specifiche dei requisiti
* Specifiche funzionali
* Project plan
* Quality plan
* Manuale utente
* Specifiche di progetto
* Codice sorgente
* Test Case
* Manuali di installazione e gestione del prodotto
* Programmi eseguibili
* Schemi dei database
* Documenti relativi alla manutenzione del prodotto
* Standard e procedure adottate

## Standard internazionali per la gestione della configurazione

ISO ha pubblicato lo standard ISO 10007 "Quality management systems — Guidelines for configuration management" la cui prima edizione è uscita nel 1995, la seconda nel 2003 e l'ultima pubblicata è la versione pubblicata a Marzo 2017.

## Esempi di software per la gestione della configurazione

* SCCS
* Clear Case
* Harvest,
* Concurrent Versions System (CVS)
* Subversion (SVN)
* GIT
* Bazaar
* Serena Dimensions
* Cfengine
* HiveCPQ
* KBMax, su kbmax.com.
* KONFIG CM, Soluzione di configuration management per software, hardware, dati e item fisici.
* LCFG, Unix configuration system
* ControlTier Open source configuration management e process automation tools.
* NetDirector Open source configuration management tool per applicazioni nel mondo Linux.
* Microsoft Team Foundation Server,
* CMDBuild Cloud, su cmdbuildcloud.it. URL consultato il 13 luglio 2019 (archiviato dall'url originale il 12 luglio 2017).
* CMDBuild, su cmdbuild.org.