Prévia do material em texto
Resumo - Lean Software Development (LSD) O Lean Software Development (LSD) é uma abordagem de desenvolvimento de software inspirada nos princípios do Lean Manufacturing, especialmente no Sistema Toyota de Produção. Seu foco principal é aumentar a eficiência, minimizar desperdícios e entregar valor ao cliente de forma contínua e rápida. Princípios do LSD: 1. Eliminar desperdícios: Evitar atividades que não agregam valor ao produto, como trabalho desnecessário, retrabalho ou filas no fluxo de desenvolvimento. 2. Ampliar o aprendizado: Encorajar a experimentação, testes frequentes e iterações rápidas para validar ideias. 3. Decisões tardias: Postergar decisões importantes até que dados relevantes estejam disponíveis para tomar escolhas informadas. 4. Entrega rápida: Priorizar entregas rápidas e frequentes para obter feedback do usuário constantemente. 5. Empoderar o time: Equipes autônomas e multifuncionais têm a capacidade de tomar decisões e resolver problemas diretamente. 6. Integridade embutida: Garantir qualidade desde o início do processo com práticas de desenvolvimento e testes contínuos. 7. Visão sistêmica: Otimizar o sistema como um todo, e não apenas etapas individuais. Benefícios: ● Redução de desperdícios e custos ● Ciclos de entrega menores ● Aumento da qualidade ● Melhor alinhamento com as necessidades dos clientes Seus conceitos são amplamente aplicados junto com métodos ágeis como Scrum e Kanban, criando uma abordagem eficaz e flexível no desenvolvimento de software. Just-in-Time (JIT) O Just-in-Time (JIT) é uma estratégia de gestão de produção que busca entregar materiais ou produtos no momento exato em que são necessários, evitando estoques excessivos e desperdícios. Esse conceito é parte central do Sistema Toyota de Produção e está intimamente ligado aos princípios do Lean Manufacturing. Principais características: 1. Produção puxada: Os produtos são fabricados somente quando há demanda, em vez de serem produzidos para estocar. 2. Redução de estoques: Tanto de matéria-prima quanto de produtos acabados, reduzindo custos com armazenamento. 3. Fluxo contínuo: Minimiza interrupções no processo produtivo, evitando gargalos. 4. Entrega sincronizada: Fornecedores entregam materiais conforme a necessidade da linha de produção. Benefícios: ● Redução de custos operacionais ● Melhor uso do espaço físico ● Aumento da eficiência no fluxo produtivo ● Menor risco de obsolescência de produtos Autonomação Autonomação (ou Jidoka, em japonês) é um dos pilares do Sistema Toyota de Produção. Trata-se de uma abordagem que combina a automação com a capacidade de um sistema ou máquina detectar problemas e interromper o processo de produção automaticamente quando algo anormal ocorre. Princípios da Autonomação: 1. Parada automática: A máquina ou sistema interrompe a produção assim que detecta um defeito ou problema. 2. Separação entre homem e máquina: Os operadores não precisam supervisionar constantemente as máquinas, pois estas trabalham de forma autônoma até identificar um problema. 3. Qualidade embutida: Os defeitos são detectados imediatamente, evitando que itens com problemas avancem na linha de produção. Benefícios: ● Redução de defeitos: A detecção precoce evita desperdícios e custos elevados com retrabalho. ● Aumento da eficiência: Operadores podem se concentrar em atividades de maior valor em vez de supervisionar máquinas continuamente. ● Garantia de qualidade contínua: Os problemas são identificados e resolvidos rapidamente, mantendo a qualidade dos produtos. Exemplo no contexto do software: No desenvolvimento de software, a autonomação pode ser comparada ao uso de testes automatizados e integração contínua (CI), onde o código é testado automaticamente após cada alteração, interrompendo a integração caso um problema seja detectado. Isso permite a detecção e correção precoce de bugs, garantindo maior qualidade no produto final. Metodologia Lean é distribuída em sete princípios Os sete princípios da metodologia Lean foram adaptados para o desenvolvimento de software com base nos fundamentos do Lean Manufacturing. Estes princípios ajudam a criar processos enxutos, eliminar desperdícios e maximizar o valor entregue ao cliente. 1. Eliminar desperdícios ● Identificar e remover atividades que não agregam valor ao produto ou ao cliente. ● Exemplos: código não utilizado, funcionalidades desnecessárias, retrabalho e esperas no fluxo de desenvolvimento. 2. Ampliar o aprendizado ● Promover ciclos de aprendizado contínuos por meio de iterações rápidas e testes frequentes. ● Encoraja a experimentação e a coleta de feedback para validar hipóteses. 3. Decisões tardias (decisões baseadas em fatos) ● Adiar decisões importantes até que dados concretos estejam disponíveis, reduzindo o risco de erros. ● Isso permite flexibilidade e melhor alinhamento com as necessidades do cliente. 4. Entrega rápida ● Priorizar entregas pequenas e frequentes para acelerar o ciclo de feedback e garantir que o cliente receba valor rapidamente. ● Exemplo: práticas ágeis como entrega contínua (Continuous Delivery). 5. Empoderar o time ● Delegar autonomia e responsabilidade às equipes de desenvolvimento. ● Equipes multifuncionais com poder de decisão são mais ágeis e criativas ao solucionar problemas. 6. Integridade embutida ● Construir qualidade desde o início do processo, em vez de depender de inspeções finais. ● Isso inclui testes automatizados, integração contínua e design que reflete os requisitos do cliente. 7. Otimizar o todo ● Olhar para o sistema como um todo, em vez de focar apenas em otimizar partes isoladas. ● Isso significa garantir que cada etapa no fluxo de trabalho esteja alinhada para entregar valor ao cliente, eliminando gargalos. Estudo de Caso Situação-Problema: Desenvolvimento Ineficiente de um Aplicativo A empresa xxxxxxxx está desenvolvendo um novo aplicativo de delivery de comida. No entanto, a equipe de desenvolvimento enfrenta os seguintes problemas: Retrabalho frequente: Funcionalidades são desenvolvidas e depois descartadas porque não atendem às necessidades dos clientes. Tempo excessivo para entrega: O desenvolvimento está lento, e o time demora a lançar novas versões. Falta de comunicação entre áreas: Desenvolvedores, designers e gerentes de produto não estão alinhados, resultando em requisitos mal definidos. Alto desperdício de recursos: Recursos são investidos em funcionalidades que os usuários não utilizam. Baixa qualidade: O número de bugs é alto, prejudicando a experiência do usuário. Você, como responsável do departamento de desenvolvimento, deve criar uma proposta de solução para os problemas baseados na metodologia LSD. Resolução Eliminar desperdícios: - Ampliar o aprendizado: - Decisões tardias: - Entregar rápido: - Empoderar o time: - Integridade embutida (Construir qualidade): - Otimizar o todo: - Formulário para postagem: https://forms.gle/v368pdg9mcHugus56 Exercícios 1) O processo de teste do software é a investigação deste, a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Esse processo é claramente utilizado pela Metodologia de Desenvolvimento de Software Lean, pois ele pode auxiliar a reduzir um dos sete desperdícios. Qual desperdício a utilização de testes de software, durante o processo de desenvolvimento, pode evitar? A) Tempo de espera. B) Superprodução. C) Movimentos. D) Inventário. E) Defeitos. 2) O Sistema de Produção Toyota, criado pelo engenheiro Paiichi Ohno, tem sua base na absoluta eliminação do desperdício no processo de produção. Para isso, parte de dois princípios: a produção essencial, sem a necessidade de grandes estoques; a detecção e à correção de erros, para que depois o processo possa continuar. Como esses dois princípios são respectivamente chamados?https://forms.gle/v368pdg9mcHugus56 A) Kanban e Scrum. B) Just-in-Time e Automação. C) Inventário e Superprodução. D) Just-in-Time e Autonomação. E) Scrum e Desenvolvimento Dirigido por Testes. 3) Um dos sete princípios da Metodologia Lean de Desenvolvimento de Software consiste em integrar com qualidade, em que evitar o problema é buscar a qualidade durante a produção,em vez de procurar erros depois. Uma das formas de ajudar na aplicação desse princípio seria a utilização de testes automatizados durante o processo de desenvolvimento do software. Qual técnica de teste, utilizada em desenvolvimento ágil, que encoraja a colaboração entre desenvolvedores, setores de qualidade, pessoas não técnicas ou de negócios em um projeto de software, se relaciona com o conceito de verificação e validação? A) DDD – Domain-Driven Design (Desenvolvimento Guiado por Design). B) TDD – Test-Driven Development (Desenvolvimento Orientado a Testes). C) BDD – Behavior Driven Development (Desenvolvimento Guiado por Comportamento). D) XP – Extreme Programming (Programação Extrema). E) Scrum. 4) No Sistema Toyota de Produção, a habilidade individual e o trabalho em equipe são bem valorizados, buscando uma relação prática com os pilares dos sistemas Just-In-Time e Autonomação. Com base nessa afirmação, na Metodologia Lean de Desenvolvimento de Software, dentro dos princípios levantados por Mary e Tom Poppendieck, qual princípio representa os pilares do Sistema Toyota de Produção? A) Eliminar o desperdício. B) Criar conhecimento. C) Entregar rapidamente. D) Respeitar as pessoas. E) Adiar comprometimentos. 5) O Sistema Toyota de Produção, também conhecido como Toyotismo, é um sistema de produção desenvolvido pela Toyota entre 1947 e 1975 que aumenta a produtividade e a eficiência, evitando o desperdício sem criar estoque, como tempo de espera, superprodução, gargalos de transporte e inventário desnecessário. Quem foi o responsável por reorganizar os princípios do Sistema Toyota de Produção para o desenvolvimento de software, criando o Lean Software Development? A) Ken Schwaber e Jeff Sutherland. B) Dan North. C) Mary e Tom Poppendieck. D) Kent Beck. E) Robert Cecil Martin. Princípios do LSD: Benefícios: Principais características: Benefícios: Princípios da Autonomação: Benefícios: Exemplo no contexto do software: 1. Eliminar desperdícios 2. Ampliar o aprendizado 3. Decisões tardias (decisões baseadas em fatos) 4. Entrega rápida 5. Empoderar o time 6. Integridade embutida 7. Otimizar o todo