jueves, 1 de noviembre de 2012

Atlassian vs TFS

El equipo sigue creciendo, y necesitamos mejorar nuestra plataforma colaborativa. Consolidar el equipo de producto es uno de los pasos fundamentales que tenemos que superar satisfactoriamente si queremos garantizar nuestro camino al "éxito".

Hasta ahora habíamos intentado sin éxito integrar CI & TDD, pero hasta el camino más largo empieza por un paso. Por lo que este intento será todavía con mayor intensidad.

El primer paso, y complejo dada las exigencias de nuestra plataforma, es la plataforma colaborativa más idonea para nosotros.

Queremos implantar un ALM basado en LSUX, por lo que necesitamos dar apoyo a los ejercicio de User Research/User Test, a los de desarrollo y a los de calidad de producto.

Con este objetivo inicié una evaluación entre la suite de Atlassian y TFS, dado que Assembla empieza a quedarse pequeño.

TFS es quizá una alternativa menos popular en el ámbito opensource, pero es seguramente la plataforma más consolidada del mercado. Así por ejemplo lo refleja el siguiente estudio de Gartner.



Los puntos críticos para nuestro equipo son los siguientes:

Genéricos
  • Herramientas cliente
  • Repositorio de código
  • Configuración/Personalización de workflows
En el caso de Atlassian, toda la suite de productos son Web, TFS ofrece una web que se complementa con VS2012 Premium o superior o plug-ins para eclipse. La integración con XCode debe realizarse a través de un plug-in de Git, o bien si desarrollas iOs debes utilizar eclipse como cliente del repositorio de código.


Quality Plan
  • Posibilidad de definir planes de calidad
  • Exploratory Testing
  • Issue Tracking Integration
  • TDD support for User Story
Ninguna de las herramientas ofrecen vías realmente satisfactorias para gestionar planes de calidad, controlas ejecuciones, etc. En el caso de TFS, el sistema de gestión ágil integra plan de test, aplicando por tanto TDD, así mismo dispone de una herramienta de Test Management, que sí que podría cubrir con los requisitos, pero es un cliente desktop ... shit! En relación al exploratory testing, está cubierto con el plug-in Bonfire de Atlassian, realmente interesante y totalmente integrado con JIRA. 

He leído alguna información de como especificar un plan de calidad con JIRA o confluence, pero en ningún caso se comportan como herramientas externas como TestLink en las que tipifican los planes de calidad, se controlan ejecuciones de calidad, y se pueden llegar a extraer KPI específicas de esta importantísima parte del proceso.


UX/UD
  • Requirements / Specifications
  • Charting / Sketching
  • Prototyping
En el caso de TFS, existe una vía para especificar user stories, pero no he sabido encontrar integrado un portal colaborativo, que permita generar contenido fuera de las especificaciones. Atlassian, a través del portal Confluence, ofrece una excelente herramienta de documentación. Incluye además la posibilidad de integrar el plug-in Gliffy para incluir esquemas, diagramas, UML's, etc aunque no llega al alcance de herramientas como Balsamiq por ejemplo.


Agile
  • Backlog Management
  • Forecasting based on the team capacity/velocity
  • Sprint cardwall
  • Kanban  / Scrum support
  • Burndown chart
  • Multi - product management on one team
  • StandUp report
Ambas herramientas disponen de una orientación clara a la gestión ágil, pero a nivel subjetivo, creo que la suite de Atlassian, mediante su plug-in Greenhopper es mucho más madura que TFS. Ofreciendo un cardwall multi-proyecto, pudiendo general boards SCRUM o KANBAN, y con informes excelentes como el Burdown Chart o Velocity Speed.

Support Management
  • Collect eMail issue tracking
  • Continuos feedback tools
  • Ad-hoc or Customizable feed-back form
  • Multi-project management
En la actualidad utilizamos TeamBox con un resultado excelente, en el caso de TFS puedes recoger feecback del cliente, con un instalable microsoft que el usuario se debe descargar y disponer de una cuenta windows live ... demasiadas barreras. Atlassian cubre las necesidades de gestión por projecto/cliente, de alta de tickets vía correo electrónico, de configuración de formularios de feedback ad-hoc ... aunque no se si por ahora vamos a renunciar a TeamBox. 

Source Control
  • Tools for code review
  • Integration with the issue tracking
  • Offline support for development
  • Graph and mergin tools
  • Tools for automatic evaluation of the code
En este punto ambas plataformas ofrecen soluciones interesantes, Atlassian con FishEye, Crucible y TFS con integración de herramientas de revisión de código, eso sí, totalmente integradas con Visual Studio 2012 (imagino que también 2010)

Continuous Integration & Continuous deployment
  • Automatic Build on Commit
  • Automatic Rollback
  • Notification System on crappy/break-build commit
  • Automatic technical document generation
  • Continuous deployment. Automatize the deployment (Integration environment)
En este punto ambas plataformas ofrecen debilidades, si bien en nuestro caso, el CI va a destinarse al servidor que está desarrollado en .Net, y por tanto TFS ofrece la solución ideal,  pese a que en el caso del continuous deployment se limita a servidores azure. En el caso de Bamboo, hay limitaciones sobre soluciones .Net. Una lástima.

KPI & Reporting
  • Reporting for evaluate the support team
  • Reporting for evaluate the production team
Al igual que sucedía con la gestión ágil, a nivel de reporting Atlassian parece una solución más madura.

Collaborative content
  • Wiki tool
  • Requirement description tool
En este punto, Confluence creo que es la respuesta a todas nuestras necesidades. Sería idea poder gestionar de una manera más jerárquica los user stories, aunque también a través de Atlassian puedes usar las stories de JIRA como tickets. Algo similar a lo que ofrece TFS. Quizá sea el mejor modo para gestionar la trazabilidad del producto ...

Sí, lo se el alcance es muy ambicioso, pero mejor mirar con perspectivas de futuro. Después de mucho pensarlo y no sin muchas dudas. Las conclusiones fueron las siguientes.

Atlassian

En general Atlassian parece una solución fantástica, con una gran suite de productos, quizá sea un handicap, la complejidad de la solución, la integración de todos los posibles components y plug-ins. Fuera de eso, las debilidades que le encuentro son las siguientes 
  • Bamboo, la herramienta CI de Atlassian, parece no integrarse de la manera más adecuada con .Net, plataforma con la que está desarrollado nuestro servicio web. Otros productos como Jenkins y evidentemente TFS lo solucionan mejor
  • FishEye y Crucible, las herramientas de Source Control de Atlassian, están más orientados a lenguajes como Java, Ruby, etc. que con .Net
  • La versión onDemand, en Cloud, presentan ciertas limitaciones críticas, por ejemplo en el caso de Bamboo con projectos Visual Studio, que hacen que la única vía en el caso de seleccionar Atlassian sea on Premise, en un servidor propio
TFS

Que TFS es un producto magnífico, es algo irrefutable, tal y como refleja el estudio de Gartner, pero al igual que Atlassian tiene ciertas debilidades, Microsoft ha hecho un esfuerzo en abrirse a otras tecnologías fuera de .Net, ofreciendo vías de integración con eclipse y XCode. Pero existe una incertidumbre clara en relación al alcance y el precio que va a tener TFS preview, la propuesta cloud de TFS (Precisamente hoy han anunciado que se tratará de un servicio gratuito)
  • El primer handicap, y creo que el principal motivo por el cual el servicio web es gratuito, es que gran parte de los productos que cubren nuestras necesidades o bien son clientes desktop de microsoft, o bien requieren de Visual Studio 2012 para acceder a las funcionalidades, eso es un handicap insuperable para un equipo multi-plataforma como el nuestro - Cuando digo que creo que es el motivo por el que el servicio web es gratuito, es por que VS 2012 Premium no lo es ... y la web es huérfana sin el resto del producto.
  • Aunque sea una continuación del anterior, no disponer de un entorno web colaborativo debilita la apuesta TFS
  • Así mismo el sistema de gestión ágil de TFS es más simple, que el de Atlassian, y están más orientados a equipos de desarrollo. Nuestro equipo también tiene necesidades para equipo de soporte y mantenimiento. 
La decisión final ha sido lanzar en modo evaluación JIRA y Confluence, con los plug-ins Gliffy, GreenHopper. También hemos evaluado Crucible y FishEye, así como Bamboo. Pero por ahora únicamente vamos a lanzar JIRA(GreenHopper) y Confluence.

Utilizar TestLink para el quality plan, y evaluar Jenkins como alternativa a Bamboo para el Continuous Integration del backend.

Saludos,