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