e2 u2 herrera rivas francisco javier isc gps

3
Universidad Mundo Maya SISTEMAS DE CONTROL DE VERSIONES Francisco Javier Herrera Rivas e-mail: [email protected] Gestión de Proyectos de Software Ing. En sistemas computacionales 8vo Semestre Dr. Edgar Martin Lorca Velueta RESUMEN: La razón por la cual el control de versiones es universal es porque ayuda virtualmente en todos los aspectos al dirigir un proyecto: comunicación entre los desarrolladores, manejo de los lanzamientos, administración de fallos, estabilidad entre el código y los esfuerzos de desarrollo experimental y atribución y autorización en los cambios de los desarrolladores. PALABRAS CLAVE: sistemas, control de software. 1.- INTRODUCCIÓN Gracias a todas las herramientas que la tecnología nos provee, cada día el desarrollo de software se vuelve más eficiente. Existe una gran variedad de ellas, pero hay una que se destaca entre todas y que le da al desarrollador la capacidad de gestionar de una manera sencilla y oportuna sus proyectos: un sistema de control de versiones. 2.- DESARROLLO. 2. SISTEMAS DE CONTROL DE VERSIONES Un sistema de control de versiones (o sistema de control de revisiones) es una combinación de tecnologías y prácticas para seguir y controlar los cambios realizados en los ficheros del proyecto, en particular en el código fuente, en la documentación y en las páginas web. Si nunca antes se ha utilizado un control de versiones, lo primero que hay que hacer es conseguir a alguien que sí lo haya hecho y hacer que se una al proyecto. Hoy en día todo el mundo espera que al menos el código fuente del proyecto esté bajo un control de versiones y probablemente no se tomen el proyecto seriamente si no se utiliza este sistema con un mínimo de competencia. La razón por la cual el control de versiones es universal es porque ayuda virtualmente en todos los aspectos al dirigir un proyecto: comunicación entre los desarrolladores, manejo de los lanzamientos, administración de fallos, estabilidad entre el código y los esfuerzos de desarrollo experimental y atribución y autorización en los cambios de los desarrolladores. El sistema de control de versiones permite a una fuerza coordinadora central abarcar todas estas áreas. El núcleo del sistema es la gestión de cambios: identificar cada cambio a los ficheros del proyecto, anotar cada cambio con meta-data como la fecha y el autor de la modificación y disponer esta información para quien sea y como sea. Es un mecanismo de comunicación donde el cambio es la unidad básica de información. Aún no hemos discutido todos los aspectos de utilizar un sistema de control de versiones ya que es un tema tan extenso que será introducido según el tópico a lo largo de este libro. Ahora, vamos a concentrarnos en seleccionar y configurar un sistema de control de versiones de forma que fomentemos un desarrollo cooperativo. Un sistema de control de versiones es una herramienta que registra todos los cambios hechos en uno o más proyectos, guardando así versiones del producto en todas sus fases del desarrollo. Las versiones son como fotografías que registran su estado en ese momento del tiempo y se van guardando a medida que se hacen modificaciones al código fuente. Antes de la masificación de los sistemas de control de versiones, se solían guardar 1

Upload: drlove-theunknow

Post on 04-Dec-2015

216 views

Category:

Documents


2 download

DESCRIPTION

wnhee65

TRANSCRIPT

Page 1: E2 U2 Herrera Rivas Francisco Javier ISC GPS

Universidad Mundo Maya

SISTEMAS DE CONTROL DE VERSIONES

Francisco Javier Herrera Rivase-mail: [email protected]

Gestión de Proyectos de SoftwareIng. En sistemas computacionales 8vo Semestre

Dr. Edgar Martin Lorca Velueta

RESUMEN: La razón por la cual el control de versiones es universal es porque ayuda virtualmente en todos los aspectos al dirigir un proyecto: comunicación entre los desarrolladores, manejo de los lanzamientos, administración de fallos, estabilidad entre el código y los esfuerzos de desarrollo experimental y atribución y autorización en los cambios de los desarrolladores.

PALABRAS CLAVE: sistemas, control de software.

1.- INTRODUCCIÓN

Gracias a todas las herramientas que la tecnología nos provee, cada día el desarrollo de software se vuelve más eficiente. Existe una gran variedad de ellas, pero hay una que se destaca entre todas y que le da al desarrollador la capacidad de gestionar de una manera sencilla y oportuna sus proyectos: un sistema de control de versiones.

2.- DESARROLLO.

2. SISTEMAS DE CONTROL DE VERSIONESUn sistema de control de versiones (o sistema de control de

revisiones) es una combinación de tecnologías y prácticas para seguir y controlar los cambios realizados en los ficheros del proyecto, en particular en el código fuente, en la documentación y en las páginas web. Si nunca antes se ha utilizado un control de versiones, lo primero que hay que hacer es conseguir a alguien que sí lo haya hecho y hacer que se una al proyecto. Hoy en día todo el mundo espera que al menos el código fuente del proyecto esté bajo un control de versiones y probablemente no se tomen el proyecto seriamente si no se utiliza este sistema con un mínimo de competencia.

La razón por la cual el control de versiones es universal es porque ayuda virtualmente en todos los aspectos al dirigir un proyecto: comunicación entre los desarrolladores, manejo de los lanzamientos, administración de fallos, estabilidad entre el código y los esfuerzos de desarrollo experimental y atribución y autorización en los cambios de los desarrolladores. El sistema de control de versiones permite a una fuerza coordinadora central abarcar todas estas áreas. El núcleo del sistema es la gestión de cambios: identificar cada cambio a los ficheros del proyecto, anotar cada cambio con meta-data como la fecha y el autor de la modificación y disponer esta información para quien sea y como sea. Es un mecanismo de comunicación donde el cambio es la unidad básica de información.

Aún no hemos discutido todos los aspectos de utilizar un sistema de control de versiones ya que es un tema tan extenso

que será introducido según el tópico a lo largo de este libro. Ahora, vamos a concentrarnos en seleccionar y configurar un sistema de control de versiones de forma que fomentemos un desarrollo cooperativo.

Un sistema de control de versiones es una herramienta que registra todos los cambios hechos en uno o más proyectos, guardando así versiones del producto en todas sus fases del desarrollo. Las versiones son como fotografías que registran su estado en ese momento del tiempo y se van guardando a medida que se hacen modificaciones al código fuente.

Antes de la masificación de los sistemas de control de versiones, se solían guardar los hitos (una especie de versión) del proyecto en archivos comprimidos y medios de almacenamiento como diskettes y CD’s. Los sistemas de control de versiones nacen de la necesidad de solventar y facilitar este tedioso proceso.

Para un desarrollador esta herramienta es muy valiosa porque permite viajar atrás en el tiempo (hacer rollback) si los cambios aplicados no resultaron de la manera que se esperaba, pudiendo restaurar en cualquier momento una versión previa. Es como un respaldo permanente. Hoy en día son usados no solo por desarrolladores independientes sino también por startups y grandes corporaciones. Es que tener la posibilidad de volver atrás no tiene precio.

Algunos de los sistemas de control de versiones más famosos son Subversión (también conocido como Svn), Git y Mercurial.

2.1 Qué es un sistema de control de versiones y qué se puede hacer con él

En un entorno donde existe diversos desarrolladores de código fuente, el control de la concurrencia, así como disponer del histórico de modificaciones realizadas sobre los distintos archivos es muy importante. Con un sistema de control de versiones puedes revertir la situación de ciertos ficheros (incluso el proyecto completo) a estados anteriores, realizar comparativas entre las distintas versiones, localizar desde cuando se está produciendo un error, determinar el responsable del error, disponer de copias de seguridad de esos mismos archivos, etc.

Dos arquitecturas típicas son las distribuidas y las centralizadas. Los distribuidos son más habituales en grandes proyectos donde los desarrolladores se encuentran en múltiples localizaciones, se da la necesidad de replicar los repositorios y donde se producen múltiples ramas que terminarán (o no) fusionándose con la rama principal. Las centralizadas, por el contrario, son más habituales en pequeñas empresas y/o proyectos donde existe una mayor necesidad de trabajo en equipo.

Desde mi punto de vista, y pensando en la apuesta por el desarrollo de ERP sectorizado y vertical, el modelo de control de versiones centralizado me parece más eficaz, si bien con un servidor replicado que pueda entrar en uso inmediatamente tras una caída generalizada del sistema. Puesto que existe un

1

Page 2: E2 U2 Herrera Rivas Francisco Javier ISC GPS

Universidad Mundo Maya

equipo de trabajo concentrado en una misma ubicación física, no es un problema una caída de internet, el número de ramas puede ser controlado, el versionado es común, y el mantenimiento se puede realizar de forma centralizada.

2.2 Comparación entre Subversión y CVSCVS y Subversion (SVN) sirven para controlar las

versiones y la historia de los proyectos software. Por lo tanto, a grandes rasgos, permiten:

que varias personas puedan trabajar en un mismo proyecto sin afectarse mutuamente en el trabajo que realiza,

que haya un histórico de revisiones, por seguridad y para poder recuperar una versión anterior de nuestro código,

gestionar versiones de la aplicación, derivaciones y demás.

Podríamos decir que las instancias de CVS y Subversion son repositorios, es decir, un almacén de ficheros, sus versiones y su historial de cambios.

CVS:Licencia gratuita, Multiplataforma. Orientado a ficheros: Versiona los ficheros, no el proyecto.

Esto quiere decir que cada modificación en cada fichero hace variar  la versión del fichero modificado.

Envía ficheros completos: Cuando se hace una modificación en un fichero, se sube al repositorio el fichero entero, en vez de sólo los cambios.

Soporte Unicode limitado: Puede traer problemas con caracteres "raros".

Renombrar/eliminar: No da soporte. Hay que hacerlo manualmente: copiar con otro nombre y borrar el antiguo.

Subversión (SVS): Licencia gratuita, Multiplataforma.

Orientado a proyectos: Versiona los proyectos, no los ficheros. Es una opción mucho más intuitiva que no la de versionar ficheros.

Envía sólo cambios: Cuando se hace una modificación en un fichero, se sube al repositorio el cambio realizado, no el fichero entero. Más eficiencia.

Soporte Unicode: En principio no debería dar problemas de esta índole.

Renombrar/eliminar: Da soporte parcial. El usuario lo hace en una única operación pero SVN internamente lo hace las dos cosas en una transacción de forma transparente al usuario: copiar con otro nombre y borrar el antiguo.

2.3 Subversión con eclipse

CONCLUSIONES

REFERENCIAS

[1] G. Obregón-Pulido, B. Castillo-Toledo and A. Loukianov, “A globally convergent estimator for n frequencies”, IEEE Trans. On Aut. Control. Vol. 47. No 5. pp 857-863. May 2002.

[2] H. Khalil, ”Nonlinear Systems”, 2nd. ed., Prentice Hall, NJ, pp. 50-56, 1996.

[3] Francis. B. A. and W. M. Wonham, “The internal model principle of control theory”, Automatica. Vol. 12. pp. 457-465. 1976.

[4] E. H. Miller, “A note on reflector arrays”, IEEE Trans. Antennas Propagat., Aceptado para su publicación.

[5] Control Toolbox (6.0), User´s Guide, The Math Works, 2001, pp. 2-10-2-35.

[6] J. Jones. (2007, Febrero 6). Networks (2nd ed.) [En línea]. Disponible en: http://www.atm.com.

Observaciones: 1. El trabajo debe contener como máximo 4

cuartillas y como mínimo 3.2. Más de 4 errores ortográficos y gramaticales

anulan el trabajo.3. Trabajos con hipervínculo se anulan4. Trabajos iguales se anulan.5. Trabajos individuales.

2