Technical debt in reference architectures: definition, conceptual model, and identification guidelines

Detalhes bibliográficos
Ano de defesa: 2024
Autor(a) principal: Damaceno, Katia Cristina Aparecida
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Biblioteca Digitais de Teses e Dissertações da USP
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://www.teses.usp.br/teses/disponiveis/55/55134/tde-23082024-135100/
Resumo: To cope with the increasing complexity of software development, organizations are often making decisions that compromise quality attributes of their products (e.g., maintainability and evolvability) to achieve business benefits in the software development lifecycle. This phenomenon, called Technical Debt (TD), occurs not only during coding (e.g. poor programming practices or technological gaps), but can be found in documentation, architecture, etc. TD is hardly seen by customers or end users, and sometimes not even from the point of view of developers who often are unaware of it. The invisibility of architectural TD increases the risk of high maintenance and evolution costs of the corresponding generated software systems. Since 2010, architectural TD has been constantly researched, showing the importance of this area for software development. On the other hand, TD could also be present in reference architectures, which are situated one level above software architectures, as they encompass the knowledge of how to design concrete architectures for a given application domain. However, Reference Architecture Technical Debt (RATD) has not received enough attention from the research community, which motivated this work. When left unidentified, RATD can lead to TD in software architectures and, consequently, in software systems. Furthermore, it can be accumulated and generate unexpected costs such as higher maintenance and time-to-market. Therefore, it is crucial to efficiently manage RATD debt to ensure the integrity of software systems. In this scenario, the main objective of this PhD thesis was to define the concepts involving RATD and propose a method to identify and to document RATD in reference architectures during the processes of creation, maintenance, and evolution. To evaluate the proposed concepts, a survey was carried out with experts in the area. To evaluate the proposed identification guidelines, a proof of concept was conducted based on a reference architecture already consolidated. As main results, we expect that the RATD concepts and identification guidelines will raise awareness among software developers about RATD and how to identify and document it, thus making reference architectures more sustainable in the long term.