Generador de Código Utilizando el Paradigma de Líneas de Producto Software

  • Jaime P. Sayago Heredia Pontificia Universidad Católica del Ecuador, Sede Esmeraldas.

Resumen

En esta investigación se elaboró un generador de código utilizando el paradigma de líneas de producto software junto con otras metodologías de desarrollo por analogía. En la actualidad las aplicaciones de desarrollo se enfocan a un ambiente web y requieren de seguridad, mensajería, control de usuarios, etc., por lo que cada día se vuelven más complejas. Una línea de producto software ofrece una alternativa para hacer frente a esa complejidad proporcionando herramientas que reutilicen el código y se mejore el desempeño, la calidad y el tiempo en el desarrollo de un producto software. El objetivo principal de este trabajo es dar a conocer las ventajas y utilidad potencial de la línea de productos software construido por analogía y la mejora en el desarrollo de una aplicación web Java EE. El generador pretende automatizar el proceso de codificación de las anotaciones de persistencia e implementación de los métodos con Java Persistence API (JPA) del Data Access Object (DAO) de la Entidad para el acceso a la base de datos. El prototipo fue desarrollado en lenguaje de programación Ruby, librerías Gtk2 para el entorno gráfico, ERB para el manejo de archivos de texto a través de un lenguaje de plantillas. Esta herramienta aumenta el desempeño de desarrollo y una disminución del tiempo de codificación comprobado por la estimación por intervalo que se realizó a un grupo de programadores.

Palabras clave: ingeniería de software; líneas de producto software; generación código; lenguaje de programación ruby; lenguajes específicos del dominio.

Abstract

In this research, a code generator was developed using the software product lines paradigm along with other development methodologies by analogy. Currently, development applications are focused on a web environment and require security, messaging, user control, etc., so each day they become more complex. A software product line offers an alternative to address that complexity by providing tools that reuse code and improve performance, quality, and time in software product development. The main objective of this work is to present the advantages and potential usefulness of the software product line built by analogy and the improvement in the development of a Java EE web application. The generator intends to automate the process of encoding persistence annotations and implementation of methods with the Java Persistence API (JPA) of the Data Access Object (DAO) of the Entity for access to the database. The prototype was developed in Ruby programming language, Gtk2 libraries for the graphical environment, ERB for handling text files through a template language. This tool increases the development performance and a reduction of the coding time verified by the interval estimate that was made to a group of programmers.

Keywords: software engineering; software product lines; generation code; ruby programming language; domain specific language.

Citas

Baird, K. C. (2007). Ruby by example: concepts and code. San Francisco: No Starch Press.

Barbosa, P. A., Contreras, C. G., & Rodriguez, J. M. M. (2005). AspectMDA: Hacia un desarrollo incremental consistente integrando MDA y Orientación a Aspectos. Actas Del II Taller Sobre Desarrollo de Software Dirigido Por Modelos, MDA Y Aplicaciones (DSDM 2005), 74.

Bergey, J. K., Cohen, S., Donohoe, P., & Jones, L. G. (2005). Software Product Lines: Experiences from the Eighth DoD Software Product Line Workshop. Retrieved from http://repository.cmu.edu/sei/426/

Boehm, B. W. (1988). A spiral model of software development and enhancement. Computer, 21(5), 61–72.

Carneiro Roos, F. (n.d.). Análisis Automático de Líneas de Producto Software Usando Distintos Modelos de Variabilidad.

Clements, P. C., Jones, L. G., Northrop, L. M., & McGregor, J. D. (2005). Project management in a software product line organization. IEEE Software, 22(5), 54–62.

Clements, P., & Northrop, L. (2015). Software Product Lines: Practices and Patterns: Practices and Patterns. Addison-Wesley. Retrieved from https://books.google.com.ec/books?id=ATFijgEACAAJ

Czarnecki, D.-I. K. (1999). Generative programming. TU Ilmenau, Germany. Retrieved from http://www.issi.uned.es/doctorado/generative/Bibliografia/TesisCzarnecki.pdf

Czarnecki, K., & Eisenecker, U. W. (1999). Components and generative programming. In ACM SIGSOFT Software Engineering Notes (Vol. 24, pp. 2–19). Springer-Verlag. Retrieved from http://dl.acm.org/citation.cfm?id=318779

Ford, N. (2008, July 24). Using the Ruby Development Tools plug-in for Eclipse. Retrieved May 17, 2017, from http://www.ibm.com/developerworks/library/os-rubyeclipse/index.html

Garzás, J., & Piattini, M. (2007). Concepto y Evolución de las Fábricas de Software. Kybele Consulting. Retrieved from https://pdfs.semanticscholar.org/32ec/f1537492e81315f57d1f1e413db67583cc16.pdf

Greenfield, J., & Short, K. (2003). Software factories: assembling applications with patterns, models, frameworks and tools. In Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (pp. 16–27). ACM. Retrieved from http://dl.acm.org/citation.cfm?id=949348

Heradio Gil, R. (2007). Metodología de desarrollo de software basada en el paradigma generativo: realización mediante la transformación de ejemplares. Retrieved from http://e-spacio.uned.es/fez/eserv/tesisuned:IngInf-Rheradio/Documento.pdf

Heradio, R., Cerrada, J. A., Lopez, J. C., & Coz, J. R. (2009). Code Generation with the Exemplar Flexibilization Language. Electronic Notes in Theoretical Computer Science, 238(2), 25–34. https://doi.org/10.1016/j.entcs.2009.05.004

Heradio, R., Fernandez-Amoros, D., de la Torre, L., & Abad, I. (2012). Exemplar driven development of software product lines. Expert Systems with Applications, 39(17), 12885–12896. https://doi.org/10.1016/j.eswa.2012.05.004

Herrington, J. (2003). Code generation in action. Greenwich, CT: Manning.

Jarzabek, S., & Seviora, R. (2000). Engineering components for ease of customisation and evolution. IEE Proceedings - Software, 147(6), 237. https://doi.org/10.1049/ip-sen:20000914

Laguna, M. A. (2009). Desarrollo de Líneas de Productos: un Caso de Estudio en Comercio Electrónico. 2009. Retrieved from http://www.laccei.org/LACCEI2009-Venezuela/Papers/IT155_Laguna.pdf

Laguna, M. A., González-Baixauli, B., & Marqués, J. M. (2007). Seamless development of software product lines. In Proceedings of the 6th international conference on Generative programming and component engineering (pp. 85–94). ACM. Retrieved from http://dl.acm.org/citation.cfm?id=1289988

Miller, J. (2007). mda. Retrieved from http://facepress.net/pdf/300.pdf

Muñoz, J., & Pelechano, J. (2004). MDA a Debate. Actas Del Primer Taller Sobre Desarrollo Dirigido Por Modelos, MDA Y Aplicaciones (DSDM’04). Retrieved from https://www.researchgate.net/profile/Vicente_Pelechano/publication/228871915_MDA_a_Debate/links/549403cc0cf295024eb465a8.pdf

Muñoz, J., & Pelechano, V. (2005). MDA vs Factorías de Software. Actas Del II Taller Sobre Desarrollo de Software Dirigido Por Modelos, MDA Y Aplicaciones (DSDM 2005), 1. Retrieved from https://www.researchgate.net/profile/Jesus_Torres10/publication/220776002_Implicaciones_de_Transformaciones_Oblicuas_en_el_Desarrollo_de_un_Framework_Generador_de_Aplicaciones_Orientadas_a_Aspectos/links/02bfe50d171e0461ec000000.pdf#page=9

Pennington, H., & others. (1999). GTK+/Gnome application development. New Riders Indianapolis. Retrieved from https://pdfs.semanticscholar.org/2366/f069aeae2ab4079b40f2e10572697e6c0f5f.pdf

Pérez, I. M. (2007). An Open Source Framework Oriented to Modular Web-Solution Development based in Software Product Lines. Este Libro Se Distribuye Bajo Licencia Creative Commons Reconocimiento CompartirIgual 2.5 Espa, 133.

Pohl, K., Böckle, G., & Linden, F. van der. (2005). Software product line engineering: foundations, principles, and techniques (1st ed). New York, NY: Springer.

Roos-Frantz, F., & Segura, S. (2008). Automated Analysis of Orthogonal Variability Models. A First Step. In SPLC (2) (pp. 243–248). Citeseer. Retrieved from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.505.4351&rep=rep1&type=pdf

Sepúlveda, S., Cachero, C., & Cares, C. (2012). Modelado de Características para Líneas de Producto de Software: una propuesta. In INTERNATIONAL WORKSHOP ON ADVANCED SOFTWARE ENGINEERING, Valparaíso. Retrieved from http://www.academia.edu/download/45233646/Modelado_de_Caractersticas_para_Lneas_de20160430-12534-ftjbt3.pdf

Thomas, D., Fowler, C., & Hunt, A. (2005a). Programming Ruby: the pragmatic programmers’ guide (2nd ed). Raleigh, N.C: Pragmatic Bookshelf.

Thomas, D., Fowler, C., & Hunt, A. (2005b). Programming Ruby: the pragmatic programmers’ guide (2nd ed). Raleigh, N.C: Pragmatic Bookshelf.

UMLDesigner. (2014). Getting started. Retrieved March 1, 2018, from http://www.umldesigner.org/tutorials/tuto-getting-started.html

Van Deursen, A., Klint, P., Visser, J., & others. (2000). Domain-specific languages: An annotated bibliography. Sigplan Notices, 35(6), 26–36.

Van Gurp, J., Bosch, J., & Svahnberg, M. (2000). On the notion of variability in software product lines. Reading, MA: Addison-Wesley.

Vasudevan, N., & Tratt, L. (2011). Comparative Study of DSL Tools. Electronic Notes in Theoretical Computer Science, 264(5), 103–121. https://doi.org/10.1016/j.entcs.2011.06.007

Voelter, M., & Groher, I. (2007). Product Line Implementation using Aspect-Oriented and Model-Driven Software Development (pp. 233–242). IEEE. https://doi.org/10.1109/SPLINE.2007.23

Vogel, L. (2014). Eclipse IDE tutorial. Vogella, http://www. vogella. de/articles/Eclipse/article. html# overview, accessed August. Retrieved from http://www.draelshafee.net/spring2011/Eclipse-tutorial.pdf

Publicado
2018-07-10
Cómo citar
Sayago Heredia, J. (2018). Generador de Código Utilizando el Paradigma de Líneas de Producto Software. Hallazgos21, Develando Ciencia Por El Desarrollo, 3(2), 190-212. Recuperado a partir de https://revistas.pucese.edu.ec/hallazgos21/article/view/281
Sección
Artículos Originales