Setup para una nueva aplicación
16:04 | Author: Unknown
Tecnologíasimage

CC.Net / Subversion/ TortoiseSVN / Commit Monitor / AnkhSVN /VS 2008 / Resharper /TestDriven / NUnit / Watin / TDD

Un poco de historia

Años atrás (y lamentablemente lo seguimos viendo), desarrollábamos aplicaciones en forma colaborativa. Nos íbamos pasando desarrollos entre programadores y de ésta forma íbamos sumando desarrollo y entregando al cliente. El proceso del desarrollo del software ha dejado de ser un insight artesanal para convertirse en un proceso ingenieril (sin embargo es interesante escuchar el panel de cierre de Ágiles 2008, donde entre otros Mary Poppendieck y Micah Martin proponían volver al craftsman, al artesano).
Cuantas veces escuchamos la famosa frase ¨En mi máquina funciona¨. Para eliminar estas problemáticas debemos utilizar distintas sencillas prácticas que nos permitirán armar un ambiente de desarrollo tal que no tendremos que preocuparnos por esos viejos problemas.

Repositorio

El repositorio nos permite mantener la información centralizada, mantener log, generar tags/branchs, volver a revisiones anteriores, etc.
Nosotros utilizamos Subversion y para el ejemplo que vamos a realizar crearemos un repositorio en code.google.com que nos provee como repositorio SVN.
Para administrar el  repositorio en forma local utilizamos TortoiseSVN, que nos integra el manejo de la copia en checkout del repositorio local con el explorer de Windows.
AnkhSVN nos realiza la integración del Subversion en Visual Studio.
Existen otras opciones que iremos analizando, mientras tanto se puede ver este artículo.

TDD

Nuestra forma de trabajar está basada en TDD (Test Driven Development). Hay mucho para investigar sobre el tema. Lo único que proponemos aquí es tener en cuenta el patrón RED, GREEN, REFACTOR. Esto es realizamos el test necesario para verificar una funcionalidad que estamos agregando a nuestra aplicación. Al no estar desarrollado el código que satisface el test, el mismo va a fallar por el motivo esperado, estaremos en rojo. Se  realiza el código que satisface el test, por lo tanto estaremos en verde. por último realizamos el refactor, que nos permitirá eliminar código repetido, innecesario, etc. Volvemos a probar los test que deberán seguir en verde.
Las herramientas que utilizamos son NUnit como framework de tests. Y para ejecutarlos desde el ambiente de Visual Studio utilizamos ReSharper (que también nos provee muchísima otra funcionalidad espectacular, es adictivo!) o TestDriven, un plugin gratuito.

CruiseControl

Cada desarrollador trabaja en una copia local del repositorio y realiza las modificaciones necesarias, en el momento que ha finalizado alguna parte de una tarea que se encuentra funcional decide subir al repositorio. Para ello verifica que su aplicación compile, corre los test unitarios y de aceptación que corresponden y luego realiza commit al repositorio (si es necesario llevar un control en tiempo real de los commits se puede recurrir al Commit Monitor) .
Una vez que se sube al repositorio, contamos con el CruiseControl .Net que es el encargado de realizar las mismas tareas en el ambiente de integración. 
Decargará todo lo necesario del repositorio, verificará triggers, colas, prioridades, realizará las tareas de compilación, correrá test unitarios, test de aceptación, puede correr aplicaciones de verificacion como el FXCop, NCover, NDepend, etc.
Recién luego de todas éstas tareas estamos seguros que tenemos una aplicación integrada correctamente.
Existe una herramienta complementaria CCTray, que nos permite ver en el Tray el estado en que se encuentra la integración de la aplicación en forma constante. Es necesario tener reglas claras para mantener el repositorio en verde constantemente.

 

Watin

Este framework nos permite realizar test contra la web. Utilizamos nosotros esta herramienta dado que nos permite realizar tests unitarios (usando NUnit) por medio de COM obtenemos una instancia del browser y probamos la funcionalidad , no sólo, el alcance de nuestras interfaces. Esto también lo integramos al CC y lo verificamos en un night test.

Comentarios

Espero recibir comentarios, es sólo una forma de trabajar. Espero poder ampliarlo con ejemplos de cada una de las aplicaciones. para primer post está bien!

This entry was posted on 16:04 and is filed under , , , , . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.