View
238
Download
5
Category
Preview:
Citation preview
Erosão Arquitetural em Perspectiva: Detectando, Entendendo e Agindo
João BrunetDalton Serey and Jorge Abrantes (orientadores)
Software Practices Laboratory - SPLabUniversidade Federal de Campina Grande (UFCG), Brasil
Dec 13, 2012 Campina Grande, Brasil.
Arquitetura de Software
Decisão Arquitetural
A B
C
Conjunto de decisões arquiteturais
Violação Arquitetural
DecisãoArquitetural
A B
C
Design
Violação Arquitetural
DecisãoArquitetural
A B
C
Design
Implementação
public class A {
public void m1(C c) {c.method1();
}
}
Violação arquitetural: A.m1() calls C.method1()
Erosão ArquiteturalPerda progressiva da estrutura do software causada pelo acumulo de violações arquiteturais [1]
Complexidade
[1] Perry and A. Wolf, “Foundations for the study of software architecture,” Software Engineering Notes, 1992.[2] F. Brooks, The mythical man-month, vol. 79. Addison-Wesley Reading, Mass, 1975.
Brittleness [2]
Erosão ArquiteturalNão é um evento raro!
Erosão Arquitetural
Erosão arquitetural em perspectiva
Erosão Arquitetural
1. Detectar
2. Entender
3. Agir
Erosão arquitetural em perspectiva
Erosão Arquitetural
1. Detectar
Erosão arquitetural em perspectiva
A B
C
Erosão Arquitetural: Detectando
Verificação de conformidade
Testes de Design
Informação sobre o código
Somente o pacote controller pode acessar o pacote dao.
Testes de Design
Rotinas de asserção
Informação sobre o código
Testes de Design
Testes de Design: Usabilidade
Testes de Design: Usabilidade
Testes de Design: Usabilidade
Testes de Design: Usabilidade
Observações gerais
Fortes indícios de que a API é simples de ser manipulada
O conceito de testes de design foi capturado
Observações específicas
método getAllClasses()
getDeclaredMethod (String name)
Uso de equals, hashCode e contains
Erosão Arquitetural
Erosão arquitetural em perspectiva
2. Entender
Estudo exploratório e longitudinal
Estudo exploratório e longitudinal
How does the gap between code and architecture evolve over time?
RQ1
Estudo exploratório e longitudinal
How does the gap between code and architecture evolve over time?
RQ1
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Estudo exploratório e longitudinal
How does the gap between code and architecture evolve over time?
RQ1
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Once violations are solved in a given version,do they appear again in future versions?
RQ3
● 20 versões bi-semanais (9 meses)● Modelos arquiteturais extraídos da
documentação dos sistemas
Estudo exploratório e longitudinal
Software Evolution
V1 V2 V3 ... V20
Estudo exploratório e longitudinal
Software Evolution
V1 V2 V3 ... V20
A B
C
A B
CA B
C
A B
C
Estudo exploratório e longitudinal
Software Evolution
V1 V2 V3 ... V20
A B
C
A B
CA B
C
A B
C
Violações Violações Violações Violações
Estudo exploratório e longitudinal
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
Ant: Rollback
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
ArgoUML: “ProgressMonitor does not belong in the GUI subsystem...Move the ProgressMonitor into its own subsystem.”
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
A implementação tende a divergir da arquitetura.
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Poucas classes possuem muitas violações.
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Como? Once violations are solved, do they appear again in future versions?
RQ3
Sim. Trata-se de um número significativo.
Discussão
Do not live with broken windows
Fatores humanos
Núcleo crítico
Violações recorrentes
Erosão Arquitetural
Erosão arquitetural em perspectiva
2. Entender
Erosão Arquitetural
Trabalhos Futuros
Como os desenvolvedores lidam com erosão arquitetural?
Qual o impacto de erosão arquitetural na qualidade do código fonte?
1
2
Trabalhos Futuros
Como os desenvolvedores lidam com erosão arquitetural?
Por que ocorrem as violações?
Por que existem violações recorrentes?
Quão relevantes são as violações?
As violações são intencionalmente resolvidas?
Trabalhos Futuros
Experimento in situ
2 estudos de caso
Trabalhos Futuros
Experimento in situ
2 estudos de caso
Metodologia
1 Coletar regras arquiteturais
2 Compor testes de design
3 Verificar conformidade
4 Avaliação
Trabalhos Futuros
Qual o impacto de erosão arquitetural na qualidade do código fonte?
Trabalhos Futuros
Módulos menos coesos concentram mais violações?
A
B
C
D
E
Trabalhos Futuros
Módulos com maior acoplamento concentram mais violações?
A
B
C
D
E
Trabalhos Futuros
Metodologia
1 Revisão sobre métricas de qualidade
2 Projeto de Experimento
3 Execução do Experimento
4 Análise e Publicação dos resultados
Erosão Arquitetural
3. Agir
Erosão arquitetural em perspectiva
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
Relevância
Qualidade
Trabalhos Futuros
Relevância
Qualidade
Violações arquiteturaisindicam sempre problemasna implementação?
ArchAdvisor: Sugestão de mudanças arquiteturais
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
A B
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
A B
Adição de Exceções!
Em resumo1. Detectar
2. Entender
3. Agir
Testes de design - ICSM 2011
On the nature of architectural violations - WCRE 2012
On the relevance of architectural violations
On the impact of architectural violations
ArchAdvisor: Recommending architectural changes
Cronograma
Contribuições
Abordagem para verificação de conformidade
Caracterização da natureza das violações arquiteturais
Abordagem para sugestão de mudanças arquiteturais
Recommended