Explicando conceitos de software usando situações do cotidiano

Preview:

DESCRIPTION

Palestra sobre conceitos de software no Rails Girls

Citation preview

EXPLICANDO CONCEITOS DE

SOFTWARE USANDO SITUAÇÕES

DO COTIDIANO

Paulo Ortins

A história de Bob

McDonalds == Aplicação Web

MVC Rails

Tempos de entrega agressivos

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

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

Estava tudo uma bagunça

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.

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

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

Mas como garantir que o BigMac ainda seria bom ?

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

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.

Bob pegou o caminho de casa...

Mas Bob bateu o carro e morreu !

E se Bob pudesse viajar no tempo ?

Controles de Versão

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

• Permitem desfazer ações indesejadas.

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”

Bob ganhou uma segunda chance

git commit –m “Saí do trabalho”

Múltiplos caminhos

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.

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

médico...

e fisiculturista...

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

Merge

• Reconciliar os diferentes branches de um software.

• Podem ser automáticos ou manuais.

Recaptulando...

• MVC

• Code Smells ou Débitos Técnicos

• Refatoração

• Testes Automatizados

• Controles de Versão– Commits

– Branches

– Merge

Fim

• Entenderam alguma coisa ?

• Alguma dúvida ?

• Obrigado !