The document discusses architectural erosion in software systems, presenting a perspective on detecting, understanding, and addressing architectural violations through design testing, exploratory studies of violations over multiple versions, and a proposed tool called ArchAdvisor to recommend architectural changes. It outlines past and future work on measuring and characterizing the nature and impact of architectural erosion.
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Apresentacao Qualificação - João Brunet
1. Erosão Arquitetural em Perspectiva:
Detectando, Entendendo e Agindo
João Brunet
Dalton Serey and Jorge Abrantes (orientadores)
Software Practices Laboratory - SPLab
Universidade Federal de Campina Grande (UFCG), Brasil
Dec 13, 2012
Campina Grande, Brasil.
4. Violação Arquitetural
Decisão A B
Arquitetural
C
Design
Implementação
public class A {
Violação arquitetural: A.m1() calls C.method1()
public void m1(C c) {
c.method1();
}
}
5. Erosão Arquitetural
Perda progressiva da estrutura do software causada pelo
acumulo de violações arquiteturais [1]
Complexidade
Brittleness [2]
[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.
17. 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
20. Estudo exploratório e longitudinal
RQ1
How does the gap
between code and
architecture
evolve over time?
21. Estudo exploratório e longitudinal
RQ1 RQ2
How does the gap Are the violations
between code and equally spread over
architecture the design entities
evolve over time? or they concentrate
on a few ones?
22. Estudo exploratório e longitudinal
RQ1 RQ2 RQ3
How does the gap Are the violations Once violations are
between code and equally spread over solved in a given version,
architecture the design entities do they appear again
evolve over time? or they concentrate in future versions?
on a few ones?
23. Estudo exploratório e longitudinal
● 20 versões bi-semanais (9 meses)
● Modelos arquiteturais extraídos da
documentação dos sistemas
25. Estudo exploratório e longitudinal
A B A B A B A B
C C C C
V1 V2 V3 ... V20
Software Evolution
26. Estudo exploratório e longitudinal
Violações Violações Violações Violações
A B A B A B A B
C C C C
V1 V2 V3 ... V20
Software Evolution
27. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
28. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
29. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
Ant: Rollback
30. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
ArgoUML: “ProgressMonitor does not belong in the GUI subsystem...
Move the ProgressMonitor into its own subsystem.”
31. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
32. RQ1
How does the gap
between code and
Como?
How?
architecture
evolve over time?
A implementação tende a divergir da arquitetura.
33. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
34. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
35. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
Poucas classes possuem muitas violações.
36. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
37. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
38. RQ2
Are the violations Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
39. RQ3
Como?
Once violations are
solved, do they
appear again in
future versions?
Sim. Trata-se de um número
significativo.
40. Discussão
Do not live with broken windows
Fatores humanos
Núcleo crítico
Violações recorrentes
42. Erosão Arquitetural
Trabalhos Futuros
Como os desenvolvedores lidam com
1
erosão arquitetural?
Qual o impacto de erosão arquitetural
2
na qualidade do código fonte?
43. 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?
49. 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
55. Em resumo
1. Detectar
Testes de design - ICSM 2011
2. Entender
On the nature of architectural violations - WCRE 2012
On the relevance of architectural violations
On the impact of architectural violations
3. Agir
ArchAdvisor: Recommending architectural changes
57. Contribuições
Abordagem para verificação de conformidade
Caracterização da natureza das violações arquiteturais
Abordagem para sugestão de mudanças arquiteturais