sábado, 28 de noviembre de 2015

ARTÍCULO PONENCIA

REALIZACIÓN DE UN PROTOTIPO QUE USE MDE PARA LA GENERACIÓN AUTOMÁTICA DE CÓDIGO DE UNA INTERFAZ WEB, USANDO HTML5, JAVASCRIPT, JQUERY Y JSON
Hansel Peñafiel, Nelson De Hoyos, Yulis Vergara, Arnold Gómez,Albeiro Marin
Curso Proyecto de Grado. Universidad Nacional Abierta y a Distancia UNAD

Resumen
El objetivo del presente artículo es elaborar el estado del arte del nuevo paradigma de desarrollo de software basado en modelamiento de sistemas llamado MDE para la realización de un prototipo que use MDE para la generación automática de código de una interfaz web, usando Html5, Javascript, Jquery y Json.
La metodología que aplicaremos en el presente artículo es la postpositivista propia del paradigma científico, en la cual se planteará la intervención de la realidad problemática de la teoría de MDE destacando las características de esta metodologia, posterior a un previo recorrido de estudios realizados por autores como Jouault, F., Allilaire, F., Bézivin, J., & Kurtev, I. (2008) y Voelter, M. (2013).
se realizará un compendio de los avances existentes más importantes que le han dado vida a esta nueva tecnología, dentro del cual se efectuará la búsqueda de las herramientas más reconocidas en el mercado con el fin de analizarlas y compararlas, se revisarán los estándares ADM de la OMG para exponer sus características más relevantes y se desarrollará un prototipo de generación automática de código para interfaz web que contenga la lectura de un JSON recibido por RESTFULL e incluya el CRUD (create, read, update and delete) en el fron-end, con javascript, html5 y jquery, de un modelo de datos, enviando los datos al backend de igual manera usando RESTFULL.
Las investigaciones realizadas nos arrojan que la aplicación de este prototipo resulta ideal para que  ingenieros pueda n lograr por medio de estas herramientas cumplir su objetivo de satisfacer necesidades propias de la industria tecnologica.
Palabras clave: MDE, JSON, Tecnología, prototipo, software.


Abstract
The aim of this paper is to develop state of the art of the new development paradigm based on modeling software called MDE systems for the realization of a prototype that uses MDE for automatic code generation web interface using HTML5, JavaScript, jQuery and JSON.
The methodology that will apply in this Article is postpositivist own scientific paradigm, in which the intervention of the problematic reality of the theory of MDE will consider highlighting features of this methodology, after a previous course of studies by authors like Jouault, F., Allilaire, F., Bézivin, J., & Kurtev, I. (2008) and Voelter, M. (2013).
A compendium of the most important existing developments that have given life to this new technology, in which the search of the best known tools on the market are made in order to analyze and compare, place the ADM standards will review the OMG to present their most relevant features and a prototype of automatic code generation for web interface containing reading a JSON received by Restfull and include the CRUD (create, read, update and delete) in fron-end, to be held javascript html5 and jquery, a data model, sending data to the backend using Restfull equally ..
Investigations throw us that the application of this prototype is ideal for engineers to n achieve through these tools fulfill its objective of meeting own needs in the technology industry.

Keywords: MDE, JSON, Technology, prototype software.

Introducción
MDE es un nuevo paradigma que conecta más estrechamente el modelo a la aplicación, el modelo no sólo encapsula el diseño de la aplicación, sino que se lo utiliza para generar la implementación del código, nuestra expectativa es poder crear un prototipo que nos permita generación automática de código, y nos basamos en el siguiente supuesto: Cuando se desarrolla software es primero necesario determinar los paradigmas, modelos y patrones de desarrollo con los cuales se va a trabajar.
El diseño de este producto en Colombia representa una estrategia cuyo objetivo no dista del de a nivel global, debido a que busca la satisfacción del cliente y de sus expectativas, y se ha venido desarrollando de manera cambiante y ascendente en los últimos años, debido a cambios en la economía como los tratados de libre comercio, la globalización y los mercados han impulsado a los productores y sus competidores a implementar alguna de estas estrategias cada vez más actualizadas, lo cual permite ser más competitivo y posicionarse en el mercado, de igual manera los consumidores también requieren un producto de mayor calidad que satisfaga sus necesidades y sobretodo se diferencie de lo que les ofrece el resto.
Como futuros ingenieros es muy importante aprender a trabajar con tecnologías, metodologías, modelos y paradigmas de vanguardia con el fin de poder brindar soluciones integrales que aumenten la productividad y busquen la compatibilidad de sistemas. La Ingeniería Dirigida por Modelos(MDE) y la Arquitectura Dirigida por Modelos (MDA), que es una marca registrada de la OMG, son actualmente uno de los enfoques más interesantes para acelerar el desarrollo de código y la mejora de la calidad del software en sistemas complejos, buscan simplificar el proceso de diseño y de desarrollo de software mediante la reutilización de modelos estandarizados, esto ya que en el desarrollo de software es posible establecer patrones de diseño que se repiten en el dominio de aplicación, debido a los anteriores argumentaciones, se puede formular la siguiente pregunta de investigación:
¿Cómo r realizar un prototipo que use MDE para la generación automática de código de una interfaz web, usando Html5, JavaScript, Jquery y Json?

1.    INGENIERÍA DE SOFTWARE DIRIGIDA POR MODELOS
(Basado en Descripción de las actividades de una propuesta de Metodología de Desarrollo de Software Dirigida por Modelos por Santiago Jácome)
1.1.     Fundamentos de MDE
El enfoque MDE ha sido propuesto con la finalidad de proveer técnicas y herramientas para tratar con modelos de forma automática en el proceso de desarrollo de software. El criterio fundamental de MDE es la utilización de la abstracción que permite construir modelos para representar el sistema a desarrollar y la posibilidad de utilización de estos modelos para la generación automática de código. Un enfoque de ingeniería dirigida por modelos tiene que especificar los lenguajes de modelado, los modelos, las traducciones entre los modelos, los lenguajes utilizados para el efecto, y el proceso utilizado para coordinar la construcción y la evolución de los modelos; por lo que para garantizar los beneficios de la utilización de modelos para desarrollar software, se requiere el apoyo de herramientas de gran alcance.
Actualmente existen dos tendencias de MDE. La una mediante el empleo de los principios de MDA propuesta por el OMG y la otra mediante la utilización de DSLs que lo llamaremos enfoque MDE con DSL. Con respecto a la primera tendencia, cuatro principios subyacen en la opinión del OMG de MDA:
·         Los modelos expresados en una notación bien definida son la piedra angular para entender las soluciones de los sistemas a escala empresarial.
·         La construcción de sistemas puede organizarse en torno a un conjunto de modelos mediante la imposición de una serie de transformaciones entre modelos, organizados en un marco arquitectónico de capas y transformaciones.
·         Un soporte formal para describir los modelos en un conjunto de metamodelos facilita la integración significativa y transformación entre modelos, y es la base para la automatización a través de herramientas.
·         La aceptación y adopción generalizada de este enfoque basado en modelos requiere estándares de la industria para proporcionar transparencia a los consumidores, y fomentar la competencia entre los proveedores.

  1. DESCRIPCIÓN DE LOS PRINCIPALES ARTEFACTOS DEL ENFOQUE MDE CON DSL
Para automatizar el desarrollo de aplicaciones con un enfoque MDE se requiere construir varios productos o artefactos.


2.1.        Metamodelo
Un metamodelo define la sintaxis abstracta de un DSL. El metamodelo es un modelo que describe las características de un conjunto de modelos, es decir el metamodelo establece la estructura del modelo. A su vez, dado que un metamodelo es también un modelo, un metamodelo es expresado también en un lenguaje que se denomina “lenguaje de metamodelado” o “lenguaje de definición de modelos”.
Un lenguaje gráfico de definición de modelos, como podría ser UML, proporciona una idea general e intuitiva, generalmente fácil de comprender por parte del usuario, de los conceptos del dominio que se está modelando (ya sean conceptos del mundo real, componentes software, etc.) y de las relaciones entre ellos.
El lenguaje OCL, acrónimo de Object Constraint Language es el más conocido de ellos, propuesto por el OMG OCL juega un papel importante en la creación de DSLs.
2.2.        DSL
Una vez establecida la sintaxis abstracta expresada por lo general en un diagrama de clases, se tiene que establecer la sintaxis concreta del DSL, la sintaxis concreta realiza una representación de la sintaxis abstracta (metamodelo), ya sea gráficamente (por ejemplo, un circuito eléctrico), textualmente (por ejemplo, una consulta SQL), o una combinación de ambos. Se debe señalar que también un DSL se define por su semántica, es decir el significado del modelo [1].
Los editores gráficos o textuales se construyen a partir del metamodelo. Es recomendable utilizar elementos textuales y gráficos con los cuales estén familiarizan los usuarios finales, de esta manera se evitaría utilizar elementos técnicos que son comunes para los ingenieros de software con habilidades especializadas en MDE, y que puede ser difícil para los usuarios finales. En el caso de construir un editor gráfico, es habitual que el diseñador defina una serie de modelos con información sobre 1) los elementos gráficos que se mostrarán en los diagramas; 2) la paleta de herramientas del editor; y 3) La relación entre los dos modelo anteriores y el metamodelo de partida, así este último modelo define una relación unívoca (mapping) entre cada elemento del metamodelo (sintaxis abstracta) y la herramienta de la paleta con la que añadirá dicho elemento al diagrama.
2.3.        TCS
TCS es un componente de Eclipse/GMT que permite la especificación de una sintaxis concreta textual de un DSLs adjuntando información sintáctica de los metamodelos [2]. Con TCS es posible realizar un análisis de sentencias DSL (Texto-a-Modelo) y (Modelo-a-Texto). TCS ofrece un editor de Eclipse que cuenta con resaltado de la sintaxis, un esquema, e hipervínculos por cada sintaxis DSL que es representada en el DSL.
2.4.        ATL
ATL (Atlas Transformation Language) es un lenguaje de transformación de modelos desarrollado por el grupo de investigación AtlanMod (INRIA & LINA) como respuesta a la propuesta OMG MOF/QVT RFT (Request For Proposal) y forma parte de la plataforma AMMA (Atlas Model Management Architecture). ATL es un lenguaje híbrido que implementa los paradigmas declarativo e imperativo [3]. Sus autores recomiendan el uso del estilo declarativo, puesto que permite expresar de manera sencilla las relaciones existentes entre los elementos del modelo origen y destino, mientras que las construcciones imperativas facilitan la codificación de transformaciones complejas. Una transformación ATL está compuesta por reglas mediante las que se define cómo se crean e inicializan los elementos del modelo (o modelos) destino a partir de elementos del modelo/s origen.
2.5.        QVT
El OMG como creador de la propuesta MDA. En un intento por unificar las diferentes propuestas para el desarrollo de transformaciones, a finales de 2008 produjo el estándar para el mismo, Query/View/Transformations (QVT). Esta especificación define una familia de lenguajes para la definición de transformaciones: dos lenguajes para el usuario final (QVT Operational Mappings [imperativo] y QVT Relations [declarativo]), y un lenguaje de bajo nivel que puede verse como byte-code de QVT (QVT Core) [4].
Voelter plantea tres escenarios básicos para obtener las primitivas del DSL [5]:
·         El primero donde el lenguaje del DSL es a menudo obtenido de un framework existente, librería, arquitectura o patrón de arquitecturas. El conocimiento existe y construir el DSL está principalmente relacionado al traslado del conocimiento al nuevo lenguaje. Esto es complementado con la revisión de diferentes fuentes que consideran el mismo domino de aplicación (proceso inductivo).
·         El segundo escenario es el proporcionado por un experto del dominio (proceso deductivo). Por ejemplo en dominios muy comunes, como el manejo de seguros, en la ciencia o logística, los expertos de dominio por su experiencia en dicho ámbito son absolutamente capaces de precisar el conocimiento del dominio.
·         En el tercer caso, el conocimiento del dominio no está disponible, se tiene que hacer un análisis del dominio a través de los requerimientos proporcionados por los stakeholders y analizando aplicaciones similares existentes. Las personas pueden ser expertas, pero muchas veces no son capaces de contextualizar el dominio de manera estructurada, en cuyo caso los diseñadores de lenguajes deben proporcionar una estructura consistente, necesaria para definir el lenguaje.
Los DSLs incluyen lenguajes dedicados para ser aplicados en muchos ámbitos como por ejemplo para la ingeniería web, especificación de requisitos [6], modelado de negocios, consulta de datos a través de SQL. Estos lenguajes específicos no sólo son aplicables en el ámbito de la informática, son también útiles en diversas áreas y disciplinas, como la biología, la física, la gestión o la educación, donde los expertos de dominio no son necesariamente expertos en computación. Para desarrollarlos, existen varias técnicas e incluso herramientas que cubren todo o parte de este proceso.

3.    GENERACIÓN DE CÓDIGO A PARTIR DEL MODELO
Se usa un software que crea automáticamente:
a)    Crea el modelo del patrón MVC: es decir, crea las tablas en base de datos y su relación, entonces se creará una tabla que se llame MADRE y una que se llame HIJO, los campos de la tabla serán las variables mencionadas anteriormente y la relación entre las tablas será 1(MADRE) a muchos (HIJO), es decir la autogeneración de código también crea las llaves primarias y foráneas y relaciona las tablas.
b)    Crea la vista del patrón MVC: es decir, crea el html, dándole al usuario las opciones(pueden ser botones o menús) de: crear una nueva madre, editar los datos de la madre, leer una madre ya guardada o borrar una madre y lo mismo con el hijo, da las opciones de: crear un nuevo hijo (asignándole su correspondiente madre, para lo cual la madre ya debe estar creada con anterioridad), editar los datos del hijo, leer un hijo ya guardado o borrar un hijo.
c)    Crea el controlador del patrón MVC: Es decir, crea todo el código intermedio para que se pueda realizar la correcta lectura, inserción, actualización y borrado de los datos, para ello se crea código que se comunique con la base de datos, código que responda a una llamada del usuario en la vista, código que maneje la comunicación entre el html y la base de datos y ofrezca la respuesta como un servicio web, etc...
Lo anterior teniendo en cuenta que el software ya está preparado para el control de errores, por ejemplo si el usuario quiere borrar una madre que tiene hijos no se lo va permitir y le va a sacar un mensaje de error.
Lo anterior significa que El desarrollador solo tuvo que hacer un modelo que indicaba que hay una madre un hijo, las respectivas variables y la forma en que se relacionan la madre y el hijo, y el software generador de código generó todo el código para crear una aplicación funcional con manejo de errores.

4.    DISCUSIÓN
Como futuros ingenieros se debe formar en el trabajo relacionado con tecnologías, metodologías, modelos y paradigmas de vanguardia con el fin de poder brindar soluciones integrales que aumenten la productividad y busquen la compatibilidad de sistemas.
A través del estudio y el diseño de un prototipo usando la tecnología de la Ingeniería Dirigida por Modelos (MDE) y la Arquitectura Dirigida por Modelos (MDA), se pretende acelerar el desarrollo de la mejora de la calidad del software en sistemas complejos y simplificar el proceso de diseño y de desarrollo de software mediante la reutilización de modelos estandarizados.
La importancia de la ingeniería basada en modelos radica en que ha revitalizado el papel de los modelos tras el descuido que se venía teniendo respecto a los mismos debido a los altos costos que estos significaban por su falta de conexión con la generación de código, sin embargo, con la implementación de la Arquitectura dirigida por modelos(ADM) y el Desarrollo Dirigido por Modelos (DDM), se ha superado esta desconexión, pues estas dos metodologías proponen el uso de modelos y metamodelos que propenden por el desarrollo de herramientas automatizadas que permiten a los desarrolladores de software la construcción modelos independientes de la plataforma y transformarlos en implementaciones de código eficientes, logrando así el potencial requerido para reducir en gran medida el tiempo y el costo de los desarrollos y aumentar considerablemente la idoneidad de las aplicaciones

Conclusiones
MDE promete ser la tecnología del futuro para el desarrollo de software, si bien siempre será necesario contar con ensambladores de los módulos de software producto de la generación automática de código y siempre existirán características particulares en cada desarrollo que no podrán ser trabajados desde un metamodelo, en general todos los desarrollos utilizan el modelo CRUD para trabajar con las bases de datos.
El desarrollo web es el tipo de desarrollo que se impone para poder masificar la posibilidad de acceso a los sistemas.
Esta investigación hace parte de los aportes más importantes y que ha venido siendo tardío para la profesión de ingeniería, la aplicación de MDE es poco conocida dentro del entorno y es mostrando soluciones como la comunidad en general se volcará hacia esta tecnología.
El prototipo que se escogió desarrollar representa un cruce de tecnologías de vanguardia como lo son MDE e interfaces de CRUD para desarrollo web, este prototipo brindará una solución a los problemas actuales de desarrollo web

Referencias
[1]   Voelter, M. (2013). DSL Engineering - Designing, Implementing and Using Domain-Specific Languages. CreateSpace
[2]   TCS, http://wiki.eclipse.org/TCS
[3]   Jouault, F., Allilaire, F., Bézivin, J., & Kurtev, I. (2008). ATL: A model transformation tool. Science of Computer Programming, 72(1), 31-39
[4]   QVT, http://www.omg.org/spec/QVT/1.1/
[5]   Voelter, M. (2013). DSL Engineering - Designing, Implementing and Using Domain-Specific Languages. CreateSpace
[6]   Kaindl, H. (2012). Specifying Business Requirements through Interaction Design. Institute of Computer Technology. Vienna University of Technology. Vienna, Austria


No hay comentarios:

Publicar un comentario