Generalidades
A lo largo del ciclo de vida del proceso de software,
los productos de software evolucionan. Desde la concepción del producto y la captura
de requisitos inicial hasta la puesta en producción del mismo, y posteriormente
desde el inicio del mantenimiento hasta su retiro, se van realizando una serie
de cambios, tanto en el código como en la documentación asociada. La Gestión de
Configuración del Software es una disciplina encargada del control de la evolución
de los productos de software. Como todo proceso, la Gestión de Configuración
también puede ser sistematizada y automatizada, lo que se denomina un Sistema
de Gestión de Configuración (SGC). Actualmente existen en el mercado diversas
herramientas que permiten apoyar una o más actividades de la Gestión de Configuración.
Definiciones Gestión
de Configuración es el proceso de identificar y definir los elementos en el sistema,
controlando el cambio de estos elementos a lo largo de su ciclo de vida, registrando
y reportando el estado de los elementos y las solicitudes de cambio, y verificando
que los elementos estén completos y que sean los correctos. El propósito
de la Gestión de Configuración del Software es establecer y mantener la integridad
de los productos de software a través del ciclo de vida del proceso de software.
La Gestión de Configuración del Software implica la identificación
de la Configuración del software en puntos dados en el tiempo, el control sistemático
de los cambios en la Configuración y el mantenimiento de la integridad y trazabilidad
de la Configuración a través del ciclo de vida del software. Los productos incluidos
son:
Software distribuido al cliente.
Documentos de requerimientos del software.
Código.
Elementos requeridos para crearlos (ejemplo: el compilador) Aspectos
Funcionales
1. Identificación: Se necesita definir un esquema de identificación para
reflejar la estructura del producto, esto involucra identificar la estructura
y clases de componentes, dando a cada uno un nombre, una identificación de versión
y una identificación de Configuración. 2. Control: Se deben controlar
los cambios que se le hacen a través del ciclo de vida, asegurando que el software
sea consistente a través de la creación de una línea base del producto.
3. Estado: Se debe registrar y reportar el estado de los componentes y
solicitudes de cambio. 4. Auditoria y revisión: Se debe validar
que el producto este completo y se asi mantener la consistencia entre los componentes,
asegurando que estén en un estado apropiado a través de todo el ciclo de vida
del producto y que el mismo sea una colección bien definida de componentes.
Solución que le brindamos
Nuestra empresa reúne conocimientos específicos
en la disciplina de Configuración del Software y experiencia implementando y aplicando
estos conceptos en diferentes organizaciones. Estos conocimientos se
complementan y enriquecen utilizando las herramientas específicas y un
framework metodológico adecuable al proyecto y al cliente. La suma de
estos aspectos posibilita la implementación de una solución de Gestión Automatizada
de Configuración del Software, amalgamando funciones y disciplinas a herramientas
y procesos automáticos. Así, nuestra empresa lo puede ayudar en la decisión
de: Cuáles productos adquirir y Cómo implementarlo eficientemente. Las
Suites de productos IBM Rational abarcan todo el ciclo de vida del desarrollo
del software, pero quizá su empresa sólo requiera eficientizar una de las etapas
del mismo. Nuestros profesionales le ayudarán a identificar la herramienta específica
para esa decisión y el método preciso para su implementación eficiente.
Algunos conceptos presentes en la Disciplina
Configuración Las
características funcionales y físicas de una versión especifica de hardware
y elementos de software que combinados de acuerdo a procedimientos de construcción
específicos cumplen un propósito particular. Elementos
de configuración de software Definimos como
un elemento de Configuración a una unidad física y/o lógica parte de un conjunto
mayor de elementos, producida o adquirida, que por sus características es distinguible
de las demás y cuya evolución interesa administrar. Son elementos de
Configuración en un proyecto de software:
01. El plan de proyecto.
02. El plan de Gestión de Configuración. 03. El documento de definición de
requerimientos. 04. Estándares de análisis, diseño, codificación, pruebas,
y auditoria. 05. Documentos de análisis del sistema. 06. Documentos
de diseño del sistema. 07. Prototipos. 08. Documentos de diseño de alto
nivel. 09. Documentos de diseño de bajo nivel. 10. Especificaciones
de prueba del sistema. 11. El plan de pruebas del sistema. 12. El Código
fuente del programa. 13. Código objeto y ejecutable. 14. Especificaciones
de pruebas de unidad. 15. Planes de pruebas de unidad. 16. Documentos
de diseño de base de datos. 17. Datos de prueba. 18. Datos del proyecto.
19 .Manuales de usuario. Versión
Una versión es una instancia de un elemento
de Configuración. El término se usa para señalar a un elemento de Configuración
del software que tiene un conjunto definido de características funcionales.
Revisión Se
define revisión como una versión que se construye sobre otra versión anterior.
El término revisión generalmente se asocia a la noción de corrección de errores,
esto es, hacer cambios a un programa que corrigen solo errores en el diseño lógico
pero no afectan las capacidades funcionales documentadas, dado que ningún requerimiento
ha cambiado. Variante
Se define variante como una versión que es una alternativa
a otra versión. Las variantes pueden permitir a un elemento de Configuración satisfacer
requerimientos en conflicto. Una variante es una nueva versión de un elemento
que será añadida a la Configuración sin reemplazar a la versión anterior.
Por ejemplo, si se desarrolla una aplicación para varios sistemas operativos,
algunas librerías pueden requerir modificaciones para poder ser compiladas o ejecutadas
en los diferentes sistemas; la versiones para Unix y para Windows NT de una librería
serían variantes del mismo elemento. La creación de variantes implica
la creación de ramas en un grafo de evolución. Línea
base Una línea base es una especificación
o producto revisado y aprobado formalmente, que sirve como base para el desarrollo
posterior, y puede ser modificado solo a través de procedimientos formales de
control de cambios. El término también se usa para referirse a una versión
particular de un elemento de software que ha sido aprobado. En cualquier caso,
la línea base solo se puede modificar a través de procedimientos formales de control
de cambios. Una línea base, junto con todos los cambios aprobados a la línea base,
representa la Configuración aprobada actual. Procesos
Asociados El estándar
ISO/IEC 12207 ([ISO 12207]) para Procesos del Ciclo de Vida del Software,
establece el Proceso de Gestión de Configuración como uno de los Procesos de Soporte
del Ciclo de Vida. Un Proceso de Soporte ”apoya” a otro proceso como una parte
integral, con un propósito distinto, y contribuye al éxito y a la calidad del
proyecto de software. Este proceso consiste de las siguientes actividades:
1. Implementación
del Proceso: Se desarrolla un Plan de Gestión de Configuración que describe
las actividades de Gestión de Configuración, los procedimientos y el cronograma
para su realización, y los responsables de dichas actividades. Dicho plan debe
ser documentado e implementado. 2. Identificación de la Configuración:
Se establece un esquema de identificación de los elementos de software y sus versiones
a ser controlados por el proyecto. 3. Control de la Configuración:
Se identifican y registran las solicitudes de cambio, se analiza y evalúa los
cambios, se aprueba o rechaza la solicitud, se implementa, verifica y distribuye
el elemento de software modificado. 4. Contabilidad de Estado de
la Configuración: Se preparan registros de Gestión y reportes de estado que
muestren el estado e historia de los elementos de software controlados, incluyendo
líneas base. 5. Evaluación de la Configuración: Se determina
y asegura que los elementos de software sean funcionalmente (versus sus requerimientos)
y físicamente completos (es decir, si su diseño y Código reflejan una descripción
técnica actualizada). 6. Gestión de actualización y distribución:
Se controla formalmente la actualización y distribución de los productos de software.
En la figura 1 se presenta un modelo de
este proceso elaborado utilizando el perfil de UML para modelamiento de procesos
de software, propuesto por el Object Management Group (OMG)
El estándar IEEE Std. 1074-1995 ([IEEE 1074]) para
el Desarrollo de Procesos del Ciclo de Vida del Software, establece el Proceso
de Gestión de Configuración del Software como uno de los Procesos Integrales.
Estos son los Procesos necesarios para completar exitosamente las actividades
del proyecto, y son utilizados para asegurar la finalización y calidad de las
funciones del proyecto. Este proceso consiste de las siguientes actividades:
1. Planificar la Gestión
de Configuración. 2. Desarrollar la Identificación de la Configuración.
3. Realizar el Control de la Configuración. 4. Realizar la
Contabilidad de Estado. Escenarios
de Configuración en el Proceso de Software Gestión de configuración
del código fuente La evolución del Código fuente
es quizás el ejemplo mas claro en la Gestión de Configuración. A lo largo del
desarrollo (y posteriormente en el mantenimiento) las modificaciones al software
se realizan sobre el Código fuente. Y es según el Código fuente que se valida
la documentación asociada. Los sistemas administradores de versiones
se suelen integrar a los entornos de desarrollo y realizan administración de versiones
del Código fuente. Cada modificación de uno de los archivos del programa va generando
una revisión del mismo, y periódicamente se crean líneas base de todo el proyecto.
De este modo, un equipo de desarrollo puede trabajar en paralelo, compartiendo
versiones de archivos de Código fuente y actualizándolos periódicamente según
se van creando o modificando los archivos que conforman el proyecto.
Gestión de configuración en el desarrollo de software
Como ya habíamos comentado, un elemento de
Configuración puede ser prácticamente cualquier producto o subproducto del desarrollo
de software. Las especificaciones de requisitos, los documentos de análisis y
de diseño, el Código fuente y ejecutable, y los procedimientos y datos de prueba
pueden ser sometidos a control de Configuración. Con un control riguroso,
es posible entonces mantener registro del estado de todos estos elementos, lo
que facilita la introducción de cambios si se tiene registro de las dependencias
entre ellos, además de facilitar la elaboración de entregables; por ejemplo, si
se tiene registro de las dependencias entre los elementos de Configuración, es
posible que si se produce un cambio en las especificaciones, los documentos de
análisis y diseño y el Código fuente asociados puedan ser actualizados sin que
tome demasiado tiempo realizar su búsqueda. Gestión
de configuración en el mantenimiento de software En
el mantenimiento de software, cobra importancia la función del Comité de Control
de Cambios (CCC), que se encarga de recibir, estudiar y aprobar las solicitudes
de cambio en el software que son presentadas, sea por los usuarios o por los propios
encargados del mantenimiento. En este caso, las funciones de control y de auditoria
se vuelven casi indispensables, pues es necesario mantener registro de todas las
solicitudes de cambio presentadas y del estado actual de cada una de ellas. Un
sistema de Gestión de Configuración que apoye la Gestión de solicitudes de cambio,
debería permitir el registro por parte de los usuarios de las solicitudes de cambio,
su revisión por parte del CCC, y si son aprobadas la creación de ordenes de cambio.
Un cambio implica generalmente la actualización tanto del Código fuente,
como de los documentos de especificación de requisitos, análisis y diseño, casos
de prueba y manuales. Por lo tanto, en el escenario anterior, resulta de utilidad
mantener un registro de las dependencias entre los elementos de Configuración.
El cambio se vera reflejado en la creación de nuevas versiones de los elementos
respectivos. Gestión en la distribución
del software a las PC- Usuarios Cuando se pone
en producción un software, se distribuyen copias del mismo entre los diversos
usuarios del sistema. En este escenario, un sistema de Gestión de Configuración
debería permitir registrar las Configuraciones (conjunto de versiones de elementos
de Configuración) que cuenta cada PC - usuario. Puede ocurrir, que si un mismo
sistema se vende a distintos clientes, en algún momento surjan requerimientos
contradictorios o necesidades que lleven a la creación de variantes de los elementos
de Configuración. El sistema de Gestión de Configuración apoyaría entonces al
momento de estudiar una solicitud de un usuario a conocer cual es la Configuración
con la que esta trabajando. Modelo Genérico
A continuación se propone un modelo genérico
para la Gestión de Configuración del software, representado en la figura 2. Este
modelo procura abarcar los escenarios presentados anteriormente y da soporte a
los siguientes requerimientos:
1. Permite la creación de tipos de elementos
de Configuración. De este modo, es posible que el usuario cree sus propios tipos
de elementos dependiendo que es lo que desea controlar. 2. Permite la
creación de tipos de relaciones entre los elementos de Configuración. Es posible
que el usuario cree los tipos de relaciones que desee, y que especifique dependencias
para la creación de nuevas versiones entre el origen y el destino de la relación.
Estas dependencias pueden ser:
Ninguna,
Condicional-Origen (sí el origen cambia, el destino podría cambiar),
Condicional-Destino
(sí el destino cambia, el origen podría cambiar),
Obligatoria-Origen (sí el origen cambia, el destino debe cambiar),
Obligatoria-Destino (si el destino cambia, el origen debe cambiar).
3. Cada tipo de elemento y cada tipo de relación
puede tener los campos de información adicional que el usuario considere necesarios.
4. Un elemento de Configuración corresponde a un tipo y sus versiones
pueden estar relacionadas con versiones de otros elementos según se creen relaciones
para él. 5. Un elemento de Configuración tiene un conjunto de versiones
asociadas, cada una de las cuales esta asociada al usuario (dueño) que la creo.
6. Un conjunto de versiones de elementos de Configuración conforma una
Configuración. Es posible de este modo registrar muchas Configuraciones para el
mismo software, que pueden diferir en cuanto a versiones, o ser variantes (Configuraciones
alternativas).
De este modelo es posible obtener información acerca de:
1. Los tipos
de elementos sometidos a Gestión de Configuración. 2. Las relaciones
entre dichos elementos. 3. Las dependencias para la creación de versiones
al momento de analizar la introducción de un cambio. Es posible conocer como un
cambio en un elemento afectara a los demás. 4. Los usuarios que generaron
cada versión de un elemento. |