Tema III: Gestión de la Configuración. Diana Marcela Sánchez Fúquene Ingeniería del Software de Gestión Introducción Gestión de la Configuración del Software (GCS / SCM) ◦ Def.- Arte de identificar, organizar, revisar y controlar las modificaciones que sufre el software que construye un equipo de desarrollo ◦ Aplicado durante el proceso de software ◦ Gestión de la configuración ≡ Gestión de cambios Mantenimiento SW (actividades de soporte) ≠ GCS ◦ Mantenimiento: Def.- Conjunto de actividades posteriores a la entrega del SW al cliente ◦ Gestión de la configuración Def.- Conjunto de actividades de seguimiento desde el inicio hasta el final del proyecto (circulación del sw) Objetivo ◦ Maximizar la producción minimizando los errores 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 2 Introducción Cambio ◦ Actividades de autoprotección Identificar el cambio Controlar el cambio Garantizar que el cambio se implemente adecuadamente Informar del cambio a todos los interesados ◦ Orígenes del cambio Cambios en el mercado o en el negocio que afectan a los requisitos Cambios hechos por el cliente en los datos o en la funcionalidad del sistema Reorganización de las prioridades del proyecto Restricciones de tiempo o de dinero 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 3 Gestión de Proyectos: GCS – Conceptos básicos Configuración ◦ La ordenación de un sistema o componente informático según se ha definido por la naturaleza, número e interconexiones de sus partes constituyentes Configuración Software ◦ Los requisitos, diseño, e implementación que definen una versión particular de un sistema o de un componente del sistema [IEEE Std. 610.12-1990] Elemento de Configuración (Configuration item) (EC) ◦ Agregación de hardware y software, o de ambos, diseñada para la gestión de configuración y que se trata como una única entidad en el proceso de gestión de configuración. Ejemplos Especificación de requisitos Plan de gestión de configuración software Plan del proyecto Modelo funcional del sistema Código fuente Plan de pruebas… 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 4 Gestión de Proyectos: GCS – Conceptos básicos Configuración software = Conjunto de elementos que contienen toda la información producida por el proceso software Programas • Código fuente • Ejecutables Proceso de Ingeniería Documentos Datos Elemento de configuración = conjunto de partes en las cuales se divide el software y sobre las cuales se quieren controlar los cambios 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 5 Gestión de Proyectos: GCS – Conceptos básicos Línea base (LB) ◦ Elemento central de la disciplina de GCS Parte fundamental del desarrollo de software ◦ Marca el final de una fase del ciclo de vida del software ◦ Def.1- Especificación o producto revisado que sirve como base para el posterior desarrollo y sólo puede cambiarse por procedimientos formales de control de cambios hito en el plan de desarrollo ◦ Def.2- Configuración operativa del sistema software 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 6 Gestión de Proyectos: GCS – Conceptos básicos Línea base (LB). Idea lógica LB modificada Tareas de Ingeniería del Software Revisiones técnicas formales Base de datos del proyecto • Líneas Base: Especificación del sistema Requisitos del software Especificaciones de diseño Código fuente Planes/Procedimientos/Pruebas Sistema de funcionamiento LB aprobada LB almacenada LB extraída Controle s GCS 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 7 Gestión de Proyectos: GCS – Conceptos básicos Línea base (LB). Ejemplos ◦ LB Funcional: al final de la fase de análisis. Plan de análisis, req. del sistema, plan de calidad, plan de gestión de la configuración, plan de pruebas de aceptación. ◦ LB de Asignación: al final de la fase de diseño de alto nivel. Arquitectura, interfaces de subsistemas, plan de pruebas de sistema. ◦ LB de Diseño: al final de la fase de diseño detallado. Diseño de subsistemas y plan de pruebas de integración. ◦ LB de Producto: al final de la codificación. Código fuente, objeto y ejecutable, resultados de pruebas de integración y versión preliminar de los manuales. ◦ LB de Explotación: al final de la implantación. Resultados de pruebas de sistema y documentación de usuario. 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 8 Gestión de Proyectos: GCS – Conceptos básicos Gestión de la Configuración del Software (GCS) ◦ Def.- Disciplina que identifica la configuración de un sistema en puntos discretos del tiempo, con el objetivo de controlar sistemáticamente los cambios de esa configuración y mantener su calidad y trazabilidad a través del ciclo de vida del sistema. Actividades de la GCS ◦ ◦ ◦ ◦ Identificación Control Auditoría Contabilidad del estado 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 9 Gestión de Proyectos: GCS – Actividades Identificación de la configuración ◦ Para controlar y gestionar los elementos de la configuración ◦ Tareas: Identificación de los EC y de las LB Registrar los elementos a controlar Mantenimiento de las listas de elementos y líneas base Nombrado de los EC Asignación de identificadores únicos para elementos y versiones Obtención de los EC Identificación de las bibliotecas de almacén de documentación de GCS Descripción de los procedimientos de almacenaje y recuperación de los elementos controlados 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 10 Gestión de Proyectos: GCS – Actividades Identificación de objetos ◦ Identificación única Organización siguiendo un enfoque OO Tipos de objetos Básicos: unidad de información creada por un ingeniero de software durante alguna fase de IS P. ej.: Parte de un documento (“Unidad de Texto”) Compuestos ◦ Relaciones - Lenguaje Interconexión de Módulos Interdependencias entre objetos Construcción automática de una versión Sirven para valorar el impacto de un cambio en el proyecto software 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 11 Gestión de Proyectos: GCS – Actividades Control de la configuración ◦ Petición, evaluación, aprobación o desaprobación e implementación de los cambios a los EC de la LB. Correcciones y mejoras ◦ Tareas: Identificación y documentación de la necesidad del cambio (petición) Especificación de procedimientos de solicitud de cambio Prioridad, fecha, autor, descripción del cambio… Análisis y evaluación de la petición de cambio Descripción del impacto análisis a realizar para evaluar el impacto del cambio Aprobación o desaprobación de los cambios Descripción de los responsables de aceptar/rechazar el cambio Implementación de los cambios Actividades para verificar e implementar los cambios 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 12 Gestión de Proyectos: GCS – Actividades Contabilidad del estado de la configuración ◦ Define e implementa los procedimientos para poder ofrecer una vista del proceso (visibilidad) y para poder registrar la evolución del producto (trazabilidad) ◦ Mecanismos para determinar qué ha ocurrido en el proceso de desarrollo y cuándo ◦ Beneficio de llevar una contabilidad del estado de la configuración: ahorro de tiempo y dinero al no repetir cosas previamente hechas 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 13 Gestión de Proyectos: GCS – Actividades Informes de Estado ◦ Definen: ¿Qué pasó? ¿Quién lo hizo? ¿Cuándo pasó? ¿Qué más se vio afectado? ◦ Realización: Cuando se crea o actualiza un EC Cuando se emite una “orden de cambio” Cada vez que se realiza una actividad de auditoría … 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 14 Gestión de Proyectos: GCS – Actividades Auditorías y revisiones de la configuración ◦ Def.- Medio por el cual una organización asegura que los desarrolladores han hecho su trabajo de forma que se satisfacen todas las responsabilidades externas ◦ Objetivo: asegurarse de que un cambio ha sido implementado correctamente. ◦ Auditoría de Configuración: Costosa en tiempo y recursos Dificultad técnica Experiencia de los auditores Mejora la calidad ◦ Características de la auditorías de configuración: Garantiza que los elementos auditados están completos y siguen las normas de GCS Garantizan que la LB corresponde con la descripción de sus elementos 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 15 Gestión de Proyectos: GCS – Actividades Auditoría de la Configuración ◦ Alternativas Revisión técnica formal Auditoría de la configuración del software ◦ Realizada por el Grupo de Calidad (Comité de Control de la Calidad) ◦ Factores que tiene en cuenta: ¿Se han seguido las pautas descritas en la “Orden de Cambio”? ¿Se ha informado de los cambios? ¿Se han actualizado los EC relacionados? ¿Se ha seguido el estándar? ¿Es correcto (técnicamente) el cambio? … 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 16 Gestión de Proyectos: GCS – Elementos Elementos de un sistema de GCS: ◦ Componentes: Herramientas de gestión y acceso a los ítems de configuración ◦ Procesos: Procedimientos y tareas utilizadas para la gestión de los cambios ◦ E. de Construcción: Herramientas de construcción automática de software para validación ◦ E. Humanos: Equipo de desarrollo de SW/Auditores 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 17 Gestión de Proyectos: GCS – Plan de gestión Plan de gestión de configuración software ◦ Plan de GCS IEEE Std. 828-2005 ≠ Plan del Proyecto IEEE Std 1058.1-1987 ◦ Secciones: I. II. III. IV. V. VI. Introducción Gestión de la GCS (¿quién?) Actividades de GCS (¿qué?) Calendario de GCS (¿cuándo?) Recursos de GCS (¿cómo?) Mantenimiento del plan de GCS 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 18 Gestión de Proyectos: GCS – Plan de gestión Sección I. Introducción. Partes incluidas: ◦ Objetivo: visión general simplificada ◦ Elementos: Propósito: razón de ser y audiencia. Sistema al que se aplicará (breve). Alcance: Descripción del Proyecto Software Identificación de los EC Software a incluir dentro del plan Limitaciones y suposiciones de impacto (coste, calendario, capacidad de realizar el GCS) Intereses del Plan: qué incluye y qué no Definiciones: basadas en definiciones estándar (Punto de control, liberación, línea base, etc) Referencias: políticas, directivas, procedimientos, estándares, terminología, etc. 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 19 Gestión de Proyectos: GCS – Plan de gestión Sección II. Gestión de la GCS ◦ Objetivo: Asignación de responsabilidades y autoridades para las actividades de GCS ◦ Elementos: Organización: unidades organizativas (técnicas y de gestión), roles y relaciones entre las unidades Responsabilidades de la GCS: asignación de actividades de GCS a las unidades organizativas Políticas, directivas y procedimientos aplicables: impacto y uso 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 20 Gestión de Proyectos: GCS – Plan de gestión Sección III. Actividades de GCS ◦ Objetivo: identificar las funciones y tareas requeridas para gestionar la configuración del sistema. ◦ Partes: Descripción de las tareas de GCS: Identificación Control de la configuración (cambios y versiones) Contabilidad del estado (informes) Auditorías y revisiones Control de la interfaz: coordinación entre los ECS y los cambios en los elementos externos (HW, SW de soporte, etc) Interfaz software: acuerdos compartidos entre el programa y otras entidades software Interfaz hardware: acuerdos compartidos entre el programa y las características de cualquier hw. del entorno Control del “subcontratista/vendedor”: gestión del software adquirido (tanto terminado como en producción) 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 21 Gestión de Proyectos: GCS – Plan de gestión Sección IV. Calendarios de GCS ◦ Objetivo: establecer la secuencia y coordinación para las actividades de GCS Sección V. Recursos de GCS ◦ Objetivo : identificar las herramientas software, técnicas, equipamiento, personal y entrenamiento necesario para las tareas de GCS Sección VI. Mantenimiento del plan de GCS ◦ Objetivo : identificar las actividades y responsabilidades necesarias para asegurar la planificación continua de la GCS durante el ciclo de vida del proyecto 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 22 Gestión de Proyectos: GCS – Proceso Proceso de GCS ◦ Objetivo de GCS: Garantía de calidad del SW ◦ Tareas del proceso de GCS (según sus objetivos): Identificación de objetos / ítems ECS Control de versiones Control de cambios Evolución del Auditorías de CS ECS a través Generación informes de las tareas de GCS (ciclo de vida) Software (versión X.Y) 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 23 Gestión de Proyectos: GCS – Control de cambios Control de Cambios ◦ Generar un mecanismo para llevar el control de los cambios Protocolos de actuación para personas Herramientas de automatización de cambios ◦ Aplicación de políticas de gestión de cambios informales salvo en el proceso de conversión de EC a Línea Base (crítico) ◦ Procesos a controlar Baja del objeto en la biblioteca Alta del objeto en la biblioteca Aplicación de la política de versiones sobre los objetos Control de versiones ◦ Elementos a definir: Control de acceso al repositorio (seguridad y permisos) “Autoridad de Control de Cambios” Control de sincronización (concurrencia de acceso al repositorio) 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 24 Gestión de Proyectos: GCS – Control de versiones Control de Versiones ◦ Procedimientos y herramientas para la gestión de las versiones de los Objetos de Configuración ◦ Conocer todos los componentes asociados a una versión determinada. 2.0 1.0 1.1 2.1 1.2 1.3 1.1.1 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 25 Gestión de Proyectos: GCS – Control de versiones Control de Versiones ◦ Elementos de un sistema de control de versiones (genéricos): Base de datos del proyecto (repositorio) Gestor de versiones (almacena todas las versiones y permite crear nuevas a partir de las versiones almacenadas) Una facilidad para construir objetos de configuración Gestor de errores 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 26 Gestión de Proyectos: GCS – Control de versiones Control de versiones ◦ Def.- “Versión” = forma particular que adopta un objeto de configuración en un instante determinado ◦ Repositorios: Estrategias de versionado: Bloqueo-Modificación-Desbloqueo (problemático) centralizado Copiar-Modificar-Mezclar (ideal) centralizado o distribuido Tipos: Común (o grupal) Local: perteneciente a cada uno de los desarrolladores ◦ Evoluciones: Temporales: “Revisión” = conjunto de versiones en un instante determinado Espaciales: “Variante” = versión de un componente o sistema que evoluciona de forma separada al desarrollo principal ◦ Def.- “Delta” = conjunto de cambios de una versión con respecto a la anterior 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 27 Gestión de Proyectos: GCS – Control de versiones Operaciones y conceptos habituales en el control de versiones de documentos o código fuente (CVS, Subversion, etc…) ◦ diff: se utiliza para saber la diferencia entre 2 ficheros produciendo un tercero (denominado “delta” y que sigue un formato unificado). Delta = file (diff (A, B)) ◦ patch: se utiliza para, a partir de un fichero origen A y un archivo delta obtener la versión modificada de A B = file (patch (A, Delta)) 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 28 Gestión de Proyectos: GCS – Control de versiones Operaciones y conceptos (cont.) ◦ branch: acto de copiar un fichero original con la intención (o no) de modificarlo ◦ merge: consiste en incorporar en un repositorio los cambios que se produjeron en otro de forma independiente 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 29 Gestión de Proyectos: GCS – Control de versiones Control de versiones: Ejemplo ARCHIVO BASE MERGE/BRANCH 0000 0000 0000 0000 MODIFICACION1 MODIFICACION2 0001 0001 1000 0001 DIFF de MODIFICACION1 DIFF de MODIFICACION1 ---base 2007-03-05 16:01:00.0000 --- base +++cambio1 2007-03-05 16:21:34.5000 --- cambio2 2007-03-05 17:43:40.3000 -0000 0000 -0000 0000 +0001 0001 +1000 0001 15/02/2010 2007-03-05 16:01:00.0000 Ing. Software de Gestión (LADE-ITIG) 30 Gestión de Proyectos: GCS – Control de versiones Herramientas de gestión de la configuración ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ CVS: Concurrent Version System. www.cvshome.org CCC/Harvest de Computer Associates ClearCase de Rational PVCS de Merant SourceForge de VA Software SourroundSCM de Seapine Software Vesta de Compac Aegis Subversion Darc, Arch, Monotone, Codeville, Bitkeeper, etc… Más herramientas en: CM//CrossRoads (http://www.cmcrossroads.com/component/option,com_dire ctory/Itemid,86/ ) 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 31 Bibliografía R. S. Pressman. Software Engineering: A Practitioner's Approach. Ed. McGraw Hill, 2005. 6th Edition. Cap. 27. M. Piattini. Análisis y Diseño detallado de Aplicaciones Informáticas de Gestión. Ed. Ra-Ma. 1996 IEEE Std 610.12-1990. IEEE Standard Glossary of Software Engineering Terminology IEEE Std 828-2005. IEEE Standard for Software Configuration Management Plans. IEEE Std 1058.1-1987. IEEE Standard for Software Project Management Plans LugFI, Grupo de usuarios de GNU/Linux de la Facultad de Ingeniería de la universidad de Buenos Aires, Argentina. Introducción a los sistemas de control de versiones. http://www.lug.fi.uba.ar/documentos/scms/index.php (bajo licencia GPL) C. Michael Pilato, B. Collins-Sussman, B. W. Fitzpatrick. Control de versiones con Subversion. Ed. O’Reilly Media, 2004. Libro “libre” (descargable de http://svnbook.red-bean.com/) TortoiseSVN. Intefaz de Subversion para Windows: http://tortoisesvn.net/downloads Manual de TortoiseSVN en español: http://mesh.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.4.3-es.pdf Cómo instalar un cliente de Subversion en 28 segundos: http://kopernix.com/?q=svnd_como 15/02/2010 Ing. Software de Gestión (LADE-ITIG) 32