Administración de la configuración. Organización y control para lograr el éxito.

Tal vez para algunos, el término "administración de la configuración" se refiere a la configuración de una máquina, el cómo hacer funcionar cierto software en alguna computadora, o modificar ciertos parámetros del sistema operativo. Esto podría ser correcto, siempre y cuando no estemos hablando del concepto dentro de la cultura de procesos. Dentro de este contexto, la administración de la configuración, o SCM (Software Configuration Management), es el arte de identificar, relacionar, almacenar y trabajar con los productos de trabajo; entendiendo por productos de trabajo: planes, código fuente, librerías, modelos, documentación; es decir, todo lo que se genera en el ciclo de desarrollo de software.

El Instituto de Administración de la Configuración (ICM), la define como: “el proceso de administrar el espectro de los productos de la organización, facilitando y procesando la administración de todos los requerimientos, incluyendo cambios, y actualizando los resultados conforme a aquellos requerimientos” [ICM 1998]. Como podemos apreciar, esta definición también incluye al proceso en sí, y sus procedimientos referentes.

Mejor Organización de los Productos
La Administración de la Configuración nos ayuda a localizar más fácilmente nuestros productos, ya sean para uso propio o de algún otro involucrado en el proyecto. Adicionalmente, nos ayuda a tener un control sobre las versiones de lo que vamos desarrollando. De hecho, nació con la idea de poder establecer mecanismos para tener el control sobre lo que se estaba creando en el ciclo de desarrollo de software. Esto fue porque se tenían sistemas complejos y se quería reducir el tiempo de respuesta al momento de buscar algún producto de trabajo en los proyectos.

Los proyectos donde no se aplica la administración de la configuración suelen tener un mayor costo en tiempo y esfuerzo, dado que la falta de control y organización provoca re-trabajo y pérdida de tiempo. Por ejemplo, cuando estamos buscando en algún cajón donde no tenemos orden, nos es más complicado encontrar algo, en cambio si tenemos ordenado ese cajón se nos reduce el tiempo de búsqueda, nos acordamos más de las cosas que tenemos guardadas en el cajón y encontramos lo que andamos buscando.

Es recomendable tener una buena administración de la configuración no solo para ayudarnos a encontrar más rápidamente algún producto, sino que también nos da orden sobre la manera en cómo organizamos los archivos, dónde guardamos cada cosa, cómo la nombramos para identificarla más rápidamente y también cómo vamos versionándola para que podamos realmente saber cómo ha ido cambiando y poder regresar a un cierto estado, en caso de ser necesario.

Entre los beneficios que encontramos al aplicar la administración de la configuración tenemos: la disminución de los costos de mantenimiento del software, se tiene un mejor aseguramiento de la calidad, reducción de defectos y errores, mejora la productividad del desarrollo, desarrollo que no depende de la persona o personas que lo están desarrollando sino del proceso y de la documentación que se está generando.

Control de Versiones
En los proyectos o desarrollos pequeños, es común pensar que se puede tener el control sobre todos los productos, sin necesidad de llevar un control de versiones. Sin embargo, la realidad es que los sistemas son cada vez más complejos, y con mayor número de componentes que interactúan entre sí. Si no tenemos un control de versiones adecuado, no podemos saber cuales son los productos modificados en cierto punto y cuales son las últimas versiones. Esto puede provocar que trabajemos utilizando versiones inadecuadas, generando así un doble trabajo.

Figura 1. Ramificación de versionas

La administración de la configuración nos provee de un nivel de servicio, control y soporte para la organización o para el equipo de trabajo:
• Servicio. Es un servicio que se ofrece a aquellos que están relacionados con el desarrollo de software para dar soporte a las personas y la información que se deba de controlar dentro de un proyecto.
• Control. Se llevan a cabo actividades de control sobre los productos de trabajo: información, documentos, especificaciones, versiones, requerimientos, herramientas. Es decir, sobre todo los artefactos que se vayan necesitando para realizar y administrar el desarrollo del software.
• Soporte. Ayuda a los desarrolladores, ingenieros y a las personas que están relacionadas con el ciclo de desarrollo de software en la administración de sus productos de trabajo.

El Rol del Administrador de Configuración
Este rol se encarga de controlar los artefactos que se van creando durante los proyectos, organizándolos en sus diferentes versiones, y administrando los permisos de acceso y escritura hacia estos. Las tres características más importantes para este rol son:
1. Debe de estar capacitado en herramientas de planeación para ejecutar sus actividades de forma eficiente y eficaz.
2. Debe de tener un control y conocimiento sobre los productos que se irán desarrollando a lo largo de cada proyecto.
3. Debe ser flexible, para poder ajustarse a las necesidades y requerimientos de los desarrolladores, clientes, programas y a la organización.

Implantación
Al decidir que se tendrá una administración de la configuración en la organización, se debe tomar en cuenta el establecimiento de ciertas reglas para saber:
• Cómo se van a generando las diferentes versiones de los elementos
• Cómo se manejarán los estados que estos tendrán
• Cómo se llevará a cabo el manejo de los cambios, lo cual incluye la capacidad de deshacer cambios.
• La manera en que se controlará y autorizará la realización de los cambios o las eliminaciones de ciertas versiones.

Cuando ya se tomaron y documentaron esas decisiones es necesario comunicarlas a la organización para que las personas puedan entender la nomenclatura y sepan cómo se está trabajando con la administración de la configuración.

Herramientas
Existen diversas herramientas de software que facilitan y automatizan la administración de la configuración, donde se pueden ver: el estado de los productos, ya sea check-in (proceso de revisión, aprobación y estado en un ambiente controlado) o check-out (proceso para modificación de productos y autorización previa de los productos antes de ser implantados); en qué fase del ciclo de vida del desarrollo del software se encuentran y como interpretar más fácilmente la nomenclatura que se está utilizando en la organización.

Figura 2. Proceso check-in, check-out

SCM y CMMI
En el modelo de CMMI, podemos encontrar a la administración de la configuración como un área de proceso, donde su propósito es el establecer y mantener la integridad de los productos de trabajo mediante la identificación, control, reporte y auditoria a la configuración. Donde se establecen las líneas base (son las especificaciones o productos desde los cuales se partirá como base del ciclo de desarrollo), se rastrean y controlan los cambios y se establece la integridad de los productos de software.

Conclusión
Es importante tener una administración de la configuración cuando se está trabajando en un proyecto, para poder tener el control sobre los productos de trabajo que se están creando, disminuir el tiempo de re-trabajo, administrar y controlar los cambios que se tienen dentro del proyecto y sus productos.

Acerca del autor
Brenda Bastida Martínez es consultor en Avantare Consultores. Sus áreas de especialidad incluyen el Aseguramiento de la Calidad del Software y la Administración de la Configuración. Brenda es Licenciada en Ciencias de la Computación egresada de la UNAM, y actualmente cursa la Maestría en Dirección de Tecnologías de Información en el UNITEC