Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Como lidar com código legado de maneira ágil

A apresentação mostra como realizar a difícil tarefa de aplicar técnicas ágeis em código legado...
by

Elvis Lima

on 7 March 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Como lidar com código legado de maneira ágil

Como lidar com código legado de maneira Ágil
Objetivo
Gerenciar o catálogo de
produtos e categorias de um dos maiores
sites de e-commerce
do mundo.
Equipe
4 times
35 desenvolvedores
8 engenheiros
6 gerentes
Métricas do projeto
linhas de código
558982
Métricas do projeto
classes java
3096
Métricas do projeto
junit tests
2777
Métricas do projeto
tempo de build
7 h
104 pontos de integração
Primeira estória
Importar produtos de um feed
Primeira estória
Classes gigantes
Alto acoplamento
Coesão baixíssima
Testes de unidade muito difíceis de manter
Vamos jogar tudo fora e começar do zero!
Tá bom, então vamos refatorar tudo!
Arrumando a casa
Refatoração intensiva
Pair programming
Reclamação
Ferrou!
Refactoring inocente (especulativo)
Bugs em produção custam dinheiro
:(
Desconfiança entre o time
Quase cancelamento do projeto
Iteration manager se demitiu
Tech lead se demitiu
Right software > Software right
+/-

Software certo > Fazer software certo
Novas features
MVP em nível de funcionalidade
Hierarquias e classes paralelas
Será que esse sucesso é fruto do esforço inicial?
@elvisdelima
Perguntas?
Então quer dizer que não vale a pena refatorar?
Claro que vale!
Utilização de Funcionalidades
Sempre
7%
Frequêntemente
13%
Nunca
45%
Raramente
19%
Às Vezes
16%
Empacote em fachadas
Divide and Conquer
Problem
Não escreva o legado de amanhã
Fazendo um refactoring eficiênte
Controle de versão
Seja fluente
Conheça suas ferramentas
Técnicas
Test Driven Development
1. Escreva um teste que falhe
2. Faça ele compilar
4. Remova a duplicação
3. Faça ele passar
5. Repita
0. Garanta que sua classe está coberta por testes
Eu não entendo o código bem o suficiente para mudá-lo
Tome nota/Faça esboços
Listing Markup
Scratch Refactoring
Apaque código inutilizado
Não possuo muito tempo e preciso mudar isso
Preciso fazer uma mudança. Quais métodos devo testar?
Preciso fazer mudanças em um método monstro que não tem como ser testado
Meu projeto não é orientado a objetos. Como fazer uma modificação segura?
Técnicas para quebrar dependências
Full transcript