generador de código PHP a partir de modelos ISML

Anuncio
Anchurus-GEN:
generador de
código PHP a
partir de
modelos ISML
Frank Sebastián Franco
Hernández
Agenda
•
•
•
•
•
•
•
Introducción
Trabajos relacionados
Análisis
Diseño
Desarrollo de la solución
Análisis de impacto
Conclusiones
Introducción
Problemática
• En los últimos años ha habido un auge en
el desarrollo de aplicaciones web.
• Los lenguajes de programación utilizados
en dicho campo tienen una curva de
aprendizaje elevada
MDE[1] como solución
Modelo
Elemento del mundo
real
[1] D. C. Schmidt, “Guest Editor’s Introduction: Model-Driven Engineering,”
Computer, vol. 39, no. 2, pp. 25– 31, Feb. 2006.
Solución propuesta
AnchurusGEN
ISML y generador de código
para Java EE [2]
[2] J. C. Olarte Abello, ZOE-GEN: Un
transformador para facilitar la generación de
aplicaciones basado en modelos, Bogotá:
Pontificia Universidad Javeriana, 2015.
¿Por qué usar ISML?
•
•
•
•
ISML es un lenguaje sencillo
Permite reutilizar componentes
Permite transformar código
Fuerza a seguir una disciplina para crear
las páginas de la aplicación (con PHP se
corre el riesgo de generar código poco
estructurado).
¿Por qué PHP?
• Es un lenguaje de programación
portable [3]
• Existen múltiples frameworks compatibles
[4][5][6]
• Es un lenguaje de programación
popular. [7][8]
[3] PHP, «Prefacio - Manual de PHP,» [En línea]. Available:
https://secure.php.net/manual/es/preface.php. [Último acceso: 10 Noviembre 2015].
[4] Laravel, «Introduction,» [En línea]. Available: http://laravel.com/docs/4.2/introduction. [Último
acceso: 10 Noviembre 2015].
[5] Symfony, «What is Symfony,» [En línea]. Available: http://symfony.com/what-is-symfony. [Último
acceso: 16 Noviembre 2015].
[6] Nette, «Documentation,» [En línea]. Available: https://doc.nette.org/en/2.3/. [Último acceso: 17
Noviembre 2015].
[7] TIOBE Software, «TIOBE Index for October 2015,» Octubre 2015. [En línea]. Available:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html. [Último acceso: 4 Noviembre
2015].
[8]
N. Diakopoulos y S. Cass, «Interactive: The Top Programming Languages 2015,» 20 Julio 2015. [En
línea]. Available: http://spectrum.ieee.org/static/interactive-the-top-programming-languages2015#index/2015/1/0/0/0/1/50/1/50/1/50/1/30/1/30/1/30/1/20/1/20/1/5/1/5/1/20/1/100/.
[Último acceso: 8 Noviembre 2015].
Objetivo general
Construir un generador de código bajo el
marco de trabajo de Eclipse, que convierta
un modelo en ISML a código en PHP.
AnchurusGEN
Objetivos específicos
• Especificar los requerimientos del
generador de código
• Diseñar el producto basado en los
requerimientos obtenidos previamente
• Implementar el diseño provisto
anteriormente
• Probar la implementación diseñada con
diferentes modelos ISML.
Metodología: Disciplined
agile delivery (DAD)
Metodología adaptada
Trabajos
relacionados
Trabajos relacionados
Código
abierto
Precio
Genera
código
PHP
GUI
PHPrunner No
499 USD
Sí
Sí
Sí
Multiplata Para todo Propósito Genera
forma
navegador general
desde un
modelo
de
alto
nivel
No
No
Sí
No
PHPmaker
No
300 USD
Sí
Sí
Sí
1/2
Sí
Sí
No
ScriptCase
No
359-630
USD
Sí
Sí
Sí
Sí
Sí
No
No
PHP MySQL Si
Wizard
CodeCharg No
e Studio
48-94 USD Sí
Sí
Sí
No
Sí
Si
No
140-500
USD
Sí
Sí
Sí
No
Sí
Sí
No
AppGini
No
80 USD
Sí
Sí
Sí
No
Sí
Sí
No
SynApp2
Sí
Gratis
Sí
Sí
Sí
Sí
Sí
Sí
No
Spring Roo Sí
Gratis
Sí
No
No
Sí
Sí
Sí
No
AnchurusGEN
Gratis
Sí
Sí
Si
Sí
Sí
Sí
Sí
Sí
Análisis
Restricciones
• Conocimientos medios de
inglés
• Plug-in de Eclipse
• Xtext 2.8
• Pantalla de 1024*768 píxeles
mínimo
• Memoria RAM superior a 1,3 GB
Funciones del sistema
Abrir aplicación
Crear modelo
ISML
Editar modelo
ISML
Limpiar
proyecto
Editar
configuraciones
Modelo de dominio
Requerimientos funcionales
•
•
•
•
•
•
Generar página PHP Blade a partir de una
página ISML
Generar controlador PHP a partir del
controlador ISML
Generar archivo de clase PHP a partir del
servicio ISML
Generar archivo de rutas PHP a partir de
múltiples controladores
Generar migración a partir de la entidad
ISML
Generar modelo a partir de la entidad ISML
Requerimientos no
funcionales
Mantenibilidad:
• Sistema dividido por paquetes
• Cada plantilla es una clase aparte
• Cada generador es una clase aparte
• Funciones comunes en una o más clases
utilitarias
• Generadores referenciados desde la clase
maestra
Portabilidad:
• Compatible con Linux, Windows y Mac
• Código generado compatible con Laravel
Diseño
Vista física
Vista lógica
Diagrama de paquetes
Paquete
co.edu.javeriana.isml.generator.
common
Paquete
co.edu.javeriana.anchurus.generator.laravel.generators
Paquete
co.edu.javeriana.anchurus.generator.laravel.templates
Paquete
co.edu.javeriana.anchurus.generator.laravel.utils
Desarrollo de la
solución
Estándares
• ISO/IEC/IEEE 29148:2011 (SRS)
• IEEE 1016:2009 (SDD)
• Meta Object Facility de OMG
(metamodelos).
Prenat
Aplicación desarrollada por José
Bocanegra para apoyar el proceso
prenatal de una mujer embarazada
Funcionalidades del sistema
https://www.youtube.com/watch?v=C6oSN
lgtPYE
Pruebas
Caso de prueba
5
Proyecto
Anchurus-GEN
Fecha de entrega
13/05/2016
Datos de entrada
Modelado de la entidad Dieta, que contiene cuatro
atributos de tipo String (desayuno, almuerzo, cena y
merienda) y un atributo de tipo Integer (patología).
Pruebas
Salida esperada
Archivo de modelo de PHP.
Conclusión
La prueba fue exitosa.
Análisis de
impacto
Análisis de impacto
• Se espera impacto positivo en la
productividad de las empresas cuya
base sea el desarrollo de aplicaciones
web
• Reducciones potenciales de costos
producto de las menores horas de
desarrollo de las aplicaciones
Análisis de impacto
• Se espera que los ingenieros de software
que desarrollen aplicaciones web
cuenten con más opciones y de mejor
calidad.
• Se espera que esta herramienta fuerce a
los programadores a usar buenas
prácticas de programación(como
aplicar patrones tales como MVC)
Análisis de impacto
• Haciendo parte de una herramienta más
grande, como Eclipse, se espera que se
use en conjunto con otros plug-ins que
desee el ingeniero de software.
Conclusiones y
trabajo futuro
Conclusiones
• En este trabajo de grado se detalló el
desarrollo de Anchurus-GEN.
• Se indicó el valor agregado que tiene
Anchurus-GEN sobre las aplicaciones ya
existentes.
Trabajo futuro
•
•
•
•
•
Generar más widgets para las páginas
Generador de recursos
Generador de servicios
Mejora de la parte visual de la página
Agregar asociaciones en las clases
modelo.
Lecciones aprendidas
• Uso de Xtend como lenguaje de
programación
• En Xtend hay dos maneras de programar
• Adaptación a componentes externos
que puedan tener errores en tiempo de
ejecución
• No siempre se puede depender de
todas las herramientas del lenguaje
destino.
MUCHAS GRACIAS
Anexos
PHPrunner
• Es un generador de páginas web que
construye interfaces web a partir de
bases de datos, sean remotas o locales,
que vengan desde servidores MySQL,
Access, SQL Server, Postgres y Oracle.
PHPrunner
• Cuenta con plantillas según el tipo de
negocio
• Editor visual
• Vista preliminar
• Internacionalización
PHPrunner
• Solo funciona en Windows
• Solo funciona en Internet Explorer
• Precio: 499 USD
PHPmaker
• Análogamente a PHPrunner, Maker
puede generar páginas PHP desde bases
de datos de similares orígenes a
PHPrunner, MySQL, Access, Postgres, SQL
Server y Oracle.
PHPmaker
• Integración con Bootstrap
• Tablas exportables a diferentes formatos
(Excel, PDF, CSV, XML, imprimible)
• Cliente Windows, servidor Windows o
Linux
• Precio (versión completa): 299,90 USD
ScriptCase
• Compatible con múltiples sistemas de BD
• Orientación hacia el alto nivel de la
organización -> herramientas de análisis
• Integración con PayPal
• Multiplataforma
• Precio: 359,10 a 629,10 USD según la
licencia
PHP MySQL Wizard
Compatible con MySQL
Código abierto
Manejo de registros de la BD
Generar cantidades ilimitadas de
proyectos
• Validación y opciones de seguridad
• Precio: 48 a 94 USD
•
•
•
•
CodeCharge Studio
• Es un generador desde una base de
datos a página web, pero de propósito
general, puesto que permite convertir
casi cualquier tipo de base de datos
(como Access, Oracle o SQL Server) en
páginas web de PHP, ASP, JSP, entre
otras.
CodeCharge Studio
• Incluye IDE, generador de código y
soluciones preconstruidas
• Compatible con Windows
• Precio: 140 a 500 USD
AppGini
• Compatible con MySQL y genera hacia
PHP
• Reducción en pruebas
• Código seguro
• Compatible con Windows
• Precio: 80 USD
SynApp2
•
•
•
•
Compatible con MySQL y Oracle
PHP y AJAX
Código abierto
Gratis
Spring Roo
•
•
•
•
Generador de código para Java EE
Carece de GUI
Código abierto
Gratis
Descargar