apresentacao qualificação - joão brunet

57
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.

Upload: joao-brunet

Post on 02-Aug-2015

239 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Apresentacao Qualificação - João Brunet

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

Arquitetura de Software

Decisão Arquitetural

A B

C

Conjunto de decisões arquiteturais

Page 3: Apresentacao Qualificação - João Brunet

Violação Arquitetural

DecisãoArquitetural

A B

C

Design

Page 4: Apresentacao Qualificação - João Brunet

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

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

Erosão ArquiteturalNão é um evento raro!

Page 7: Apresentacao Qualificação - João Brunet

Erosão Arquitetural

Erosão arquitetural em perspectiva

Page 8: Apresentacao Qualificação - João Brunet

Erosão Arquitetural

1. Detectar

2. Entender

3. Agir

Erosão arquitetural em perspectiva

Page 9: Apresentacao Qualificação - João Brunet

Erosão Arquitetural

1. Detectar

Erosão arquitetural em perspectiva

Page 10: Apresentacao Qualificação - João Brunet

A B

C

Erosão Arquitetural: Detectando

Verificação de conformidade

Page 11: Apresentacao Qualificação - João Brunet

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

Testes de Design

Rotinas de asserção

Informação sobre o código

Page 13: Apresentacao Qualificação - João Brunet

Testes de Design

Page 14: Apresentacao Qualificação - João Brunet

Testes de Design: Usabilidade

Page 15: Apresentacao Qualificação - João Brunet

Testes de Design: Usabilidade

Page 16: Apresentacao Qualificação - João Brunet

Testes de Design: Usabilidade

Page 17: Apresentacao Qualificação - João Brunet

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

Erosão Arquitetural

Erosão arquitetural em perspectiva

2. Entender

Page 19: Apresentacao Qualificação - João Brunet

Estudo exploratório e longitudinal

Page 20: Apresentacao Qualificação - João Brunet

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

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

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

● 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

Software Evolution

V1 V2 V3 ... V20

Estudo exploratório e longitudinal

Page 25: Apresentacao Qualificação - João Brunet

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

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

How does the gap between code and architecture evolve over time?

RQ1

How?Como?

Page 28: Apresentacao Qualificação - João Brunet

How does the gap between code and architecture evolve over time?

RQ1

How?Como?

Page 29: Apresentacao Qualificação - João Brunet

How does the gap between code and architecture evolve over time?

RQ1

How?Como?

Ant: Rollback

Page 30: Apresentacao Qualificação - João Brunet

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

How does the gap between code and architecture evolve over time?

RQ1

How?Como?

Page 32: Apresentacao Qualificação - João Brunet

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

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

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

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

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

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

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

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

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

Erosão Arquitetural

Erosão arquitetural em perspectiva

2. Entender

Page 42: Apresentacao Qualificação - João Brunet

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

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

Trabalhos Futuros

Experimento in situ

2 estudos de caso

Page 45: Apresentacao Qualificação - João Brunet

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

Trabalhos Futuros

Qual o impacto de erosão arquitetural na qualidade do código fonte?

Page 47: Apresentacao Qualificação - João Brunet

Trabalhos Futuros

Módulos menos coesos concentram mais violações?

A

B

C

D

E

Page 48: Apresentacao Qualificação - João Brunet

Trabalhos Futuros

Módulos com maior acoplamento concentram mais violações?

A

B

C

D

E

Page 49: Apresentacao Qualificação - João Brunet

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

Erosão Arquitetural

3. Agir

Erosão arquitetural em perspectiva

Page 51: Apresentacao Qualificação - João Brunet

Trabalhos Futuros

ArchAdvisor: Sugestão de mudanças arquiteturais

Relevância

Qualidade

Page 52: Apresentacao Qualificação - João Brunet

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

Trabalhos Futuros

ArchAdvisor: Sugestão de mudanças arquiteturais

A B

Page 54: Apresentacao Qualificação - João Brunet

Trabalhos Futuros

ArchAdvisor: Sugestão de mudanças arquiteturais

A B

Adição de Exceções!

Page 55: Apresentacao Qualificação - João Brunet

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

Cronograma

Page 57: Apresentacao Qualificação - João Brunet

Contribuições

Abordagem para verificação de conformidade

Caracterização da natureza das violações arquiteturais

Abordagem para sugestão de mudanças arquiteturais