Dívida de variabilidade: um estudo multimétodo - Wolfart, Daniele (2022)
Variability is the ability of a system or software artifact to be extended, customized or configured for use and reuse in different contexts. Managing variability is crucial to ensuring the success of a software project. What still varies is how to implement the variability. Although it can be implemented in a systematic way, such as using Software Product Lines (SPLs), many companies choose the way that initially requires a less investment and offers good time-to-market, opportunistic reuse, such as copy and paste. However, this kind of reuse can increase the occurrence of technical debts, a typical characteristic of a decision that presents a short-term advantage, but generates a long-term liability, such as difficulty in maintaining and evolving the system. Given their importance, both the concept of variability and the concept of technical debt are widely studied in Software Engineering, however, both concepts have not yet been investigated together. Thus, this work reports the results of a research to understand how technical debt is caused by inadequate variability management, including the definition of a new concept called variability debt. For this, a study was conducted using two research methods: (i) a systematic literature review, and (ii) a multi-project case study with three real systems. The results indicate that the characteristics identified in the studies mapped by the systematic review of the literature: causes, artifacts and consequences of variability debt commonly occur in practice and that professionals understand that poor variability management implies different types of technical debt, with emphasis on the debt cause of “time pressure” that was unanimous agreement among the research participants. Among the consequences of the variability debt identified in the systematic review and later evaluated in the field research with industry professionals, “usability problems” and “maintenance difficulties”.