Eduardo Bregaida
Agilista na Sciensa e Instrutor de Voo e Acrobacias Aéreas no Aeroclube de São Paulo.
eduardo.bregaida@gmail.com
Pensando...
Pensando...
Classe Aluno
Pensando...
Classe Aluno
Aluno extends Pessoa
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring...
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Contas a Pagar e Receber
Pensando...
Classe Aluno
Aluno extends Pessoa
Relatorio em IReport
Java com Spring
Maven
JQuery
Contas a Pagar e Receber
Você já tem um Web Server ou um Web Container para sua aplicação?
...
Mas que Bodega é essa
que você está falando?
Eu não estou entendendo nada, eu só queria um sisteminha fácil...
Como implementar o repositório?
BDD
O que é BDD?
• Foca no comportamento do sistema;
• Visando desenvolvimento voltado a testes;
• Usam uma linguagem comum como visto no DDD;
• Beneficia os desenvolvedores e os usuários de negócio;
• Comporta vários cenários;
• Não apenas o que uma determinada função deve fazer;
• Possui aspectos do DDD e conceitos fundamentais do TDD.
Como fazer?
• Narrativa/Estória: (Nome)
• Para ( Valor ao Negócio)
• Eu, como (Papel)
• Desejo poder realizar (Funcionalidade)
• Story: …
• In order to …
• As a …
• I want to …
Exemplo
• Narrativa/Estória: Cadastrar Alunos
• Para meu sistema de gerenciamento do Aeroclube
• Eu, como funcionário da secretaria
• Desejo poder realizar cadastros de novos alunos no sistema
O que mais?
• Cenários: (Nome)
• Dado que (Estado inicial do sistema)
• Quando (Ação a ser realizada)
• Então (O que deve fazer após a ação)
• Scenario: …
• Given a …
• And …
• When …
• Then …
Mais?
Exemplo
• Cenário I: Abrir tela de Cadastro de Aluno
• Dado que um funcionário selecione a opção Cadastrar Aluno
• Quando clicar no menu
• Então deverá ser aberta a tela com os dados para efetuar o cadastro do aluno e os botões Salvar e Cancelar.
O que é TDD ou Test Driven Development?
• É uma técnica de desenvolvimento de software baseada em um ciclo curto de repetições;
• Escrevendo seus testes antes de escrever o código de produção;
• Ao escrever primeiro os testes:
• Garantimos uma boa qualidade no código (mínimo de sujeira e códigos esquecidos que nunca serão utilizados);
• Garantimos o funcionamento do que está sendo implementado;
• Não precisamos saber tudo de uma vez, conforme eu desenvolvo um teste, crio e implemento as classes que serão utilizadas.
TDD - Test Driven Development
• Escreva um teste que falhe;
• Faça-o passar da maneira mais simples possível;
• Refatore o código.
• É conhecido como Ciclo Vermelho-Verde-Refatora (Red-Green-Refactor).
Com SCRUM
Mais Coisa???
Mais Coisa???
O Manifesto
Mais Coisa???
Indivíduos e interações mais que processos e ferramentas
Mais Coisa???
Software em funcionamento mais que documentação abrangente
Mais Coisa???
Colaboração com o cliente mais que negociação de contratos
Mais Coisa???
Responder a mudanças mais que seguir um plano
Mais Coisa???
Mais Coisa???
Exercício:
Como as empresas contratam?
Existem dois tipos de Processos:
• Processos Definidos
• Processos Empíricos
Processos Definidos
São aqueles que determinam o que deve ser feito, quando e como.
Quem já trabalhou com o “início e fim do projeto” sabe que a utilização de um processo definido não garante o sucesso.
Processos Empíricos
São aqueles que não se conheçam todas as variáveis de entrada para que possa estabelecer um processo repetível.
O Scrum, parte do princípio que nem todas as características do produto são conhecidas na análise e que provavelmente os requisitos mudarão com o passar do tempo.
Exemplo do dia a dia
É como dirigir um carro, nunca se traça um destino em que a chegada é em linha reta, sempre há pequenas correções até seu destino.
Conclusão
Processos empíricos baseados em inspeção e adaptação devem ser utilizados sempre que os processos definidos não forem adequados devido a complexidade do projeto.
O que é SCRUM?
Processo de desenvolvimento iterativo e incremental que pode ser aplicado a qualquer produto ou no gerenciamento de qualquer atividade complexa;
Criado por Jeff Sutherland e Ken Schwaber na década de 90;
O P.O.
O Scrum Master
O Time
Papéis no SCRUM
Product Owner (P.O.)
• Responsável por garantir o Retorno sobre o Investimento (ROI)
• Conhece as necessidades do que precisa ser feito
• Define os itens do Product Backlog
• Prioriza os itens na Sprint Planning Meeting
Scrum Master
• Garante o uso da Metodologia
• É um líder e um facilitador
• Precisa tirar da frente qualquer impedimento
Time
• Função do SCRUM Team é ser auto-organiza
• Define as metas dos Sprints
• Produz com qualidade e valor para o P.O.
Daily Scrum
• Reunião em Pé de 15 minutos
• Deverá ser respondida apenas 3 perguntas:
• O que você fez ontem?
• O que você fará hoje?
• Há algum impedimento no seu caminho?
• É uma reunião focada
• Não é para resolver problemas
Burndown Chart
Sprint Review Meeting
• No final de cada Sprint Retrospective é feito um Sprint Review Meeting
• É mostrado o que foi alcançado no Sprint
• Nesta reunião estará o P.O., Scrum Team e Scrum Master
• O mais importante é que o objetivo esteja realizado
Sprint Retrospective
• Ocorre ao final do Sprint
• Utilizado para identificar o que funcionou bem
• Também é utilizado para verificar o que poderia ser melhorado
• E quais ações serão tomadas para melhorá-lo
Então a cada 2 semanas terei um pedaço do meu sistema?
Depois começa tudo outra vez até o término do projeto
Se a sua ideia é:
Aumento de produtividade e lançar softwares com mais frequência
Desenvolvimento ágil não é uma solução
Trabalhar com agilidade é apena um modo diferenciado
Não é o mais rápido, embora tem uma produtividade acima da média
Essa produtividade não deve ser o motivador
Durante o aprendizado normalmente os times demoram em média de 3 a 6 meses para sentir esse ganho de produtividade
E neste tempo serão mais lentos
Também não deve ser usado por ser o mais legal ou a moda
Pois...
Se a motivação for velocidade
pode motiva-pôs a tomar atalhos
Sendo menos rigorosos e isso pode prejudicar a qualidade da entrega
Ou
Ou
Contrato Errado
Pausa nos problemas para uma Estória
Bacon com Ovos
Chickens no Projeto
Problema VS Impedimento
SCRUMbut
Acalme-se Brian, há esperança
A equipe deve estar SEMPRE unida
Garanta PIGs no seu projeto
Livre-se das más influências no Projeto
Incentive o profissional a não desistir
Nunca responda por ele
Faça o profissional vir com um problema e uma solução
Force diálogos entre os membros
Seja Humilde
Ajude seus companheiros
Comemorem o sucesso do Sprint
TODOS ENVOLVIDOS DEVEM PARTICIPAR.
=== NÃO É OPCIONAL ===
eduardo.bregaida@gmail.com
By Eduardo Bregaida
Agilista na Sciensa e Instrutor de Voo e Acrobacias Aéreas no Aeroclube de São Paulo.