Implementação de um Processo em uma Organização

Tópicos

Introdução

Esta página explica o que deve ser feito em nível organizacional para implementar processos e ferramentas em uma organização de desenvolvimento. 
A implementação de processos e ferramentas no nível do projeto de desenvolvimento de software está descrito na página Conceitos: Implementação de um Processo em um Projeto

Informações Relacionadas

Um Procedimento Passo a Passo

A implementação de um novo processo em uma organização de desenvolvimento de software pode ser descrita em quatro passos.
Os passos para implementar os processos e as ferramentas usados em uma organização.
 

Passo 1: Avaliar a Organização de Desenvolvimento

É preciso conhecer o estado atual da organização de desenvolvimento de software em termos de pessoal, processos e ferramentas de suporte que ela utiliza. Você precisa identificar os problemas e as possíveis áreas de melhoria, e também obter informações sobre questões externas, como os concorrentes e as tendências de mercado. Depois de concluir esse passo, você deverá saber:
  • O estado atual da organização de desenvolvimento de software.
  • O tipo de pessoal da organização, inclusive seu nível de competência, habilidades e motivação.
  • As ferramentas usadas no momento pela organização.
  • O atual processo de engenharia de software e como ele é descrito.
  • As metas de negócios da organização.
Motivos para avaliar o estado atual:
  • Usar essas informações para criar um plano que ajuste o estado atual da organização às suas metas.
  • Identificar as áreas que precisam de melhorias em primeiro lugar. Não é preciso apresentar o processo inteiro nem todas as ferramentas de uma única vez. É interessante fazê-lo em incrementos, começando com as áreas de maior necessidade e que apresentam maior potencial de melhoria.
  • Explicar aos patrocinadores por que você precisa fazer mudanças em processos, ferramentas e pessoal.
  • Criar motivação e estabelecer um entendimento comum entre as pessoas da organização afetadas direta ou indiretamente.
Leitura Adicional
As seguintes páginas descrevem como avaliar um projeto de desenvolvimento de software e a organização. A maior parte desses itens pode ser aplicada durante a avaliação da organização de desenvolvimento de software.  

Passo 2: Planejar a Implementação do Processo

Desenvolva um plano para implementar processos e ferramentas na organização. Esse plano descreverá como fazer uma transição eficaz do estado atual da organização para que se adapte às suas metas. Para desenvolver esse plano, você precisa:
Consulte a seção Diretrizes para o Planejamento da Implementação do Ambiente para obter mais informações sobre o que deve ser considerado no plano de implementação.
Estabelecer ou Rever Metas (voltar ao Passo 2: Planejar ...)
Você deve definir metas para o processo, o pessoal e as ferramentas, ou seja, onde você pretende estar depois de concluído o projeto de implementação. É necessário definir metas porque:
  • As metas servem como informações importantes para o planejamento da implementação de processos.
  • As metas e a descrição do estado atual da organização, obtida no passo 1, são utilizadas para motivar os patrocinadores e também para proporcionar entendimento e motivação às pessoas da organização.
O resultado é uma lista de metas que podem ser avaliadas e expressas de forma que os membros do projeto possam compreendê-las e internalizá-las. Essas metas são uma visão do estado futuro da organização.
Identificar Riscos (voltar ao Passo 2: Planejar ...)
Identifique os riscos associados com a implementação de processos e ferramentas. Estes são vários exemplos de riscos:
  • "O projeto piloto envolve diversos riscos técnicos."
  • "Excesso de informações novas para as pessoas absorverem."
  • "Não está claro como a ferramenta A e a ferramenta B trabalharão em conjunto."
  • "Não está claro como a ferramenta A será usada em uma organização de desenvolvimento distribuído."
Leitura Adicional
As páginas listadas abaixo descrevem o gerenciamento dos riscos em um projeto de desenvolvimento de software e é importante destacá-las aqui: 
Selecionar Projetos de Desenvolvimento de Software (voltar ao Passo 2: Planejar ...)
Defina uma seqüência de projetos de desenvolvimento de software ou iterações. Decida se algum projeto piloto será executado. Consulte a página Conceitos: Projeto Piloto para obter mais detalhes sobre o que é um projeto piloto e como ele deve ser escolhido. Para cada projeto de desenvolvimento de software, defina as metas que deseja alcançar, o que deseja obter, os riscos que pretende reduzir e as partes do processo e, mais especificamente, quais ferramentas você deseja implementar. Consulte a seção denominada Diversas Abordagens de Implementação.
Escolher o Momento de Lançar Processos e Ferramentas (voltar ao Passo 2: Planejar ...)
Escolha o momento em que pretende lançar o processo e as ferramentas para um público mais amplo de projetos de desenvolvimento de software. É aconselhável executar um ou dois projetos piloto antes de lança-lo para toda a organização. Consulte a seção denominada Diversas Abordagens de Implementação
Decida como facilitar o lançamento de processos e ferramentas. Há diversas formas de facilitar os projetos de desenvolvimento de software ao implementar  processos e ferramentas, como: 
  • Desenvolver templates e exemplos que poderão ser usados em todos os projetos.
  • Desenvolver programas de treinamento.
  • Desenvolver diretrizes para a implementação de processos que orientem os responsáveis pela implementação de processos e ferramentas. 
  • Preparar mentores para oferecerem suporte aos projetos.
Planejar Treinamento (voltar ao Passo 2: Planejar ...)
Planeje treinamentos para a organização de desenvolvimento. Analise os níveis de competência atuais do pessoal. Esse aspecto é tratado no Passo 1: Avaliar a Organização de Desenvolvimento
Em seguida, verifique as partes do processo que você pretende implementar e quais ferramentas serão incluídas em cada projeto. Identifique as áreas em que o nível de competência do pessoal precisa ser ampliado e a extensão de tal tarefa.
Escolha o treinamento necessário a cada projeto. Uma mudança de processos e ferramentas afeta a organização inteira e, portanto, recomenda-se treinar pessoal fora dos projetos para que eles compreendam o que a mudança significa. Esse treinamento pode consistir em um curso que ofereça uma visão geral, combinado com seminários para apresentar o novo processo e as novas ferramentas. 
Planejar a Atuação de Mentores (voltar ao Passo 2: Planejar ...)
A experiência demonstra que a ajuda de um mentor na implementação de processos é um fator importante para o sucesso. Portanto, recomenda-se que cada projeto de desenvolvimento de software tenha um mentor para auxiliar na utilização inicial do processo. É impossível informar valores precisos, mas, como sugestão geral, recomenda-se o equivalente a pelo menos 50% do tempo integral durante as primeiras iterações, até o projeto agilizar. 
Os projetos também precisam de ajuda na configuração das ferramentas. Sendo assim, planeje a alocação de recursos para a atuação de mentores e o suporte de ferramentas. 
Decidir se Será Desenvolvido um Ambiente de Desenvolvimento para a Organização Inteira (voltar ao Passo 2: Planejar ...)
Decida se pretende desenvolver um ambiente de desenvolvimento para a organização inteira que cada projeto possa usar com as adaptações necessárias. 
Na maioria das situações, é melhor esperar até vários projetos de desenvolvimento de software terem usado o processo e as ferramentas antes de seguir esse passo. Nesse momento, será mais fácil identificar as partes do processo e as ferramentas que podem ser reutilizadas e as que serão mais vantajosas em uma outra organização. 
Se você preferir desenvolver um ambiente para a organização inteira, deverá iniciar um projeto para esse fim.
Se você decidir iniciar um projeto desse tipo, deverá esclarecer que a equipe desse projeto manterá contato constante com as equipes do projeto de desenvolvimento de software. Também deve ser esclarecido que a equipe responsável pelo ambiente de desenvolvimento para a organização inteira é uma organização de serviços, avaliada pelo sucesso dos projetos de desenvolvimento de software que ela suporta. 

Passo 3: Executar a Implementação do Processo

Executar a implementação do ambiente em uma organização significa executar projetos de desenvolvimento de software nos quais são implementados processos e ferramentas. Consulte Conceitos: Implementação de um Processo em um Projeto para obter mais informações. Pela perspectiva organizacional, esse passo significa que você:
  • Monitora os projetos de desenvolvimento de software.
  • Gerencia lançamentos de processos e ferramentas entre os projetos. 
  • Monitora o desenvolvimento de um ambiente na organização inteira.

Passo 4: Avaliar o Esforço para Implementação do Processo

Depois de implementar o processo e as ferramentas em um projeto de desenvolvimento de software piloto ou real, você precisará avaliar o esforço empreendido. Você alcançou as metas estabelecidas? Avalie o pessoal, o processo e as ferramentas para conhecer as áreas que precisarão de atenção na próxima fase da implementação do processo. 

Artefatos

Quando você implementa processos e ferramentas em uma organização, em projetos de desenvolvimento de software individuais, há artefatos documentados que podem ser importantes de serem desenvolvidos. Obviamente, isso deve ser feito além da Avaliação da Organização de Desenvolvimento e do Caso de Desenvolvimento referentes a cada projeto.
  • Primeiramente, você pode precisar de um Plano de Implementação para descrever o plano geral sobre como implementar processo e ferramentas em uma organização, nos projetos individuais. Esse plano aborda processos, ferramentas e treinamento e, em geral, abrange diversos projetos de desenvolvimento de software.
  • Em segundo lugar, você talvez precise desenvolver Diretrizes de Implantação para ajudar os projetos individuais a implementarem processos e ferramentas. As Diretrizes de Implantação contêm dicas e orientações sobre como planejar a implementação de processos e ferramentas em um projeto individual de desenvolvimento de software.

Diversas Abordagens de Implementação

Há diversas abordagens para a implementação de processos e ferramentas em uma organização. Os exemplos abaixo listam diversas abordagens.  Eles descrevem o que deve ser feito em uma organização de desenvolvimento. No entanto, para entender o que fazer em um projeto de desenvolvimento de software, consulte Conceitos: Implementação de um Processo em um Projeto.

Uma Abordagem Comum (voltar a Diversas... )

A abordagem comum, ilustrada na figura abaixo, significa que você implementa o processo e as ferramentas em um projeto piloto, como passo inicial.  
Depois do projeto piloto, avalie a utilização do processo e das ferramentas e, em seguida, prepare-os para serem lançados para um público mais amplo. 
A abordagem comum é, geralmente, a maneira mais eficaz de apresentar processos e ferramentas.
A abordagem comum para a implementação de processos e ferramentas

Uma Abordagem Rápida (voltar a Diversas... )

A abordagem rápida, ilustrada na figura abaixo, usa o processo e as ferramentas diretamente em projetos reais sem uma verificação de seu funcionamento em um projeto piloto. Essa abordagem apresenta um risco maior de falha, mas pode haver bons motivos para aceitar esses riscos. Por exemplo, se o processo atual for muito semelhante ao Rational Unified Process (RUP) e se as ferramentas já são usadas na organização, a implementação de novos processos e ferramentas pode ser relativamente fácil e apresentar poucos riscos.
Um outro momento para usar a abordagem rápida é quando a organização enfrenta problemas tão graves que qualquer mudança é encarada como uma melhoria. Essa abordagem pressupõe que o potencial de melhoria seja superior aos problemas que a organização inevitavelmente terá.
A abordagem rápida

Uma Abordagem Cuidadosa (voltar a Diversas... )

Uma abordagem mais cuidadosa é executar mais de um projeto piloto antes de iniciar o projeto real, usando os novos processos e ferramentas. Use a abordagem cuidadosa quando os riscos forem altos e quando houver muitos fatores novos. É possível usar processos e ferramentas em vários projetos antes de lança-los para toda a organização.
A abordagem cuidadosa
Considere usar a abordagem cuidadosa se uma ou mais das seguintes afirmativas for verdadeira: 
  • Há muitas mudanças de processo e ferramentas para o pessoal internalizar.
  • Há muitos riscos.
  • Pouca capacidade para mudanças.

Uma Abordagem Distribuída (voltar a Diversas... )

A abordagem distribuída significa que você coloca o RUP disponível para toda a organização de desenvolvimento. Dessa forma, cada projeto de desenvolvimento de software tem a liberdade de escolher como usará o processo. Não existe coordenação nem reutilização entre os projetos de desenvolvimento de software.
A abordagem distribuída também pode ser vantajosa à organização das seguintes maneiras:
  • Os projetos adquirem um vocabulário comum. 
  • O pessoal acostuma-se a usar o RUP como um processo comum. 
  • A abordagem distribuída pode ser o primeiro passo para o uso real de processos e ferramentas. 

Um Ambiente de Desenvolvimento para a Organização (voltar a Diversas... )

Se a organização decidir criar e manter um ambiente de desenvolvimento para a organização inteira, esse procedimento deve ser bem planejado. Para criar e manter esse ambiente, deve haver uma equipe que consista em processos, ferramentas e infra-estrutura. Consulte Conceitos: Ambiente de Desenvolvimento, mais especificamente a seção intitulada Ambiente de Desenvolvimento Organizacional.
O planejamento de um projeto de ambiente organizacional tem que estar sincronizado com os projetos de desenvolvimento de software que ele suporta. A meta de um projeto de ambiente organizacional é criar um ambiente que os projetos de desenvolvimento de software possam usar.
 
Um projeto de ambiente organizacional 
Recomenda-se tratar o projeto de ambiente organizacional como qualquer projeto de desenvolvimento de software. Siga a disciplina do RUP Gerenciamento de Projeto.

Organização do Trabalho

Alguém deve assumir a responsabilidade de implementar os processos e ferramentas na organização inteira. Essa responsabilidade inclui planejamento, gerenciamento e elaboração de orçamento para a implementação do processo e das ferramentas. 

Tratar a Implementação do Processo como um Projeto

A implementação de um processo de desenvolvimento de software em uma organização é uma tarefa complexa e precisa ser realizada de maneira controlada. Recomenda-se tratá-la como um projeto externo ou subprojeto do projeto de desenvolvimento de software. Defina marcos, aloque recursos e gerencie-os como faria em qualquer outro projeto.
O projeto de implementação de processos divide-se em várias fases, com todos os quatro passos realizados em cada fase, até o projeto estar pronto e o processo e as ferramentas serem implantados e utilizados com sucesso, como mostra a figura abaixo.
Um projeto de implementação de processo pode dividir-se em fases.
A tabela abaixo oferece uma idéia geral de como um projeto pode ser planejado com quatro fases. 
 
Finalidade Resultados importantes após a fase
Fase 1 Vender o projeto de implementação de processos aos patrocinadores Uma decisão positiva ou negativa dos patrocinadores. Para apoiar a decisão, as ferramentas podem ser demonstradas e um caso de desenvolvimento pode ser exemplificado.
Fase 2 Tratar de riscos importantes Um protótipo demonstrável do ambiente de desenvolvimento de software do cliente está pronto,  com ferramentas, templates, diretrizes e exemplos de casos de desenvolvimento. 
Fase 3 Conclusão total A conclusão do ambiente de desenvolvimento de software do cliente, inclusive integração, teste e demonstração de uso. Todas as ferramentas estão prontas para serem usadas. Templates, diretrizes e exemplos de casos de desenvolvimento estão prontos. Há um currículo de treinamento pronto e os mentores já podem iniciar o suporte a projetos reais na próxima fase. 
Fase 4 Implementação na organização inteira O processo e as ferramentas são implantados na organização inteira.
Quatro fases de um projeto de implementação de processo.
Um projeto para implementar processos e ferramentas em uma organização apresenta muitas semelhanças com um projeto de desenvolvimento de software. Já foi até mesmo sugerido que as fases acima se denominem Iniciação, Elaboração, Construção e Transição, como em um projeto de desenvolvimento de software que utilize o RUP. Entretanto, recomenda-se não usar os mesmos nomes nas fases para evitar mal-entendidos.  

Diretrizes para o Planejamento da Implementação do Ambiente

Quando definir o conteúdo e as metas para os marcos, lembre-se das seguintes diretrizes:
  • Tenha a idéia final sempre em mente.
  • Reduza os riscos principais no início.
  • Concentre-se de imediato nas áreas com os principais problemas.
  • Selecione as áreas nas quais deseja obter ganhos rápidos e imediatos.
Alguns fatores comuns e como eles afetam os planos estão relacionados abaixo.  Consulte também Diretrizes: Discriminantes do Processo.
  • Problemas no atual processo de desenvolvimento. Concentre-se nas áreas do processo de desenvolvimento nas quais a organização apresenta problemas no momento. Concentre-se nas áreas onde você espera obter resultados fáceis e nas quais as pessoas possam verificar vantagens imediatas. Certifique-se de que as primeiras iterações se direcionem para a área na qual você terá que trabalhar e solucionar um dos principais problemas atuais da organização.
  • A necessidade atual de mudanças na organização. Se houver excesso de problemas na organização, seja com as ferramentas ou com a maneira como as pessoas trabalham, o nível de frustração será alto. Nesse caso, você pode ser mais agressivo e empregar o novo processo e as ferramentas, ou partes deles, em projetos reais.
  • A atual capacidade para mudanças na organização. Se eles não estão acostumados a mudanças ou se, no momento, estão atônitos com tal possibilidade, as metas das primeiras iterações devem ser despretensiosas. Nesse caso, o principal objetivo deve ser estabelecer credibilidade e confiança no processo, reservando as mudanças mais profundas para iterações posteriores quando elas puderem ser mais facilmente acomodadas. Consulte Conceitos: Gerenciamento de Mudança Organizacional.
  • O tamanho da organização. Se o processo e as ferramentas forem utilizados em uma organização de grande porte, certifique-se de que o caso de desenvolvimento e as ferramentas tenham estabilidade suficiente para serem usados por muitos desenvolvedores. Nesse caso, seja mais cuidadoso ao implementar o processo e as ferramentas de suporte durante várias iterações em um ou mais projetos de desenvolvimento de software.
  • Os riscos envolvidos. Se eles forem pequenos, seja mais agressivo e comece a usar o processo e as ferramentas em novos projetos com antecedência. Se os riscos forem grandes, seja mais cuidadoso e use projetos piloto para verificar o processo e as ferramentas.
  • A atitude entre as pessoas da organização. Comunique os problemas que a organização tem hoje e como ela funciona. Se as pessoas compreenderem os problemas atuais, será mais fácil aceitarem e entenderem a necessidade de mudanças. Envolva também as pessoas que não estão incluídas no setor imediatamente afetado da organização.
Não tente fazer tudo de uma só vez. Em vez disso, divida a implementação em diversos incrementos e, em cada um, inclua uma porção do novo processo junto com as ferramentas de suporte. Em geral, você deve concentrar-se em uma das áreas onde acredita que a mudança causará maior impacto. Se os testes forem o ponto fraco da organização de desenvolvimento de software, você poderá começar apresentando a disciplina Teste do RUP, junto com ferramentas que automatizam testes. Contudo, se o ponto fraco da organização for a captura ou o gerenciamento de requisitos, comece apresentando a disciplina Requisitos, junto com as ferramentas de suporte.
Implemente o processo e as ferramentas em iterações de projetos de desenvolvimento de software em projetos piloto ou em projetos reais. A finalidade é verificar o processo e as ferramentas em um ambiente o mais real possível. Considere os seguintes pontos ao selecionar iterações e projetos de desenvolvimento de software:
  • Se a meta é implementar o processo e as ferramentas em um único projeto de desenvolvimento de software, prefira implementá-los nesse projeto e, em seguida, monitore e melhore o processo durante o projeto.
  • Se a meta é implementar o processo e as ferramentas em muitos projetos da organização, considere implementá-los e verificá-los em iterações nas diversas fases. Nesse caso, escolha um projeto relativamente pequeno no qual seja possível aplicar o processo e as ferramentas durante todo o ciclo de vida.
  • Se o RUP representa um ponto de partida significativo do seu atual processo de engenharia de software, se você precisa de uma melhor abordagem dos riscos e das vantagens decorrentes da introdução de um novo processo ou se você está em uma nova organização que não utiliza processos ou os utiliza pouco, tente seu caso de desenvolvimento em um miniprojeto ou em um projeto piloto antes de aplicá-lo a um projeto de desenvolvimento mais importante e mais crítico para a missão. Consulte Conceitos: Projeto Piloto para obter mais informações.
Consulte também a seção intitulada Diversas Abordagens de Implementação para obter exemplos.
O uso de um novo processo, de novas ferramentas e, possivelmente, de uma nova tecnologia em um projeto de software faz a programação do projeto mais volátil. Certifique-se de alocar tempo e recursos para implementar o processo, treinar pessoal e assim por diante, durante a iteração no projeto de desenvolvimento de software, começando com a utilização do processo e das ferramentas.

Principais Motivos de Falha

É importante entender os principais motivos de falhas:
  • Falha ao implementar o processo e as ferramentas em incrementos.
  • Falta de suporte do gerenciamento.
  • Falta de aproximação dos envolvidos. Todos os envolvidos afetados pelo novo processo e pelas ferramentas devem estar próximos, o que inclui clientes, outros departamentos e subfornecedores.
  • Falta de vontade ou de capacidade de lidar com mudanças organizacionais. 
A prática nos tem demonstrado que os motivos são exatamente esses que envolvem questões não-técnicas.