Blog de Miguel Llopis

January 2009 - Artículos

Publicada la CTP de Enero de 2009 de Oslo

Último viernes de este mes, última tarea de la semana… CTP de Enero de Oslo disponible públicamente para descarga en el MSDN Oslo Developer Center!

Vale, lo cierto es que lleva ya unas horas “viva” y he sido yo quien ha dejado para el último momento del día este post… :)

Se trata de la segunda CTP de Oslo, tras la liberada durante el último PDC, a finales del mes de Octubre de 2008.

¿Qué novedades incluye esta CTP?

Fundamentalmente, unos cuantos bugfixes en base al feedback recibido durante estos tres meses. Además se han realizado algunas modificaciones e incrementos funcionales:

  • Mejoras para definir gramáticas con MGrammar que resultan mucho más intuitivas de cara al desarrollador. (Token Actions)
  • Nuevas construcciones sintácticas de MGraph soportadas a la hora de definir gramáticas para simplificar este proceso.
  • Métodos adicionales a la hora de trabajar con colecciones: Count, Choose, Distinct, All, Exists…

Herramientas incluídas en la CTP

  • SDK
    • Integración con Visual Studio 2008 para editar y generar artefactos con lenguaje M.
    • Intellipad: Un editor de texto bastante ligero y totalmente integrado con las funcionades que M nos ofrece (traducción a T-SQL, etc).
    • Compiladores para el lenguaje M.
    • Mx.exe: Utilidades para línea de comandos que nos permiten importar y exportar modelos a SQL Server 2008.
    • Add-in para Excel 2007: Nos permite visualizar en hojas de cálculo colecciones de tablas generadas con M.
  • Documentación:
    • Especificación formal del lenguaje M.
    • Glosario de primitivas del lenguaje M.
    • Documentación adicional de ayuda y referencia.
  • Ejemplos:
    • Gran cantidad de modelos creados con M.
    • Ejemplo para ilustrar la forma en que funciona el parser de M.
    • Escenario completo de integración de modelos desarrollados con M y SQL Server Integration Services.
    • Código fuente de los modelos creados con M mediante los cuales se modela propiamente Oslo.
  • Herramientas para trabajar con el repositorio:
    • CreateRepository.exe: Una herramienta que nos permite crear nuestro repositorio de modelos en SQL Server 2008.
    • Models.mx: Imagen compilada de los modelos utilizados para desarrollar Oslo.
    • Mx.mx: Imagen compilada con modelos adicionales para Mx.exe.

Para más información podéis consultar las Release Notes.

Próximamente nuevos posts con ejemplos, reflexiones y vídeos sobre Oslo!

Enjoy!!

Posted: 31/1/2009 6:30 por Miguel LLopis | con no comments |
Archivado en: ,
MSDN Oslo Developer Center: Primeros contenidos en Español

Hoy ha sido publicado en el MSDN Oslo Developer Center el primer contenido en lengua castellana. Se trata de un artículo titulado “Oslo y el desarrollo basado en modelos” que escribí para el número de Diciembre de la revista dotNetMania. Podéis acceder al contenido a través del siguiente enlace: http://msdn.microsoft.com/es-es/library/dd367845.aspx

image

Próximamente habrá más (y mejores) contenidos en nuestra propia “DSL Española” en el Oslo Developer Center. ;-)

Por último, me gustaría agradecer a la revista dotNetMania, personalizando en su editor Paco Marín y en su redactor jefe Marino Posadas, su colaboración para que este artículo haya podido ser incluído en MSDN. En general, a todos los profesionales que colaboran o han colaborado en la revista, enhorabuena por vuestro genial trabajo y excelente nivel de contenidos.

Happy Weekend!!

Posted: 23/1/2009 23:26 por Miguel LLopis | con 4 comment(s) |
Archivado en:
Datos o metadatos, esa es la cuestión

En un post anterior acerca del lenguaje M, se planteó una duda en los comentarios acerca de qué relación guarda M con las tecnologías ORM, empleadas para el mapeado de datos de tipo relacional. Lo cierto es que el lenguaje M cubre una gran cantidad de necesidades diferentes (tanto en cuanto es modular y cada módulo ya desarrollado aborda diferentes problemas) y proporciona una serie de herramientas que posibilitan la creación de nuevos lenguajes específicos de dominio (DSL) que permiten describir modelos. Si bien, no es en sí mismo una tecnología que vaya a reemplazar a ningún ORM empleado en la actualidad. Al menos no es esa la intención, ni tampoco será la tendencia más generalizada.

No obstante, considero interesante puntualizar algunos aspectos ya que a menudo cuando hablamos acerca de Oslo surge cierta confusión en el público. Esta confusión viene según mi percepción causada por dos motivos principales. El primero de ellos es el hecho de que Oslo esté diseñado en un nivel de abstracción superior al de la mayoría de sistemas actuales, por tanto su ámbito es muy amplio y tendrá un impacto importante en prácticamente cualquier producto de desarrollo de Microsoft... y sino al tiempo...  Podéis apostar sobre seguro acerca de esto último, yo ya lo he hecho. Debido a la propia amplitud y elevada abstracción de este concepto, resulta en ocasiones complejo percibirlo con exactitud.

El segundo motivo de confusión principal es consecuencia directa de esta naturaleza abstracta de Oslo. Cuando hablamos en Oslo acerca de determinados conceptos como lenguajes, modelos, repositorio, etc. estamos empleando términos que han sido definidos ya en multitud de ocasiones para niveles de abstracción inferiores. Hablando en términos OOP, al emplear este vocabulario hablando sobre Oslo estamos redefiniendo métodos de una clase base que ya han sido definidos durante años en las clases derivadas de ésta. En este sentido, mi recomendación es que tratéis de olvidar todo cuanto os han enseñado en este ámbito, ya que muchos de esos conceptos asimilados en el pasado están basados en una visión miope del espacio. No obstante, una vez nos hayamos familiarizado con la jerga de Oslo, percibiremos el uso de estos términos como algo natural, e incluso comprenderemos mejor su significado para dominios más concretos.

Otro de los comentarios en dicha entrada hacía referencia al hecho de que Oslo "no es para nada algo nuevo". Bien, en este sentido, argumentaré que de hecho Oslo no es algo completamente nuevo. Es más, me compadezco de cualquier presunto avance tecnológico que sea totalmente nuevo. Obviar tecnologías previas y aproximaciones a problemas ya propuestas es uno de los mayores defectos en Ingeniería, puesto que limita la capacidad de análisis en la validez de nuestra propia solución. Más allá de esta consideración, lo cierto es que Oslo toma prestadas muchas ideas sobre herramientas previas en el campo del desarrollo dirigido por modelos (MDD) y a dichas ideas añadimos un plus de funcionalidad y una vuelta de tuerca, basada en años de investigación propia y, por supuesto, influenciada por la comunidad investigadora en el ámbito MDD. Oslo trata de dar un enfoque coherente con las tecnologías y herramientas actuales y una visión evolucionada sobre el desarrollo de software, combinando partes muy diversas que han estado tradicionalmente desconectadas y que además entrañan una serie de dificultades de conexión, la combinación efectiva de todas estas piezas proporciona "un todo" mucho más potente, eficiente y adaptativo, aplicable a cualquier tipo de entorno de desarrollo. Sobre esto último me he propuesto convenceros en los próximos meses y años, así que prepararos para ver muchas, muchísimas, entradas al respecto de este tema. :-P

Tras esta introducción al contexto del post, ahí va mi pequeña historieta. Espero que sea en cierto grado explicativa.

A menudo vienen a mi cabeza recuerdos de mis primeros años de carrera. En realidad, no ha pasado demasiado tiempo desde eso, e incluso se podría decir que casi fue ayer cuando comencé en 1º de Informática (allá por el año 2002). Tras unos cuantos años en las aulas y muchas más horas de aprendizaje autodidacta y momentos excepcionales en la cafetería, vuelvo a plantearme algunas de esas preguntas, debates y conceptos un tanto dogmáticos que en aquellos primeros maravillosos años me hicieron asumir.

Uno de estos dogmas gira en torno a la diferencia entre datos y metadatos. Generalmente, a la hora de abordar esta cuestión, solemos encontrarnos con dos tipos diferentes de respuestas, o dos enfoques diferentes para una misma respuesta: "existe una gran diferencia entre datos y metadatos". En mi modesta opinión, uno de los enfoques es ambiguo, y el otro es erróneo.

El primero de estos enfoques hace referencia al tipo de información contenida por nuestros datos y por nuestros metadatos. Tradicionalmente, podemos definir el término "datos" como "conjunto de información [estructurada]" y "metadatos" como "datos que contienen información sobre otros datos". Hasta aquí, imagino que todos estaremos de acuerdo. Ahora bien, esta definición es bastante ambigua puesto que, en muchas ocasiones, una misma información puede ser dato o metadato en función del enfoque que estemos empleando. Por ejemplo, si estamos manejando información sobre películas, el título de una película es un dato; no obstante, dicho título (probablemente) aporte información acerca del argumento o tipo de película en cuestión. Por tanto, en este caso el título de dicha película podría considerarse al mismo tiempo un metadato. Como vemos, la frontera conceptual no está muy clara en esta primera aproximación.

La segunda aproximación de la respuesta pasa por considerar la frecuencia con la que empleamos estos datos. Esta aproximación está muy extendida y parte de la premisa de asociar los conceptos de "datos" y "datos transaccionales", tratándose de datos que utilizamos continuamente, en contraste con los metadatos que consultamos con bastante menor frecuencia. Adicionalmente, se suele asociar el concepto de metadatos con datos de sólo lectura, mientras que los datos transaccionales son aquellos que modificamos a menudo. Esta respuesta va incluso más allá, afirmando que esta diferencia no es tan sólo evidente, sino que además determina de qué forma deberemos acceder a nuestros datos y metadatos: "Los conjuntos de metadatos se rigen por patrones de acceso diferentes", he escuchado decir en alguna ocasión... Personalmente, y perdonadme por la expresión, esto me parece una auténtica chorrada. No podemos clasificar datos en función de su uso, en lugar de hacerlo propiamente por el tipo de éstos. Ya que, incluso en el hipotético caso de que asumiéramos este método como válido, estaríamos incurriendo nuevamente en una grave relajación de la frontera conceptual de ambos términos. Por ejemplo, consideremos una factura detallando el coste de una serie de materiales empleados para la construcción de un coche. Para el Ingeniero, la factura es un dato de tipo transaccional. No obstante, para el gestor de recursos, el coste de cada material es un metadato "de sólo lectura" que deberá considerar a la hora de realizar nuevos pedidos o diseñar el plan de producción.

Como podemos ver, ninguna de ambas aproximaciones es suficientemente esclarecedora, lo cual puede inducir a malentendidos graves en caso de asumir alguna de ellas. En mi opinión, el principal problema surge de la creencia de que existe la necesidad de clasificar diferentes tipos de datos, cuando realmente lo que existe es la necesidad de comprender cuándo y cómo emplear uno u otro. Me gustaría ir más lejos en este razonamiento y argumentar que, hablando en términos de almacenamiento y consulta de datos, serialización y transferencia de los mismos, así como el resto de cuestiones que realmente importan en el desarrollo de software de tipo empresarial, todos los datos son datos al fin y al cabo (valga la redundancia), y por ello no existe motivo realmente justificable para tratarlos de diferente forma desde el punto de vista de la arquitectura de nuestro sistema. De este modo, es probable que tengamos modelos primarios y modelos secundarios, modelos protegidos y modelos compartidos, pero al fin y al cabo todos ellos son modelos cuya finalidad es representar el comportamiento de nuestro software, y por supuesto la forma de acceder a ellos e incluso de modificarlos es exactamente idéntica. Tan sólo encontraremos diferencias en el propósito último de este proceso (finalidad con que consultamos dichos datos), pero no en su metodología.

En este sentido, en el equipo de Oslo nos hemos preocupado por ofrecer un amplio conjunto de herramientas que proporcionan capacidad más que suficiente a nuestros usuarios para (por este orden) describir una serie de datos o información, validar dichos datos, poder modificarlos, almacenarlos en un repositorio "in the cloud", y a través de dicho repositorio ser capaz de acceder nuevamente a ellos y también compartirlos. Los escenarios fundamentales en que contemplamos el uso de Oslo ahora mismo consisten en la definición de modelos y datos que describan los entornos de ejecución (runtimes) en los que ejecutar nuestro software. Sin embargo, este escenario no es el único en el que veremos presencia de Oslo con el paso del tiempo ya que, por una parte, las ambiciones del proyecto involucran además otra serie de escenarios y, por otra parte, la arquitectura y diseño del sistema permite la extensibilidad de este concepto.

De todo esto y más os hablaré en próximas entradas.  

Posted: 19/1/2009 23:16 por Miguel LLopis | con no comments |
Archivado en:
El comité de inauguración de la Presidencia de Obama será retransmitido a través de Silverlight

Para todos aquellos interesados en seguir la ceremonia de inauguración de la presidencia de los EEUU de Barack Obama, el evento será retransmitido el martes 20 de Enero a través de la web oficial "Presidential Inaugural Commitee". La nota técnica de esta noticia radica en el hecho de que la tecnología de streaming de vídeo empleada para retransmitir el evento no es otra que Silverlight 2.0, podéis encontrar más información en el siguiente enlace.

De esta forma, el evento se unirá a la lista de "grandes eventos" a nivel mundial que se han podido seguir online mediante Silverlight, en cuya lista destacan también los JJOO de Beijing celebrados el pasado mes de Agosto.

Yes we can!

Posted: 19/1/2009 22:17 por Miguel LLopis | con no comments |
Archivado en:
Software Engineering Radio [Episodio 123]: Microsoft OSLO con Don Box y Doug Purdy

En el último episodio de Software Engineering Radio, Don Box y Douglas Purdy (quienes llevan trabajando en este proyecto desde sus inicios, allá por el año 2005) ofrecen una visión general acerca de la plataforma y posteriormente hablan de la relación entre Oslo y otros enfoques en el ámbito de DSL/Model-Driven como DSL Tools, sobre los diferentes módulos que componen M, y algunas formas en que Oslo podría dotar de valor añadido a las tecnologías MD existentes en la actualidad. Pinchad en el banner para acceder al podcast.

Enjoy!

Posted: 17/1/2009 0:14 por Miguel LLopis | con no comments |
Archivado en:
Los 25 errores de programación más peligrosos

Hace un par de días me encontré por la web con un interesante documento de investigación en el cual se enumeraban los 25 tipos de errores con un mayor riesgo potencial de provocar vulnerabilidades en nuestro software.

El documento se puede encontrar directamente aquí y contiene descripciones bastante apropiadas sobre diferentes vulnerabilidades "clásicas" como por ejemplo SQL injection, cross-site scripting, OS injection, validación de la entrada de nuestros programas... así como otras no demasiado obvias a priori. También contiene tácticas de prevención para cada una de ellas, desde el punto de vista arquitectural y de diseño, y también en cuanto a implementación.

Espero que disfrutéis con su lectura tanto como he disfrutado yo (sé que puede sonar mal, pero estos errores vistos en código ajeno pueden resultar hasta divertidos, jeje), y en cualquier caso es una buena fuente resumida a la que acudir en caso de emergencia...

Un saludo.

Posted: 15/1/2009 6:23 por Miguel LLopis | con 3 comment(s) |
Archivado en:
Primer post de 2009: Top 10 de eWeek de productos para el desarrollo de aplicaciones en 2008

¡Feliz año nuevo a todos! Con un día de retraso sobre mi calendario previsto (debido a mis queridos amiguetes de Iberia) vuelvo a retomar el blog con las pilas cargadas y dispuesto a contaros muchas cosas acerca de tecnologías Microsoft en general, del desarrollo basado en la nube en particular y de Oslo en concreto.

Puesto que el 2008 ha sido un año cargado de novedades a nivel tecnológico, creo que es de recibo echar un vistazo a algunas de ellas, y qué mejor forma de hacerlo que repasando la lista Top 10 de eWeek, donde enumeran las 10 tecnologías a su juicio más relevantes para el desarrollo de aplicaciones que han aparecido en 2008. Son éstas:

  1. Windows Azure: Qué decir sobre Azure que no hayáis escuchado/leído ya... El primer sistema operativo de Microsoft basado en la nube, y orientado al desarrollo empleando "building-block" services vio la luz en el pasado PDC 2008, en el mes de Octubre. Se trata de uno de los pilares de la denominada "Cloud Strategy" en la cual, desde su llegada como Software Architect a Microsoft, ha puesto gran parte de sus esfuerzos Ray Ozzie.
  2. Google App Engine: Encontramos en el segundo puesto de esta lista la nueva tecnología de Google que permite albergar nuestras aplicaciones web en servidores de Google, facilitando de esta forma la escalabilidad de las mismas.
  3. Amazon CloudFront: El nuevo servicio web de Amazon para la integración de contenido distribuido ocupa una meritoria tercera posición en la lista.
  4. Flash 10: La nueva versión de este viejo conocido de todos nosotros incorpora mejoras en el nivel de expresidad de la API para la creación de formas geométricas, mejoras de rendimiento en contenidos y efectos 3D, entre otras novedades. Este hecho les ha valido para alcanzar la 4ª posición de la lista.
  5. JavaFX: Primera aproximación de Sun al mundo de las RIA, calificada por el propio CEO de Sun, Jonathan Schwartz, como "una de las tecnologías más importantes que veremos por parte de Sun en un futuro próximo y medio".
  6. Adobe "Thermo" (Adobe Flash Catalyst): Herramienta para diseñadores de Flash que les permite "convertir" sus diseños en aplicaciones sin la necesidad de escribir código fuente.
  7. Silverlight 2: El puesto número 7 de la lista corresponde a la segunda versión de Silverlight, la apuesta de Microsoft para el desarrollo de RIA y gestión de contenidos multimedia en Internet.
  8. Spring DM Server: Servidor de aplicaciones Java basado en OSGi, de tipo modular, desarrollado por la empresa SpringSource.
  9. Microsoft Oslo: Primera oleada de tecnologías que constituirán la plataforma de modelado software de Microsoft, está compuesta por tres elementos fundamentales: un lenguaje textual de modelado (lenguaje M), una herramienta visual de modelado (Quadrant) y un repositorio relacional de modelos (sobre SQL Server 2008, pero extendible a cualquier origen de datos como veremos en próximos posts).
  10. Apple iPhone SDK: Cierra la lista esta SDK de Apple, que permite desarrollar aplicaciones para iPhone e iPod Touch y también incluye un simulador de iPhone para poder probarlas.

Una vez repasada la lista, mis conclusiones... Creo que la lista es un fiel reflejo de la tendencia que en 2007 y especialmente en 2008 hemos podido observar hacia la nube. Si hacemos un recuento de estas 10 tecnologías, 3 de ellas permiten alojar en la nube nuestras aplicaciones, otras 4 son tecnologías (o herramientas) para el desarrollo de aplicaciones RIA, otra permite la integración de contenidos distribuidos mediante el uso de un WS, y por últimos encontramos la SDK de iPhone como representante del desarrollo para dispositivos móviles (si existe un complemento intrínseco del concepto de nube, es la ubicuidad que el uso de diferentes dispositivos nos proporciona) y también Oslo, parcialmente relacionado con tecnologías cloud, por el uso de un repositorio en la nube para compartir y reutilizar modelos.

Desde otra perspectiva, vemos que la compañía con mayor presencia en la lista es Microsoft (3), seguida de Adobe (2) y de Google, Amazon, Sun, SpringSource y Apple (todas ellas con 1). Hecho en falta, sin embargo, la presencia de Live Mesh y su API de desarrollo en esta lista, por citar un caso concreto.

Por último, "nos llena de orgullo y satisfacción" el hecho de que Oslo aparezca en este selecto grupo, teniendo en cuenta que apenas os hemos mostrado gran cosa por el momento, más allá de una primera CTP, unas cuantas charlas y artículos, etc. Aún así, confío en que se trate de un buen adelanto de lo que el 2009 nos deparará en torno a Oslo... Como bien dijo el gran filósofo chino Lao-Tsé: "Un viaje de mil millas comienza con el primer paso"

Al mismo tiempo, aprovecho para agradecer el feedback y comentarios que muchos de vosotros me estáis enviando, es realmente útil y me ayuda a "modelar" el mensaje/s acerca de Oslo, ¡gracias!