Anchurus-GEN: generador de código PHP a partir de...

Post on 18-Feb-2018

231 views 3 download

Transcript of Anchurus-GEN: generador de código PHP a partir de...

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

[1] D. C. Schmidt, “Guest Editor’s Introduction: Model-Driven Engineering,” Computer, vol. 39, no. 2, pp. 25– 31, Feb. 2006.

Modelo Elemento del mundo real

Solución propuesta

Anchurus-GEN

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-languages-2015#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.

Anchurus-GEN

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: Disciplinedagile delivery (DAD)

Metodología adaptada

Trabajos relacionados

Trabajos relacionadosCódigoabierto

Precio Generacódigo

PHP GUI Multiplataforma

Para todonavegador

Propósitogeneral

Generadesde unmodelode altonivel

PHPrunner No 499 USD Sí Sí Sí No No Sí No

PHPmaker No 300 USD Sí Sí Sí 1/2 Sí Sí No

ScriptCase No 359-630USD

Sí Sí Sí Sí Sí No No

PHP MySQLWizard

Si 48-94 USD Sí Sí Sí No Sí Si No

CodeCharge Studio

No 140-500USD

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

Anchurus-GEN

Sí Gratis Sí Sí Si 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ónCrear modelo

ISMLEditar modelo

ISMLLimpiar

proyectoEditar

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 funcionalesMantenibilidad:

• 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=C6oSNlgtPYE

Pruebas

Caso de prueba 5

Proyecto Anchurus-GEN

Fecha de entrega 13/05/2016

Datos de entrada Modelado de la entidad Dieta, que contiene cuatroatributos de tipo String (desayuno, almuerzo, cena ymerienda) 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, Makerpuede 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