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.
- 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