Reúso de Software: Do Oportunista ao Sistemático
Resumo
O reúso oportunista, também chamado de copia-e-cola, é uma prática comum na indústria. Apesar de esta estratégia apresentar benefícios a curto prazo, quando a quantidade de produtos clonados aumenta, problemas técnicos de gerenciamento, manutenção e evolução surgem. Linha de Produtos de Software (LPS) é uma abordagem de reúso sistemático que se apresenta como alternativa promissora para estes problemas. Em uma LPS, um núcleo de artefatos similares é compartilhado entre os produtos, evitando duplicidades e desenvolvimento independente de partes comuns. Na indústria, observa-se a origem de sistemas desenvolvidos de forma oportunista, que são utilizados como base para o desenvolvimento da LPS, utilizando um processo de reengenharia. Este trabalho apresenta um processo genérico de reengenharia, além disso, discute benefícios e dificuldades para aplicar o reúso sistemático. Deseja-se motivar que indústrias considerem a adoção do reúso sistemático e desenvolvam produtos mais fáceis de manter, evoluir, e com melhor qualidade.
Referências
Assunção, W. K. G., Lopez-Herrejon, R. E., Linsbauer, L., Vergilio, S. R., and Egyed, A.(2017). Reengineering legacy applications into software product lines: A systematic mapping. Empirical Software Engineering, pages 1–45.
Clements, P. and Northrop, L. (2001). Software Product Lines: Practices and Patterns. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Faust, D. and Verhoef, C. (2003). Software product line migration and deployment. Software: Practice and Experience, 33(10):933–955.
Galimberti, M. and Wazlawick, R. (2015). Active internationalization of small and medium-sized software enterprises - cases of french software companies. Journal of Technology Management & Innovation, 10(4):99–108.
Holmes, R. and Walker, R. J. (2013). Systematizing pragmatic software reuse. ACM Transactions on Software Engineering and Methodology, 21(4):20:1–20:44.
Jansen, S., Brinkkemper, S., Hunink, I., and Demir, C. (2008). Pragmatic and opportunistic reuse in innovative start-up companies. IEEE Software, 25(6):42–49.
Kang, K. C., Cohen, S. G., Hess, J. A., Novak,W. E., and Peterson, A. S. (1990). Feature-oriented domain analysis (FODA) feasibility study. Technical report, Carnegie-Mellon University Software Engineering Institute.
Krueger, C. W. (1992). Software reuse. ACM Computing Surveys, 24(2):131–183.
Kulkarni, N. and Varma, V. (2017). Perils of opportunistically reusing software module.Software: Practice and Experience, 47(7):971–984.
Laguna, M. A. and Crespo, Y. (2013). A systematic mapping study on software product line evolution: From legacy system reengineering to product line refactoring. Science of Computer Programming, 78(8):1010–1034. Special section on software evolution, adaptability, and maintenance & Special section on the Brazilian Symposium on Programming Languages.
Linden, F. J. v. d., Schmid, K., and Rommes, E. (2007). Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering. Springer-Verlag New York, Inc., Secaucus, NJ, USA.
Pohl, K., Böckle, G., and Linden, F. J. v. d. (2005). Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag New York, Inc., Secaucus, NJ, USA.
van Ommering, R. (2005). Software reuse in product populations. IEEE Transactions on Software Engineering, 31(7):537–550.