Control De Versiones

De Dos Ideas.
Revisión del 12:16 28 ago 2009 de 201.251.185.130 (discusión)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Contexto

Un proyecto para el desarrollo de software en una organización, percibe la necesidad de organizar sus activos de software como documentos, archivos de código fuente, archivos de configuración, etc.

El equipo de desarrollo nota la necesidad de mantener centralizados los artefactos críticos del proyecto y controlar las modificaciones.

Problema

La productividad del equipo disminuye, el número de errores aumenta y el retrabajo crece cuando los desarrolladores:

  • No comparten código entre sí de una forma controlada.
  • No controlan todas las modificaciones realizadas y no saben los motivos de cada una de ellas.
  • No pueden recuperar versiones antiguas de ítems de configuración de software.
  • No pueden realizar desarrollo en paralelo.

Fuerzas

  • Un equipo precisa de una solución simple para organizar los artefactos, y al mismo tiempo debe ser funcional y útil.
  • La estructura de directorios del proyecto no está definida o ésta es complicada o inflexible.
  • Los desarrolladores necesitan trabajar con una versión correcta del software, sin generar problemas para los desarrolladores que están trabajando con versiones diferentes del software.
  • Con el desarrollo iterativo es interesante registrar el estado de la versión de cada iteración.
  • Un repositorio centralizado puede dificultar el desarrollo distribuido.

Solución

Utilice una herramienta de control de versiones que soporte las necesidades de control de ítems de configuración, código compartido, y de desarrollo en paralelo, y que al mismo tiempo sea simple y flexible.

Piense en una estructura de directorio inicial que se pueda actualizar con el correr del proyecto.

Utilice una herramienta de control de versiones que permita la creación de repositorios distribuidos, cuando no sea posible el uso de un repositorio centralizado.


Raciocinio

Una herramienta de control de versiones es uno de los ítems fundamentales para establecer un software de gestión de configuración eficaz (BERCZUK e APPLETON, 2002) e (BECK, 2004). Los procesos ágiles se refieren al software de control de versiones como su herramienta mas crítica, atrás apenas del compilador. Solamente con esta herramienta es posible registrar todas las modificaciones ocurridas en el código fuente durante el proyecto.

Si es usado correctamente, permite que los desarrolladores consigan recuperar versiones antigüas de software y corregir defectos en versiones en producción sin parar el desarrollo de una nueva versión del producto. Todos los archivos necesarios para la generación de un build del producto se encuentran en el repositorio. De esa forma, los desarrolladores pueden trabajar con código compartido y sincronizar frecuentemente el código de su máquina con el código de los otros desarrolladores a través del repositorio.

Contexto Resultante

El proyecto posee un software de control de versiones y una estructura de directorios que favorecen la estabilidad y seguridad del desarrollo en equipos, con la aplicación de este patrón. Los artefactos principales del software se encuentran dentro del repositorio definido para el proyecto.

Con el software de control de versiones y una Automatizacion De Build operacional es importante certificar que toda nueva modificación del código en el repositorio (un check in) no quiebre el build. Eso nos da la posibilidad de realizar integraciones frecuentes a través del patrón Integracion Continua.

Un software de control de versiones no siempre posee la información relevante del motivo de una determinada modificación y con cual incidencia este se relaciona. El uso de Flujo De Incidencias integrado con la herramienta de control de versiones es una herramienta de gestión de incidencias y una forma de solucionar este nuevo problema.

La necesidad de mantener el repositorio visible con facilidad para otros integrantes puede ser importante para el proyecto. Algunos de esos integrantes no necesariamente poseen la necesidad de instalación del cliente de la herramienta del control de versiones, el uso de Radiadores De Informacion torna siempre visibles las últimas actualizaciones de los artefactos.

Patrones Relacionados

Herramientas

Herramientas Para Control De Versiones

Reconocimientos

  • (BERCZUK e APPLETON, 2002)
  • (COPLIEN e HARRISON, 2004)
  • (RICHARDSON e GWALTNEY, 2005)
  • (COCKBURN, 2004a)
  • (BECK, 2004)
  • (FOGEL, 2005)
  • (MASON, 2005)
  • (PALMER e FELSING, 2002)

Ver También

  • Named Stable Bases (COPLIEN e HARRISON, 2004)
  • Private Versioning (COPLIEN e HARRISON, 2004)
  • Repository (BERCZUK e APPLETON, 2002)