lunes, 3 de mayo de 2010

Camino a la cuarta generación del desarrollo software: Desarrollo Dirigido por Modelos y su aplicación con la tecnología Domain Specific Language de Microsoft (Parte II)

Buenas a todos, continuando con la cadena de posts sobre Desarrollo Basado en Modelos y su aplicación con DSL hoy vamos a hablar sobre el ejemplo que utilizaremos para explicar el desarrollo de aplicaciones con esta tecnología.
De las alternativas mostradas en el post anterior abordaremos la basada en Domain-Specific Language. Con ella se implementará un Dsl que automatice la escritura de documentos Xml. Para ello en primer lugar se identifican las partes del problema de la generación de documentos Xml que pueden ser modeladas.
Un documento Xml está formado por una iniciación común y por una serie de etiquetas en forma de árbol. Por ejemplo:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<ficha>
<nombre>
Juan Antonio
</nombre>
<apellido>
Calles
</apellido>
<direccion>
c/elblogdecalles, 4, 1ºK
</direccion>
</ficha>
Estas etiquetas podrían ser representadas en un modelo, a través de nodos. Será necesario tener en cuenta que un nodo puede no tener hijos, en este caso se tratará de un nodo hoja, es decir, de una etiqueta que no contiene más etiquetas hijas. Podremos tener también nodos con hijos, entonces podrá tratarse del nodo raíz, que solo habrá uno, o de un nodo intermedio.
Además hay que tener en cuenta que un nodo puede contener ninguno o varios atributos.
Por tanto para representar un documento Xml en un modelo en formato de árbol habrá que desarrollar un modelo que soporte la inclusión de:
    1. Iniciación común.
    2. Nodos:
      • Hoja
      • Intermedio
      • Raíz
    3. Atributos.
      • cero o más
La iniciación común puede sacarse del diseño del modelo, y será codificada directamente en la parte de escritura del código.
Se generarán clases independientes para los nodos y los atributos. Y se tomarán las características: hoja, intermedio y raíz del Nodo, como atributos modificables por el desarrollador durante el diseño del modelo.
Finalmente la posibilidad de que haya cero o más atributos en un nodo se representará con cardinalidades en las uniones de la clase nodo y atributo.
Tras haber planteado el problema y representado el modelo se generará el DSL. Una vez desarrollado, se utilizará para diseñar un documento Xml de manera gráfica, y se codificará el código necesario para ser convertido a la sintaxis de Xml. Estas partes se verán en el próximo punto, Implementación.

Implementación

Generación del Proyecto

Para el desarrollo de nuestro DSL con Dsl Tools necesitaremos tener instalado Visual Studio 2005/2008 con un SDK actualizado. Para este ejemplo, hemos utilizado Visual Studio 2008, con el SDK 1.0.
En primer lugar se debe abrir Visual Studio, e ir al menú de creación de nuevo proyecto:
image
Después se generará el proyecto, para ello accedemos a Nuevo proyecto -> Otros tipos de proyectos -> Extensibilidad y seleccionamos “Domain-Specific Language Designer”. Le damos un nombre al proyecto y aceptamos:
image
Ahora elegiremos Minimal Language, para no tener que empezar a diseñar nuestro DSL desde cero y tengamos ya un pequeño esqueleto generado:
image
Ahora nos inventamos un nombre para la extensión que tendrá el fichero donde se guardará nuestro modelo:
image
Indicamos un nombre de compañía:
image
Y le indicamos que cree una clave ya que no vamos a utilizar una existente:
image
Tras pulsar Finalizar veremos el esqueleto de nuestro DSL:
image
Esto es todo por hoy, en el próximo post diseñaremos el resto del DSL y contaremos como se diseña la interface gráfica del mismo.
saludos!

No hay comentarios: