SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
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.
Arquitetura de Software

Conjunto de decisões arquiteturais




                      Decisão        A   B
                    Arquitetural


                                     C
Violação Arquitetural

             Decisão      A   B
           Arquitetural


                          C



Design
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();
         }

  }
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.
Erosão Arquitetural
Não é um evento raro!
Erosão Arquitetural

Erosão arquitetural em perspectiva
Erosão Arquitetural

Erosão arquitetural em perspectiva



                                 1. Detectar


                                 2. Entender


                                 3. Agir
Erosão Arquitetural

Erosão arquitetural em perspectiva



                                 1. Detectar
Erosão Arquitetural: Detectando

Verificação de conformidade




 A        B



 C
Testes de Design
Somente o pacote controller pode acessar o pacote
dao.




      Informação sobre o código
Testes de Design




Informação sobre o código


Rotinas de asserção
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
        RQ1



How does the gap
between code and
architecture
evolve over time?
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?
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?
Estudo exploratório e longitudinal


         ●   20 versões bi-semanais (9 meses)
         ●   Modelos arquiteturais extraídos da
             documentação dos sistemas
Estudo exploratório e longitudinal




 V1        V2                        V3   ...   V20




                Software Evolution
Estudo exploratório e longitudinal



A   B        A   B                      A      B          A    B
C            C                         C                  C


        V1           V2                        V3   ...       V20




                          Software Evolution
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
RQ1


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


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


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




     Ant: Rollback
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.”
RQ1


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


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




  A implementação tende a divergir da arquitetura.
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?




  Poucas classes possuem muitas violações.
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
RQ2

 Are the violations      Onde?
equally spread over
the design entities or
they concentrate on a
few ones?
RQ3


                       Como?
 Once violations are
solved, do they
appear again in
future versions?




   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
 1
     erosão arquitetural?

     Qual o impacto de erosão arquitetural
 2
     na qualidade do código fonte?
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
                              Metodologia


                                   1    Coletar regras arquiteturais
Experimento in situ
                                   2    Compor testes de design
2 estudos de caso
                                   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?



                                  B



                                  C
                         A


                                  D



                                  E
Trabalhos Futuros

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



                                B



                                C
                         A


                                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

Erosão arquitetural em perspectiva




                                 3. Agir
Trabalhos Futuros

ArchAdvisor: Sugestão de mudanças arquiteturais

     Relevância


     Qualidade
Trabalhos Futuros

ArchAdvisor: Sugestão de mudanças arquiteturais

     Relevância


     Qualidade
                               Violações arquiteturais
                               indicam sempre problemas
                               na implementação?
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 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
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

Mais conteúdo relacionado

Destaque

Exercicio De ProporçãO Com Gabarito
Exercicio De ProporçãO Com GabaritoExercicio De ProporçãO Com Gabarito
Exercicio De ProporçãO Com Gabaritoguesta4929b
 
7º ano reino plantae 1
7º ano    reino plantae 17º ano    reino plantae 1
7º ano reino plantae 1Simone Maia
 
Reino plantae
Reino plantaeReino plantae
Reino plantaePedr457
 
Reino Plantae Power Point
Reino Plantae Power PointReino Plantae Power Point
Reino Plantae Power Pointinfoeducp2
 
Razões e proporções, divisão proporcional, regras de três simples e compostas...
Razões e proporções, divisão proporcional, regras de três simples e compostas...Razões e proporções, divisão proporcional, regras de três simples e compostas...
Razões e proporções, divisão proporcional, regras de três simples e compostas...Romulo Garcia
 
O Setor Terciário da Economia
O Setor Terciário da EconomiaO Setor Terciário da Economia
O Setor Terciário da EconomiaProfMario De Mori
 
Região sudeste slides
Região sudeste slidesRegião sudeste slides
Região sudeste slidesIvone Rosa Sa
 

Destaque (10)

Região Sudeste
Região SudesteRegião Sudeste
Região Sudeste
 
Reino plantae
Reino plantaeReino plantae
Reino plantae
 
Exercicio De ProporçãO Com Gabarito
Exercicio De ProporçãO Com GabaritoExercicio De ProporçãO Com Gabarito
Exercicio De ProporçãO Com Gabarito
 
7º ano reino plantae 1
7º ano    reino plantae 17º ano    reino plantae 1
7º ano reino plantae 1
 
Reino plantae
Reino plantaeReino plantae
Reino plantae
 
Reino plantae
Reino plantaeReino plantae
Reino plantae
 
Reino Plantae Power Point
Reino Plantae Power PointReino Plantae Power Point
Reino Plantae Power Point
 
Razões e proporções, divisão proporcional, regras de três simples e compostas...
Razões e proporções, divisão proporcional, regras de três simples e compostas...Razões e proporções, divisão proporcional, regras de três simples e compostas...
Razões e proporções, divisão proporcional, regras de três simples e compostas...
 
O Setor Terciário da Economia
O Setor Terciário da EconomiaO Setor Terciário da Economia
O Setor Terciário da Economia
 
Região sudeste slides
Região sudeste slidesRegião sudeste slides
Região sudeste slides
 

Semelhante a Apresentacao Qualificação - João Brunet

Verificação de Conformação de Regras de Design
Verificação de Conformação de Regras de DesignVerificação de Conformação de Regras de Design
Verificação de Conformação de Regras de Designmarcioesufc
 
Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
Agilidade de Ponta-a-Ponta com Arquiteturas EvolucionáriasAgilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
Agilidade de Ponta-a-Ponta com Arquiteturas EvolucionáriasBreno Barros
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfAntonio Lobato
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...André Paulovich
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoLeandro Daniel
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaLeandro Daniel
 
Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHHugo Ferreira
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
InfoQ Brasil - Arquitetando o Futuro da TI - Por Wagner Santos
InfoQ Brasil -  Arquitetando o Futuro da TI - Por Wagner SantosInfoQ Brasil -  Arquitetando o Futuro da TI - Por Wagner Santos
InfoQ Brasil - Arquitetando o Futuro da TI - Por Wagner SantosManoel Pimentel Medeiros
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Maurício Aniche
 
Coordenador de projetos ( Avaliação de Projetos )
Coordenador de projetos ( Avaliação de Projetos )Coordenador de projetos ( Avaliação de Projetos )
Coordenador de projetos ( Avaliação de Projetos )Ricardo Akerman
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)Giovanni Bassi
 
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2André Dias
 

Semelhante a Apresentacao Qualificação - João Brunet (20)

Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Verificação de Conformação de Regras de Design
Verificação de Conformação de Regras de DesignVerificação de Conformação de Regras de Design
Verificação de Conformação de Regras de Design
 
Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
Agilidade de Ponta-a-Ponta com Arquiteturas EvolucionáriasAgilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
Agilidade de Ponta-a-Ponta com Arquiteturas Evolucionárias
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdf
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre Arquitetura
 
Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BH
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
InfoQ Brasil - Arquitetando o Futuro da TI - Por Wagner Santos
InfoQ Brasil -  Arquitetando o Futuro da TI - Por Wagner SantosInfoQ Brasil -  Arquitetando o Futuro da TI - Por Wagner Santos
InfoQ Brasil - Arquitetando o Futuro da TI - Por Wagner Santos
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011
 
Coordenador de projetos ( Avaliação de Projetos )
Coordenador de projetos ( Avaliação de Projetos )Coordenador de projetos ( Avaliação de Projetos )
Coordenador de projetos ( Avaliação de Projetos )
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
 

Apresentacao Qualificação - João Brunet