Code Generator Using the Software Product Lines Paradigm

Authors

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

Keywords:

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

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.

References

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

Published

2018-07-10

How to Cite

Sayago Heredia, J. P. (2018). Code Generator Using the Software Product Lines Paradigm. Revista Científica Hallazgos21, 3(2), 190–212. Retrieved from https://revistas.pucese.edu.ec/hallazgos21/article/view/281

Issue

Section

Artículos Originales