10 lições aprendidas ao desenvolver um estudo na...

Post on 05-Aug-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OPUS Group LES | DI |PUC-Rio - Brazil

Manuele Ferreira

10 Lições Aprendidas ao Desenvolver um Estudo na Indústria

OPUS Research Group – LES – PUC-Rio

{manueleferreira}@inf.puc-rio.br

Método Pesquisa-ação

Page - 2 02/12/2014

PIMENTEL, Mariano (Org.); FULKS, Hugo (Org.). Sistemas colaborativos. Rio de Janeiro: Elsevier, 2011. 375p Cap 25

Diagnosticar IntervirPlanejar

ação AvaliarSim

Não

Solução

satisfatória?

Refletir

Insider

Outsider

1º Lição: Selecione Organização/Projeto alinhado com seus objetivos

Page - 3 02/12/2014

• Selecione Organização/Projeto

• Entenda as barreiras/características

• Tenha um contato interno que acredite na idéia

2º Lição: Tenha um tema e um plano bem definido

Page - 4 02/12/2014

Anomalia de Código e Degradação Arquitetural

Page - 5 02/12/2014

Anomalia de código (Code smell)

M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts Refactoring: Improving the design of existing code

Degradação Arquitetural

var selecionaTipoTsv = function ( tipo ) { ... var param = {}

if( tipo == gTSV ) { param[“numPag”] = “1”; $( location ).attr( 'href', "TSV/gTSV.jsp"); } else if( tipo == aTSV ) { param[“numPag”] = ”2”; $( location ).attr( 'href', "TSV/aTSV.jsp"); } else if( tipo == bTSV ) { param[“numPag”] = “1”; $( location ).attr( 'href', "TSV/bTSV.jsp"); } ...

}

Exemplo de Anomalia de código

Page - 6 02/12/2014

M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts Refactoring: Improving the design of existing code

Método Longo

Anomalia de Código de Relevância Arquitetural

Page - 7 02/12/2014

Anomalia de código (Code smell)

M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts Refactoring: Improving the design of existing code

Degradação Arquitetural

“Uma anomalia de código é relevante arquiteturalmente quando representa no código uma decisão arquitetural que tem impacto negativo na qualidade do sistema”

Macia, Isela, et al. "Are automatically-detected code anomalies relevant to architectural modularity?: an

exploratory analysis of evolving systems“, 2012

Exemplo de Anomalia de Código de Relevância Arquitetural

Page - 8 02/12/2014

Garcia, Joshua, et al. "Identifying architectural bad smells." Software Maintenance and Reengineering, 2009.

CSMR'09. 13th European Conference on. IEEE, 2009.

Método Longo

Anomalia de código de relevância arquitetural

Macia, Isela, et al. "Are automatically-detected code anomalies relevant to architectural modularity?: an

exploratory analysis of evolving systems ACM, 2012

Método Longo + Shotgun Surgery

Anomalia Arquitetural

Interface Ambígua

Estratégias baseadas em métricas

Page - 9 02/12/2014

R. Marinescu.Detection strategies: metrics-based rules for detecting design flaws. 2004

Configuração do Estudo

Page - 10 02/12/2014

Questões de pesquisa

Questões de Pes quisa Description

RQ1

Existe alguma diferença entre a eficácia das estratégias baseadas em métricas e estratégias ad hoc para detecção de anomalias de código de relevância arquitetural?

RQ2

Existe alguma diferença entre o esforço apliacado no uso das estratégias baseadas em métricas e estratégias ad hoc para detecção de anomalias de código de relevância arquitetural?

Identificar possibilidades de melhorias no uso de estratégias baseadas em métricas

Comparação com método de inspeção de software convencional “ah hoc”

Foco de mais de 400 trabalhos, uso por mais de 30 anos técnica popular para identificação de anomalias de código

Configuração do Estudo

Page - 11 02/12/2014

Métricas

Esforço

Contabiliza a quantidade de tempo usado para identificar anomalias de código de relevância arquitetural

Configuração do Estudo

Page - 12 02/12/2014

Métricas

Eficácia

Quantifica a qualidade dos resultados e indiretamente a qualidade do processo

Q1 Quais as propriedades positivas da estratégia usada? Q2 Quais as dificuldades no uso da estratégia? Q3 Quais sugestões de melhoria para a estratégia?

Configuração do Estudo

Page - 13 02/12/2014

Métricas

Precisão

Precision = | relevant ∩ retrieved | | retrieved |

Configuração do Estudo

Page - 14 02/12/2014

Métricas

Consistência

Cons = number of AD hoc indications number of Metrics indications

Configuração do Estudo

Page - 15 02/12/2014

Sistema Alvo

30K LOC

415 elementos arquiteturais

210 versões

Grande esforço de reengenharia nos últimos 3 anos

Impacto e relevância

Alta complexidade

Desenvolvimento incremental

Refatoração do TSV

Sistema V

3º Lição: Mantenha todos os envolvidos informados

Page - 16 02/12/2014

• Comunicação inicial para estabelecimento

de escopo, prazos, objetivos, etc

• Assinatura de termos de compromisso

• Reuniões para avaliação do problema,

soluções, ações, etc

• Troca de informações para manter

motivação dos participantes

• Cuidado para não alterar o

desempenho do participantes

4º Lição: Garanta acesso sempre que necessário ao sistema/ambiente

Page - 17 02/12/2014

• Diversas formas de acesso

• Flexibilidade de dia/horário para acesso

5º Lição: Cuidado na escolha do “oráculo”

Page - 18 02/12/2014

Ciclos da pesquisa-ação

Page - 19 02/12/2014

Karus, Siim, and Harald Gall. "A study of language usage evolution in open source software“ Proceedings of the 8th

Working Conference on Mining Software Repositories. ACM, 2011.

Diagnosticar IntervirPlanejar

ação AvaliarSim

Não

Solução

satisfatória?

Refletir

• Identificação/Análise • Colaboraticamente • Propor um novo ponto de vista

• Planejamento das intervenções • Alinhamento com os objetivos • Quais e quando os dados serão

coletados

• Execução das ações • Coleta de dados • É possível anotar impressões

pessoais

• Avaliação dos resultados em relação aos objetivos

• Avaliação da evolução

• Reflexão sobre as informações coletadas

• Decisão se um novo ciclo deve ser realizado

Configuração do Estudo

Page - 20 02/12/2014

Procedimentos

Procedimentos iniciais

Estudo de Caso

Configuração do Estudo

Page - 21 02/12/2014

Procedimentos iniciais

Coleta de dados iniciais e do ambiente do sistema

Avaliação da refatoração TSV do ponto de vista do oráculo

V12 V13.1 V14.5 V15.1 V15.2 VR 1.0 1 3 1 2 3 1

V15.5 V15.6 V15.7 V16.0 V16.1 V17.0 1 1 1 6 1 1

FC8 VR21 VR22 VR28.2.1 VR28.2.4 1 1 1 1 1

198 referências

26 referências

Configuração do Estudo

Page - 22 02/12/2014

Procedimentos

Procedimentos iniciais

Estudo de Caso

Configuração do Estudo

Page - 23 02/12/2014

Procedimentos

Avaliou as duas estratégias

Comparação das estratégias do ponto de vista do pesquisador

Geração dos

resultados com a

ferramenta

Calculo das métricas

Discussão com o

oráculo sobre os

resultados

Geração de demais

métricas

6º Lição: Imparcialidade

Page - 24 02/12/2014

• Cuidado com as intervenções

• Usufrua dos aspectos qualitativos

• É esperada uma melhoria no

ambiente avaliado

• Diminuir as limitações do trabalho

Resultados

Page - 25 02/12/2014

Esforço e eficácia

Category precision relevant identified

Shotgun Surgery 1 16 16

Divergent Change 0,93 14 15

Long Method 0,94 15 16

God Class 1 3 3

Anomalias de código relacionadas a refatoração TSV

Category consistency ad hoc

(relevant) metrics-based

strategies (relevant)

Shotgun Surgery

1 16 16

Divergent Change

1 14 14

Long Method 1 15 15

God Class 1 3 3

Resultados

Page - 26 02/12/2014

Esforço e eficácia

RQ1

Existe alguma diferença entre a eficácia das estratégias baseadas em métricas e estratégias ad hoc para detecção de anomalias de código de relevância arquitetural?

Q1 Quais as propriedades positivas da estratégia usada?

Strategy Effectiveness (score)

ad hoc strategy 8,5

metrics-based strategies 8,5

Q2 Quais as dificuldades no uso da estratégia? Q3 Quais sugestões de melhoria para a estratégia?

Ad hoc: Longo tempo para identificação das anomalias e

Alta complexidade

Resultados

Page - 27 02/12/2014

RQ2

Existe alguma diferença entre o esforço apliacado no uso das estratégias baseadas em métricas e estratégias ad hoc para detecção de anomalias de código de relevância arquitetural?

Strategy Auxiliary Files

(hour) Detection

(hour) Total

(hour) ad hoc strategy 0 16 16

metrics-based strategies

20 2 22

Strategy

Project Representat

ion (hour)

Concern mapping

(hour)

architecture-code traces

(hour) Total (hour)

metrics-based strategies

2 12 6 20

Ad hoc: revisão do código fonte, filtro e identificação Metricas: Filtro

37,5%

Resultados

Page - 28 02/12/2014

Como melhorar a eficácia das estratégias baseadas em métricas?

Melhor investigação da relação com interesses arquiteturais

if($('#tab1').hasClass('selected')){ $( location ).attr( 'href', "TSV/gTSV.jsp"); } else if ($( '#tab2' ).hasClass( 'selected' ) ) { $( location ).attr( 'href', "TSV/gTSV.jsp"); } else if ( $( '#tab3' ).hasClass( 'selected' ) ) { $( location ).attr( 'href', "TSV/gTSV.jsp" ); } else if ( $( '#tab4' ).hasClass( 'selected' ) ) { $( location ).attr( 'href', "TSV/gTSV.jsp" ); }

Category Consistency

ad hoc strategy

(relevant)

metrics-based strategies (relevant)

Shotgun Surgery

1,13 18 16

Long Method 1,13 17 15

God Class 1,67 5 3

Multiple-Anomaly

Syndrome

1,14 16 14 identificação de anomalias de código nas “fronteiras” de diferentes linguagens

Resultados

Page - 29 02/12/2014

Como reduzir o esforço das estratégias baseadas em métricas?

Melhor suporte a geração e manutenção do mapeamento de interesses arquiteturais

Confirmação do quanto é menos custoso trabalhar com padrões de anomalias arquiteturais

7º Lição: Se beneficie dos seus conhecimentos prévios

Page - 30 02/12/2014

8º Lição: Aprendizado contínuo

Page - 31 02/12/2014

Diagnosticar IntervirPlanejar

ação AvaliarSim

Não

Solução

satisfatória?

Refletir

Oportunidades?

Riscos?

9º Lição: Anote tudo!

Page - 32 02/12/2014

10º Lição: Pense simples!

Page - 33 02/12/2014

OPUS Group LES | DI |PUC-Rio - Brazil

Manuele Ferreira

10 Lições Aprendidas ao Desenvolver um Estudo na Indústria

OPUS Research Group – LES – PUC-Rio

{manueleferreira}@inf.puc-rio.br

top related