I.
Antecedentes
del tema
El antecedente más importante en el estudio de MDE
es la forma en que se ha teorizado acerca de como los metamodelos permiten
modelar sistemas de manera repetitiva haciendo uso de la reutilización de
modelados previos.
Muchas empresas,
entidades académicas y organizaciones cuentan con investigaciones pertinentes y
útiles pero el mejor compendio de investigaciones previas es el ofrecido por la
OMG
II.
Propósito
u objetivo del estudio
Objetivo
General:
Desarrollar un prototipo de generación automática de
código para interfaz web que contenga la lectura de un JSON recibido por
RESTFUL 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
usando RESTFUL
Objetivos Específicos:
·
Establecer el estado el arte de la tecnología MDE
·
Realizar un compendio de los avances existentes más
importantes que le han dado vida a esta nueva tecnología con el fin de tener
una base teórica con las mejores síntesis de las personas, empresas y grupos de
investigación que ya han venido trabajando y desarrollando esta tecnología.
·
Efectuar una búsqueda de las herramientas más reconocidas en
el mercado con el fin de analizarlas y compararlas para dar cimiento a nuestro
propio prototipo.
·
Revisar los estándares ADM de la OMG para
extraer sus características más relevantes con el fin de lograr que el
prototipo cumpla con esos estándares.
·
Definir el metamodelo en base al cual se
creará el prototipo.
·
Desarrollar el prototipo.
III.
Límites
del estudio (marco teórico – práctico)
El alcance del proyecto es el establecimiento del
estado del arte de MDE, escogencia de un metamodelo en base a la información
recogida y la creación de un prototipo basado en ese metamodelo, que genere
código con las siguientes características:
Generación
automática de código para interfaz web que contenga la lectura de un JSON
recibido por RESTFUL 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 usando RESTFUL
IV.
Definición
de los términos
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)
Fundamentos
de MDE
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. 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:
o
Los modelos expresados en una notación
bien definida son la piedra angular para entender las soluciones de los
sistemas a escala empresarial.
o
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.
o
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.
o
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.
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.
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.
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.
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.
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.
V.
Supuestos
y expectativas del tema
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,
para este caso particular del ejemplo se usará:
- Modelo
relacional en la base de datos.
- MVC
como patrón de diseño
- Paradigma
orientado a objetos para desarrollo del software
El ejemplo solo usa dos objetos que son Madre e hijo (una madre puede
tener muchos hijos pero un hijo tiene una sola madre) y se va a crear un CRUD
(create-read-update-delete o en español creación-consulta-actualización y
borrado de datos) usando desarrollo web.
¿Que tiene que hacer el desarrollador? como mínimo debe decirle al
modelo:
- que
nombre le va a poner a los objetos
- como
están relacionados esos objetos
- que
variables tiene cada uno de esos objetos.
Entonces el desarrollador va a crear un modelo que contiene dos objetos
con algún tipo de lenguaje (no importa cuál):
MADRE{
cédula(PK)
nombres
apellidos
edad
Arreglo[HIJO]
}
HIJO{
numeroRegistro(PK)
nombres
apellidos
edad
}
con el modelo anterior se especificó el nombre de los objetos que son
MADRE e HIJO, las variables que contiene cada uno, MADRE tiene: cédula(que es
la llave primaria en base de datos), nombres, apellidos y edad, e HIJO
tiene: numeroRegistro(que es la llave primaria en base de datos), nombres,
apellidos, edad, y se estableció una relación entre esos dos objetos, Madre
contiene un arreglo de objetos HIJO, es decir puede tener 0,1 o muchos hijos.
Ahora la generación de código a partir del modelo:
Se usa un software que crea automáticamente:
1. 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.
2. 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
(asignandole 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.
3. 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.
VI.
Importancia
del estudio (justificación)
Por medio de la presente investigación se pretende en
primera instancia como futuros ingenieros formarse 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.
Además 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.
VII.
Aportación
a la disciplina, la escuela o a la carrera
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.
Aunado a
lo anterior es el desarrollo web el tipo de desarrollo que se impone para poder
masificar la posibilidad de acceso a los sistemas.
Consideramos
que esta investigación hace parte de los aportes más importantes y que ha
venido siendo tardío para nuestra profesión, la aplicación de MDE es poco
conocida dentro de nuestro entorno y es mostrando las soluciones que la
comunidad en general se volcará hacia esta tecnología
El
prototipo que se escogió desarrollar, se escogió porque es un cruce de
tecnologías de vanguardia como lo son MDE e interfaces de CRUD para desarrollo
web, sabemos que este prototipo brindará una solución a los problemas actuales
de desarrollo web.
VIII. Diseño de la investigación (metodología)
El orden cronológico de
las actividades que se deben desarrollar es el siguiente:
·
Elaborar el estado del arte del nuevo
paradigma de desarrollo de software basado en modelamiento de sistemas llamado
MDE.
·
Revisarán los estándares ADM de la OMG
·
Efectuar la búsqueda de las herramientas
más reconocidas en el mercado con el fin de analizarlas y compararlas
·
Desarrollar el metamodelo sobre el cual se
realizará el desarrollo.
·
Desarrollar el 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.
IX.
Apoyo
bibliográfico (bibliografía)
Alan Brown, http://www.ibm.com/developerworks/
rational/library/3100.html
Atkinson, C., &
Kuhne, T. (2003). Model-driven development: a metamodeling foundation.
Software, IEEE, 20(5), 36-41
Domain-Specific Languages. CreateSpace
García, M. García, F., Pelechano, V., Vallecillo, A.,
Vara, J., Vicente-Chicote, C. (2013). Desarrollo de Software Dirigido por Modelos:
Conceptos, Métodos y Herramientas. Ra-Ma.
Kaindl, H. (2012).
Specifying Business Requirements through Interaction Design. Institute of
Computer Technology. Vienna University of Technology. Vienna, Austria
Kent, S. (2002,
January). Model driven engineering. In Integrated Formal Methods (pp. 286-298).
Springer
Berlin Heidelberg
Jouault, F., Allilaire,
F., Bézivin, J., & Kurtev, I. (2008). ATL: A model transformation tool.
Science of Computer Programming, 72(1), 31-39
Mohagheghi, P., &
Dehlen, V. (2008). A metamodel for specifying quality models in model-driven
engineering. In Proc. The Nordic Workshop on Model Driven Engineering (pp.
51-65).
TCS,
http://wiki.eclipse.org/TCS
Voelter, M. (2013). DSL
Engineering - Designing, Implementing and Using
Favre,
L., & Martinez, L. Universidad Nacional del Centro de la Provincia de
Buenos Aires, Tandil, Argentina,
Especificación de Componentes MDA para Patrones de Diseño, Disponible
en: http://sedici.unlp.edu.ar/bitstream/handle/10915/21955/1941+-+Especificaci%F3n+de+Componentes+MDA+para+Patrones+de+Dise%F1o.pdf?sequence=1
Montero
S., Díaz P., Aedo I & Montells L.(2006) XV Jornadas de Ingeniería del
Software y Bases de Datos JISBD 2006 José Riquelme - Pere Botella (Eds) CIMNE,
Barcelona, 2006, Disponible en: http://ceur-ws.org/Vol-227/paper03.pdf
Escribano
A.(2009). Universidad de Castilla-La Mancha, Escuela Superior de Informática,
Ingeniería web dirigida por modelos, Disponible en: http://www.inf-cr.uclm.es/www/mpolo/asig/trabajos0910/Ingenieria_web_basada_en_modelos.pdf
MELIA
S., CACHERO C. & GOMEZ J. Universidad de Alicante, Spain, Using MDA in Web
Software Architectures, Disponible en: http://www.dlsi.ua.es/~ccachero/papers/oopsla03.pdf
OMG, Driving business agility with Model Driven
Architecture, Disponible en: http://www.omg.org/mda/mda_files/3302_AccelDev_PP.pdf
Bézivin, J. (2004). In search of a basic principle for
Model Driven Engineering, Disponible en: http://www.ie.inf.uc3m.es/grupo/docencia/reglada/ASDM/Bezivin04.pdf
Cicchetti,
A., Ruscio, D. Di, Eramo, R., Pierantonio, A., Informatica, D., &
Aquila,Dipartimento di Informatica Universit`a degli Studi di L’Aquila
Automating Co-evolution in Model-Driven Engineering. Transition, Disponible en:
http://www.mancoosi.org/papers/edoc-2008-coevolution.pdf
[1] Voelter, M. (2013). DSL Engineering
- Designing, Implementing and Using Domain-Specific Languages. CreateSpace
[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