4. O que é desenvolvimento de software?
“[…] é o ato de elaborar e implementar um sistema
computacional, isto é, transformar a necessidade de um
utilizador ou de um mercado em um produto
de software.” – Wikipedia (S2)
8. Modelo tradicional
PMBOK
Alta burocracia
Equipes fechadas para mudanças de escopo
Produto só faz sentido quando entregue em sua totalidade
Figuras comuns: Gerente de projeto, líder técnico, encarregados.
Termos comuns: Escopo, tempo, custos, riscos.
11. Manifesto ágil
Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda
Assinado por: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn,
Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew
Hunt Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken
Schwaber, Jeff Sutherland, Dave Thomas
2001
12. Os 12 princípios do agile
Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com
valor agregado.
Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram
vantagem das mudanças visando vantagem competitiva para o cliente.
Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à
menor escala de tempo.
Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie
neles para fazer o trabalho.
O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é
através de conversa face a face.
Software funcionando é a medida primária de progresso.
Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e
usuários devem ser capazes de manter um ritmo constante indefinidamente.
Contínua atenção à excelência técnica e bom design aumenta a agilidade.
Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.
As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.
Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu
comportamento de acordo.
18. “Lean Thinking baseia-se em práticas e conceitos inspirados no Sistema
Toyota de Produção, cujos princípios visam a eliminação dos desperdícios.
Através do pensamento lean, organizações do mundo todo tem transformado
suas operações, tornando-se muito mais produtivas, lucrativas e eficientes”
19.
20. “Lean thinking é um passo gigante
para o pensamento ágil”
JARA, 2017
21. Princípios do Lean Thinking
Valor - premissa básica para começar a desenvolver algo: deixar o cliente definir o que é valor em seu
produto.
Fluxo de Valor - Identificar quais etapas agrega valor ao produto Aquelas que não agregam valor
(desperdício) devem ser eliminadas, reduzindo automaticamente os custos de máquinas, energia, tempo,
etc.
Fluxo contínuo - Depois de identificadas apenas as tarefas que criam valor ao produto, nessa etapa
deverá ser criado o fluxo contínuo, ou seja, produzir sem interrupções.
Produção Puxada - Nessa etapa a empresa passa a trabalhar produzindo apenas o que o cliente quer,
reduzindo ao máximo o estoque.
Perfeição - É a busca pela melhoria contínua dos processos, pessoas e produtos.
22. Lean Thinking para software
Elimine Desperdícios
Inclua a Qualidade no Processo
Crie Conhecimento
Adie Decisões e Comprometimentos
Entregue o quanto antes
Respeite as Pessoas e "Empower" a equipe
Otimize o Todo
23. Desperdícios no processo de
desenvolvimento de software
Requisitos
Processos/Passos a mais
Funcionalidades a mais
Troca de tarefas (Task switching, Handoffs)
Atrasos
Movimento (tempo gasto para encontrar informações)
24. TDD - Test Driven Development
Refactoring
Integração contínua
Code review
Testes contínuos e automatizados
Qualidade no processo de
desenvolvimento de software
25. “Em desenvolvimento de software,
pensamento ágil é peça fundamental
para sucesso do produto”
JARA, 2017