Bloque IV AUDITORÍA EN EL DESARROLLO DE SOFTWARE Tema 12 Control de versiones por José Francisco Vélez Serrano Tema 12 Control de versiones 1/23
Índice Índice Introducción Operaciones básicas Operaciones avanzadas Tema 12 Control de versiones 2/23
Introducción Gestión de la configuración (Software configuration management o SCM) Se denomina Gestión de la Configuración al conjunto de procesos destinados a asegurar la validez de todo producto obtenido durante cualquiera de las etapas del desarrollo de un Sistema de Información (S.I.). La gestión de la configuración se realiza durante todas las fases del desarrollo de un sistema de información, incluyendo el mantenimiento y control de cambios, una vez realizada la puesta en producción. Tema 12 Control de versiones 3/23
Introducción Según la interfaz Gestión de la Configuración definida en MÉTRICA v3, los elementos de configuración del software incluyen: Ejecutables. Código Fuente. Modelos de datos. Modelos de procesos. Especificaciones de requisitos. Pruebas Y para cada uno de estos elementos se almacenará al menos: Nombre. Versión. Estado. Localización Tema 12 Control de versiones 4/23
Introducción Una versión, revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas (por ejemplo, para algún cliente específico). Tema 12 Control de versiones 5/23
Introducción El control de versiones se realiza principalmente en la industria informática para controlar las distintas versiones del código fuente. Sin embargo, los mismos conceptos son aplicables a otros ámbitos como documentos, imágenes, sitios web, etcétera. Aunque un sistema de control de versiones puede realizarse de forma manual, es muy aconsejable disponer de herramientas que faciliten esta gestión. Tema 12 Control de versiones 6/23
Introducción Ventajas directas Trabajo en equipo (varios trabajan a la vez en un proyecto). Control del desarrollo (quién cambia algo y por qué lo hace). Control del histórico (siempre se puede volver atrás). Ubicuidad (se fomenta la construcción en diferentes entornos). Ventajas indirectas Seguridad frente a pérdidas debido a múltiples copias. Acceso remoto seguro (https, ssh...). Tema 12 Control de versiones 7/23
Introducción Herramientas más populares: CVS Subversion SourceSafe IBM ClearCase Darcs Bazaar Plastic SCM Git Mercurial Tema 12 Control de versiones 8/23
Introducción Todos los sistemas se basan en el concepto de Repositorio y Copia Local. Repositorio Copia Local N D1 D2... DM Copia local 2 Copia Local 1 D1 D2... DM D1 D2... DM Tema 12 Control de versiones 9/23
Introducción Según la forma de modificar la copia local se habla de sistemas: Exclusivos. Se bloquean documentos mientras se modifican. Colaborativos. Se confía en que no habrá conflictos, y se resuelven conflictos si se producen. Repositorio Copia Local N D1 D2... DM Copia local 2? Copia Local 1 D1 D2... DM D1 D2... DM Tema 12 Control de versiones 10/23
Introducción Según la forma estructura del repositorio se habla de sistemas: Centralizados. Solo existe un repositorio central. Distribuidos. Cada copia es a su vez un repositorio. Repositorio 4 D1 D2... DM Repositorio 2 D1 D2... DM Repositorio 1 D1 D2... DM Repositorio 3 D1 D2... DM Repositorio 0 D1 D2... DM Tema 12 Control de versiones 11/23
Operaciones básicas Checkout (desplegar) Descargar una versión del proyecto sobre una carpeta local. Tema 12 Control de versiones 12/23
Operaciones básicas Update (actualización) Descargar, sobre una copia local, una versión (normalmente la última). Aplicable a cualquier nivel del proyecto. Tema 12 Control de versiones 13/23
Operaciones básicas Commit, check-in, submit (publicar o enviar) Subir los cambios realizados en local al repositorio, para que otros puedan verlos. Tema 12 Control de versiones 14/23
Operaciones básicas Commit, check-in, submit (publicar o enviar) La operación es atómica. Se asigna un número de versión. Pueden aparecer conflictos. Conviene hacerlo a menudo. Tema 12 Control de versiones 15/23
Operaciones básicas Ver diferencias y resolver conflictos Tema 12 Control de versiones 16/23
Operaciones básicas Blame (responsable de cada linea) Tema 12 Control de versiones 17/23
Operaciones avanzadas Estructura habitual de un repositorio Trunk.- Línea principal de desarrollo. Siempre contiene una vista funcional que se puede compilar y funciona. Branches.- Se crean desde el trunk y cuando se termina de trabajar en ellos se reintegran al trunk. Pueden ser inestables. Pueden cancelarse. Tags.- Versiones operativas. Tema 12 Control de versiones 18/23
Operaciones avanzadas Crear un branch (abrir una rama) Permite gestionar código inestable mediante control de versiones. Grupos de modificaciones se engloban bajo una única versión. Tema 12 Control de versiones 19/23
Operaciones avanzadas Merge (integración, fusión o mezcla) Las operaciones de mezcla son costosas. Se pueden crear parches. Tema 12 Control de versiones 20/23
Operaciones avanzadas Crear un tag (etiquetar o rotular) Permite etiquetar versiones estables y darles mantenimiento. Tema 12 Control de versiones 21/23
Operaciones avanzadas Lock (congelar) Marca módulos no modificables. TAGs. Operaciones críticas. Tema 12 Control de versiones 22/23
Referencias Wikipedia Tema 12 Control de versiones 23/23