1. 11. GESTIONDE LA CONFIGURACION DEL SOFWARE (CGS)
La CGS es un conjunto de actividades de seguimiento y control que comienzan cuando se
inicia el proyecto de desarrollo del software y termina sólo una vez que el software queda
fuera de circulación.
La gestión de configuración del software realiza un conjunto de actividades desarrolladas
para gestionar y registrar los cambios a lo largo del ciclo de vida del software de
computadora.
La GCS es una actividad de garantía de calidad del software que se aplica en todas las
fases del proceso de ingeniería del software, las actividades de CGS sirven para:
Identificar el cambio de nuestro software.
Controlar ese cambio.
Garantizar que el cambio quede bien implantado.
Informar el cambio
11.1 La importancia de poner las cosas en su sitio
Desmontar el motor de un coche es una tarea entretenida, porque habitualmente no
conservamos ningún tipo de manual. la avería es más o menos evidente. A veces, uno
termina reparando la avería. en ciertas ocasiones, después de cerrar el capó del coche,
nos percatamos de que ha quedado una pieza fuera que formaba parte del motor antes
de la reparación. Estas cosas suceden porque no hemos tenido cuidado en gestionar la
configuración del motor de nuestro vehículo.
2. La escena descrita tiene un paralelo en la Ingeniería del Software. Por ejemplo, ciertos
programas funcionan con la versión 1.1 de una biblioteca determinada, pero no funcionan
con versiones 1.2 y posteriores de la misma biblioteca, porque cambió algún pequeño
detalle en una interfaz. También en un software en desarrollo, el cambio que hizo ayer un
programador a última hora de la tarde hace que a la mañana siguiente otros de sus
compañeros comiencen la mañana con errores de compilación que ¡el día anterior no
sucedían!
Podemos concluir que el cambio es un hecho vital en el desarrollo del software, pues los
clientes desean modificar los requerimientos, el equipo de desarrollo desea modificar
enfoque técnico o los gestores desean modificar el enfoque del proyecto.
Desgraciadamente, a veces ocurre que el error no informa del lugar en que se encuentra
la causa del problema, y sólo la intuición o experiencia del programador (o la suerte en
encontrar una solución en los foros de internet) permitirán dar con la solución.
El objeto de este capítulo es toda la mecánica del control de los elementos, sus cambios y
cómo se combinan para tener el producto software funcional. Su aparente simplicidad
hace que en muchas ocasiones se pase por alto o se descuide, lo cual puede llevar a
perder el control de los elementos del software, que en un cierto momento dejan de
«encajar» entre sí. Es así que la gestión de la configuración sea una actividad esencial de
soporte al proceso de ingeniería. Si no sabemos qué piezas forman el software y cómo
encajan para que la cosa funcione, sólo podemos augurar problemas en el cumplimiento
de los plazos.
11.2 Objetivos
El objetivo general de este capítulo es conocer la función, los conceptos y las principales
técnicas y herramientas de la gestión de la configuración del software, como función de
soporte de otras actividades de Ingeniería del Software. Este objetivo principal se
desglosa en los siguientes objetivos específicos:
• Comprender el concepto de configuración del software como la disposición de los
elementos que conforman un software, y su evolución en el tiempo en forma de versiones
de los elementos de configuración.
• Comprender la importancia de las líneas base para dar estabilidad a la gestión de la
configuración del software, gracias al control formal de los cambios.
• Saber establecer y gestionar el proceso fundamental de la gestión de cambios.
• Conocer los fundamentos del control de versiones de elementos software y su papel
dentro de la gestión de la configuración.
• Conocer los aspectos más relevantes de la planificación, organización y auditoría de la
gestión de la configuración del software.
3. En el ámbito profesional, la gestión de la configuración requiere las siguientes
competencias:
• Saber instalar, configurar y utilizar herramientas de control de versiones, entregas y
construcciones.
• Diseñar procedimientos organizativos de control de cambios, teniendo en cuenta las
características de la organización.
• Integrar los artefactos de diferentes ingenieros o incluso de diferentes equipos en líneas
base estables que tengan funcionalidades determinadas.
11.3 La configuración del software
Antes de seguir hay que comprender el concepto general de configuración, que no es
exclusivo del software. Todo sistema como tal tiene una configuración, que no es otra
cosa que la disposición y las interrelaciones de sus partes. Por ejemplo, la configuración
de un modelo de automóvil es la combinación de ciertas piezas de determinada forma,
que dan lugar a unas prestaciones determinadas. Aunque otro modelo puede compartir
piezas (por ejemplo, tener los mismos amortiguadores), diferirá en otras, que dan lugar a
productos diferenciados. En el desarrollo de sistemas informáticos, la configuración es la
disposición concreta de ciertos elementos de hardware y software combinados dentro de
un sistema o producto determinado, y así se define en el glosario IEEE de Términos de
Ingeniería del Software: Configuración es la disposición de un sistema informático o un
componente, definida por el número, naturaleza e interconexiones de sus partes
constituyentes.
Elemento de configuración:
Es la información creada como parte del proceso de ingeniería de software. es cada uno
de los artefactos de Ingeniería del Software que evolucionan durante el desarrollo y
progreso de un sistema software y ha logrado un estado estable en el proceso de
desarrollo y por tanto se inserta dentro del control de configuración. Es la unidad mínima
de trabajo de la GCS.
Ejemplos:
Documentos (Visión, Especif. de CDU, etc.)
Elementos hardware
Bibliotecas, notas
Ejecutables. El Código fuente del programa
Manual de usuario
Prototipos
cualquier otra pieza que forma parte del sistema software final o en desarrollo.
4. Una Versión:
El concepto de versión de un elemento de configuración puede definirse de la siguiente
forma. Una versión (de un elemento de configuración) es cada uno de los siguientes
estados diferentes en los que un elemento de configuración se encuentra durante el
desarrollo o durante la evolución del software
Por ejemplo, todos entendemos que la versión 8.1 del navegador Internet Explorer de
Microsoft es una variante menor de la versión 8.0 del mismo software.
En general, cada elemento o conjunto de elementos dentro de un software puede
versionarse. que se debe considerar para saber si se ha creado una nueva versión.
Por ejemplo, si un desarrollador está trabajando en un archivo fuente en un proyecto,
cada pequeño cambio que hace (como por ejemplo, añadir un nuevo método en una
clase, o añadir un comentario), ¿representa una versión nueva? Es importante tener en
cuenta las siguientes aclaraciones respecto al concepto de versión.
• Las versiones pueden determinar diferentes estados de elementos de configuración
atómicos, pero también de elementos compuestos, como puede ser un software
entregable completo (por ejemplo, Mozilla Firefox 3.6.8), o una biblioteca (por ejemplo,
Xerces 2.6.2), o de subsistemas o conjuntos de código que tienen sentido sólo
internamente dentro de una organización
• No todo cambio acaba siendo considerado una versión. Durante el trabajo diario se
hacen cambios a los elementos que no desembocan en versiones nuevas: si se registrase
cada mínimo cambio como una versión diferente, pronto la configuración tendría un
volumen de versiones inmanejable.
5. La gestión de la configuración:
De este modo, se puede considerar la configuración de un software como una sucesión
de configuraciones en el tiempo, hay dos maneras de ver la configuración: en un instante
concreto del tiempo, o a través del tiempo, según la historia de los cambios. No es
necesario en todas las ocasiones registrar cada uno de los cambios que se producen en
los elementos que conforman el software, sino sólo en aquellos que se consideren
relevantes o definitivos. De las definiciones anteriores se obtiene la siguiente (IEEE,
1990): La gestión de la configuración es la disciplina que aplica dirección y control técnico
y administrativo para: identificar y documentar las características físicas y funcionales de
los elementos de configuración, controlar los cambios de esas características, registrar e
informar del procesamiento de los cambios y el estado de la implementación, y verificar la
conformidad con los requisitos especificados. La gestión de la configuración también
puede definirse como el control de 1as diferencias en el sistema para minimizar el riesgo y
el error
11.4 Actividades de gestión de la configuración del software
Las siguientes son cuatro preguntas típicas de la gestión de la configuración del software:
• Dame la versión actual del documento X, incluyendo una lista con todos los cambios
desde la fecha Y.
Esto tiene que ver con el control de cambios y versiones de documentos.
• Dame el último ejecutable, con una lista de los problemas pendientes y todas las
características aún no implementadas.
La segunda pregunta refleja también cómo la gestión de la configuración del software
trata de productos construidos (un ejecutable) por diferentes partes. Esto da lugar a los
conceptos de construcción (build) y entrega (release).
• Dame un listado del módulo Z, en su versión W.
los cambios al código que se piden en la tercera pregunta reflejan la necesidad de
almacenar la historia completa de versiones.
• Dime quién aprobó el cambio A al elemento de configuración B, quién lo realizó, y por
qué se aprobó.
Por último, todo el proceso de gestión y control debe estar registrado (incluyendo las
responsabilidades de los individuos).
Plan de Gestión de configuración:
a) identificación de la configuración son la base del resto de las actividades,
determinando qué debe incluirse en la configuración y de qué forma.
6. b) Control de cambios: se establecen los procedimientos formales incluyendo la
toma de decisiones sobre qué cambios deben hacerse, quién los hará y como se
controlan esos cambios.
c) La gestión de entregas: se ocupa de manera específica de las configuraciones
estables del producto que se entregarán a los clientes, o servirán como punto de
referencia en el desarrollo.
d) auditoría de la configuración: cumple la función de garantía de calidad dentro de
esta área de la Ingeniería del Software.
e) informe y contabilidad del estado de la configuración: cumplen la función
de informar a la dirección y al equipo de desarrollo del estado de los elementos,
permitiéndola medición y el control del progreso.
La Figura 11.1 resume las principales actividades que se engloban en la gestión de la
configuración.
El plan de gestión de la configuración recoge las políticas, procedimientos y planes
relativos a la configuración dentro de la organización.
Cuestionario:
11.1 Se estádesarrollandounaaplicaciónparalaempresaACME.Un archivocon el logotipode
ACME, que se muestraen laaplicación,¿puede considerarseunelementode configuración?
11.2 Indique ladiferenciaentre unaversiónyunaentregaenel contextode lagestiónde la
configuracióndel software.
7. 11.3 ¿Qué naturalezaoalcance debentenerloscambiosenunelementode configuraciónpara
que se considere que se hacreado una nueva versión?
11.4 Reflexionarsobre laverdadofalsedadde lasiguienteafirmación:«Enuncontrol de versiones
optimista,enel que nusuariosmodificansimultáneamenteel mismoarchivo,unaherramientade
mezcla(merge) automáticasiempre puede decidirsobre laversióncorrectaque incorporatodos
loscambios».
11.5 Aquellaentidadindependienteengestiónde laconfiguraciónse le denomina:
11.6 Definael conceptode LíneaBase.
11.7 Mencione las4 actividadesque se debenrealizarenel plan de gestión de laconfiguración.
Glosario:
Artefacto: son el resultado de trabajo parcial o final que es producido y usado
durante un proyecto. Los artefactos son usados para capturar y llevar la información
del proyecto. Un artefacto puede ser: Un documento (Caso de Negocio o un
documento de la arquitectura del Software), Un modelo (un modelo de caso de uso),
Un elemento (una sola clase de todo el Diagrama de Clases).
Línea Base: se define como un producto que acaba de ser aprobado y que define la
“base” de ese producto que para ser modificado deberá pasar por un protocolo de
control de cambios. También puede verse como un punto de referencia en la
configuración de un proyecto que marca un estado estable en algún producto del
proyecto.