Introducción a Team System

Aunque ya poco a poco cada vez más gente sabe qué es esto de Team System, todavía me encuentro con algunas situaciones en las que se desconoce y por este motivo he decidido publicar este post de introducción a Team System. Lo escribí hace tiempo con otro objetivo pero nunca vio la luz…

Visual Studio Team System es la solución Microsoft para gestionar el ciclo de vida completo de soluciones para plataforma Windows.

Con el uso de esta herramienta las empresas de software se verán beneficiadas de las importantes ventajas y beneficios que ofrece; permite reducir la complejidad del proceso de desarrollo, permite mejorar la colaboración de todos los miembros del equipo y mejorar la productividad, reduciendo los tiempos de desarrollo y pruebas. Y si aún así la herramienta no es suficiente se puede personalizar y extender todo lo que queremos, ya sea desarrollando aplicaciones propias o usando las que hayan creado terceras organizaciones.

clip_image002

Como veremos en los siguientes puntos, Team System incluye múltiples herramientas que permiten gestionar el ciclo de vida del desarrollo software. De una manera unificada, a través de Team System todos los roles involucrados en un proyecto de desarrollo disponen de las herramientas necesarias para realizar su trabajo de una manera eficiente. Se podría decir que Microsoft ha hecho una labor importante de integración, ya que las herramientas y utilidades que comentaremos a continuación no son nuevas en el mercado, siendo lo más importante la integración que existe entre ellas. Ya no es necesario utilizar múltiples herramientas de diferentes proveedores, cada una con su funcionamiento e interfaz. Ahora todas ellas están accesibles desde un único punto.

Team Server

Team System consta de dos componentes; una parte servidora y una parte cliente. La parte servidora se llama Team Server y su misión es facilitar y permitir el trabajo en equipo de todos los miembros del equipo de desarrollo. Esta parte servidora provee de múltiples herramientas que posibilita que haya mayor comunicación entre el equipo, con el objetivo de poder desempeñar mejor su trabajo.

Dejando atrás el SourceSafe

Desde mi punto de vista uno de los grandes puntos de este nuevo producto es el nuevo y potente gestor de fuentes que incluye. Sobre todo para los que hemos usado y sufrido sourcesafe esta característica nos será de gran utilidad. El gestor de fuente de Team Server no es una nueva versión de sourcesafe, sino un producto completamente nuevo, que supera con creces al anterior.

Para los usuarios de sourcesafe, que Team Server incluya este gestor de fuentes ya puede justificar su uso. Comentar que existe una herramienta de migración de sourcesafe a TeamSystem llamada VSConverter, que puede ser de gran utilidad para realizar el cambio.

Compilaciones

Otro punto interesante que provee el componente servidor es la posibilidad de hacer construcciones diarias de nuestro proyecto. Poder realizar compilaciones de una manera predecible es un factor crítico para el éxito de un proyecto. Además, como se verá más adelante Team System ofrece unos completísimos informes para poder conocer cómo son nuestras compilaciones y qué cambios ha habido en la última compilación respecto con la anterior, con el objetivo de poder centrarse en probar sólo los cambios.

Gestión de WorkItems

La gestión de workitems es uno de los puntos claves del producto. Un workitem es un elemento de trabajo dentro de una metodología en concreto. Por ejemplo, en MSF for CMMI los requisitos, tareas o bugs son los workitems. En cambio en MSF Agile se manejan escenarios en lugar de requisitos, ya que el enfoque y funcionamiento de esta metodología es diferente.

Para los habituados a usar Microsoft Excel y Microsoft Project para la gestión de los workitems comentar que podrán seguir haciéndolo, ya que Team System permite poder realizar estas acciones desde estos dos productos y mantener sincronizada toda la información.

clip_image004

Métricas

Team Server ofrece un completísimo sistema de informes, basado en Reporting Services, que permite obtener métricas sobre la evolución del proyecto, con el objetivo de poder tomar decisiones. Para el jefe de proyecto disponer de esta información es la base para poder tomar decisiones adecuadas que lleven al éxito del proyecto.

Gracias a la integración de todas las herramientas del ciclo de vida no será necesario realizar un trabajo adicional para poder obtener las métricas y será Team Server el encargado de obtenerlas a partir de la información de los workitems.

Como veremos más adelante, Team System da a las métricas un enfoque descriptivo, basándolas en gráficas multidimensionales que el jefe de proyecto debe interpretar para poder tomar decisiones.

clip_image006

Portal del Proyecto

¿A quién no le ha ocurrido que ha ido a buscar información del proyecto y no sabía dónde estaba?¿Cuántas veces ha ocurrido? Por desgracia, esta situación es muy habitual dentro de los proyectos.

Team Server incluye un portal, basado en Windows SharePoint Services, que sirve de repositorio común y de comunicación entre los diferentes integrantes del proyecto y que pretende evitar los problemas de comunicación que mencionábamos anteriormente.

clip_image007

Visual Studio Team Edition

El componente cliente es Visual Studio Team Edition. Existen varias ediciones diferentes que se orientan en función del perfil del desarrollador. Cada versión dispone de herramientas especializadas para apoyar el trabajo de cada perfil.

A Continuación se describen las cuatro versiones que existen actualmente de Visual Studio Team Edition.

Visual Studio Team Edition Software Architects

Esta versión incluye varios diseñadores visuales que ayudan a al trabajo de los arquitectos de cara a realizar aplicaciones orientadas a servicios y reducir los riesgos en la fase de implantación.

Incluye un diseñador de la arquitectura y un diseñador de despligue de la aplicación, permitiendo poder validar la arquitectura contra el diagrama de despligue. Por ejemplo si en el digrama de arquitectura dos componentes se comunican por el protocolo TCP y en el diagrama de despliegue existe una restricción de que las comunicaciones sólo son http, no validará la arquitectura contra el despliegue.


Visual Studio Team Edition Software Developers

Esta versión añade funcionalidad a las herramientas que ya vienen con visual Studio professional, sobre todo orientadas a mejorar la calidad de los desarrollos desde el principio y durante todo el ciclo de vida. Incluye varias herramientas que permiten al desarrollador centrarse en los problemas de rendimiento y seguridad que pueden afectarle.

Incluye un analizador dinámico, sólo disponible para C++ no manejado, que detecta errores en tiempo de ejecución como buffer overflow o problemas de seguridad.

Un analizador estático que informa de potenciales aspectos mejorables de nuestro código. Analiza los ensamblados ya generados e informa de problemas que pueda haber. El sistema está basado en reglas, reglas que el desarrollador puede configurar y extender. El analizador estático es FxCop, una herramienta que ya existía de manera independiente desde hace unos años.

Dispone de “Code Profiler”, que permite analizar el comportamiento de nuestros módulos desde el punto de vista del rendimiento. Esta herramienta es muy importante en entornos manejados, porque es muy difícil de prever las optimizaciones que hace el compilador y las que puede hacer el runtime de .NET durante la ejecución. Antiguamente, en C++, se podía llegar a ser más listo y escribir código en ensamblador para ganar rendimiento. Ahora es más difícil, hay muchas capas y el compilador hace cada vez más optimizaciones. Es de vital importancia que en todo proyecto haya un profiler. Si alguien sostiene que optimiza el rendimiento de su aplicación sin usar uno deberíamos dudar de lo que hace.

Las pruebas unitarias son un punto básico para mejorar la calidad de nuestros desarrollos. Una prueba unitaria no es más que código que prueba otro código. Team System facilita enormemente la creación de estas pruebas unitarias y el manejo de las mismas. Haciendo pruebas unitarias obtenemos pruebas que podemos repetir. Al modificar código podemos volver a pasarlas de manera automatizada y detectar errores en los cambios que hemos incluido. Seguro que a todos nos ha pasado que hemos hecho un cambio sin importancia que ha provocado efectos no deseados en otros módulos.

Muy unida a las pruebas unitarias está la cobertura de código. Una prueba unitaria es buena dependiendo de la cobertura de código. La cobertura nos mide cuánto código está probado por nuestras pruebas. Un tanto por ciento bajo denotaría unas pruebas pobres.

Visual Studio Team Edition Software Testers

Es una versión orientada a los testers del proyecto, que les permitirán verificar el rendimiento de la aplicación antes del despliegue. Que exista una versión especializada es un hito importante una que no es algo habitual en España disponer de tester en los equipos. Parece que la industria y ahora Microsoft le está dando más importancia a este puesto, ya que ha dedicado una herramienta para ellos. Desde nuestro punto de vista es esencial que en todo proyecto exista el perfil del tester.

Esta versión toma como base las herramientas de pruebas unitarias y cobertura de código que veíamos en el punto anterior, añadiendo algunas funcionalidades nuevas.

Usando las pruebas unitarias de manera repetitiva permite realizar pruebas de carga sobre nuestra aplicación, con el objetivo de ver cómo ésta se comporta en esta situación.

clip_image008

También permite grabar interacciones con las aplicaciones web, con el objetivo de poder repetir estas interacciones.

Por último, permite realizar pruebas manuales. Una prueba no es más que un documento Word que describe las pruebas que hay que hacer sobre el sistema y que un tester tiene que realizar manualmente.El tester realizará la prueba manualmente e incluirá el resultado de la misma dentro de Team System con el objetivo de que los resultados estén disponibles para el cálculo de las métricas.

Visual Studio Team Edition Database Edition

Por último, existe una versión orientado al trabajo con base de datos. Está destinada a facilitar el trabajo diario de los desarrolladores y administradores de base de datos ayudándoles a gestionar los cambios, las pruebas y la implantación.

Ofrece funcionalidad muy interesante, como generación de script de instalación de un schema, comparación dos schemas o generación pruebas unitarias.

clip_image009

Las guía de Proceso en Team System

Un factor clave para el éxito de Team System son las guías de proceso. Las guías de proceso nos dan las directrices a seguir para poder seguir una determinada metodología de desarrollo.

Generalmente en la mayoría de los proyectos actuales no se sigue una metodología. Sí es cierto que muchas empresas tienen una escrita, generan documentación, pero que guardan en un cajón hasta que es necesario pasar una certificación. En Team System las guías de proceso y la metodología cobra un factor crítico, estando siempre las guías de proceso disponibles para ser consultadas por cualquier desarrollador.

Si intentáis crear un proyecto el primer paso será la elección de la metodología. Fijaros, antes de empezar a trabajar piensa cómo quieres trabajar. Es una cosa muy simple, pero que muy pocas veces se hace. Por defecto, Team System incluye dos metodologías; MSF for CMMI y MSF Agile.

Esta decisión es una de las más importantes que hay que tomar, ya que mucho del éxito del proyecto depende de ella, que se tratará en el siguiente número.

clip_image011

Conclusión

Visual Studio Team System es una herramienta que viene con la intención de mejorar nuestros procesos de desarrollo. Como hemos visto ofrece múltiples ventajas orientadas a mejorar la productividad y la calidad de nuestros desarrollos.

Aún así, no deja de ser una herramienta, que nos puede ayudar, pero que no vale para nada si no estamos convencidos de su uso. Nos pone de manifiesto la importancia de aplicar buenas prácticas y la importancia de seguir una metodología. Si queremos, Team System nos ayudará a que tengamos éxito en nuestros desarrollos.

Ibon Landa

bon Landa lleva más de 15 años dedicado al desarrollo de software. Durante este tiempo ha trabajado en diferentes empresas en las cuáles ha podido trabajar en diferentes entornos y tecnologías. Actualmente está focalizado principalmente en tareas de desarrollo, arquitectura, en las herramientas del ciclo de vida y en todo lo relacionado con la plataforma de Cloud Computing Microsoft Azure, área en el que ha sido reconocido como MVP. Participa de forma activa en la comunidad, escribiendo su blog, manteniendo un portal sobre Microsoft Azure y colaborando con Microsoft y grupos de usuarios en eventos de formación, talleres y giras de producto.

4 comentarios en “Introducción a Team System”

  1. Oye, bien por tu investigación del Team System, solo que tengo algunas preguntas que si me puedes contestar, mucho lo Agradecere ….
    1.- ¿se puede manejar como un control de versiones de documentos de análisis? y si fuera así
    2.- ¿cual sería el producto que se requeriria?

  2. No entiendo muy bien la pregunta…A qué tipo de productos te refieres cuando hablas de «documentos de análisis»?

    Team System es una herramienta bastante abierta y ya hay bastantes plugins, ya sea gratuitos o de pago, que se integran con ella.

    Un saludo,

  3. Hola

    Estoy en un proyecto en el que tengo que estimar con puntos función, hacer un project con las tareas y utilizar scrum sobre un tfs configurado con msf for agile.

    Me gustaría saber cómo he de utilizar el tfs. Como herramienta de desarrollo utilizamos visual studio 2008

    gracias por anticipado

  4. Hola,

    La verdad que la pregunta daría para mucho…

    Una primera cosa es que si quieres usar Scrum, una alternativa adecuada sería usar la plantilla de Scrum que ofrece Cochango.(http://scrumforteamsystem.com/en/default.aspx)

    Por lo demás, la manera de usarlo es desde el cliente que viene la con la herramienta y que se integra con Visual Studio (Team Explorer) o usando la consola web que se puede instalar junto con TFS.

    Un saludo,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *