Coloração Automática de Variabilidades em Linhas de Produtos de Software
Resumo
Neste artigo, apresenta-se um algoritmo para coloração automática de código responsável por implementar variabilidades em linhas de produtos. O algoritmo proposto é baseado em uma ferramenta para implementação de variabilidades chamada CIDE (Colored IDE), a qual permite colorir manualmente trechos de código associados a uma determinada variabilidade. Além disso, essa ferramenta permite gerar projeções de um sistema nas quais o código anotado com uma determinada cor não é mais exibido. O algoritmo proposto foi capaz de extrair automaticamente quatro variabilidades do framework de persistência Prevayler.
Referências
Don Batory. Feature-oriented programming and the AHEAD tool suite. In 26th International Conference on Software Engineering (ICSE), pages 702-703, 2004.
David Binkley, Mariano Ceccato, Mark Harman, Filippo Ricca, and Paolo Tonella. Tool-supported refactoring of existing object-oriented code into aspects. IEEE Transactions Software Engineering, 32(9):698-717, 2006.
Paul Clements and Linda M. Northrop. Software Product Lines: Practices and Patterns. Addison-Wesley, 2002.
Irum Godil and Hans-Arno Jacobsen. Horizontal decomposition of prevayler. In Conference of the Centre for Advanced Studies on Collaborative Research (CASCON), pages 83-100, 2005.
Christian Kästner, Sven Apel, and Martin Kuhlemann. Granularity in software product lines. In 30th International Conference on Software Engineering (ICSE), pages 311-320, 2008.
Christian Kästner, Salvador Trujillo, and Sven Apel. Visualizing software product line variabilities in source code. In 2nd International Workshop on Visualisation in Software Product Line Engineering (ViSPLE), pages 303-313, 2008.
Brian W. Kernighan and Dennis M. Ritchie. The C programming language. Prentice Hall, 1988.
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In 11th European Conference on Object-Oriented Programming (ECOOP), volume 1241 of LNCS, pages 220-242. Springer Verlag, 1997.
Charles W. Krueger. Easing the transition to software mass customization. In 4th International Workshop on Software Product-Family Engineering, volume 2290 of Lecture Notes in Computer Science, pages 282-293. Springer, 2001.
Christian Kästner, Sven Apel, and Don Batory. A case study implementing features using AspectJ. In 11th International Software Product Line Conference (SPLC), pages 223-232, 2007.
Jia Liu, Don Batory, and Christian Lengauer. Feature oriented refactoring of legacy applications. In 28th International Conference on Software Engineering (ICSE), pages 112-121, 2006.
Roberto Lopez-Herrejon, Don Batory, and William R. Cook. Evaluating support for features in advanced modularization technologies. In 19th European Conference on Object-Oriented Programming (ECOOP), volume 3586 of LNCS, pages 169-194. Springer-Verlag, 2005.
Gail C. Murphy, Albert Lai, Robert J. Walker, and Martin P. Robillard. Separating features in source code: an exploratory study. In 23rd International Conference on Software Engineering (ICSE), pages 275-284, 2001.
Marcelo Nassau and Marco Tulio Valente. Object-oriented transformations for extracting aspects. Information and Software Technology, 51(1):138-149, 2009.
David Lorge Parnas. On the design and development of program families. IEEE Transactions on Software Engineering, 2(1):1-9, 1976.
Henry Spencer. ifdef considered harmful, or portability experience with C News. In USENIX Conference, pages 185-197, 1992.
Vijayan Sugumaran, Sooyong Park, and Kyo C. Kang. Introduction to the special issue on software product line engineering. Communications ACM, 49(12):28-32, 2006.
Jilles van Gurp, Jan Bosch, and Mikael Svahnberg. On the notion of variability in software product lines. In 2nd IEEE/IFIP Working Conference on Software Architecture (WICSA), pages 45-54, 2001.