Sou desenvolvedor Java, mas fui convidado a aprender sobre a aplicação do Six Sigma com o objetivo de aumentar os lucros da nossa organização. Eu li que o Six Sigma pode ser aplicado em todos os ambientes, mas estou interessado nas nuances de aplicá-lo ao desenvolvimento de software.
Quais conceitos do Six Sigma podem ser aplicados a um ambiente de desenvolvimento de software e como posso aplicá-los efetivamente?
Meu entendimento é que o Six Sigma se concentra em:
- identificar e remover as causas principais dos defeitos
- minimizando a variabilidade na aplicação de processos de manufatura ou de negócios
Parece-me que esses conceitos podem ser aplicados ao desenvolvimento de software, mas isso pode ser aplicado efetivamente a um ciclo de vida de desenvolvimento de software (SDLC)?
quality
process-improvement
Dinesh Kumar
fonte
fonte
Respostas:
As atividades básicas do Seis Sigma são capturadas pelo acrônimo DMAIC , que significa: Definir, Medir, Analisar, Melhorar, Controlar . Você as aplica ao processo que deseja melhorar: defina o processo, meça-o, use-o para formar hipóteses sobre as causas de qualquer problema, implemente aprimoramentos e garanta que o processo permaneça estatisticamente "sob controle".
No que se refere ao software, o processo é o seu ciclo de vida de desenvolvimento de software (SDLC) ou parte dele. Você provavelmente não tentaria aplicar os princípios do Seis Sigma para todo o SDLC (ou pelo menos, não inicialmente). Em vez disso, você procuraria áreas nas quais acha que tem um problema (por exemplo, nossa taxa de defeitos é muito alta; muitas regressões; nossa programação cai com muita frequência; muitos mal-entendidos entre desenvolvedores e clientes; etc.). Digamos por enquanto que o problema é que muitos bugs estão sendo produzidos (ou pelo menos relatados) a cada semana. Então, você definiria o processo de desenvolvimento de software / criação de erros. Em seguida, você começaria a coletar métricas, como o número de linhas de código escritas a cada dia, a frequência das alterações de requisitos, o número de horas que cada engenheiro passa nas reuniões,
Em seguida, você olha os dados e tenta discernir padrões. Talvez você tenha notado que a equipe de engenharia A cumpre todos os prazos estabelecidos e, muitas vezes, termina as tarefas mais cedo! Inicialmente, a equipe B não parece tão interessada - eles perdem seus prazos por um dia ou dois, pelo menos metade do tempo, e ocasionalmente atrasam uma semana ou mais. A gerência vê a equipe B como um problema e procura agitar as coisas. No entanto, uma análise mais detalhada dos dados mostra que a taxa de erros da equipe B é muito menor do que a da equipe A e, além do mais, a equipe B é frequentemente solicitada a corrigir erros atribuíveis à equipe A porque a gerência considera que a equipe A é valiosa para gastar muito. de tempo em manutenção.
Então, o que você faz? Usando os dados que você coletou e a análise realizada, você sugere uma alteração: a equipe A e a equipe B corrigem seus próprios erros. Com as bênçãos da gerência (e contra a oposição veemente da equipe A), você implementa essa mudança. Em seguida, você continua coletando métricas e analisa os dados para ver se suas alterações fizeram alguma diferença. Repita este ciclo de medida / análise / implementação até que a taxa de erros seja considerada aceitável. Mas você ainda não terminou. Na verdade, você nunca termina ... você precisa continuar medindo a taxa de erros e verificando se a taxa de erros permanece dentro da faixa aceitável, isto é, estatisticamente "sob controle".
Observe que aqui não há nada específico para o desenvolvimento de software além das especificidades do processo que você está aprimorando, os tipos de métricas que você coleta etc. As atividades que você usa para aprimorar um processo de desenvolvimento de software são as mesmas que você ' d use para um processo de fabricação de widgets, mesmo que o desenvolvimento de software seja bem diferente da fabricação de widgets. Tudo o que isso significa é que você precisa aplicar algum senso comum nos tipos de metas definidas para o seu processo.
fonte
Como mencionado por Peter
Eu posso te dar um cenário simples, eu estava trabalhando para uma empresa aeroespacial. Existe uma equipe que projeta circuitos para aeronaves. Eles estavam enfrentando muitas dificuldades no projeto de circuitos para aeronaves complexas. Devido a isso, estavam faltando prazos, apesar de terem experimentado designers. Analisei o trabalho deles e notei que eles estavam desenvolvendo circuitos do zero todas as vezes. Então, eu projetei um software que acompanhará os circuitos projetados anteriormente e sempre que eles tiverem novas aeronaves, eles usarão o meu software e escolherão a aeronave projetada anteriormente com circuitos semelhantes e os usarão com poucas modificações. Como esses circuitos foram projetados e testados anteriormente em aeronaves reais, agora eles podem se concentrar mais em novos circuitos.
Este é apenas um cenário no qual segui o processo SIX Sigma para coletar todos os dados sobre seus erros e analisei quais são as razões para isso. Em seguida, aprimore-os pelo meu software.
fonte
A aplicação de seis sigma no desenvolvimento de software é chamada de software seis sigma. O Six Sigma é basicamente desenvolvido para fabricação, no processo de fabricação ajuda as empresas a melhorar a entrega, a qualidade do produto a baixo custo. Considerando que o mesmo pode ser aplicado ao desenvolvimento de software também.
A aplicação de seis sigma no desenvolvimento de software cria uma melhoria sustentada no desenvolvimento de um software. A aplicação de seis sigma no desenvolvimento de software resulta em rápida integração e teste do software, ajuda a criar um software livre de erros e ajuda a um gerenciamento de programa mais eficiente.
No entanto, software six sigma sendo um novo conceito, você precisa do treinamento das pessoas certas. Um eficiente programa de treinamento seis sigma pode ajudá-lo aqui. Para o treinamento online de seis sigma no ambiente de desenvolvimento de software, sugiro http://www.6sigma.us /. Eu os sugiro com base na recomendação que recebi de outra empresa.
fonte