2. Agenda Modelos y Oslo MSchema MGrammar ¿Para qué nos sirve Oslo? Conclusiones
3. Modelos de aplicaciones Ejemplo de un modelo: HTML Ya trabajamos orientados a modelos: Configuración de un archivo XML Frameworksdinámicos Abstracción Lenguaje común
4. Oslo OSLO == Plataforma de modelado Simple, 3 conceptos: Repositorio de modelos Lenguaje de modelado Quadrant, herramienta gráfica para modelado
6. ¿Qué es M? Lenguaje funcional para definir modelos de dominios Definen esquemas y consultas Meta-Meta-Data Lenguaje para definición de DSLs MGrammar Qué NO ES: Lenguaje orientado a Objetos Tecnología de acceso a datos Reemplazo de T-SQL No representa comportamiento, representa MODELO No actualiza datos, pero asume que pueden cambiar externamente
8. Domain SpecificLanguages(DSL) Focalizado en un área o dominio Optimizado para ese dominio Hasta ahora: Dificultad para crear la gramática del lenguaje Parser para ese lenguaje MGrammarapunta resolver esto, además de brindarherramietnasparatrabajarlo. MGrammarpermite crear DSLs M esun DSL, de hechosugramáticaestádefinida en MGrammar
10. ¿Para qué nos sirve Oslo? Generar lenguajes fácilmente En este momento, no mucho más, pero.. Mentity Mservice Mweb
11. Conclusiones Oslo es una plataforma de MODELADO M no es un lenguaje más de construcción de aplicaciones Esta en CTP y le falta un toque de horno. Empezar a pensar en modelos
13. Referencias Oslo Development Center: http://msdn.microsoft.com/en-us/oslo/default.aspx Microsoft "Oslo" - May 2009 CTP: http://tinyurl.com/OsloMayCTP NHModeller: http://nhmodeller.selfip.com/
135 = 1 minutoLa agenda no apunta a que sean programadores expertos de M cuando salgan de acá. Con que hayan comprendido mas o menos qué es Oslo, a donde apunta y qué componentes tiene, me doy por satisfecho. Esto lo digo porque hay mucha gente que sigue con muchísimas dudas de qué es lo que se busca y cómo planean lograrlo, incluso yo Por lo tanto, vamos a comenzar charlando de porqué la palabra Modelo se usa tanto y cómo la planea usar Oslo. Después vamos a ver 2 demos, de las principales características del lenguaje M en las que veremos como interactúan las herramientas que hay en el CTP. Y por último, voy a contarles algunas de los usos en los que está pensando Microsoft y que quizás a nosotros se nos ocurran algunos adicionales.
264 = 2 minutosQué es un modelo y para qué sirve? Básicamente, es la descripción de un escenario o dominio específico. Por ejemplo, los autos tienen modelos, pero si uno los quiere con aire acondicionado, negros o con levanta vidrios eléctricos, es el mismo modelo pero con pequeñas diferencias generadas en el momento que se compra. Esto no podría decirse que es básicamente lo que pasa con las aplicaciones, que actúan en runtime según un modelo especificado en la configuración, y que en base a ésta actúan de manera distinta?Laaplicación de modelos a aplicaciones no es algo nuevo. Quién tuvo alguna vez que generar un framework que leyera un XML y generar estructuras que luego procesara? O quién usa un browser para navegar en internet? El HTML es un modelo, que el browser interpreta para generar lo que se ve. De hecho, HTML es un lenguaje específico para la descripción de contenido web. Ya el uso de los viejos archivos .ini en aplicaciones visual basic, ya era un concepto de modelado. La aplicación actuaba en runtime, acorde a la instancia del modelo existente. Esto cada vez se ha ido incrementando, por ejemplo, con el uso de XAML para tecnologías como Silverlight o WPF, donde además de indicar qué controles y su apariencia se utilizan, se pueden bindear con estructuras de datos generadas en runtime.Los modelos básicamente buscan agregar un nivel mayor de abstracción a una problemática determinada. A su vez, es posible que se pueda definir un lenguaje específico para tratarlo, brindando mayor objetividad en los conceptos y un mayor entendimiento con menos palabras.
201 = 2 minutosOslo es la futura plataforma de modelado que Microsoft está construyendo. Apunta a ser la base de muchas tecnologías, teniendo como objetivo principal lograr una ganancia de la productividad de 10x. Esto plantea hacerlo al reducir considerablemente la cantidad de código escrito al utilizar lenguajes más específicos para ciertas tareas, como así también simplificando la creación de estos lenguajes.Esto es visible, si consideramos el ejemplo del framework de UI. En este se definía un lenguaje, o sea, la estructura del XML que leia. Luego se generaban diversas instancias de ese modelo, o sea, cada formulario con sus campos a mapear. Todo esto se analizaba y era generado en runtime, sin necesidad de codificación adicional. Por otro lado, la definición del XML es mucho menos costosa que la escritura del código necesario. Esto muestra fácilmente cómo se incrementa la productividad.Oslo se basa en 3 conceptos básicos: el repositorio, donde se guardan los modelos generado, el lenguaje usado para generar estos modelos y los lenguajes necesarios para generarlos, y una herramienta gráfica que simplifica esta tarea. En esta charla no la vamos a ver, somos desarrolladores por naturaleza y eso de programar con cajitas y lineas es para los diseñadores ;-)
176 = 1.5 minutosComo les comentaba recién, Oslo se basa en 3 componentes: repositorio, lenguaje de modelado y una herramienta gráfica. Con esto busca lograr lo necesario para que luego sea consumido por los runtimes que lo usarán.Aquí me voy a centrar en el framework de lenguaje M. El lenguaje en realidad es un conjunto de lenguajes. En primera instancia tenemos Mschema, que se encarga de definir la forma que tendrán los modelos. Nos permite definir los tipos de datos y sus relaciones, como así también los diversos repositorios en que se persistirán. Luego tenemos Mgrammar, que nos permite definir lenguajes que generarán en definitiva, modelos pausibles de ser contenidos en el repositorio. Este lenguaje tiene un parser de tipo GLR, por lo que posibilita la interpretación de lenguajes naturales. La salida que se genera a partir de un texto de entrada, es un gráfico que define cómo se albergará esa información en el repositorio.El repositorio es hoy por hoy SQL 2008. La idea es que M sea agnóstico del repostorio, pero bueno, ver para creer
Abrir intellipadCrear móduloCrear tipo LibroAgregar IdentityAgregar un campo nulleable (Paginas)Agregar el extent de Autores y agregar una property a LibroCrear el extent de LibrosMostrar la generación del SQL en modo T-SQL PreviewAgregar un campo enum al tipo (idioma) y una función LibrosEnCastellano()CompilarCargar el modelo a la DBMostrar los datos en la tabla y la vista
149 = 1.5 minutosBueno, qué es un DSL? Ya lo habrán sentido nombrar más de vez. No son más que lenguajes que se usan en un dominio específico, pudiendo ser tan simples como los viejos archivos .INI que definían configuración, como un modelo de clases en VS que luego se convierte en las clases correspondientes.Alguien alguna vez armó un framework para mapear controles de UI a entidades, definiendo, por ejemplo, un XML?O alguien usó Nhibernate? O Linq2SQL o Entity Framework?Bueno, todos estos son ejemplos de DSLs. Son lenguajes específicos que definen un comportamiento en base al modelo descripto en el XML.Oslo plantea simplificar la tarea de construcción de estos lenguajes. Para esto provee una plataforma para la generación de estos DSLs, que luego podrán generar los modelos necesarios que se guardarán en el repositorio.Esto está basado en Mgrammar, parte del stack de M que habíamos visto anteriormente.
1) Abrir Intellipad y mostrar las ventanas de Grammar, input y output2) Generar el lenguaje base que tiene sólo una sintaxis3) Generar tokens y sintaxis del lenguaje con el lenguaje mínimo4) Agregar el soporte de multiples nombres5) Agregar el soporte de nombres con espacios y Comillas6) Permitir más de 1 instancia7) Generar proyecciones8) Compilar la gramática9) aplicar la gramática a los datos10) compilar el M11) instalar en el repositorio
80 = 0.5 minutosComo decía antes, muchos problemas para la generación de estos lenguajes estaba en la complejidad de definir un lenguaje, su parser y su interrelación con la plataforma. Oslo plantea colaborar en disminuir esta diferencia.Cómosigue esto? Recién empieza, en mi opinión. WCF, WPF, WF, EF, ASP.NET, todos tienen un DSL propio que define el modelo que usan para generar la aplicación en runtime. Todo esto es traducible a un DSL por medio de Mgrammar, definiendo un modelo con Mschema.