Con el anuncio oficial de la fecha de lanzamiento de VSTS para el 22 de marzo del 2010 y la liberación del Beta2 (disponible para los suscriptores de MSDN), ya hay un panorama claro para tomar decisiones sobre la adopción de VSTS 2010.
Como siempre he comentado con mis clientes al respecto, esto no es una decisión que se deba tomar a la ligera. Es una decisión que debe estar sustentada en un análisis detallado de los beneficios, limitaciones y riesgos que implica migrar o adoptar esta herramienta. Aunque a nivel general los beneficios son amplios y claros, hay que definir si las limitaciones y los riesgos exigen un plan especial de adopción. Además de alinear el presupuesto y lo que le interesa al que pone la plata, y es cual va a ser el retorno de esa inversión.
En primera instancia es importante entender los cambios en el modelo de licenciamiento y las ediciones del producto. Aunque en las versiones 2008 y 2005 de la familia Team System los nombres de los productos estaban definidos por el nombre de los roles a los cuales estaba dirigido (Visual Studio Team System Development Edition para el desarrollador avanzado o experimentado; VSTS Architecture Edition para el arquitecto; VSTS Test Edition para el grupo de pruebas; VSTS Database Edition para el DBA y el desarrollador de base de datos; y VSTS Team Suite para el ArquitectoProbadorDesarrollador), en 2010 las ediciones se agruparon con una filosofía similar a la de Office o de Windows. Y que desde mi punto de vista va alineado con uno de los nuevos mantras de “democratizar” el ALM (Application Lifecicle Management).
Anteriormente las actividades que requerían compartir artefactos de paso entre las diferentes fases del proyecto eran una zona gris que terminaba exigiendo que varias personas tuvieran Team Suite. Por ejemplo los modelos que creaba el arquitecto con Team Architect (además de simples) no los podía ver el desarrollador con Team Developer. O por Ejemplo las pruebas web que generalmente las tenía que hacer o ayudar a hacer el desarrollador, estaban en el Team Test.
Desde mi punto de vista en el nuevo esquema de ediciones hay tres cambios interesantes. En primera instancia se creó una edición “Test Elements” orientada a las personas que “ejecutan” las pruebas, que además de tener capacidades muy interesantes que les comentare en un próximo artículo, reduce ostensiblemente el costo de licenciamiento al separar el proceso de creación de las pruebas en otra herramienta por aparte.
En segunda instancia las demás ediciones se redujeron a cuatro: Express, Professional, Premium, y Ultimate con las combinaciones de suscripción de MSDN. Lo que implica que ya no va ver más Standard (IMHO - no creo que la vayan a extrañar mucho), Express va a seguir orientada a entusiastas y estudiantes que no tienen acceso a una versión licenciada por algún acuerdo con Microsoft; Professional va a seguir orientada a organizaciones muy pequeñas sin un proceso de desarrollo o organizaciones con un gran volumen de desarrolladores dedicados exclusivamente a la construcción (léase escritura de código ); la edición Premium es para organizaciones con desarrolladores que interactúan fuertemente con arquitectos y grupos de pruebas pero que su rol principal es construcción; y Ultimate para los arquitectos, desarrolladores avanzados, y el grupo de automatización de pruebas. Al igual que ha sucedido en versiones anteriores, todas estas ediciones son cumulativas en funcionalidad, es decir que la funcionalidad de las más básicas hace parte de la que le sigue.
Finalmente el último cambio es relacionado con el servidor del proceso de desarrollo (TFS), que ahora va a estar disponible en varias ediciones incluyendo una llamada TFS Basic. Esto personalmente creo que representa la muerte de Source Safe para usuarios nuevos (oficialmente no hay ningún anuncio al respecto), debido a que es una versión que viene a cubrir el nicho de grupos muy pequeños de desarrollo y usuarios individuales.
Si quieren conocer de primera mano el nuevo esquema de licenciamiento les recomiendo que revisen el documento: http://www.microsoft.com/presspass/newsroom/developer/factsheets/VS2010PackagingFS.docx
De la mano con esos cambios es importante entender que características nuevas están disponibles y cuáles de esas se pueden utilizar efectivamente en los proyectos (pueden haber algunas limitaciones o algunas consideraciones especiales bien sea por la versión del Framework, por la arquitectura de la solución/aplicación, por el proceso de desarrollo, por la versión de Visual Studio, o por el modelo de trabajo en la compañía a la que pertenezcan). En un próximo artículo les voy a hablar de las nuevas características de cada uno de los diferentes productos en las diferentes fases de un proyecto, pero si quieren pueden empezar por ver la comparación de las ediciones: http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx#compare
Una de las partes que más me gusta de mi vida profesional es la posibilidad que tengo de compartir el conocimiento con varios grupos de personas. Generalmente me reúno con varias comunidades profesionales y académicas para participar en conferencias y charlas sobre temas de desarrollo con plataforma Microsoft.
Una pregunta recurrente es acerca de dónde se puede conseguir información sobre las buenas prácticas de desarrollo, las nuevas tecnologías en las que trabaja Microsoft, y en general las tendencias de la industria.
La verdad esto no es un tema fácil debido a la gran cantidad de información que hay que estar monitoreando. Por la diversidad de proyectos en los que trabajo y los temas en los que me gusta investigar por hobbie, hay muchos sitios que reviso y que brindan información vital para mi trabajo. Pero de manera especial hay un par de sitios y blogs que reviso con bastante frecuencia y que recomiendo:
Información General de Tecnología:
http://www.diarioti.com
http://www.theregister.co.uk
Información de Desarrollo:
http://www.msdn.com
http://www.msdn.com/practices
Blogs:
All about Microsoft http://blogs.zdnet.com/microsoft/?feed=rss2 Blog de Mary Jo Foley, analista de tecnología, con informaicón de todo lo que esta pasando en el mundo Microsoft.
Alvin Ashcraft's Morning Dew http://feeds2.feedburner.com/alvinashcraft
bharry's WebLog http://blogs.msdn.com/bharry/rss.xml Blog de Brian Harry, Product Unit Manager for Team Foundation Server.
granth's blog http://blogs.msdn.com/granth/rss.xml
MVP Factor http://blogs.msdn.com/mvplead/rss.xml Si les interesa saber que hacemos los MVPs y como llegar a ser uno.
Reflective Perspective http://feeds.feedburner.com/ReflectivePerspective
Mi amigo Franciso Fgas de Ecuador tiene un canal de videos en YouTube dedicado a VSTS http://www.youtube.com/user/ffagasg
Recientemente Microsoft Latam añadió otro recurso muy interesante, el Latam Community Media Center http://www.latamcmc.com/ donde se puede encontrar un amplío número de videos y webcasts sobre temas de infraestructura y desarrollo. Siempre que busco información de primera mano para entender al menos la base o fundamentos de algún tema nuevo, recurro a los videos porque de ahí obtengo la información básica y decido sobre que investigar más a fondo.
Si entran al CMC, aprovechen y denle una mirada a una carrera de observación que están haciendo bien interesante: http://www.microsoft.com/latam/mediacenter/CMCQUEST2009/
El equipo de Windows 7 y el equipo de Windows Server 2008 R2 han hecho publicó hoy la noticia que ambos productos pasan a RTM (Realese To Manufacturing).
Esto significa que está confirmado que a partir del 6 de agosto los desarrolladores que tenemos una suscripción de MSDN podremos descargar la versión en inglés de cualquiera de los dos productos. Igualmente los ISV, IHV, Partners y clientes de licenciamiento en volumen podrán tener acceso para esta fecha o el 7 de agosto según cada caso. Para los clientes al detal, la fecha oficial para poder obtenerlos es a partir del 22 de octubre. Las versiones en otros idiomas se van a demorar poco menos de un mes más en estar disponibles.
En mi caso esto significa que es la hora de revisar que todo este al día en los planes de migración.
Cuándo se anuncia el lanzamiento de una nueva versión de Windows, en los grupos de desarrollo de aplicaciones de todas las empresas surgen al menos dos preguntas con bastante frecuencia:
- Cómo se van a comportar mis aplicaciones en esta nueva versión?
- y qué nueva funcionalidad me puede ofrecer la nueva versión para mejorar mis aplicaciones?
El caso de Windows 7 no es la excepción, y es importante encontrar respuestas a estas preguntas rápidamente para definir una estrategia apropiada al interior de nuestras compañías. Sin importar si nos dedicamos a hacer software a la medida, o si desarrollamos software empaquetado, tarde o temprano la necesidad de evaluar nuestras aplicaciones en esta versión de Windows va a surgir. En este post me voy a centrar especialmente en dar algunas recomendaciones acerca de la primera pregunta, espero poder aportar algunas recomendaciones para la segunda pregunda en un artículo posterior.
El primer lugar dónde podemos empezar a buscar respuestas acerca de la compatibilidad de las aplicaciones es en MSDN. En este sitio Microsoft ha publicado dos guías muy completas sobre las nuevas características de Windows ( Windows 7 Developer Guide: http://code.msdn.microsoft.com/Win7DeveloperGuide/Release/ProjectReleases.aspx?ReleaseId=1702 ) y sobre las consideraciones de compatibilidad de aplicaciones con esta versión (Windows Application Compatibility: http://msdn.microsoft.com/en-us/windows/aa904987.aspx ).
Este último en particular contiene el Application Quality Cookbook para Windows 7 http://msdn.microsoft.com/en-us/library/dd371778(VS.85).aspx y Windows Vista http://msdn.microsoft.com/en-us/library/bb757005.aspx
Uno de los primeros aspectos a evaluar sobre la compatibilidad con Windows 7 es si mi aplicación es compatible con Windows Vista. Si ya hemos hecho esta evaluación y la hemos pasado, estamos a más de la mitad del camino para garantizar que se va a comportar bien en Windows 7. Por esta razón es importante leer cuidadosamente ambas guías.
Si se encuentra en E.E.U.U. o en alguna área dónde exista un MCT (Microsoft Technology Center) o se puede desplazar hasta alguno, también es recomendable que evalué la posibilidad de asistir a un Windows Readiness Lab. Donde podrá profundizar sobre aspectos de compatibilidad directamente con personal de Microsoft; Desafortunadamente en el área de Latino América no existe un MCT.
Para aquellos que ya evaluaron la compatibilidad con Windows Vista hay dos aspectos claves que deben revisar sobre la compatibilidad con Windows 7:
· En primera instancia las aplicaciones y servicios que se retiraron del sistema operativo, entre los que se encuentran por ejemplo Windows Mail o él Microsoft Agent y sus componentes o Windows Registry Reflection; en este caso si estaban siendo utilizadas dentro de sus aplicaciones se debe evaluar el mecanismo que las va a reemplazar.
· Por otra parte estan los cambios en los comportamientos en los servicios y componentes del sistema operativo, entre los que se destacan los cambios en MSMQ en dónde ahora por defecto todos los mensajes de salida se firman con el algoritmo SHA2 e igualmente todos los de entrada deben estar firmados para procesarlos. Otro cambio se da en el nivel de protección sobre una gran mayoría de llaves del registro, especialmente las relacionadas con el servidor COM del sistema. En este tipo de caso se debe decidir si se puede configurar la aplicación para convivir con este comportamiento, que es la opción más recomendada o por el contrario si se debe configurar el servicio o el componente para soportar configuraciones previas que en todos los casos va en detrimento de la seguridad y confiabilidad de Windows 7.
Si aún no se ha evaluado la compatibilidad con Windows Vista, el camino es un poco más largo e incluye una serie de aspectos más críticos por revisar. Entre los más importantes están:
· UAC (User Account Control), que es la manera con la que Windows Vista y Windows 7 implementan el principio del menor privilegio de cara al usuario final y a las aplicaciones. En este caso las aplicaciones que funcionaban sin complicaciones en versiones previas, pueden sufrir problemas al intentar acceder a recursos privilegiados y este ser denegado explícita o implícitamente por el usuario. Con UAC todos los usuarios se ejecutan como un usuario estándar, aún si pertenecen a grupos privilegiados como administradores. Cuando una aplicación es marcada como requerida de elevación de privilegios, se le notifica al usuario para que dé el consentimiento. En este caso la aplicación debe estar preparada para manejar apropiadamente la solicitud de recursos y el manejo en caso de no contar con ellos.
· WRP (Windows Resource Protection ), que evita que las aplicaciones tengan acceso a recursos exclusivos del SO incluyendo archivos, carpetas y llaves del registro. En este caso muchos recursos del sistema solamente pueden ser modificados por procesos los servicios de instalación del propio Windows.
· IIS7, aunque Windows Vista y Windows 7 no son productos para soportar un ambiente de producción de un sitio web, si son una excelente herramienta para desarrollar aplicaciones para Windows Server 2008. IIS7 incluye una gran cantidad de funcionalidad nueva, pero también tiene cambios importantes en el soporte a funcionalidad propia de IIS5 especialmente lo relacionado con los filtros ISAPI, el modo de aislamiento de IIS 5 y el Internet Data Connector.
· Cuentas por defecto para los servicios y named pipes. En Windows Vista y Windows 7 muchos de los servicios que anteriormente se ejecutaban con LocalSystem ahora se ejecutan con LocalService y con NetworkService y adicionalmente el comportamiento sobre RPC y named pipes se restringió para evitar que si un servicio se ve comprometido se pueda propagar el ataque a otros.
· Session 0. En versiones previas de Windows, todos los servicios se ejecutaban en lo que se llamaba la sesión cero, con la primera sesión interactiva. En este modelo tanto servicios como aplicaciones interactivas se ejecutaban de manera conjunta. En Windows Vista y Windows 7 la sesión cero se aisló de la primera sesión interactiva para minimizar los ataques generados por código de aplicación.
Así como estos aspectos, muchos otros como los cambios en el Network stack o como la introducción de WFP (WindowsFiltering Platform), son importantes al evaluar aspectos que puedan evitar que las aplicaciones se comporten como lo venían haciendo en versiones previas de Windows.
Nuevamente es importante que le revisen la documentación disponible en MSDN y evaluar el impacto de cada uno sobre las aplicaciones.
Como suele suceder para finales del primer cuarto del año, este año asistí al MVP Global Summit en la ciudad de Seattle, Washington. Una reunión que a lo largo de los años me ha dejado experiencias personales y profesionales muy enriquecedoras. Este año me dejó las experiencias y lecciones más inolvidables y dificiles de digerir.
Como parte de ese viaje decidimos, con mi socio, visitar la ciudad de Vancouver en Canadá. Y como hacemos en algunas ocasiones llevamos nuestros portatiles, así como varias cosas de tecnología con nosotros. Aunque generalmente somos muy cuidadosos, esta vez algo falló y nos robaron las maletas que teniamos en la cajuela del carro mientras almorzabamos. Aparentemente esto es algo demasiado común en Vancouver, por el alto indice de drogadictos que buscan carros rentados, especialmente con placas de U.S. (algo que nos explicó la policia es que es mejor quitarles las etiquetas que van en los parchoques o en cualquier parte que dejen ver que es rentado), seguros que ahí encontraran cosas de valor (como tristemente fue en nuestro caso).
Aunque inicialmente pense que la situación iba a ser totalmente catastrofica porque recordaba que mi pasaporte con la VISA de Canada, la VISA de U.S., el formato I-94 se encontraban en mi backpack. Por un golpe de suerte mi compañero puso los papeles por error en una guantera del carrro (definitivamente algo raro pasaba ese día porque yo nunca me separo de mi pasaporte...).
Al final, la situación se resumió en dos maletas menos con todo su contenido (laptops, GPS, una cantidad de discos duros externos, y todos los gadgets que solemos cargar los amantes de la tecnología...).
Pero ahí empezó también nuestro otro gran dilema: "Que hay sobre la información en todos esos medios?"
Aunque precisamente por el tipo de trabajo que hago apoyando a las compañias en buenas prácticas asociadas a la tecnología, esperaba que la situación no fuera tan crítica, una serie de eventos se confabularon para que al menos perdiera unas 3 semanas de trabajo:
- Venia de dos viajes casi consecutivos de más de 10 días cada uno.
- La política de backup semanal había fallado constantemente antes de los viajes por espacio en el disco de destino.
- La política de backup diario estaba asociada a un disco portatil que también se perdió en el robo.
- La noche antes de viajar intenté hacer backup pero fallo nuevamente por espacio .
Aunque el riesgo de que puedan acceder a la información (information disclosure) en este caso es mínimo (siempre habrá opciones de todas maneras), la pérdida del trabajo total no la hemos terminado de estimar.
Esto me lleva a hacerles un par de recomendaciones especialmente dirigidas a los usuarios de portatiles:
- Establezcan políticas de backup que minimicen la cantidad de información nueva que no está protegida por periodos largos de tiempo.
- Dispongan siempre de espacio suficiente para cumplir con su política de retención de backups. En mi caso retengo solamente el backup inicial, el anterior y el que estoy realizando, pero un crecimiento explosivo en el tamaño de los archivos hizo que no se pudiera terminar el nuevo backup. En este viaje ya llevaba una solución entre manos incluso antes de que nos robaran había comprado el Disco Maxtor OneTouch™ III Turbo Edition para solucionar mi problema de backups personales.
- Los backups tienen múltiples objetivos, no enfoque sus backups con uno solo. Bien sea para protegernos contra fallos de hardware, contra acciones involuntarias o malintencionadas sobre la configuración dle sistema operativo o las aplicaciones, o como en este caso ante la pérdida del equipo, al final lo que debe garantizar es tener la información disponible ante cualquier evento. En mi caso cargar el otro disco con el backup diario en la misma ubicación con el laptop, fue un error grave, principalmente porque enfoque el backup solamente como un medio de protección contra fallos de hardware.
- Utilicen diferentes tipos de backup.
- Si va a viajar haga backup antes que cualquier cosa, no lo deje para último momento cuando algo puede fallar y no va a tener tiempo para solucionarlo.
- Minimice el uso de tarjetas de almacenamiento portátiles (memorias USB, external H.D.D., SD, CF, etc), como medio de almacenamiento definitivo. Estas tarjetas son principalmente para transferir información, no para guardarla definitivamente. En mi caso se robaron un par de tarjetas, una SD (que solo usaba para ReadyBoost ), y otra USB que utilizo para transportar archivos, por lo que no tenia nada.
- Proteja sus discos con mecanismos de autorización y encripción adecuados. Windows Vista y Windows 7 permiten encriptar sus discos con BitLocker o por ejemplo herramientas como TrueCrypt, ambos permiten encriptar sus discos sin tener una disminución apreciable en el rendimiento. En el caso de Windows Vista la única limitación es que el equipo debe tener un dispositivo TPM (Trusted Platform Module), en Windows 7 uno de los cambios más importantes en esta área es precisamente que ya no se necesita un dispositivo TPM.
- No almacene contraseñas, así sea en su propio computador.
Saludos, desde mi nuevo portátil.
P.D. Si alguién les ofrece un portatil Hp tx2022us de serie 13YL, no lo compren, por favor haganmelo saber (this is a small world, belive me).
Actualización: Esto también aplica para Windows 7
Recientemente compre una máquina que viene preinstalada con Windows Vista de 64 bits. A diferencia de otras ocasiones, decidí dejar esta versión y probar todo mi entorno de desarrollo con esta configuración.
Aunque he tenido algunos problemas, en general la experiencia no ha sido tan traumática como me imaginaba.
Uno de los problemas que he tenido es con el panel de la grabadora de pruebas web (Web Test Recorder) de Visual Studio Team Test. Aunque probé en primera instancia utilizando la elevación de privilegios de Windows Vista, la barra no aparecía en I.E. (para poder ejecutar la grabadora en Windows Vista es necesario iniciar Visual Studio con permisos de Administrador utilizando UAC).
Investigando un poco al respecto descubrí que Internet Explorer mantiene un caché con la lista de las barras disponibles. La solución es forzar la regeneración de ese caché.
Para esto hay que seguir un procedimiento muy sencillo:
- Cerrar todas las instancias de I.E. (Es mejor asegurarse con el administrador de tareas).
- Eliminar las siguientes llaves del registro:
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \Discardable\PostSetup\Component Categories\{00021493-0000-0000-C000-000000000046}
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \Discardable\PostSetup\Component Categories\{00021494-0000-0000-C000-000000000046}
- Iniciar Visual Studio con privilegios de administrador (hacer clic con el botón derecho sobre el icono y seleccionar Ejecutar como administrador)
- Abrir o crear el proyecto de pruebas
- Iniciar la grabación de una nueva prueba web.
- Si todavía no lo muestra revisar que el Add-on (complemento) este habilitado en I.E.
Curiosamente después de ejecutar este procedimiento he podido grabar nuevas pruebas sin ejecutar VS con privilegios de administrador.