Reúso de Software: Do Oportunista ao Sistemático
Abstract
Opportunistic reuse, also known as copy-and-paste, is a common practice in industry. This strategy presents short term benefits, however, when the number of clone products grows, technical problems of management, maintenance, and evolution arise. Software Product Line (SPL) is a systematic reuse approach presented as an alternative to deal with such problems. In an SPL, a core of similar artifacts are shared among products, avoiding duplicity and independent development of common parts. In industry, we can see that products variants developed opportunistically are the base for the SPL development, by using a re-engineering process. This paper presents a generic re-engineering process and discusses benefits and difficulties to adopt systematic reuse. We aim at motivating industries to consider adoption of systematic reuse and develop products which are easily maintained, evolved and with better quality.
References
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.
