Erosão arquitetural em perspectiva: um estudo sobre as regras arquiteturais, suas violações e como os desenvolvedores lidam com o problema. - MONTEIRO, João Arthur Brunet. (2014)
Erosão arquitetural é o processo de degradação da estrutura do software à medida em que se dá a sua evolução. Embora alguns trabalhos nessa área tenham apresentado exemplos de desvio entre a arquitetura planejada e a implementação do software em um momento específico do seu ciclo de vida, pouco se sabe a respeito dessa relação sob uma perspectiva evolutiva, isto é, como se dá esse distanciamento à medida em que o software evolui. Além disso, as abordagens propostas para verificação de conformidade apontam que o número de violações arquiteturais é tipicamente alto. No entanto, não há conhecimento a respeito da relevância dessas violações arquiteturais e como os desenvolvedores lidam com o problema durante o desenvolvimento do software. Esta tese apresenta três estudos empíricos cujo objetivo é aumentar o conhecimento sobre erosão arquitetural e como os desenvolvedores lidam com violações arquiteturais. Como resultado, em um primeiro estudo com quatro sistemas open source, foi possível demonstrar empiricamente o processo de erosão arquitetural em uma perspectiva evolutiva, além de demonstrar que poucas entidades de design são responsáveis pela maioria das violações arquiteturais. Além disso, através de uma análise quantitativa e qualitativa em 3 sistemas (Eclipse, BeeFS e epol), realizou-se i) uma caracterização de regras arquiteturais, ii) um estudo sobre a relevância das violações arquiteturais nesses sistemas e, iii) uma caracterização dos motivos que levam os desenvolvedores a cometerem violações arquiteturais. Por fim. com o intuito de entender a comunicação sobre aspectos de design/arquitetura em projetos open source, através da análise de dados de 77 sistemas, foi identificado que 25% das discussões em projetos mencionam algum aspecto de design e que poucos desenvolvedores contribuem para um espectro amplo de discussões. Esses poucos desenvolvedores são os que mais contribuem para o código projeto, isto é, há uma forte correlação entre commits e a quantidade de discussões que um desenvolvedor participa.