ABSTRACT
Technical debt is a metaphor to guide the identification, measurement, and general management of decisions that were mostly appropriate in the short term but created obstacles mainly for the evolution and maintenance of systems. Variability management, which is the ability to create variants of systems to satisfy different needs, is a potential source of technical debt. Variability debt, a term coined in this work, is caused by sub-optimal solutions in the implementation of variability management in software systems. We performed a systematic literature review to characterize variability debt, and conducted a field study in which we report quantitative and qualitative analysis based on documents (e.g., requirements, specifications, source code, and test cases) and a survey with stakeholders. The context is a large company with three different systems, where opportunistic reuse was applied to create variants for each system. We describe and characterize the variability debt phenomenon in this field study, and we assess the validity of the metaphor to create awareness in diverse company stakeholders and to guide technical debt management research related to variability aspects. The analysis of the field study’s artifacts show evidences of factors that complicate the evolution of the variants, such as code duplication and non-synchronized artifacts. Time pressure is identified as the main cause for not considering other options than opportunistic reuse. Technical practitioners mostly agree on the creation of usability problems and complex maintenance of multiple independent variants. However, this is not fully perceived by managerial practitioners.
- Muhammad Sarmad Ali, Muhammad Ali Babar, and Klaus Schmid. 2009. A Comparative Survey of Economic Models for Software Product Lines. In 35th Euromicro Conf. on Software Engineering and Advanced Applications. 275–278.Google ScholarDigital Library
- Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Software product lines. Feature-Oriented Software Product Lines: Concepts and Implementation (2013), 3–15.Google ScholarCross Ref
- Elvira-Maria Arvanitou, Apostolos Ampatzoglou, Stamatia Bibi, Alexander Chatzigeorgiou, and Ioannis Stamelos. 2019. Monitoring Technical Debt in an Industrial Setting. In Evaluation and Assessment on Software Engineering. ACM, 123–132.Google Scholar
- Wesley K. G. Assunção, Roberto E. Lopez-Herrejon, Lukas Linsbauer, Silvia R. Vergilio, and Alexander Egyed. 2017. Reengineering legacy applications into software product lines: a systematic mapping. Empirical Software Engineering 22, 6 (2017), 2972–3016.Google ScholarDigital Library
- Paris Avgeriou, Philippe Kruchten, Ipek Ozkaya, and Carolyn B. Seaman. 2016. Managing Technical Debt in Software Engineering (Dagstuhl Seminar 16162). Dagstuhl Reports 6, 4 (2016), 110–138.Google Scholar
- Muhammad Ali Babar, Lianping Chen, and Forrest Shull. 2010. Managing Variability in Software Product Lines. IEEE Software 27 (2010), 89–91.Google ScholarDigital Library
- Amine Benmerzoug, Lamia Yessad, and Tewfik Ziadi. 2020. Analyzing the Impact of Refactoring Variants on Feature Location. In 19th International Conference on Software and Systems Reuse (ICSR). Springer, 279–291.Google Scholar
- Thorsten Berger, Ralf Rublack, Divya Nair, Joanne M. Atlee, Martin Becker, Krzysztof Czarnecki, and Andrzej Wasowski. 2013. A survey of variability modeling in industrial practice. In 7th Int. Workshop on Variability Modelling of Software-intensive Systems. ACM, 7:1–7:8.Google ScholarDigital Library
- Thorsten Berger, Jan-Philipp Steghöfer, Tewfik Ziadi, Jacques Robin, and Jabier Martinez. 2020. The state of adoption and the challenges of systematic variability management in industry. Empirical Software Engineering 25, 3 (2020), 1755–1797.Google ScholarDigital Library
- Rafael Capilla, Jan Bosch, and Kyo-Chul Kang. 2013. Systems and Software Variability Management: Concepts, Tools and Experiences. Springer.Google ScholarDigital Library
- Rafael Capilla, Tommi Mikkonen, Carlos Carrillo, Francesca Arcelli Fontana, Ilaria Pigazzini, and Valentina Lenarduzzi. 2021. Impact of Opportunistic Reuse Practices to Technical Debt. In Int. Conference on Technical Debt. 16–25.Google ScholarCross Ref
- Georgios Digkas, Nikolaos Nikolaidis, Apostolos Ampatzoglou, and Alexander Chatzigeorgiou. 2019. Reusing Code from StackOverflow: The Effect on Technical Debt. In 45th Euromicro Conference on Software Engineering and Advanced Applications. 87–91.Google ScholarCross Ref
- Yael Dubinsky, Julia Rubin, Thorsten Berger, Slawomir Duszynski, Martin Becker, and Krzysztof Czarnecki. 2013. An Exploratory Study of Cloning in Industrial Software Product Lines. In 17th European Conference on Software Maintenance and Reengineering. IEEE Computer Society, 25–34.Google Scholar
- Wolfram Fenske, Jens Meinicke, Sandro Schulze, Steffen Schulze, and Gunter Saake. 2017. Variant-preserving refactorings for migrating cloned products to a product line. In 24th Int. Conference on Software Analysis, Evolution and Reengineering. IEEE, 316–326.Google ScholarCross Ref
- Wolfram Fenske and Sandro Schulze. 2015. Code Smells Revisited: A Variability Perspective. In 9th Int. Workshop on Variability Modelling of Software-Intensive Systems. ACM, 3–10.Google ScholarDigital Library
- Yuepu Guo and Carolyn B. Seaman. 2011. A portfolio approach to technical debt management. In 2nd Workshop on Managing Technical Debt. ACM, 31–34.Google ScholarDigital Library
- Helvio Jeronimo Junior and Guilherme Horta Travassos. 2022. Consolidating a common perspective on Technical Debt and its Management through a Tertiary Study. Inf. Softw. Technol. 149 (2022), 106964.Google ScholarDigital Library
- Barbara Kitchenham, O Pearl Brereton, David Budgen, Mark Turner, John Bailey, and Stephen Linkman. 2009. Systematic literature reviews in software engineering–a systematic literature review. Inf. Softw. Technol. 51, 1 (2009), 7–15.Google ScholarDigital Library
- Philippe Kruchten, Robert Nord, and Ipek Ozkaya. 2019. Managing Technical Debt: Reducing Friction in Software Development (1st ed.). Addison-Wesley Professional.Google Scholar
- Charles W. Krueger. 2001. Easing the Transition to Software Mass Customization. In 4th Int. Workshop on Software Product-Family Engineering. Springer, 282–293.Google Scholar
- Jacob Krüger and Thorsten Berger. 2020. An Empirical Analysis of the Costs of Clone- and Platform-Oriented Software Reuse. In 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 432–444.Google Scholar
- Jacob Krüger, Wardah Mahmood, and Thorsten Berger. 2020. Promote-Pl: A Round-Trip Engineering Process Model for Adopting and Evolving Product Lines. In 24th ACM Conference on Systems and Software Product Line. ACM.Google ScholarDigital Library
- Valentina Lenarduzzi, Terese Besker, Davide Taibi, Antonio Martini, and Francesca Arcelli Fontana. 2021. A systematic literature review on Technical Debt prioritization: Strategies, processes, factors, and tools. Journal of Systems and Software 171 (2021), 110827. https://doi.org/10.1016/j.jss.2020.110827Google ScholarCross Ref
- Zengyang Li, Paris Avgeriou, and Peng Liang. 2015. A systematic mapping study on technical debt and its management. J. Syst. and Software 101 (2015), 193–220.Google ScholarDigital Library
- Zengyang Li, Paris Avgeriou, and Peng Liang. 2015. A systematic mapping study on technical debt and its management. J. Syst. and Software 101 (2015), 193–220.Google ScholarDigital Library
- Crescencio Lima, Wesley Klewerton Guez Assunção, Jabier Martinez, William Mendonça, Ivan do Carmo Machado, and Christina von Flach G. Chavez. 2019. Product line architecture recovery with outlier filtering in software families: the Apo-Games case study. J. Braz. Comput. Soc. 25, 1 (2019), 7:1–7:17.Google ScholarCross Ref
- Rezvan Mahdavi-Hezaveh, Jacob Dremann, and Laurie Williams. 2021. Software development with feature toggles: practices used by practitioners. Empirical Software Engineering 26, 1 (2021).Google Scholar
- Jabier Martinez, Wesley K. G. Assunção, and Tewfik Ziadi. 2017. ESPLA: A Catalog of Extractive SPL Adoption Case Studies. In 21st International Systems and Software Product Line Conference. ACM, 38–41.Google ScholarDigital Library
- Jabier Martinez, Tewfik Ziadi, Tegawendé F. Bissyandé, Jacques Klein, and Yves Le Traon. 2017. Bottom-up Technologies for Reuse: Automated Extractive Adoption of Software Product Lines. In 39th Int. Conference on Software Engineering Companion. IEEE, 67–70.Google Scholar
- Raul Medeiros, Jabier Martinez, Oscar Díaz, and Jean-Rémy Falleri. 2023. Visualizations for the evolution of Variant-Rich Systems: A systematic mapping study. Inf. Softw. Technol. 154 (2023), 107084.Google ScholarDigital Library
- Klaus Pohl, Günter Böckle, and Frank van der Linden. 2005. Software Product Line Engineering - Foundations, Principles, and Techniques. Springer. https://doi.org/10.1007/3-540-28901-1Google ScholarCross Ref
- Leilane Ribeiro, Mário Farias, Manoel Mendonça, and Rodrigo Spínola. 2016. Decision Criteria for the Payment of Technical Debt in Software Projects: A Systematic Mapping Study. In 18th Int. Conference on Enterprise Information Systems. 572–579.Google Scholar
- Nicolli Rios, Manoel Gomes de Mendonça Neto, and Rodrigo Spínola. 2018. A tertiary study on technical debt: Types, management strategies, research trends, and base information for practitioners. Inf. Softw. Technol. 102 (2018), 117–145.Google ScholarCross Ref
- Klaus Schmid and Isabel John. 2004. A customizable approach to full lifecycle variability management. Science of Computer Programming 53, 3 (2004), 259–284.Google ScholarDigital Library
- C. A. Siebra, G. S. Tonin, F. Q. B. da Silva, R. G. Oliveira, L. C. Antonio, R. C. G. Miranda, and A. L. M. Santos. 2012. Managing technical debt in practice: An industrial report. In Int. Symp. on Empirical Software Engineering and Measurement. 247–250.Google ScholarDigital Library
- Iuri Santos Souza, Ivan do Carmo Machado, Carolyn Seaman, Gecynalda Soares da Silva Gomes, Christina Chavez, Eduardo Santana de Almeida, and Paulo César Masiero. 2019. Investigating Variability-aware Smells in SPLs: An Exploratory Study. In 33rd Brazilian Symposium on Software Engineering. ACM, 367–376.Google ScholarDigital Library
- SPLC. 2020. Product Line Hall of Fame. https://splc.net/fame.htmlGoogle Scholar
- Klaas-Jan Stol and Brian Fitzgerald. 2018. The ABC of Software Engineering Research. ACM Trans. Softw. Eng. Methodol. 27, 3 (2018).Google ScholarDigital Library
- Frank van der Linden, Klaus Schmid, and Eelco Rommes. 2007. Software product lines in action - the best industrial practice in product line engineering. Springer.Google Scholar
- Roberto Verdecchia, Philippe Kruchten, Patricia Lago, and Ivano Malavolta. 2021. Building and evaluating a theory of architectural technical debt in software-intensive systems. Journal of Systems and Software 176 (2021), 110925.Google ScholarCross Ref
- Daniele Wolfart, Wesley K. G. Assunção, and Jabier Martinez. 2021. Variability Debt: Characterization, Causes and Consequences. In SBQS 2021: 20th Brazilian Software Quality Symposium. 1–10. https://doi.org/10.1145/3493244.3493250Google ScholarDigital Library
- Jesse Yli-Huumo, Andrey Maglyas, and Kari Smolander. 2016. How do software development teams manage technical debt? - An empirical study. J. Syst. and Software 120 (2016), 195–218.Google ScholarDigital Library
Index Terms
- Variability Debt: A Multi-method Study
Recommendations
Variability Debt: Characterization, Causes and Consequences
SBQS '21: Proceedings of the XX Brazilian Symposium on Software QualityVariability is an inherent property of software systems to create families of products dealing with needs of different customers and environments. However, some practices to manage variability may incur technical debt. For example, the use of ...
Sell-Side Debt Analysts and Debt Market Efficiency
We explore sell-side debt analysts’ contributions to the efficiency of securities markets. We document that debt returns lag equity returns less when debt research coverage exists, which is consistent with debt analysts facilitating the process by which ...
A portfolio approach to technical debt management
MTD '11: Proceedings of the 2nd Workshop on Managing Technical DebtTechnical debt describes the effect of immature software artifacts on software maintenance - the potential of extra effort required in future as if paying interest for the incurred debt. The uncertainty of interest payment further complicates the ...
Comments