Explicando conceitos de software usando situações do cotidiano

29
EXPLICANDO CONCEITOS DE SOFTWARE USANDO SITUAÇÕES DO COTIDIANO Paulo Ortins

description

Palestra sobre conceitos de software no Rails Girls

Transcript of Explicando conceitos de software usando situações do cotidiano

Page 1: Explicando conceitos de software usando situações do cotidiano

EXPLICANDO CONCEITOS DE

SOFTWARE USANDO SITUAÇÕES

DO COTIDIANO

Paulo Ortins

Page 2: Explicando conceitos de software usando situações do cotidiano

A história de Bob

Page 3: Explicando conceitos de software usando situações do cotidiano

McDonalds == Aplicação Web

Page 4: Explicando conceitos de software usando situações do cotidiano

MVC Rails

Page 5: Explicando conceitos de software usando situações do cotidiano

Tempos de entrega agressivos

Page 6: Explicando conceitos de software usando situações do cotidiano

Bob estava entregando tudo no prazo, o chefe dele tava feliz

Page 7: Explicando conceitos de software usando situações do cotidiano

Os lanches começaram a atrasar e qualidade do lanche também

Page 8: Explicando conceitos de software usando situações do cotidiano

Estava tudo uma bagunça

Page 9: Explicando conceitos de software usando situações do cotidiano

Code Smells ou Débitos Técnicos

• Problemas que surgem durante o processo de codificação e que não são resolvidos.

• Com o tempo começam a atrasar o projeto, diminuir a qualidade e até mesmo cancelar o projeto.

Page 10: Explicando conceitos de software usando situações do cotidiano

Bob teve que melhorar toda a bagunça que ele tinha feito

Page 11: Explicando conceitos de software usando situações do cotidiano

Refactoring ou Refatoração

• São técnicas utilizadas para melhorar o código existente.

– Rearrumação de partes do código

– Divisão de responsabilidades

– Exclusão de código

Page 12: Explicando conceitos de software usando situações do cotidiano

Mas como garantir que o BigMac ainda seria bom ?

Page 13: Explicando conceitos de software usando situações do cotidiano

Era necessário que alguém testasse a qualidade do lanche a cada mudança

Page 14: Explicando conceitos de software usando situações do cotidiano

Testes Automatizados

• São partes do código que testam o próprio código.

• Garantem que o nosso código continue funcionando depois de cada mudança.

Page 15: Explicando conceitos de software usando situações do cotidiano

Bob pegou o caminho de casa...

Page 16: Explicando conceitos de software usando situações do cotidiano

Mas Bob bateu o carro e morreu !

Page 17: Explicando conceitos de software usando situações do cotidiano

E se Bob pudesse viajar no tempo ?

Page 18: Explicando conceitos de software usando situações do cotidiano

Controles de Versão

• São softwares que nos permitem navegar entre as diferentes versões do software produzido.

• Permitem desfazer ações indesejadas.

Page 19: Explicando conceitos de software usando situações do cotidiano

Commits

• Ato de gravar uma determinada versão do software para que ele possa ser recuperada depois.

git commit –m “Fiz o carrinho de compras”

git commit –m “Mudei a cor do site de vermelho pra amarelo”

Page 20: Explicando conceitos de software usando situações do cotidiano

Bob ganhou uma segunda chance

git commit –m “Saí do trabalho”

Page 21: Explicando conceitos de software usando situações do cotidiano

Múltiplos caminhos

Page 22: Explicando conceitos de software usando situações do cotidiano

Branches

• São duplicações de versões do mesmo software que agora existem em paralelo.

• Exemplos: versões do site em diferentes cores, versões do site com diferentes tipos de pagamento e etc.

Page 23: Explicando conceitos de software usando situações do cotidiano

Bob criou diferentes branches da sua vida, ele foi surfista...

Page 24: Explicando conceitos de software usando situações do cotidiano

médico...

Page 25: Explicando conceitos de software usando situações do cotidiano

e fisiculturista...

Page 26: Explicando conceitos de software usando situações do cotidiano

Mas um dia ele queria ter apenas uma vida de novo.

Page 27: Explicando conceitos de software usando situações do cotidiano

Merge

• Reconciliar os diferentes branches de um software.

• Podem ser automáticos ou manuais.

Page 28: Explicando conceitos de software usando situações do cotidiano

Recaptulando...

• MVC

• Code Smells ou Débitos Técnicos

• Refatoração

• Testes Automatizados

• Controles de Versão– Commits

– Branches

– Merge

Page 29: Explicando conceitos de software usando situações do cotidiano

Fim

• Entenderam alguma coisa ?

• Alguma dúvida ?

• Obrigado !