# Gestió de la configuració del software

La gestió de configuració de programari o Software Configuration Management (SCM) en l'enginyeria de programari, és la tasca de seguiment i control de canvis en el programari, que forma part del camp interdisciplinari més ampli de gestió de la configuració. Les pràctiques de SCM inclouen control de revisió i l'establiment de línies de base. Si alguna cosa va malament, SCM pot determinar què s'ha canviat i qui el va canviar. Si una configuració està funcionant bé, SCM pot determinar com replicar que a través de molts hosts.
Les sigles "SCM", també s'expandeix com la gestió de configuració de la font i el programari de gestió de canvis i configuració. No obstant això, la "configuració" s'entén generalment per cobrir els canvis normalment realitzades per un administrador de sistemes, gestió de codi font de sotmetre a desenvolupament de programari es considera per separat (vegeu control de revisió).

## Objectius

Els objectius del SCM són generalment:
* Identificació de la configuració - Identificació de configuracions, els elements de configuració i línies de base.
* Control de la configuració - La implementació d'un procés de canvi controlat. Això s'aconsegueix normalment mitjançant la creació d'un tauler de control de canvi, la funció principal és la d'aprovar o rebutjar totes les sol·licituds de canvi que s'envien en contra de qualsevol línia de base.
* Estat de la configuració de comptabilitat - Gravació i report tota la informació necessària sobre l'estat del procés de desenvolupament.
* Auditoria de configuració - Assegurar que les configuracions contenen totes les seves parts destinades i són sòlids respecte als seus documents que especifiquin, incloent els requisits, especificacions arquitectòniques i manuals d'usuari.
* Gestió de la Construcció - Gestió del procés i les eines utilitzades per a la construeix.
* La gestió de processos - Garantir el seguiment del procés de desenvolupament de l'organització.
* Gestió ambiental - Gestió del programari i maquinari que alberguen el sistema.
* Treball en equip - Facilitar les interaccions de l'equip relacionades amb el procés.
* Seguiment de defectes - Assegurar-se que cada defecte té la traçabilitat fins a l'origen.
Amb la introducció de la computació en núvol els propòsits de les eines de SCM s'han convertit en la fusió en alguns casos. Les mateixes eines de SCM s'han convertit en dispositius virtuals que es poden crear instàncies com màquines virtuals i es guarden amb l'estat i la versió. Les eines poden modelar i administrar recursos virtuals basats en el núvol, incloent appliances virtuals, unitats d'emmagatzematge, i els paquets de programari. Les funcions i responsabilitats dels actors s'han convertit fusionat, així com amb els desenvolupadors la possibilitat de crear una instància dinàmicament servidors virtuals i recursos relacionats

## Història

La història de la gestió de configuració de programari (SCM) en informàtica es remunta a principis dels anys 1950, quan la gestió de la configuració (CM), originalment per al desenvolupament de maquinari i control de la producció, es va començar a aplicant al desenvolupament de programari.
La gestió de la configuració de programari primer va ser una operació manual. Amb els avenços en el llenguatge i la complexitat, l'enginyeria de programari, que implica la gestió de configuració i altres mètodes, es va convertir en una preocupació important a causa de qüestions com la programació, pressupost i qualitat. Les lliçons pràctiques, al llarg dels anys, han donat lloc a la definició i l'establiment de procediments i eines. Amb el temps, es van convertir en les eines de sistemes per a la gestió de canvis de programari. Amb el creixent ús de les computadores, els sistemes manegen un abast més ampli, que inclou la gestió de requisits, alternatives de disseny, control de qualitat, i més; eines posteriors van seguir les directrius de les organitzacions, tals com el Capability Maturity Model (CMMI) del Software Engineering Institute.

## Normativa

La IEEE 828 (amb acrònim SCM Software Configuration Management) és una normativa del IEEE que estableix uns requeriments mínims per a portar a terme la gestió de configuracions en sistemes de programari. IEEE 828 recomana un seguiment i control de canvis i configuracions en el programari durant el cicle de vida.

## Funcionalitat

SCM tracta i controla:
* L'elaboració de codi font per diversos desenvolupadors simultàniament
* El seguiment de l'estat de les versions i els seus canvis
* La conducció de la integració de les parts del programari en un sol producte de programari.

## Eines

Per a la realització de SCM hi ha diferents eines. Malauradament, les eines que pretenen oferir una solució total al problema sovint no compleixen amb els requisits tècnics com ara:
* Suport a diferents plataformes
* Iniciar el procés de compilació
* Connexió a les bases de dades existents
* Integració a l'organització existent
Per aquesta raó ofereix més flexibilitat una solució que composta per diferents eines parcials i que siguin fàcils d'integrar en el procés existent. Per exemple:
* Ús d'un programari d'administració de versions com CVS, Subversion, SourceSafe, ClearCase, Darks, Plastic SCM.
* Introducció d'una eina per a la documentació comunitària (gestió de projectes) amb una administració de canvis, accés interactiu i fòrum o alguna plataforma per a la comunicació.
* Determinar un entorn per al compilació automàtic.
Una combinació possible seria:
* Subversion com a repositori de codi
* Redmine com gestor de projectes
* Jenkins-CI com a entorn de compilació automàtic (que farà servir MAVEN i NEXUS, per construir la compilació, generar els lliurables i controlar les dependències de llibreries)

## Referències

* ↑ «IEEE SA - 828-2012 - IEEE Standard for Configuration Management in Systems and Software Engineering» (en anglès). https://standards.ieee.org. Arxivat de l'original el 2017-10-17. [Consulta: 17 octubre 2017].
* ↑ «[https://web.archive.org/web/20220116103641/http://bluehawk.monmouth.edu/~lvallone/ieee_828-1998_sw_config_mgmt.pdf IEEE Standard for Software Configuration Management Plans]» (en anglès). http://bluehawk.monmouth.edu. Arxivat de l'original el 2022-01-16. [Consulta: 17 octubre 2017].
* ↑ «Software configuration management» (en anglès). https://es.slideshare.net.+[Consulta: 17 octubre 2017].

## Vegeu també

* Sistema de Gestió de la Configuració