Archivos mensuales: Octubre 2010

Avance sobre la VAN sobre integracion continua

UPDATE: les dejo el video de la VAN mas abajo y la presetnación.

Mañana viernes tendremos otra VAN interesante en AltNetHispano.

Esta vez el tema es Integración Contínua desde el punto de vista de las herramientas y las prácticas. Ya nos presentó el concepto hace unos meses el Sensei Martin Salias en otra VAN sobre automatización en general.

Esta vez me gustaría hablar sobre la orquestación de un entorno de integración contínua con herramientas como: un repositorio (ya sea Subversion, Git, Hg o TFS), una herramienta para escribir scripts (ya sea NAnt, MSBuild, Rake?) y una herramienta de integración contínua (ya sea CruiseControl.NET, TeamCity, TFS o Hudson).

También hablaré sobre distintas políticas de branching de acuerdo a las necesidades de cada proyecto y como utilizar estas políticas junto con integración contínua.

Luego vendrá la parte en que varios amigos me ayudarán mostrando casos reales describiendo situaciones reales en las cuales la integración contínua los ayuda día a día.

Andres Vettori (@andresvettori) va a contar como se utiliza integración contínua con Team Foundation Server 2010 en la empresa VMBC para desarrollar aplicaciones multi-cliente basados en plataforma Microsoft (Hyper-V 2.0, Windows 2008 R2, SQL Server 2008, IIS 7.5, .NET 4.0, ASP.NET, ASP.NET MVC, Silverlight, Retina.NET como ORM). Hablará de los retos que tuvieron y las etapas de madurez por las que pasaron como equipo, mostrando brevemente la solución implementada actualmente y algunas ideas que tienen para el futuro.

Jose Romaniello (@jfroma) va a mostrar las distintas facilidades de configuración de TeamCity configurando un miniproyecto (que ya tendrá listo para lAN) desde cero con Mercurial/NUnit/etc.

Vicenç Garcia (@vgaltes) nos contará sobre la situación en una empresa anterior a la utilización de la integración contínua, el estado de caos y descontrol en el que se encontraba el equipo. Un análisis de la situación los llevó al camino obvio de empezar con un repositorio de código y un servidor de integración continua. Se decidieron por Hudson por su facilidad de configuración. También detallará su situación actual y dónde les gustaria llegar. Trabaja sobre una aplicacion cliente/servidor WinForms sobre SqlServer, Oracle, Progress
y Firebird.

Por último y si nos queda tiempo, yo hablare de algunas experiencias reales sobre complilación, prueba y despliegue automatizado de aplicaciones ASP.NET utilizando CruiseControl, NAnt, MSBuild, etc.

VAN sobre principios SOLID en AltNetHispano

El sábado pasado participé como ponente en una VAN (reunión virtual) de AltNetHispano sobre principios SOLID (uno de los temas que más me gusta de esta profesión). Aquí podrán encontrar el listado completo de videos de VANs o verla directamente aquí:

Presentación: aquí. Código antes de aplicar los refactorings: aquí.

Les dejo el video gentilmente editado por la gente de AltNetHispano, si quieren un adelanto, lean el resumen que dejo abajo.

Quiero compartir en este post es un breve resumen sobre los temas que surgieron como preguntas y las repercusiones con el fin de que sirva de guia para aquel que quiera ver el video de 2 horas y algo más.

Mostré 3 o 4 ejemplos de código real de alguno de mis proyectos o extractado de algún caso real de clientes de consultoría.

En el primer ejemplo transformamos una clase que violaba claramente el principio de responsabilidad única. Separamos el código en dos clases. Luego avanzamos un poco más sobre el caso analizando una violación al principio de inversión de la dependencia y también codificamos una solución.

En el segundo ejemplo tomamos como base una consulta hecha por Edgar Ramos la lista de AltNetHispano, en el que planteaba un problema que me pareció muy útil para demostrar el principio abierto-cerrado.

El tercer ejemplo vimos el principio de segregación de interfaces. Presenté una refactorización del patrón repositorio separándolo en un repositorio básico basado en generics y uno o más Enhanced Query Objects del gran @fabiomaulo (el gran ausente de la VAN, el pobre estaba sin PC, parece).

Hablando sobre el ejemplo anterior conté una anécdota sobre un reemplazo de repositorios que tuvimos que encarar (desde IBatis.NET a NHibernate) y nos costó bastante por estar en clara violación del principio de sustitucion de Liskov.

El cuarto ejemplo fue una respuesta a la consulta de un colega sobre un procesador de archivos basado en reglas que fuera configurable. Propuse una solución basada en interfaces y Windsor como container de inyección de dependencias.

Tanto durante la VAN como en twitter (aquí y aquí) surgieron comentarios interesantes y preguntas (ver repercusión aquí). Sobre todo esto trataré de escribir posts ampliando mis respuestas.

Por último los comentarios que me llenan de orgullo (aquí, aquí y aquí) puesto que vienen de mis colegas, a los cuales también respeto mucho.

Si lo desean pueden descargar la presentación y la

Referencias:

[1] http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
[2] http://en.wikipedia.org/wiki/Solid_(object-oriented_design)
[3] http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx
[4] http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx
[5] http://cdn.cloudfiles.mosso.com/c82752/pablos_solid_ebook.pdf
[6] http://www.hanselminutes.com/default.aspx?showID=163

Gracias a todos.