Professional Documents
Culture Documents
Introduo
Desenvolvimento de software uma cadeia com diversos elos -- Kent Beck Qual o papel do software? Como o software se encaixa no plano mais amplo (big picture)?
Introduo
Como o seu processo de desenvolvimento de software?
Quem seu cliente? Produo/manufatura ou novo produto? Gerenciado como projeto ou produto?
Manuteno Beta RC Produo
Fim
Introduo
Como clientes:
Resolvam completamente meus problemas No desperdicem meu tempo Ofeream exatamente o que eu preciso Entreguem valor exatamente onde e quando eu preciso Reduzam o nmero de decises que eu preciso tomar para resolver meus problemas
Introduo
Empresas que aplicam conceitos Lean:
Produo / Manufatura
Cadeia de Suprimento
Desenvolvimento de Software
Shigeo Shingo:
Produo sem estoque Trabalho organizado em tarefas pequenas Zero Inspees Mistake-proof
Copyleft AgilCoop 2007 6
Elimine Desperdcios
Desperdcio tudo aquilo que no agrega valor ao cliente -- Taiichi Ohno Este o principal princpio Lean Software funcionando o que vai trazer valor ao cliente preciso aprender a identificar desperdcios
10
Elimine Desperdcios
Os sete desperdcios de software:
Trabalho incompleto (em-progresso) Processos a mais Funcionalidades a mais Troca de tarefas Handoffs Atrasos Defeitos
11
Trabalho Incompleto
Artefatos inacabados consomem recursos sem trazer retorno Reclamaces (churn):
Requisitos > Especificando muito cedo Teste > Testando muito tarde
Processos a mais
Burocracia desnecessria Documentao desnecessria Atividades de gerenciamento Bom teste para avaliao:
Existe algo ou algum esperando pelo que est sendo produzido?
13
Funcionalidades a mais
Jim Johnson:
45% das funcionalidades implementadas no so utilizadas nunca 19% das funcionalidades implementadas so raramente utilizadas
Cdigo no-utilizado introduz complexidade Complexidade: inimigo da manuteno Mito: Especificar cedo reduz o risco
Copyleft AgilCoop 2007 14
Troca de Tarefas
Tarefa 1 Tarefa 2 Tarefa 3
Semana 1
Semana 2
Semana 3
Semana 4
Handoffs
Metfora: Aprender a andar de bicicleta Conhecimento tcito difcil de transmitir Quanto mais handoffs, maior a perda de conhecimento Dicas:
Reduza handoffs Use meios de comunicao eficazes Libere partes do trabalho para apreciao e feedback
Copyleft AgilCoop 2007 16
Atrasos
Programadores precisam tomar decises a cada 15 minutos impossvel assumir que toda informao necessria estar documentada Opces na hora da dvida:
Tentar descobrir a resposta Trocar de tarefa Adivinhar e prosseguir
Copyleft AgilCoop 2007 17
Atrasos
Exemplos:
Esperar pelo entendimento completo dos requisitos Esperar meses pela aprovao do projeto Esperar pela alocao das pessoas Esperar pela disponibilidade das pessoas alocadas Processo de controle de alteraes Esperar pelo sistema inteiro ficar completo para ter as funcionalidades-chave Esperar o cdigo passar pelos testes Esperar para comunicar defeitos (QA no final)
Copyleft AgilCoop 2007 18
Defeitos
O custo dos defeitos aumenta com o tempo Equipes geis se esforam ao mximo para evitar defeitos Em caso de defeito, fazem o mximo para curar a raz do problema Testes automatizados so investimentos! Use os testes como design do sistema (TDD)
Copyleft AgilCoop 2007 19
Testes de Histrias
Interesse de Negcio (Design do Produto)
Crtica ao Produto
Testes de Unidade
Interesse do programador (Design do Cdigo)
Perspectiva da Tecnologia
21
Crie Conhecimento
No existe bala de prata -- Fred Brooks Metfora: criar vs. preparar uma receita Incentive o compartilhamento de conhecimento tcito Buscar um processo padro engessa O processo deve ser continuamente melhorado
Copyleft AgilCoop 2007 22
Crie Conhecimento
Mtodo cientfico (Plan-Do-Check-Act):
Enquadre o problema Procure pela raz do problema Proponha uma soluo Implemente a soluo Verifique os resultados Analise e adapte seus padres
Adie Comprometimentos
Decises irreversveis devem ser tomadas o mais tarde possvel (last responsible moment) preciso definir o momento da deciso
Quando houver mais informao
Flexibilidade arbitrria tambm ruim Um bom lder saber alocar flexibilidade Mito: Um plano um comprometimento
Copyleft AgilCoop 2007 24
Adie Comprometimentos
Design baseado em conjunto (set-based)
Na incerteza, experimente diversas solues Agende o momento da deciso Sempre haver uma soluo que funciona Paradoxo: Isso no desperdcio!
Entregue Rpido
A moral da histria que devemos encontrar uma maneira de entregar software to rpido, que nossos clientes no tenham tempo de mudar de idia -- Mary Poppendieck Competir com base na velocidade traz grande vantagem competitiva Mito: Rpido e sujo vs. Lento e limpo
Copyleft AgilCoop 2007 26
Entregue Rpido
Sistemas Pull em software (reduzem inventrio) Radiadores de Informao
Para Fazer
Histria 1 Histria 2 Histria 3 Histria 4
Copyleft AgilCoop 2007
Em progresso
Histria 5 Dan/Gold Histria 6 Paulo/Dair Histria 7 Kon/Alex
27
Testes OK
Histria 10
Histria 8 Histria 9
Entregue Rpido
Teoria das filas:
Tempo do ciclo = # Coisas em processo Taxa Mdia para completar
QuickTime and a TIFF (LZW) decompressor are needed to see this picture.
28
Entregue Rpido
Reduzindo o tempo do ciclo:
Normalize a entrada de trabalho Minimize o # de unidades em-processo Minimize o tamanho das unidades emprocesso Estabelea uma cadncia regular Limite o trabalho capacidade Use agendamento pull
29
Respeite as Pessoas
Desenvolvimento de Produtos na Toyota
QuickTime and a TIFF (LZW) decompressor are needed to see this picture.
30
Respeite as Pessoas
3 pilares esto relacionados s pessoas:
Liderana Fora de trabalho com conhecimento Planejamento e controle baseado em responsabilidade
Liderana:
Grande conhecimento tcnico Grande conhecimento do cliente
Times completos
Copyleft AgilCoop 2007 31
Respeite as Pessoas
Pessoas so recursos? Papel da gerncia distribuir tarefas e monitorar? Exemplo: Planta da GM - NUMMI Motivao:
Propsito Participao (belonging) Segurana Competncia Progresso
32
Respeite as Pessoas
A verdadeira inovao da Toyota sua habilidade em usufruir da inteligncia dos trabalhores comuns -- Gary Hamel Programas de Qualidade:
CMM, CMMI, Six Sigma, ISO, TQM Lanados com as melhores das intenes Mal-implementados
Focam na parte burocrtica Processo definido por um grupo separado
Otimize o Todo
Exemplo: Zara Crculo vicioso #1 no desenvolvimento de sotware:
Cliente pede nova funcionalidade, para ontem Desenvolvedor ouve: Termine isso rpido! Resultado: Mudanas feitas de qualquer jeito no cdigo Resultado: Complexidade do cdigo aumenta Resultado: Nmero de defeitos no cdigo aumenta Resultado: Tempo para adicionar funcionalidade cresce exponencialmente
Copyleft AgilCoop 2007 34
Otimize o Todo
Crculo vicioso #2 no desenvolvimento de software:
Equipe de testes sobrecarregada Resultado: Testes bem aps codificao Resultado: Desenvolvedores no recebem feedback imediato Resultado: Desenvolvedores criam mais defeitos Resultado: Equipe de teste tem mais trabalho
Otimize o Todo
preciso olhar para o processo todo No adianta resolver os sintomas preciso resolver a causa 5 Porqus
36
Otimize o Todo
Mtricas:
Medir informao vs. Medir desempenho Cuidado!
fcil medir muitas coisas fcil medir as coisas erradas
Contra-exemplo:
Desenvolvedores: LOC/h Testadores: # Defeitos encontrados
Copyleft AgilCoop 2007 37
Otimize o Todo
Diminua o nmero de mtricas de desempenho Mea para cima:
Medidas no nvel mais alto que direcionam para o comportamento correto Estabelea uma base para fazer trade-offs
Tempo de ciclo +Mapa de Fluxo de Valor ROI + Modelo de Lucros e Perdas Satisfao do Cliente + Entendimento das suas necessidades
Copyleft AgilCoop 2007 38
Recapitulando
1. 2. 3. 4. 5. 6. 7. Elimine Desperdcios Inclua a Qualidade no Processo Crie Conhecimento Adie Comprometimentos Enregue Rpido Respeite as Pessoas Otimize o Todo
39
Referncias
Livros:
Mary e Tom Poppendieck, Lean Software Development: An Agile Toolkit, Addison-Wesley, 2003 Mary e Tom Poppendieck, Implementing Lean Software Development: From Concept to Cash, Addison-Wesley, 2006 Jim Johnson, ROI, Its Yout Job, Keynote Speech at Third International Conference on Extreme Programming (XP2002), 2002
Online:
leandevelopment @ Yahoo Groups www.poppendieck.com
41