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

57
Anchurus-GEN: generador de código PHP a partir de modelos ISML Frank Sebastián Franco Hernández

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

Page 1: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Anchurus-GEN: generador de código PHP a

partir de modelos ISML

Frank Sebastián Franco Hernández

Page 2: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Agenda

• Introducción

• Trabajos relacionados

• Análisis

• Diseño

• Desarrollo de la solución

• Análisis de impacto

• Conclusiones

Page 3: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Introducción

Page 4: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 5: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 6: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Solución propuesta

Anchurus-GEN

Page 7: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 8: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 9: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 10: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 11: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 12: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Metodología: Disciplinedagile delivery (DAD)

Page 13: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Metodología adaptada

Page 14: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Trabajos relacionados

Page 15: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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í

Page 16: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Análisis

Page 17: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 18: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Funciones del sistema

Abrir aplicaciónCrear modelo

ISMLEditar modelo

ISMLLimpiar

proyectoEditar

configuraciones

Page 19: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Modelo de dominio

Page 20: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 21: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 22: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Diseño

Page 23: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Vista física

Page 24: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Vista lógica

Page 25: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Diagrama de paquetes

Page 26: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Paquete co.edu.javeriana.isml.generator.common

Page 27: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Paquete co.edu.javeriana.anchurus.generator.laravel.generators

Page 28: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Paquete co.edu.javeriana.anchurus.generator.laravel.templates

Page 29: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Paquete co.edu.javeriana.anchurus.generator.laravel.utils

Page 30: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Desarrollo de la solución

Page 31: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Estándares

• ISO/IEC/IEEE 29148:2011 (SRS)

• IEEE 1016:2009 (SDD)

• Meta Object Facility de OMG (metamodelos).

Page 32: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Prenat

Aplicación desarrollada por José Bocanegra para apoyar el proceso prenatal de una mujer embarazada

Page 33: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Funcionalidades del sistema

https://www.youtube.com/watch?v=C6oSNlgtPYE

Page 34: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 35: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Pruebas

Salida esperada Archivo de modelo de PHP.

Conclusión La prueba fue exitosa.

Page 36: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Análisis de impacto

Page 37: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 38: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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)

Page 39: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 40: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Conclusiones y trabajo futuro

Page 41: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 42: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 43: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 44: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

MUCHAS GRACIAS

Page 45: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Anexos

Page 46: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 47: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

PHPrunner

• Cuenta con plantillas según el tipo de negocio

• Editor visual

• Vista preliminar

• Internacionalización

Page 48: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

PHPrunner

• Solo funciona en Windows

• Solo funciona en Internet Explorer

• Precio: 499 USD

Page 49: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 50: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 51: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 52: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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

Page 53: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

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.

Page 54: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

CodeCharge Studio

• Incluye IDE, generador de código y soluciones preconstruidas

• Compatible con Windows

• Precio: 140 a 500 USD

Page 55: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

AppGini

• Compatible con MySQL y genera hacia PHP

• Reducción en pruebas

• Código seguro

• Compatible con Windows

• Precio: 80 USD

Page 56: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

SynApp2

• Compatible con MySQL y Oracle

• PHP y AJAX

• Código abierto

• Gratis

Page 57: Anchurus-GEN: generador de código PHP a partir de …pegasus.javeriana.edu.co/~CIS1610AP01/docs... · PHPrunner • Es un generador de páginas web que construye interfaces web a

Spring Roo

• Generador de código para Java EE

• Carece de GUI

• Código abierto

• Gratis