Code Generator Using the Software Product Lines Paradigm
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
Downloads
Published
How to Cite
Issue
Section
License
Los artículos enviados a la Revista Científica Hallazgos21 deberán ser totalmente originales e inéditos.
Los autores son los responsables de los textos y las imágenes incluidas en los artículos y no necesariamente reflejan el pensamiento de la editorial o de la Pontificia Universidad Católica del Ecuador, Sede Esmeraldas (PUCESE).
Los autores disponen cederle a la Revista Científica Hallazgos21 todos los derechos inherentes para la edición, publicación y distribución o divulgación del mismo.
Se autoriza a las revistas firmantes de los acuerdos de Encuentros de Revistas Latinoamericanas para reproducir en parte o totalmente los artículos con la sola mención de la fuente claramente señalada.