apresentacao qualificação - joão brunet

Post on 02-Aug-2015

239 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related