quinta-feira, 17 de junho de 2010

Perspectiva do Desenvolvimento de Software Lean

lean

1. O Imperativo Lean

O padrão ouro de produtividade é definido por organizações lean que são: Toyota, Wal-Mart e Dell. As organizações lean concentram-se no rápido fluxo de valor, porque eles descobriram o princípio fundamental de Lean Six Sigma: qualidade, rapidez e baixo custo que estão intimamente ligados.

1.1 Alta Produtividade

80% do valor da maioria dos sistemas é entregue em 20% dos recursos, até dois terços das características da maioria dos sistemas são raramente ou nunca utilizados. 

1.2 Resposta Rápida

A maturidade de uma organização é medida pela velocidade com que ele pode repetidamente e confiávelmente executar seus processos de core. A resposta rápida é um fator básico de vantagem competitiva. Qual a velocidade que a sua organização rotineiramente responde a uma necessidade do cliente? Seus concorrentes são mais rápido?

1.3  Qualidade Superior

A  fundamental disciplina de desenvolvimento de software esta no teste. Testes definem os requisitos, o projeto e documentação do sistema. 

1. 4  Relação duradoura

80% do código em qualquer sistema é desenvolvido após a primeira versão de produção. Alguns dos melhores produtos de software tem evoluído a uma década. O software robusto resiste ao teste do tempo é criado por desenvolvedores que têm um conhecimento profundo do domínio.

2.0  Lean Agenda

Inventário reduz o fluxo de dinheiro e torna-se obsoleto. O Pensamento lean para Desenvolvimento de Software conduz ao inventário baixo risco, fornecendo valor ao cliente o mais rapidamente possível.

2.1 Foco no Cliente

Resíduos é algo que não dá valor para o cliente em tempo útil. Identificou quem são seus clientes? Sabe o que clientes realmente querem? Sabe quanto tempo demora para entregar valor ao cliente? Para descobrir o quão bem sua empresa oferece valor ao cliente, comece por analisar o fluxo de valor.

2.2 Fluxo de Processo

Uma equipe de desenvolvimento ágil de software pode adicionar recursos de qualquer ordem, podendo liberar uma versão funcional do software no final de qualquer iteração.

2.3  Responsabilidade Local

Nas organizações realmente eficiente, o trabalho de gestão é proporcionar um modelo organizacional de modo que as pessoas descubram o que fazer sem ser dito. Fluxos de trabalhos eficazes, os controles visuais e a formações de profissionais preparados no mercado de trabalho.

O melhor software é projetado por desenvolvedores e especialistas de domínio que desenvolverão conjuntamente um conhecimento profundo do domínio.

2.4 Decisões com base em dados

Quando o objetivo é acertar um alvo móvel, desenvolvimento de software baseado na aprendizagem é uma abordagem a ser considerada. Equipes de desenvolvimento experientes podem implementar características individuais em qualquer ordem e entregar código destacável em menos de um mês.

Implementação de software de aprendizagem baseada em pequenos conjuntos de recursos de desenvolvimento em ordem prioritária, oferecendo tanto o retorno rápido e valor comercial imediato. Empresas de software de sucesso têm utilizado esta abordagem por muitos anos.

3. Implementação Lean

A caminho para o sucesso não consiste em copiar as práticas das organizações de sucesso.

O caminho para o sucesso reside no desenvolvimento da compreensão profunda dos clientes, colaboradores e o contexto competitivo da empresa.

3.1 O Fluxo de Valor

Iniciar um relógio quando um cliente reconhece uma necessidade crítica. Medir o tempo médio necessário para colocar este problema no topo de uma lista de prioridades, desenvolver uma solução, certificar-se do trabalho, implantar a solução e realmente resolver o problema.

A solução do tempo de ciclo de entrega é medida em dias, semanas, meses ou anos? Onde estão os despediçadores de tempo? Reconhecer que estes despediçadores de tempo diminuiem valor, aumentam custo e diminuiem qualidade.

3.2  Construindo Bloco de Disciplinas

1. Um ambiente de trabalho limpo, organização de arquivos no computador, backup e procedimentos de atualização;
2. Normas para a nomeação, codificação, interfaces gráficas, etc;
3. Um sistema de controle de versão;
4. Um rápido processo de construção;
5. Integração diária dos novos códigos;
6. Testes escritos no momento da codificação, automação diária dos testes e durante do ciclo de vida do sistema.

3.3  Software Tolerante a Mudança

As coisas são simples para uma empresa começar o desenvolvimento do seu primeiro produto, não há interfaces ou questões de compatibilidade. Mas com passar do tempo são adicionados novos recursos, sendo assim a complexidade cresce exponencialmente. Complexidade calcifica transformando o  código e o software complexo, quebra fácil.

A maneira de lidar com a complexidade é a construção de tolerância a variações no processo de desenvolvimento - a utilização de um processo que mantém o código simples.

O primeiro passo adicionar testes como parte do processo de desenvolvimento, por isso o código pode ser mudado com regularidade e segurança.

O próximo passo é continuar a simplificar o código: duplicação de código deve ser refatorado usando padrões de projeto.

Os novos códigos devem ser integrados na base de código uma vez por dia ou mais, dependendo da necessidade.

3.4 Gerenciando O Pipeline

Nós vimos algumas idéias para gerenciamento de desenvolvimento de software, mas alguns que trabalham bem. O problema é que a maioria dos sistemas de programação multi-projeto parecem basear-se  numa tentativa de aumentar o "recurso" de utilização.

Primeiro, as pessoas não são recursos fungíveis, desenvolvem competências em áreas específicas e se preocupam com  resultado com sucesso do seu trabalho.

Segundo, sabemos que teoria das filas simples que tentam maximizar a utilização, geralmente atrasam. Quem já esteve preso no tráfego sabe que atrasa.

Terceiro, como o software é um processo de desenvolvimento a variabilidade é fundamental para seu sucesso. Puxando os horários de trabalho quando necessário.

 
3.5  A célula de trabalho Software & The Workplace Visual

Em Lean manufacturing, a complexidade é tratada por simplificar o problema primeiro, segundo passo é automatização.

No desenvolvimento de software, usamos equipes multifuncionais. Uma única equipe de preferência co-localizado com todas as capacidades para conceber, desenvolver e implantar o software é a célula de trabalho do software básico. Essa equipe deve saber o que fazer sem ser dito, deve ser evidente a partir das pistas visuais no local de trabalho. Seguindo a mesma linha do Lean manufacturing.


3.6 Métrica

As medidas de desempenho são a chave para alavancar uma estratégia de toda a organização. Com demasiada freqüência, os objetivos de um departamento não estão alinhados com os objetivos de um departamento de vizinhos e diminuiu a capacidade da organização para entregar valor. Não adicione novas medidas para resolver este problema. Diminua o número de medições.

Quando as pessoas são medidas com base no seu espaço de influência, em vez de sua amplitude de controle, têm um incentivo para colaborar para o bem geral da organização.

Fonte: http://www.poppendieck.com

Bye see you next post

Nenhum comentário:

Postar um comentário