proposta: métricas e heurísticas para detecção de problemas em aplicações web
DESCRIPTION
Proposta de pesquisa apresentada no encontro do NAPSoL em São Carlos, 2014: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebTRANSCRIPT
![Page 2: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/2.jpg)
Quem sou eu?● Graduado em CC pelo Mackenzie (2007)● Mestre em CC pelo IME/USP (2012)
Orientador: Marco Aurélio Gerosa● Aluno de doutorado pelo IME/USP (2012-?)
Orientador: Marco Aurélio Gerosa● Líder técnico na Caelum
![Page 3: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/3.jpg)
Motivação● Nos últimos anos, tenho trabalhado com
desenvolvimento de aplicações Web de todos os tamanhos, em diferentes linguagens.○ De 80 a 1000 classes○ Java, C#, Ruby
● Mas os problemas são os mesmos.
![Page 4: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/4.jpg)
● Controllers acoplados.● Controllers com regras de negócio.● Modelos confusos/complexos.● JSPs e Taglibs com scriptlet.● Testes de aceitação instáveis.● DAOs com métodos inúteis ou em lugares errados.● E por aí vai...
Problemas que vejo no dia-a-dia
![Page 5: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/5.jpg)
Como avaliar qualidade?● Métricas de código
○ Úteis.○ São baratas e executam rápido.○ Eu, em particular, acho a ideia sensacional.
● Meu problema com elas?○ Pouco contextuais.○ Estudos na área só querem saber de benchmarking.
![Page 6: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/6.jpg)
Falta contexto, como assim?● Estudos que buscam por números mágicos.
○ Mas quem disse que o número mágico (digamos, 20 linhas por método) é bom para TODAS as classes do meu sistema?
○ E as minhas decisões arquiteturais?● Não quero o melhor código do mundo, quero
o código que facilite manutenção.
![Page 7: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/7.jpg)
Você já olhou a fundo?● Todas as vezes que usei a mesma massa
gigantesca de dados que outro artigo e fui analisar, encontrei problemas.○ Exemplo atual: artigo do ICSME sobre testes
funcionais em aplicações Web de código aberto. Quando olhei a massa, vi que colocaram dois projetos nossos, que NÃO ERAM web.
○ Outro exemplo: Meu artigo no CSMR sobre asserts em testes de unidade.
![Page 8: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/8.jpg)
Minha proposta● Proponho a criação de métricas e heurísticas
para identificação de problemas em aplicações Web.○ Todas elas serão extraídas de questionários e
entrevistas com desenvolvedores do mundo real.○ Serão analisadas em projetos de código aberto, para
fins exploratórios, e depois estudos de caso em projetos da indústria.
○ Projetos de código aberto escolhidos manualmente.
![Page 9: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/9.jpg)
Já temos algo?● Primeiro estudo sobre métodos em DAOs
ambíguos foi publicado no MTD2014, co-locado com o ICSME2014.○ Bolamos uma heurística para identificar esses
métodos e fizemos um pequeno estudo em 3 projetos da Caelum.
![Page 10: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/10.jpg)
Project # of DAO methods
# of right methods
# of wrong methods
% of wrong methods
Caelumweb 590 511 79 13.38%
Codesheriff 70 57 13 18.57%
Gnarus 233 200 33 14.16%
![Page 11: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/11.jpg)
Project # of inspected methods
# of agreement
% of agreement
Caelumweb 79 59 74.68%
Codesheriff 13 8 61.53%
Gnarus 33 16 48.48%
![Page 12: Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web](https://reader035.vdocuments.pub/reader035/viewer/2022081404/5588cf68d8b42a251f8b4681/html5/thumbnails/12.jpg)
Dúvidas● Como validar essas heurísticas?
○ Opinião dos desenvolvedores + estudos em projetos de código aberto são suficientes.
● Vale a pena criar métricas genéricas?○ Ao invés de definir um número mágico, usar um
número calculado para o projeto em particular?