Una de las preguntas más frecuentes con la que me he encontrado en estos últimos meses al respecto de Oslo es la de si Microsoft desarrollará alguna aplicación de ejemplo que muestre todo su potencial.
En mi opinión, la respuesta a esta pregunta es No. Antes de que nadie me crucifique, me explico: Con esta respuesta no quiero decir que desde Microsoft no vayamos a esforzarnos por ofrecer ejemplos y escenarios concretos en los que se demuestren los beneficios del uso de las diferentes tecnologías que forman parte de Oslo (algo que ya estamos haciendo), sino que por la propia concepción y naturaleza de la plataforma, es imposible abarcar “todo” el potencial que Oslo nos puede ofrecer.
Entre estos beneficios, se encuentra la productividad en nuestros desarrollos. Dentro del equipo, tenemos para la primera versión de Oslo (v1) un objetivo bastante ambicioso, al cual denominamos “10X”. Es decir, conseguir igual o más que hasta ahora, con la décima parte de esfuerzo. Al hablar de “esfuerzo”, nos estamos refiriendo a algunas métricas bastante tradicionales en el mundo del desarrollo software, como por ejemplo “LOC”, tiempo de desarrollo, etc.
Sin embargo, no sólo de productividad vive el desarrollador, ¿verdad? Por ello, en nuestro equipo también tenemos en cuenta otros beneficios deseables para nuestros desarrollos. Por ejemplo, la mantenibilidad del código, la agilidad para responder a cambios en la lógica o en los requerimientos de nuestras aplicaciones, etc.
Pensemos en metodologías de desarrollo ágiles, tan de moda hoy en día, aplicadas en proyectos cuyos requerimientos están sujetos a cambios frecuentes, metodologías en las que es imprescindible que “la voz” de nuestros clientes llegue de forma inmediata y unívoca, libre de ambigüedad, al equipo de desarrollo del proyecto… ¿No sería ideal que dicho cliente fuera capaz de expresarse en un lenguaje específico de su dominio, y que dicho lenguaje fuera también perfectamente entendible por los desarrolladores? Existen gran cantidad de mecanismos y diagramas para captar estos modelos, sin embargo, tradicionalmente hemos empleado estos modelos en las primeras fases de nuestros desarrollos y, eventualmente, en las últimas fases de los mismos, pero… ¿qué sucede con las fases intermedias? (generalmente, las de mayores costes y riesgos en nuestros proyectos…). Como ya hemos comentado en otras ocasiones, uno de los objetivos de Oslo es convertir los modelos en un elemento central de todas y cada una de las fases de nuestros desarrollos.
Efectivamente, se trata de una apuesta bastante ambiciosa y, al mismo tiempo, muy amplia. Existe una gran cantidad de dominios en los cuales Oslo puede ser aplicable y, por ello, a todos y cada uno de los miembros del equipo nos encanta la posibilidad de que vosotros, desarrolladores, arquitectos, jefes de proyecto…, en general, miembros de la comunidad técnica, nos ayudéis a explorar estas posibilidades.
Para poder ir de la mano en esta “aventura”, nuestra intención es tener un contacto directo y continuo con la comunidad, compartir nuestra visión, escuchar vuestras opiniones y ver hasta qué punto sois capaces de elevar el potencial de Oslo en diferentes dominios, para conseguir alcanzar nuestra meta: 10X.
En estos casi cuatro meses transcurridos desde el PDC 2008, hemos publicado dos CTPs (Octubre 2008 y Enero 2009), que incluyen una gran cantidad de ejemplos, estamos actualizando diariamente nuestro MSDN Oslo Developer Center, con artículos y ejemplos creados por miembros del equipo, así como por miembros de la comunidad, etc.
En esta línea, hemos querido recopilar una galería de gramáticas, para describir DSLs, creadas con MGrammar, y aplicadas a diferentes dominios, desarrolladas por nuestro propio equipo y también por miembros de la comunidad ténica. Echando un vistazo a la lista de gramáticas incluidas en esta colección, podréis haceros una idea del gran abanico de posibilidades que Oslo nos ofrece:
- “A”: Un lenguaje sintácticamente similar a VB que nos permite componer aplicaciones creadas bajo el uso del patrón MVC. Forma parte de la CTP de Enero.
- XLANG: Gramática que nos permite trabajar con XLANG, el lenguaje de orquestaciones empleado en BizTalk.
- MisBehave: Gramática para reconocer historias y escenarios empleadas en el paradigma BDD (Behavior-Driven Development).
- bdUnit: Otra DSL creada con MGrammar que nos permite traducir “user stories” a pruebas unitarias en lenguaje C#.
- WatiN Browser Automation Library: DSL para trabajar con esta librería de automatización.
- State Machine: DSL para la definición de máquinas de estados.
- Natural Language Dates: DSL que nos permite trabajar con fechas empleando lenguaje natural (“today”, “tomorrow”, “two weeks ago”, etc.)
Estos son tan sólo mis ejemplos favoritos de gramáticas desarrolladas hasta el momento, además de aquellas que podéis encontrar en la CTP de Enero y el resto de las publicadas en la colección que hemos recopilado.
¿Alguien se anima a explorar nuevas posibilidades? 🙂