¿Cómo Microsoft utiliza Team Foundation Server?

Hay una serie interesante de posts que nos explican de que modo la Division de Desarrollo de Microsoft esta utilizando Team Foundation Server. Esta dividido en capitulos y se ve muy interesante. Espero les sea de utilidad.


Chapter 1 (Our Process)


Chapter 2 (Feature Crews)


Chapter 3 (Implementing the Process) 


Chapter 4 (Planning a Release)


Chapter 5 (Tracking Progress)


Chapter 6 (Tracking multiple projects)


Chapter 7 (Tracking Risk)


Chapter 8 (Tracking Quality Gates)


Chapter 9 (Transparency in Reporting)


 

Tech-Ed 2008: "To BLOB or not to BLOB" y la opción FileStream en SQL Server 2008

Me ocurrió algo curioso hoy dia. Estaba paseando por el área donde estan los stands de especialistas de producto (hay de Sharepoint, SQL Server, Team System etc.), cuando me detuvo una chica que estaba exponiendo y me preguntó de que queria saber (sobre SQL Server) y lo primero que me vino a la mente fue el tipo FileStream  y, coincidencias de la vida, ella, Joanna Omel, es Program Manager del SQL Server Engine y responsable de características como el manejo del FileStream en SQL Server 2008.


Para ser sincero, he logrado despejar varias dudas en ese tiempo que estuvimos conversando, que si hubiera asistido a varias charlas del evento. Primero le comenté la preocupación mia debido a que siempre me preguntan: «donde deben, mis aplicaciones, almacenar los archivos, en la base de datos o en el File System?». Si, ya sé que muchos dirán «depende», lo mismo que diria yo:) y en realidad aunque no hay una respuesta absoluta al tema, me recomendo un link muy interesante en el que recomienda para archivos mayores a 1MB usar el File System, el documento se titula: To BLOB or not To BLOB y está escrito por gente de Microsoft Research.


Le comentaba que porque Sharepoint guarda los archivos en la base de datos y me explico que lo que hace Sharepoint realmente es dividir el documento en varias partes que se almacenan y luego cuando se accede a ellos, Sharepoint los recompone. Ademas, me comento que probablemente en siguientes versiones Sharepoint usara el File System para almacenar los archivos, de modo que pueda manejar archivos de gran tamaño cion una óptima performance. Y que usara para almacenar los archivos en el File System?? Nada mas y nada menos que que la nueva opcion FileStream de SQL Server 2008, ojo ella misma me aclaro que NO es un nuevo tipo de dato, sino una opcion mas que tiene varbinarymax().


Para configurar el uso de FileStream hay una serie de pasos que seguir, desde activar opciones de la configuración, crear un FileGroup especial para ellos y activar el uso de FileStream en la Instancia de SQL Server, ah! tambien crear un File Share en el File System, no son pocos pasos 🙂


Lo bueno es que asi use Attach/Dettach o Backup/Restore se guardará tambien la carpeta con los archivos referenciados. Lo malo  es que solo hay soporte local, por ahora, es decir que los archivos se mantendran en la misma maquina donde este instalado SQL Server.


Además le comente el caso de un cliente mio que queria almacenar archivos de 4 Gigabytes en Sharepoint y realmente es una mejor alternativa usar el File System. Ella me comento en la etapa de pruebas un cliente de ellos habia llevado a Microsoft un archivo de 9GB y lo probaron con el FileStream sin ningun problema. cool!!!


En cuanto a la programación, en el SP1 de Visual Studio 2008 habra soporte completo para crear aplicaciones .NET que utilicen esta característica.

Tech-Ed 2008: Soporte WCF para SOAP/WS-* y REST

Esta semana estoy en el Tech-Ed for Developers 2008 en Orlando. Quise escribir antes pero aqui el tiempo se va rápido y por las noches uno llega tan cansado que se va directo a la cama 🙂


Hay muchas cosas por contar de este evento que, básicamente, se centra en lo ultimo que ha sacado Microsoft (lo futuro se ve en el PDC). Realmente, uno de los expositores que marca la diferencia es David Chappell, lo digo no solo por su experiencia y conocimiento, sino por su forma de hacer de las cosas «complicadas» para muchos, algo entendible para todos….o casi todos.


Bueno me toco ver ayer su comparacion entre plataformas Java vs. .NET muy bueno, pero de eso no hablare ahora, sino de la charla de hoy que fue sobre la comparacion entre SOAP/WS-* y REST.


Son dos estilos diferentes, para escenarios distintos. Primero hizo una explicacion de WFC con SOAP, haciendo incapie en que SOAP define una forma de mensaje XML descriptiva de la operacion y usa POST para el envio. Tambien hablo sobre WS-*, algo que no es reciente, pero que es soportado tambien por WCF Describio los binding que se usan en cada caso:


BasicHttpBinding, para SOAP


WSHttpBinfing, para SOAP/WS-*


NetTcpBinding, para usar TCP


Sobre WS-* mencionó que no es el predominante para Web Services en Windows y que la interoperabilidad entre vendedores sigue siendo imprefecta.


Luego, le toco el turno a REST, nos hablo que usa verbos HTTP (GET, POST, PUT, DELETE) y que todo es accedido a través de URIs. El binding que usa es «webHttpBinding». El Transporte HTTP puede enviar XML, JSON o datos binarios sobre HTTP.


SOAP/WS-* viene de una larga historia : RPC, RMI, CORBA, DCOM, etc. REST es Web Services puro.


REST es mas Internet, SOAP-WS-* no necesariamente fue creado para Internet sino para entornos corporativos y tambien internet.


En seguridad REST usa HTTPs, mientras que SOAP/WS-* puede usar HTTPs y estandares de seguridad WS.


La mejor decision debe ser por la razon, no por la emocion.


Lo mejor de todo, WCF soporta ambos!!  🙂


Antes de terminar, para los interesados en conocer más sobre REST, Chappell recomendo un libro RESTful Web Services por Leonard Richardson, de hecho estara pronto en mi biblioteca personal.


 


 


BasicHttpBinding


 

Maquina Virtual (VPC) actualizada de Visual Studio Team System 2008 Team Foundation Server y Team Suite

Esta máquina virtual reemplaza a una anterior que expiraba el 1ro de Abril. Esta nueva versión  expira el 31 de Diciembre de 2008.


En la maquina virtual están instalados:




  • Windows Server 2003 Enterprise Edition, SP2


  • Team Foundation Server 2008


  • Team Build 2008


  • Team Explorer 2008


  • Visual Studio Team System 2008 Team Suite


  • Power Tools December Release


  • Office 2007 SP1

Team Foundation Server esta instalado en workgroup edition, por lo que no requiere un controlador de dominio. Este release contiene 38 Hands-On Labs y datos de ejemplo.


Pueden bajar esta maquina virtual desde:


Visual Studio® Team System 2008 Team Foundation Server and Team Suite VPC Image

User Experience (UX) : Windows Vista User Experience Guidelines

En realidad queria comenzar una serie de posts sobre User Experience (UX) comentando otro tipo de informacion, sin embargo encontre este que me parecio muy interesante y listo para ser aplicado 😉


El documento online es :  Windows Vista User Experience Guidelines, y en el pueden encontrar cosas como:


– Un catalogo de los controles Windows. Aparte de los tipicos como TextBox, Check-boxes, Command button, Drop-down list, etc,. hay otros que aparecen bastante en Windows Vista, como Command links, Baloon, Progressive disclosure controls, Infotips, etc.


– Las reglas a seguir para crear interfaces de usuario de alta calidad en Windows Vista.


– Un Guia de Diseño de Experiencia de Usuario para Windows Vista, cuyos principios de diseño nos pueden servir tambien para aplicarlos en otros tipos de diseño Windows o Web, o inclusive con Windows Presentation Foundation (WPF)

Libro recomendado: "Head First Software Development"

La semana pasada tuve la oportunidad de comprar algunas cosas en el Microsoft Store (en Redmond). Revisando algunos libros vi uno y dije “umm, ese libro me parece conocido…” y efectivamente era uno de los libros favoritos de mi biblioteca, el “Head First Software Development” de O’Really. Creo que Microsoft también reconoce cuales son los buenos libros y que no todos son de Microsoft Press 🙂
 

Me compre ese libro hace un mes, recién ha sido publicado este año, y yo ya habia usado antes otro de la misma serie, el Head First Design Patterns que también es muy bueno.
Así que si tienen oportunidad de adquirirlo se los recomiendo, en realidad presenta de una forma simple y muy didáctica,  los conceptos de Ingeniería de Software, Gestión de Proyectos y Metodología. Por ejemplo va desde los Requerimientos, definición de iteraciones, diseño, control de versiones, test-drive development, manejo de releases, bug tracking, etc. Es «casi» agnóstico a las herramientas, aunque si usa algunas que están disponibles en Internet. Personalmente yo uso las herramientas integradas que vienen en Visual Studio Team System 🙂
El libro es muy recomendable para entornos academicos y para todo profesional en el desarrollo de software.
 

Madurando el Proceso de Desarrollo de Software

Acaba ya la semana santa, y aparte de ver las clásicas películas de esta época y reflexionar, también aproveche para descansar algo y revisar algunas conclusiones que me dejo el ultimo evento al que asistí (VSTS InnerCircle Airlift).
La comprobación (conversando con gente de diversos paises) de que no solo en mi País, ni solo en Latinoamérica sino a nivel Mundial, el porcentaje de proyectos exitosos sigue estando en un promedio de 30%, nadie pudo decir lo contrario. 🙂
Primeramente, considero importantes todas las iniciativas que se vienen dando para determinar y mejorar el nivel de madurez de los Procesos de Desarrollo de Software (como CMMI) o de la madurez en Gestión de Proyectos (como OPM3)
Sin embargo, el que una empresa de desarrollo de software no tenga un nivel CMM o no tenga entre sus profesionales algunos PMPs, no los exime de pensar siempre en una mejora continua de sus procesos, el de saber “Donde estoy hoy?”, “Donde quiero estar mañana”?” y “Que hago para llegar allí?”. Existe una forma de hacerse esa evaluación, Microsoft proporciona una evaluación del nivel de madurez en la Gestión del Ciclo de Vida del Desarrollo de Aplicaciones (Arquitectura, PM, Usabilidad, Desarrollo, Testing, etc.), inclusive la evaluación ya tiene su versión en español (asi que no hay pretexto), la encuentran en:


https://www.microsoft.com/almassessment/es-ES/default.aspx


Uno de los objetivos que espero cumplir, a través de este blog, es ir explicando los puntos que se miden en esta evaluación a fin de tener una mejor idea, de cómo lograr esa madurez en el SDLC.
La programación de aplicaciones y las nuevas tecnologías Microsoft que van apareciendo también es algo con lo que trabajo y sigo con mucho interes, así que cuando pueda escribiré sobre WPF, WCF, WWF, ASP.NET 3.5 y ADO.NET 3.5, pero siempre teniendo en cuenta que «lo que da valor no es la tecnología sino la forma como se aplica», y eso se logra teniendo una vision mas amplia de las cosas 🙂

Business Analysis Body of Knowledge (BABOK)

Así como existe el “Project Management Body of Knowledge (PMBOK)”, que es una colección de procesos y áreas de conocimiento generalmente aceptadas como mejores prácticas dentro de la disciplina de Gestión de Proyectos, también existe el “Business Analysis Body of Knowledge (BABOK)”, promovido por el “International Institute of Business Analysis«.


Esta guía identifica las Áreas de Conocimiento del Análisis de Negocio que están normalmente reconocidas y aceptadas como buenas prácticas.


Las Áreas de Conocimiento no definen una metodología de Análisis de Negocios. Definen lo que un Analista de Negocio (BA) necesita conocer para trabajar dentro de un proceso de Análisis o sobre una Metodología de Desarrollo de Soluciones.


En la guía se encuentran definidas las áreas de Análisis Empresarial, Planeamiento y Gestión de Requerimientos (incluye el control de cambios) , Obtención de Requerimientos (con sus diversas técnicas), Análisis y Documentación de los Requerimientos, Evaluación y Validación de la Solución y finalmente Comunicación de los Requerimientos (Plan de comunicación, conflictos, formatos, aceptación).


Me parece una guía bastante completa y a pesar que algunas de las cosas que dice allí lo sabemos por la misma experiencia en proyectos, esta guía consolida todo ese conocimiento y muchas cosas más como practicas recomendadas.


 

Gestión de Requerimientos y Visual Studio Team System

Tal como lo señala Carey Schwaber (la hija de Ken Schwaber, el autor de “Agile Project Management with Scrum”) en el articulo  The Root Of The Problem: Poor Requirements” de Forrester, hay dos frentes en lo que se refiere al tema de Requerimientos: la Definición de los Requerimientos y la Gestión de los Requerimientos. Aunque el mercado ha puesto énfasis en las herramientas para la Gestión de los Requerimientos, la oportunidad de mejora realmente esta en la definición y la Gestión de los cambios en los mismos.Hay un documento de reciente publicacion: “Requirements Management with Visual Studio Team System”. En este documento se nos explica como manejar todo el Ciclo de Vida de los Requerimientos con VSTS, desde la definición, pasando por la ejecución y posteriormente la medición, además, claro esta, de la Gestión de los Cambios.Ciertamente no existen, en VSTS, características completas para Gestión de Requerimientos como funcionalidades por defecto o plantillas incorporadas en la herramienta. O bien uno se organiza con lo que viene en la herramienta o tiene la opción de usar herramientas de terceros como Borland Caliber RM, Compuware Optimal Trace, entre otros, gracias a la extensibilidad que tiene TFS. En el documento se habla de las distintas alternativas que existen, además de lo que vendrá en la siguiente versión de VSTS sobre trazabilidad de requerimientos y que tuve la oportunidad de ver, como prototipos, en el ultimo evento VSTS InnerCircle al que asistí, prototipos que se implementarán en los siguientes CTPs de “Rosario”, habrá que estar atentos.

 

Creando y Administrando Pruebas de Software con "Camano"

El día de ayer Doug Seven, para mí el mejor de los expositores de este evento VSTS Inner Circle, nos mostros algunas novedades de la siguiente versión de VSTS Codename «Rosario». Una de las cosas que me llamo la atención fue la herramienta cuyo codename es «Camano», está basada en Windows Presentation Foundation (según Doug), y esta diseñada para ayudar a los administradores de prueba y al equipo de pruebas  planificar, organizar y analizar su proceso de pruebas.No está integrado con Visual Studio, así que no se necesita tener Visual Studio instalado, se pueden crear distintos tipos de prueba, me llamo la atención las pruebas manuales (funcionales) donde la herramienta capturaba printscreens automáticamente y hasta creaba un video del preciso instante del error (como para que los demás no digan que no se puede reproducir), y luego lo podía adjuntar a un Workitem.Aquí pueden encontrar mayor información y algunas pantallas de «Camano»:

http://blogs.msdn.com/nnaderi/default.aspx


http://ozgrant.com/2007/12/09/november-rosario-ctp-planning-a-testing-effort-with-camano/