UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
ESCUELA DE CIENCIAS DE LA COMPUTACIÓN
GESTIÓN DEL CAMBIO
Ing. Armando Cabrera Fernanda M. Soto[1], Henry F. Montalván[2]
“El arte de coordinar el desarrollo de software para minimizar… la confusión se llama gestión de la configuración (GC-GCS). La Gestión de la Configuración es el arte de identificar, organizar y controlar modificaciones al software que se construye por medio de un equipo de programación. La meta es maximizar la productividad al minimizar las equivocaciones.”
Babich[3]
Resumen: La Gestión del Cambio del Software, comúnmente llamada Gestión de la Configuración del Software, es una actividad protectora que se aplica a lo largo del proceso de software. La GCS es también considerada como una actividad de aseguramiento de la calidad del software. Esta gestión permitirá identificar, controlar, auditar e informar modificaciones que invariablemente ocurren mientras se desarrolla el software y después de que éste se libera a un cliente. Palabras Claves: Auditorias, Cambio, Control del cambio, Control de la versión, Depósito, Elementos de configuración, Gestión de la configuración del software, Identificación, Informe de Estado, Líneas Base. INTRODUCCIÓN La Gestión del Cambio es una disciplina que apoya directamente el desarrollo y mantenimiento del software, mediante la conservación de la integridad del producto antes y después de su puesta en producción. El cambio es inevitable cuando se construye software, aumenta el grado de confusión entre los ingenieros de software que trabajan en un proyecto. La confusión surge cuando los cambios:No se analizan antes de realizarlos, - No se registran antes de implementarlos,
- No se reportan a quienes deben saberlo,
- No se controlan de forma que mejore la calidad y reduzca el error.
La Gestión del Cambio es llamada usualmente Gestión de la Configuración del Software (GCS o GC). Se debe de tener muy claro lo que es Soporte y Gestión de la Configuración. - Soporte: Conjunto de actividades de ingeniería del software que ocurren después de que éste se ha entregado al cliente y ha sido puesto en operación.
- Gestión de la configuración del software: Conjunto de actividades de seguimiento y control que se inician cuando empieza un proyecto de ingeniería del software y terminan sólo cuando éste se retira de operación.
GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE La Gestión de la Configuración del Software es un conjunto de actividades desarrolladas para gestionar los cambios a lo largo del ciclo de vida. La GCS es una actividad de garantía de calidad de software que se aplica en todas las fases del proceso de ingeniería del software. El resultado del proceso de ingeniería del software es una información que se puede dividir en tres amplias categorías: - Programas de computadora (tanto en forma de código fuente como ejecutable)
- Documentos que describen los programas (manuales tanto técnicos como de usuario)
- Estructuras de datos (contenidas en el programa o externas a él)
Estos resultados son elementos que se denominan colectivamente configuración del software.Origen de los cambiosNuevas condiciones en el negocio o mercado (cambios en los requisitos del producto o reglas del negocio) - Nuevas necesidades del cliente (modificación de los datos que producen los sistemas, funcionalidad que entregan los productos o los servicios)
- La reorganización o el crecimiento o reducción del negocio (cambios en las prioridades del proyecto o estructura del equipo de ingeniería del software)
- Restricciones presupuestales o de calendarización (redefinición del sistema o producto)
Un escenario de GCSEn la Tabla I tenemos un típico escenario operativo.
TABLA I:namespace prefix = o />
ESCENARIO TÍPICO DE GCS
Involucrado |
Actividad |
Metas |
Gestor del proyecto |
A cargo de un grupo de software | Garantizar que el producto se entregue dentro de cierto período |
Gestor de configuración |
A cargo de los procedimientos y políticas de GC | Garantizar el cumplimiento de procedimientos y políticas: crear, cambiar y poner a prueba el código
Posibilitar el acceso a la información acerca del proyecto |
Ingenieros del Software |
Responsables del desarrollo y mantenimiento del producto de software | Trabajar con eficiencia |
Cliente |
Emplea el producto, sigue procedimientos formales para solicitar cambios e indicar los bugs en el producto | Emplea el producto |
Elementos de un sistema de gestión de la configuración Susan Dart[4] identifica cuatro elementos que deben estar presentes en el momento de desarrollar un sistema de gestión de la configuración eficaz: - Elementos de componentes: conjunto de herramientas acopladas dentro de un sistema de gestión de archivos (ej.: Base de datos), permiten el acceso y la gestión de cada elemento de configuración del software
- Elementos de proceso: serie de procedimiento y tareas que definen un enfoque eficaz con el cual gestionar el cambio
- Elementos de construcción: conjunto de herramientas que automatizan la construcción del software al asegurar que se ha ensamblado un conjunto adecuado de componentes validados
- Elementos humanos: la implementación de una GCS eficaz requiere que el equipo de software utilice un conjunto de herramientas y características de procesos
Líneas base - Se definen como un punto del ciclo de vida del software en el cual se aplica el control de configuraciones a un elemento específico de la configuración.
- Es un concepto de gestión de la configuración del software que nos ayuda a controlar los cambios sin impedir seriamente los cambios justificados.
- El IEEE (IEEE Std. No. 610.12-1990) define una línea base como[5]: “Una especificación o producto que se ha revisado formalmente y se está de acuerdo con los resultados, y que a partir de ahí sirve como la base para el desarrollo ulterior y que puede cambiarse sólo por medio de procedimientos formales de control de cambio.”
- Antes de que un elemento de configuración del software se convierta en línea base, es posible realizar el cambio rápida e informalmente. Sin embargo, una vez establecida una línea base, metafóricamente se pasa a través de una puerta giratoria de una sola dirección. Si los pasos sucesivos generan cambios en el documento después de una línea base, se requerirá una revisión formal y una justificación de todas las modificaciones del documento (control de cambios).
- La Figura 1 nos indica que cada documento que resulta del proceso de software, se convierte en Línea Base, una vez que dicho documento se haya revisado, corregido y aprobado.
FIGURA 1[6] DEFINICIÓN DE LÍNEAS BASE
Elementos de configuración del software
- Un elemento de configuración del software (ECS) es la información que se crea como parte del proceso de ingeniería del software.
- Un ECS es un documento, un conjunto completo de casos de prueba o un componente de un programa dado (ej.: función C++ o un applet de Java).
- Los ECS están organizados para formar objetos de configuración susceptibles de catalogar en la base de datos del proyecto con un solo nombre. Un objeto de configuración tiene un nombre, atributos y está “conectado” con otros objetos por medio de relaciones.
- Los siguientes ECS son el objeto de las técnicas de gestión de configuraciones y forman un conjunto de líneas base[7]:
1. Especificación del sistema 2. Plan del proyecto software 3. a. Especificación de requerimientos del software b. Prototipo ejecutable o en papel 4. Manual de usuario preliminar 5. Especificación de diseño: a. Diseño preliminar b. Diseño detallado 6. Listados del código fuente 7. a. Planificación y procedimiento de prueba b. Casos de prueba y resultados registrados 8. Manuales de operación y de instalación 9. Programas ejecutables 10. Manual de usuario 11. Documentos de mantenimiento a. Informes de problemas del software b. Peticiones de mantenimiento
c. Órdenes de cambios de ingeniería
12. Estándares y procedimientos de ingeniería del software EL DEPÓSITO DE ECS Al inicio de la ingeniería del software los elementos de configuración eran documentos de papel que se almacenaban físicamente, esto dio muchos problemas: difícil de encontrar; no saber realmente cuál elemento fue cambiado, cuándo y por quién; la construcción de nuevas versiones consumía mucho tiempo y era proclive al error; etc. En la actualidad, los ECS se conservan en una base de datos o depósito del proyecto. El diccionario Webster define la palabra depósito como[8]: “cualquier cosa o persona que se considera como centro de acumulación o almacenamiento”. Al inicio el depósito era el programador, él tenía que recordar la ubicación de toda la información del proyecto, recuperar la información que nunca se había respaldado por escrito y reconstruir la información perdida. Emplear una persona como “centro de acumulación y almacenamiento” no funciona muy bien. El papel de la persona (ingeniera de software) es interactuar con el depósito mediante las herramientas que tiene integradas.El papel del depósito El depósito ECS es el conjunto de mecanismos y estructuras de datos que permiten que el equipo de software maneje el cambio en una manera eficaz (ej.: sistema de gestión de base de datos).El depósito cumple con las siguientes funciones: - Integridad de los datos: validar las entradas al depósito, garantizar consistencia entre objetos relacionados y realizar modificaciones.
- Compartir información: distribuir información entre múltiples desarrolladores y herramientas, manejar y controlar los accesos a los datos por parte de múltiples usuarios y, cerrar y abrir los objetos para que los cambios no sean trasladados inadvertidamente hacia otros.
- Integración de herramientas: establecer un modelo de datos al que se puede tener acceso mediante muchas herramientas de ingeniería del software, controlar el acceso a los datos y realizar funciones adecuadas de GC.
- Integración de los datos: brinda funciones de base de datos que permiten que varias tareas de GCS se realicen en uno o más ECS.
- Fortalecimiento de la metodología: define un modelo entidad-relación guardado en el depósito que implica un modelo de proceso específico para la ingeniería del software (el modelo va a definir un conjunto de pasos que se deben llevar a cabo para construir los contenidos del depósito).
- Estandarización de los documentos: definición de los objetos en la base de datos que conduce a un enfoque estándar para crear documentos de ingeniería del software.
El depósito se define en función de un metamodelo. Para lograr estas funciones el metamodelo determina: - ¿Cómo se guarda la información en el depósito?
- ¿Cómo se accede a los datos mediante las herramientas?
- ¿Cómo visualizan los datos los ingenieros de software?
- ¿Cómo se da la seguridad e integridad de los datos y la estabilidad (surgimiento de nuevas necesidades)?
Características de la GCS El apoyo a la GCS requiere que el almacén o depósito debe tener un conjunto de herramientas que ofrezca soporte para las siguientes características: - Versiones: El depósito debe ser capaz de guardar todas las versiones para permitir la gestión eficaz de las liberaciones de producto y permitir que los desarrolladores regresen a versiones anteriores.
- Gestión del seguimiento de la dependencia y del cambio: El depósito gestiona las relaciones entre los objetos de configuración que guarda. Es crucial la habilidad con que se da seguimiento a estas relaciones, para la integridad de la información y la generación de productos basados en ella. Por ejemplo: Modificación de un diagrama de clase UML; el depósito puede detectar si las clases relacionadas, definiciones de interfaz y componentes de código también requieren modificación y pueden colocar en la atención del desarrollador los ECS afectados.
- Seguimiento de requisitos: Habilidad de seguir todos los componentes, entregables de diseño y construcción que resulten de una determinación específica de requisitos; también debe identificar qué requisitos generaron algún producto de trabajo dado.
- Gestión de la configuración: Facilita la conservación de una serie de configuraciones que representan hitos del proyecto o liberaciones de producción.
- Rutas de auditoria: Información adicional acerca de cuándo, por qué y por quién se hicieron los cambios.
EL PROCESO DE GCSEste proceso define una serie de tareas que persigue los siguientes objetivos: - Identificar los elementos que colectivamente definen la configuración del software
- Gestionar los cambios a uno o más de dichos elementos
- Facilitar la construcción de diferentes versiones de una aplicación
- Garantizar que la calidad del software se conserva conforme la configuración evoluciona a lo largo del tiempo
Existen una serie de preguntas que conducen a la definición de las cinco tareas de la GCS. En la Figura 2 se describe el proceso o las actividades que realiza la GCS. FIGURA 2[9]PROCESO DE GCS
Identificación de objetos en la configuración del software Esta tarea de identificación establece estándares de documentación y un esquema de identificación de documentos.El control y la gestión de elementos de configuración del software requieren: - Nombrar cada uno de los elementos por separado
- Organizarlo mediante un enfoque orientado a objetos
Es posible identificar dos tipos de objetos: - Básicos: Unidad de información creada durante: análisis, diseño, código o pruebas. Por ejemplo: una sección de una especificación de requisitos, parte de un modelo de diseño, código fuente para un componente, o un conjunto de casos de prueba.
- Agregados: Colección de objetos básicos y otros objetos agregados. Es un mecanismo para representar una versión completa de una configuración de software.
Cada objeto o elemento tiene un conjunto de características distintivas que lo identifican de manera exclusiva[10]: - Identificador (número, letra, ambos. No ambiguo)
- Nombre (descriptivo)
- Tipo (documento, código, producto de terceros, etc.)
- Localización
- Fecha
- Versión (mayor, menor, revisión)
- Estado (Ej. Para un documento En elaboración, finalizado, revisado, aceptado)
- Proyecto/producto
Control de la versión Combina procedimientos y herramientas para gestionar diferentes versiones de objetos de configuración que se crean durante el proceso del software.Un sistema de control de la versión implementa cuatro grandes capacidades: - Base de datos del proyecto: guarda los objetos de configuración relevantes.
- Capacidad de gestión de la versión: almacena todas las versiones de un objeto de configuración.
- Facilidad de hechura que permita al ingeniero de software recopilar todos los objetos de configuración relevantes y construir una versión específica del software.
- Seguimiento de conflictos (seguimiento de bugs): permiten al equipo registrar y hacer seguimiento del estado de todos los conflictos destacados – asociados con cada objeto de configuración.
Control del cambioEs la evaluación y registro de todos los cambios que se hacen durante la configuración del software. James Bach[11] define el control del cambio de la siguiente manera: “El control del cambio es vital. Pero las fuerzas que lo hacen necesario también lo tornan irritante. Nos preocupamos por los cambios porque una pequeña perturbación en el código puede crear una gran falla en el producto. Pero también puede resolver una gran falla o permitir maravillosas nuevas capacidades. Nos preocupamos por los cambios porque un solo desarrollador solitario podría hundir el proyecto; aunque en las mentes de dichos solitarios se originan ideas brillantes, y un proceso de control del cambio gravoso podría desalentarlos efectivamente de realizar trabajo creativo.” Bach reconoce que se enfrenta un acto de equilibrio. Demasiado control del cambio, y se crean problemas; poco, y se crean otros problemas. En la Figura 3 se ilustra el proceso de control del cambio: Se emite una solicitud de cambio; la solicitud debe ser registrada correctamente para poder realizar el seguimiento de todo el proceso de cambio; el cambio debe ser aceptado por la Autoridad de control del cambio (ACC), los mismos que van a determinar el impacto y categoría del cambio; es necesario clasificar el cambio de acuerdo a la prioridad y categoría para su correcto procesamiento. Cuando un cambio ha sido aprobado se genera una orden de cambio en la ingeniería (OCI). La OCI describe el cambio que se debe realizar, las restricciones y los criterios de revisión y auditoria. FIGURA 3[12]
PROCESO DE GESTIÓN DEL CAMBIO
La ACC puede estar compuesta de una persona (el gestor del proyecto) o varias personas (representantes de hardware, software, ingeniería de bases de datos, soporte, mercadotecnia). El papel de la ACC es: evaluar el impacto del cambio más allá del ECS en cuestión.Algunas de las interrogantes que aborda esta autoridad son: - ¿Cómo afectará el cambio al hardware?
- ¿Cómo afectará al desempeño?
- ¿Cómo modificará la percepción del cliente acerca del producto?
- ¿Cómo afectará la calidad y fiabilidad del producto?
Auditoria de configuraciónLa auditoria garantiza que el cambio se ha implementado correctamente.¿Cómo se puede garantizar que el cambio se ha implementado con propiedad?
A través de: - Revisiones técnicas formales: corrección técnica del objeto de configuración que se ha modificado; se la debe realizar en casi la mayoría de los cambios triviales.
- Auditoria de la configuración del software: complementa la revisión técnica formal.
- Cuando la GCS es una actividad formal, la auditoria la lleva a cabo por separado el grupo de aseguramiento de la calidad.
- La auditoria de la configuración asegura que los ECS correctos se han incorporado en una construcción específica y que la documentación está actualizada y es consistente con la versión que se ha construido.
- La auditoria de configuración del software aborda las siguientes preguntas:
- ¿Se ha realizado el cambio especificado en la orden de cambio de ingeniería (OCI)? ¿Se han incorporado modificaciones adicionales?
- ¿Se ha realizado una revisión técnica formal para evaluar la corrección técnica?
- ¿Se ha seguido el proceso de software? ¿Se han aplicado adecuadamente los estándares de ingeniería del software?
- ¿El cambio se ha resaltado en el ECS? ¿Se han especificado la fecha y el autor del cambio? ¿Los atributos del objeto de configuración reflejan el cambio?
- ¿Se han seguido los procedimientos de GCS para destacar el cambio, registrarlo e informar de él?
- ¿Todos los ECS relacionados se han actualizado de manera adecuada?
Informe de estadoEl informe de estado de la configuración (IEC), es también llamado contabilidad de estado.El IEC es una tarea de GCS que responde las siguientes interrogantes: - ¿Qué ocurrió?
- ¿Quién lo hizo?
- ¿Cuándo ocurrió?
- ¿Qué otra cosa será afectada?
El flujo de información del proceso de IEC lo observamos en la Figura 4. Al asignarse una identificación nueva a un ECS se efectúa una entrada de IEC. Cada vez que la ACC aprueba un cambio (se expide una OCI) se genera una entrada en el IEC. Al realizarse una auditoria los resultados se reportan como parte de la tarea de IEC. El resultado del IEC es posible colocarlo en una base de datos. Por último se genera un IEC con regularidad y su finalidad es mantener a los gestores y profesionales alertas ante los cambios importantes. FIGURA 4[13]PROCESO DE IEC (INFORME DE ESTADO DE LA CONFIGURACIÓN)
GESTIÓN DE LA CONFIGURACIÓN PARA INGENIERÍA WEB De forma muy breve detallaremos que esta gestión es similar en muchos aspectos a la GCS para el software convencional, sin embargo: - Cada una de las tareas principales de GCS se deben destacar para hacerlas tan simples como sea posible.
- Se deben implementar provisiones especiales para la gestión del contenido.
RESULTADOS - La Gestión del Cambio es uno de los temas más importantes dentro de la gestión de proyectos de software, trata de los cambios que se requieran realizar al software durante todo su ciclo de vida. En este campo los cambios están a la orden del día y deben ser tratados de manera formal no se debe realizar un cambio a la ligera, se debe analizar, aprobar, desarrollar, implementar y documentar el cambio requerido.
- La experiencia en la exposición del fue agradable e interesante ya que tuvimos la oportunidad de compartir y debatir sobre el tema, con ejemplos reales utilizados diariamente.
CONCLUSIONES - El cambio incontrolado en un proyecto de ingeniería de software conduce rápidamente al caos.
- La identificación, el control de la versión y del cambio, la auditoria y generación de reportes ayudan al grupo de software a mantener el orden
- Los informes de estado mantienen a los gestores y profesionales alertas ante cambios importantes
- Un proceso de gestión de cambios proporciona un rastreo completo y preciso de todos los cambios que son pertinentes al proyecto.
BIBLIOGRAFÍA[1] PRESSMAN, R. (2005): Ingeniería del Software. Un enfoque práctico. (Sexta edición). McGrawHill Interamericana México.[2] CABRERA, Armando. (2006): Guía Didáctica, Ingeniería del Software. (Primera Edición). Universidad Técnica Particular de Loja. Loja – Ecuador.[3] ITIL. Gestión de Servicios TI. (en línea), disponible en www.csi.map.es/csi/metrica3/gescon.pdf
Referencias [1] Fernanda M. Soto, Universidad Técnica Particular de Loja, Loja, hfmontalvan@utpl.edu.ec[3] Tomado de Pressman Roger [1], 2005, Pág. 796[4] Tomado de Pressman Roger [1], 2005, Pág. 799 - 800[5] Tomado de Pressman Roger [1], 2005, Pág. 800[6] Tomado de Tema5-Apartado5.doc, Pág. 2[7] Tomado de Tema5-Apartado5.doc, Pág. 2 – 3[8] Tomado de Pressman Roger [1], 2005, Pág. 803[9] Tomado de Gestión de las Configuraciones del Software [6], Pág. 13[10] Tomado de Gestión de la Configuración del Software – Javier Tuya [5], Pág. 6[11] Tomado de ITIL. Gestión de Servicios TI – Gestión del Cambio [3][12] Tomado de ITIL. Gestión de Servicios TI – Gestión del Cambio [3][13] Tomado de Tema5-Apartado5.doc, Pág. 9