sábado, junio 10, 2006

MoProSoft

Ya oficialmente arrancamos la definción de procesos de MoProSoft, por lo que tendremos mucho trabajo sobre esto durante los próximos 10 meses.
Innevo nos va a estar ayudando con la consultoría y fácilitaran un poco las cosas.

Tuvimos una evaluación inicial y al parecer nos fue muy bien, algunas buenas prácticas que nos ayudaran a hacer más rápido todo y por otro lado Team System será de gran ayuda y esperamos poder automatizar los procesos de desarrollo desde está herramienta para que queden alineados a lo que definamos de MoProSoft.

De aquí en adelante bastantes de mis posts estarán relacionados con este tema. Espero poder abrir alguna categoría aparte para ir clasificando por temas.

Team System Source Control

Hay dos opciones muy buenas que trae el Source Control de Team System. Shelving y Branching, ya las habíamos visto. Ya habíamos tenido la necesidad de usar Branching, pero realmente no nos fue útil.
En un proyecto nos dimos cuenta de que estabamos por hacer grandes cambios, borrar muchos archivos de código, cambiar otros, así que decídimos usar Branching, para poder volver después al punto estable en caso de que nuestros cambios hecharan a perder lo que ya funcionaba.
Bueno en ese caso pudímos haber usado un label, del tal forma que si quisieramos regresabamos al punto anterior o podíamos usar ese para generar un entregable. Finalmente nunca necesitamos hacer un merge (ahorita les explico para que funciona).

Bueno lo útil del Branching es realmente el merging, el proceso es el siguiente y lo explico con un ejemplo, aunque pueden ver dibujitos en el link que les dejo.
Queremos probar diferentes ideas que nos permitiran mejorar el performance de una aplicación, todo está funcionando bien, es sólo el performance lo que queremos comprobar, por lo que necesitamos crear diferentes ramificación (branches) para hacer varias pruebas distintas, las que mejoren considerablemente el performance se integraran a la línea original y las que no, simplemente quedarán fuera y borraremos dicho branch. Así que la ventaja real de esto viene hasta el punto en que hacemos el merge.

Por otro lado, también nos permite usar las diferentes versiones de la aplicación para poder hacer comparaciones entre una y otra y medir cual es más rápida.

Espero nos de resultados y ojala y todas las ideas que traemos ahorita mejoren en algo el performance y finalmente integremos los cuatro branches a la línea original.

Otra ventaja que tienes es que mientras algunos de los desarrolladores tratamos de mejorar el performance, otros pueden seguir con otro tipo de cambios a los que después nos integraremos.


Bueno cambiando de tema, Shelving es otra opción, que aunque no la hemos utilizado, vemos que nos va a resultar útil. Hay muchas ocasiones en las que dos desarrolladores necesitan trabajar sobre una misma parte de código desde diferente computadoras y estar haciendo check ins rompería el build y afectaría al resto del grupo, sin embargo, ellos necesitan compartir ese código, esto resula útil también para alguna revisión de código o cuando el mismo desarrollador se cambia de una maquina a otra, así que en lugar de dar check in y luego get latest version, hacen un shelve y luego un unshelve, una vez que hacen el shelve ya no les apareceran los pending changes y una vez que hagan unshelve nuevamente tendráne esos archivos como pending changes.

Espero y esto le sea útil a alguien más y aprovechen las ventajas que nos da el uso de estás herramientas.