Boas práticas de programação com Object Calisthenics
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Duas Equipes
1. Efeitos da Prática de
Revisão de Código na Caelum:
Um Estudo Preliminar em Duas Equipes
Maurício Aniche
Francisco Sokol
Universidade de São Paulo
Caelum Ensino e Inovação
2. O que é
revisão de código ? não aparece nem no
questionário da
VersionOne
verificação e validação
do código escrito por
outros desenvolvedores
feitas de maneiras
diferentes, o objetivo é
aumentar a qualidade
3. E na Caelum,
como vocês fazem?
ambas usam o github
como ferramenta
equipes tem revisão de
código no seu processo
5. Trabalhos
relacionados ? Mantyla confirma os
achados de Siy
Kemerer mostra que a prática é
eficaz para localização de defeitos
Siy mostra que defeitos encontrados são
pequenos, mas que sua refatoração
ajuda na manutenabilidade
6. Planejamento do
estudo ? duas equipes
extraímos comentários
do github
extraímos métricas
de código
questionário
comparamos o antes
e o depois
7. Os projetos ? Projeto # de classes # de commits # de devs
Gnarus 924 10451 33
Caelumweb 1321 12077 59
8. Métricas de
código ?
Acoplamento Eferente
LCOM-HS
Linhas de código
McCabe
9. O questionário ? antes e depois de verem os gráficos
basicamente perguntava quais as
vantagens que ele via na revisão de
código no seu projeto
12. E o questionário ?
melhoria da qualidade
interna do código diminuição na quantidade
de defeitos
disseminação de conhecimento
inerente ao processo
13. Disseminação de
conhecimento ! "Alguns desenvolvedores aprendem técnicas e tecnologias com os outros."
"Ensino de boas práticas para pessoas menos experientes, mais clareza e ciência dos
padrões de código do projeto, bugs são pegos mais cedo..."
14. Localização de
defeitos ! (...) menos bugs entram em produção, já que todo código é revisado... para
passar algo, duas pessoas precisam ``errar'' é não uma.
(...) a maioria das coisas que pegamos no code review são possíveis bugs ligados à
regra de negócio.
15. O que elese acharam
dos resultados ?
"Não acho justo. Eu pelo menos tenho muito a ganhar nas revisões, seja quando
eu estou revisando ou quando alguém está revisando meu código. Acredito que
este tipo de coisa não pode ser mensurada."
"Ainda acredito que a prática de revisão é importante, ajudando-nos a encontrar
possíveis erros já vivenciados por outros desenvolvedores. O code review pode
ajudar muito também no processo de aprendizado de um novo membro da equipe."
"Uma revisão, não necessariamente deve melhorar a qualidade do código. É mais pra
garantir que o código vai funcionar como deve (inclusive sendo ``mantível'' no
futuro)."
16. Comparação com
os outros trabalhos? Diminuição de
Melhora na
Disseminação de
defeitos
qualidade interna
conhecimento
Kemerer et al X
Siy et al X
Mantyla et al X X X
Este estudo X X* X
17. Ameaças
a Validade ? A heurística. Olhar o valor antes e depois pode se problemático.
Apesar deles falarem sobre o aprendizado intenso e a redução de bugs, não
triangulamos essas informações.
A maneira informal e falta de treinamento específico em revisão de código podem
diferir de outras empresas.
18. Conclusões ?
disseminação de
conhecimento diminuição na quantidade
de defeitos
acreditam na melhoria da
qualidade interna do código
19. Trabalhos futuros ?
Dar treinamentos sobre o assunto para a equipe e repetir o estudo.
Sugerir a outras empresas que também descubram os reais efeitos da prática em
seus times.
20. Obrigado!
maurício aniche
(mauricio.aniche@caelum.com.br)
francisco sokol
(francisco.sokol@caelum.com.br)