A systems interpretation of the software evolution laws and their impact on technical debt management and software maintainability
Eduardo Ferreira Franco,Kechi Hirama,Stefano Armenia,Joaquim Rocha dos Santos
DOI: https://doi.org/10.1007/s11219-022-09600-6
2022-09-07
Software Quality Journal
Abstract:The average lifetime of software systems has been growing steadily over the last few decades, and thus, they are demanding increasing resources to remain in operation while still meeting business needs. As a software system ages, it needs to be continuously modified and expanded to stay useful. Whether intentional or not, the various maintenance activities performed during the software's lifetime inevitably introduce quality violations, contributing to building up the software's technical debt. If these violations are not adequately addressed, they can negatively impact the software's maintainability and, thus, the software's capacity to adapt and evolve. In general terms, usually, the aim is to sustain satisfactory levels of technical quality characteristics of the software and, at the same time, preserve the maintenance costs and the tangible software asset itself at acceptable levels to organizations. The long-term impact of various maintenance investment decisions inevitability influences the software's evolutionary path, which goes through numerous iterations throughout its lifetime. This work uses the systems thinking approach to map the main concepts related to the software maintenance processes that account for this tradeoff analysis and decisions and describe their causal relationships. Moreover, it presents a systemic causal-effect relationship map capable of evidencing how some of the emergent behavior arising from long-term operating and maintaining software systems could be endogenously explained.
computer science, software engineering