Lean development
Lean Development Qualidade e velocidade sem desperdícios Introdução “Desenvolvimento de software é uma cadeia com diversos elos” Kent Beck • Imagine uma empresa no decorrer de sua jornada Lean: realizando inúmeras melhorias na manufatura, eliminando os desperdícios, melhorando fluxos e qualidade, reorganizando layout, nivelando a produção, etc. Contudo, à medida que a maturidade Le vai org reflexos dos problemas de outras • Uma área que poss Engenharia, ou to view nut*ge a manufatura, os xpressivos. ufatura é a Desenvolvimento de Produto. comum encontrarmos situações m que novos produtos são desenvolvidos sem a devida atenção ao processo de manufatura. A falta de padronização de componentes e de dispositivos têm resultado em uma série de desperdícios Casos de Sucesso • Empresas que aplicam conceitos Lean: Princípios • Princípios Lean aplicados ao software: 1.
Elimine Desperdícios • Uma técnica de value stream mapping é utilizada para distinguir e reconhecer desperdício: • Analisar e desenhar o fluxo de materiais e informação, requendo para trazer um produto ou serviço a um cliente, na Toyota onde a técnica se riginou, isso é conhecido como “fluxo de materiais e informação” • Depois são apontadas e eliminadas as fontes do desperdício • Isso é feito iterativamente até que processos e procedimentos que pareciam necessários são eliminados Fluxo de Valor com Lean 1 .
Elimine Desperdícios Os sete desperdícios de software: – Trabalho incompleto (“em-progresso”) Processos a mais – Funcionalidades a mais – Troca de tarefas – Atrasos – Defeitos – Testes Insuficientes 2. Crie Conhecimento “Não existe bala de prata” – Fred grooks • Desenvolvimento de Software é um processo continuo de prendizagem com o desafio adicional de equipes de desenvolvimento e o tamanho do produto. • A ideal maneira de melhorar o ambiente de desenvolvimento, é amplificar a geração de conhecimento. ?? Buscar um processo “padrão” engessa • O processo deve ser continuamente melhorado o as suas necessidades com base nos resultados dos esforços de desenvolvimento. • os desenvolvedores aprendem como satisfazer melhor essas necessidades. • Uma outra ideia para o processo de comunicação e a aprendizagem é ajustar isso a uma técnica de Set-based Development, isso concentraria em comunicar as limitações a solução futura e não das possíveis soluções, o nascimento da solução vem por meio de diálogos com o cliente. ?? Set based development como praticada pela Toyota e Hyudai é habilidade de quebrar seu produto em diversos componentes varias interfaces. A partir disso esses componentes são desenvolvidos concorrentemente, com diversos métodos em cada um desses componentes simultaneamente. • Ao se aproximar do produto final, existem uma série de eventos de integração , onde as interfaces entre os componentes são definidas mais concretamente 2. Crie Conhecimento
Método científico (Plan-Do-Check-Act): PLAN: Enquadre o problema – PLAN: Procure pela raíz do problema – PLAN: Proponha uma solução – DO: Implemente a solução – CHECK: Verifique os resultados – ACT: Analise e adapte seus padrões Mito: Predições criam previsibilidade 3. Decida o mais tarde pos PAGF3rl(F8 3. Decida o mais tarde possível • Design baseado em conjunto (set-based) – Na incerteza, experimente diversas soluções – Agende o momento da decisão – Sempre haverá uma solução que funciona – Paradoxo: Isso não é desperdício! ?? Exemplo: Toyota Prius 15 meses do conceito ao lançamento 10 opções de motores híbridos desenvolvidos durante os 4 primeiro meses – Motores hlbridos viraram item opcional 4. Entregue o mais rápido possível “A moral da história é que devemos encontrar uma maneira de entregar software tão rápido, que nossos clientes não tenham tempo de mudar de idéia” Mary Poppendieck • Competir com base na velocidade traz grande vantagem competitiva • Mito: Rápido e sujo vs. Lento e limpo • Quanto mais cedo o produto final é entregue , mais cedo o feedback pode ser recebido e incorporado a próxima iteração. ?? Velocidade assegura o cumprimento das necessidades tuais do cliente e não o que eles exigiram ontem. • Os clientes valorizam a rápida entrega de um produto de qualidade. • A ideologia de produção “just-in-time” pode ser aplicada ao desenvolvimento de software. poss[vel PAGF alcançar apenas a sombra do que poderia alcançar! ” Pessoas são movidas por motivação Pessoas são movidas por realizações pessoas são movidas por amor Pessoas são movidas por desejo ” Em tratando-se de pessoas, os números não fazem a diferença, mas sim as habilidades, o orgulho, a perícia a confiança e a cooperação! ” 5.
Respeite as Pessoas Institua as seguintes estratégias de Respeito para sua Equipe – Compartilhe antes, compartilhe sempre – Teste antes e falhe rápido – Troque gerentes por líderes Treine continuamente – lideres e liderados – Fora com o medo – institua segurança Quebre as barreiras – crie equipes multidisciplinares – Não meça performance de pessoas, não premie isoladamente – Problemas não são criados por pessoas mas pelo “Sistema de Produção” – Motive a educação e o auto-aprendizado – desenvolva pessoas – Mova responsabilldade e tomada de decisão para os nlVeis mais baixos Faça, não dê apenas apoio 6.
Construa integridade ?? O cliente precisa ter uma experiência geral do sistema • os componentes separados do sistema devem funcionar bem em conjunto como um todo, com equilbrio entre a flexibilidade, facilidade de manutenção, agilidade, eficiência • Deve existir domínio do problema e da solução • Uma técnica a ser utilizada seria o refactoring, que reestruturar um corpo de código existente, melhorando atributos não funcionais do software • O sistema deve buscar satisfazer o ue o cliente espera desperdício” Shigeo Shingo • Não deixe os testes para o final • Ciclos de teste muito longos geralmente gastam mais tempo orrigindo defeitos • Ao inves de se esforçar para gerenciar defeitos, evite-os Prevenindo defeitos com vários tipos de teste: 7. 0timize o Todo • Círculo vicioso #1 no desenvolvimento de software: – Cliente pede nova funcionalidade, para ontem – Desenvolvedor ouve: Termine isso rápido! Resultado: Mudanças feitas de qualquer jeito no código – Resultado: Complexidade do código aumenta Resultado: Número de defeitos no código aumenta – Resultado: Tempo para adicionar funcionalidade cresce exponencialmente • Círculo 42 no desenvolvimento de software: – Equipe de testes sobrecarregada Resultado: Testes bem após codificação – Resultado: Desenvolvedores não recebem feedback imediato – Resultado: Desenvolvedores criam mais defeitos – Resultado: Equipe de teste tem mais trabalho • Mito: Micro-otimização leva à Macrootimização • É preciso olhar para o processo todo • Não adianta resolver os sintomas • preciso resolver a causa • Os sistemas de software ao são simplesmente a estágios de desenvolvimento, as causas dos defeitos devem ser encontrados e eliminadas • O pensamento Lean deve ser bem compreendido por todos envolvidos no processo de desenvolvimento e de gestão, ntes até mesmo da implementação do projeto 7. tirnize o Todo • Sendo que hoje em dia todo desenvolvimento de software deve ser pautado em princípios básicos visando a melhoria dos resultados, não se deve implementar algo sem planejamento ou gestão, porque assim se aumentar muito o risco do projeto da errado, assim sendo a utilização do pensamento Lean vai buscar através de pnnc(pios mlnimizar possíveis riscos na elaboração do software • Diminua o número de métricas de desempenho • Meça para cima: Medidas no nível mais alto que direcionam para o comportamento correto Medidas a nível de time, não de indivíduos • Incentive a colaboração Recapitulando… 2. Inclua a Qualidade no Processo 3. Crie Conhecimento 4. Adie Comprometimentos 5. Entregue Rápido 6. Respeite as Pessoas 7.
Otimize o Todo Vantagens As entregas constantes constituem a principal vantagem da utilização das metodologias ágeis nos projetos de desenvolvimento de software. Outras vantagens são a int PAGFarl(F8 este cont[nuo. gestores pois existe uma maior e melhor comunicação. É especialmente adequado para projetos direcionados para a Web, onde os requisitos vão evoluindo e não se exigem muitos rabalhadores. Como as equipes ágeis são pequenas, os membros da equipe nao competem, pois geralmente devem ter habilidades e atribuições complementares entre si. Desvantagem Uma desvantagem apontada é o fato de estes não serem escaláveis. Estes métodos não foram desenhados para projetos muito longos, existindo contudo a abordagem Scrum_ Outra desvantagem é um menor controle de custos e prazos.
Nestas metodologias o projeto termina quando o cliente não levantar mais funcionalidades relevantes que deseje ver concretizadas, em oposição a ser acordado um preço e um lano. Com isso, os custos e prazos (durações) podem variar e podem ser de difícil gestão para o gestor do projeto, além de causarem um certo risco na visão do cliente (TOMAS, 2009). Equipe • Quantitativo da Equipes Desejável para Implementar o Processo • Conhecimentos e Habilidades da Equipe Referências 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”, AddisonWesley, 2006 – Mary e Tom Poppendiec an Software PAGF8t(F8