Download - Apresentacao Qualificação - João Brunet
![Page 1: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/1.jpg)
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.
![Page 2: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/2.jpg)
Arquitetura de Software
Decisão Arquitetural
A B
C
Conjunto de decisões arquiteturais
![Page 3: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/3.jpg)
Violação Arquitetural
DecisãoArquitetural
A B
C
Design
![Page 4: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/4.jpg)
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()
![Page 5: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/5.jpg)
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]
![Page 6: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/6.jpg)
Erosão ArquiteturalNão é um evento raro!
![Page 7: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/7.jpg)
Erosão Arquitetural
Erosão arquitetural em perspectiva
![Page 8: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/8.jpg)
Erosão Arquitetural
1. Detectar
2. Entender
3. Agir
Erosão arquitetural em perspectiva
![Page 9: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/9.jpg)
Erosão Arquitetural
1. Detectar
Erosão arquitetural em perspectiva
![Page 10: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/10.jpg)
A B
C
Erosão Arquitetural: Detectando
Verificação de conformidade
![Page 11: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/11.jpg)
Testes de Design
Informação sobre o código
Somente o pacote controller pode acessar o pacote dao.
![Page 12: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/12.jpg)
Testes de Design
Rotinas de asserção
Informação sobre o código
![Page 13: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/13.jpg)
Testes de Design
![Page 14: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/14.jpg)
Testes de Design: Usabilidade
![Page 15: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/15.jpg)
Testes de Design: Usabilidade
![Page 16: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/16.jpg)
Testes de Design: Usabilidade
![Page 17: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/17.jpg)
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
![Page 18: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/18.jpg)
Erosão Arquitetural
Erosão arquitetural em perspectiva
2. Entender
![Page 19: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/19.jpg)
Estudo exploratório e longitudinal
![Page 20: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/20.jpg)
Estudo exploratório e longitudinal
How does the gap between code and architecture evolve over time?
RQ1
![Page 21: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/21.jpg)
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
![Page 22: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/22.jpg)
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
![Page 23: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/23.jpg)
● 20 versões bi-semanais (9 meses)● Modelos arquiteturais extraídos da
documentação dos sistemas
Estudo exploratório e longitudinal
![Page 24: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/24.jpg)
Software Evolution
V1 V2 V3 ... V20
Estudo exploratório e longitudinal
![Page 25: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/25.jpg)
Software Evolution
V1 V2 V3 ... V20
A B
C
A B
CA B
C
A B
C
Estudo exploratório e longitudinal
![Page 26: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/26.jpg)
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
![Page 27: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/27.jpg)
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
![Page 28: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/28.jpg)
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
![Page 29: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/29.jpg)
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
Ant: Rollback
![Page 30: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/30.jpg)
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.”
![Page 31: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/31.jpg)
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
![Page 32: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/32.jpg)
How does the gap between code and architecture evolve over time?
RQ1
How?Como?
A implementação tende a divergir da arquitetura.
![Page 33: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/33.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
![Page 34: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/34.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
![Page 35: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/35.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
Poucas classes possuem muitas violações.
![Page 36: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/36.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
![Page 37: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/37.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
![Page 38: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/38.jpg)
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Onde?
![Page 39: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/39.jpg)
Como? Once violations are solved, do they appear again in future versions?
RQ3
Sim. Trata-se de um número significativo.
![Page 40: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/40.jpg)
Discussão
Do not live with broken windows
Fatores humanos
Núcleo crítico
Violações recorrentes
![Page 41: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/41.jpg)
Erosão Arquitetural
Erosão arquitetural em perspectiva
2. Entender
![Page 42: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/42.jpg)
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
![Page 43: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/43.jpg)
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?
![Page 44: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/44.jpg)
Trabalhos Futuros
Experimento in situ
2 estudos de caso
![Page 45: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/45.jpg)
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
![Page 46: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/46.jpg)
Trabalhos Futuros
Qual o impacto de erosão arquitetural na qualidade do código fonte?
![Page 47: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/47.jpg)
Trabalhos Futuros
Módulos menos coesos concentram mais violações?
A
B
C
D
E
![Page 48: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/48.jpg)
Trabalhos Futuros
Módulos com maior acoplamento concentram mais violações?
A
B
C
D
E
![Page 49: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/49.jpg)
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
![Page 50: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/50.jpg)
Erosão Arquitetural
3. Agir
Erosão arquitetural em perspectiva
![Page 51: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/51.jpg)
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
Relevância
Qualidade
![Page 52: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/52.jpg)
Trabalhos Futuros
Relevância
Qualidade
Violações arquiteturaisindicam sempre problemasna implementação?
ArchAdvisor: Sugestão de mudanças arquiteturais
![Page 53: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/53.jpg)
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
A B
![Page 54: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/54.jpg)
Trabalhos Futuros
ArchAdvisor: Sugestão de mudanças arquiteturais
A B
Adição de Exceções!
![Page 55: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/55.jpg)
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
![Page 56: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/56.jpg)
Cronograma
![Page 57: Apresentacao Qualificação - João Brunet](https://reader030.vdocuments.pub/reader030/viewer/2022020101/55be07b7bb61eb5a278b474a/html5/thumbnails/57.jpg)
Contribuições
Abordagem para verificação de conformidade
Caracterização da natureza das violações arquiteturais
Abordagem para sugestão de mudanças arquiteturais