Capítulo 2 Melhoria de Processos de Software
2.4 Melhoria de Processos de Software em Corporações
A adoção de iniciativas de melhoria de processos de software em corporações muitas vezes possui características e objetivos comuns à adoção em organizações, como podem ser vistos, por exemplo, nos trabalhos apresentados por SAKAMOTO et al. (1998), LIMA FILHO et al. (2002), TAVARES et al. (2002b), MALHEIROS et al. (2006) e GUZMAN et al. (2006).
GUZMAN et al. (2006) descrevem recomendações para realizar uma avaliação de processos de software numa grande organização espanhola que possui características de corporação, apesar de não ser tratada como tal, com seis unidades organizacionais desenvolvedoras de software. Os autores recomendam uma estratégia de melhoria de processos de software baseada no desenvolvimento evolucionário dos processos e bibliotecas de ativos de processos. Dessa forma, a estratégia implica no desenvolvimento de versões iniciais de um produto operacional e, posteriormente, de sucessivas versões, onde cada núcleo destas versões responde por requisitos mínimos e essenciais e é construído de forma flexível de forma a antecipar futuras inclusões de mais capacidades de forma simples. Duas abordagens para a implementação dessa estratégia incremental são a implantação de (i) pequenas mudanças em várias unidades organizacionais ou (ii) a implantação de grandes mudanças em poucas unidades organizacionais. As principais vantagens da primeira abordagem são o alto compromisso obtido e facilidades para atingir níveis de maturidade e projeto integral das soluções; a principal da segunda é a obtenção de resultados parciais em pouco tempo. As principais desvantagens da primeira são o maior impacto organizacional e a implantação complexa; as da segunda são o maior risco associado com a implantação, o menor comprometimento da organização e maior dificuldade de atingir níveis de maturidade.
SAKAMOTO et al. (1998) descrevem uma iniciativa de melhoria de processos de software da OMRON Corporation que durou 17 meses cujo objetivo foi melhorar o esforço dos projetos (medido em homem/mês). Ao final da iniciativa pode-se perceber uma redução de 30% do esforço em homem-mês no projeto alvo da iniciativa de melhoria. Além disso, foi percebida a falta de uma abordagem para gerência do conhecimento pelos membros do SEPG e não foi percebida pela alta gerência a relação entre os esforços de SPI e os benefícios obtidos. Entretanto, a análise realizada pelos envolvidos na iniciativa de SPI gerou a criação de um protótipo de ambiente para apoiar as atividades de melhoria de processos na corporação denominado PIASS (Process Improvement Activities Support Systems) com ferramentas para apoiar a iniciativa de melhoria de processos na avaliação de
processos, gerência de conhecimento e gerência das atividades de melhoria de processos de software. Este ambiente possui funções próprias para membros do SEPG, desenvolvedores e gerentes da iniciativa de melhoria. O protótipo apresentado não foi utilizado, entretanto, sua definição foi fortemente baseada na observação dos problemas encontrados durante a iniciativa de melhoria de processos e procurou suprir várias necessidades identificadas ao longo da iniciativa de melhoria.
Um dos poucos trabalhos que descrevem uma abordagem para iniciativa de melhoria de processos de software em corporações e citam como as organizações subordinadas foram envolvidas na iniciativa e citam a estrutura de comando entre os diferentes níveis envolvidos é apresentado por OGASAWARA et al. (2002; 2005; 2006).
OGASAWARA et al. (2002; 2005; 2006) descrevem os problemas encontrados para a promoção de atividades de melhoria de processos de software na Toshiba e as soluções que foram dadas. Os autores alertam que para uma promoção efetiva de tais atividades em uma grande organização é necessário o estabelecimento de uma estrutura organizacional e um método de implantação para a promoção e desenvolvimento de treinamentos, ferramentas de apoio e outros materiais. Além disso, alertam, é necessário o estabelecimento de uma comunidade de melhoria de processos de software envolvendo os diversos departamentos.
O Grupo de Processos de Engenharia de Software (ou SEPG, da sigla em inglês para Software Engineering Process Group) Coorporativo da Toshiba foi criado em 2000 sendo composto, então, por 6 pessoas e, em 2005, já contava com 20 pessoas e utiliza-se o CMM como um modelo para as atividades de melhoria de processos de software. Os principais objetivos das atividades desenvolvidas foram atingir os objetivos de qualidade, custo e entregas no desenvolvimento de software e estabelecer uma cultura organizacional para tornar possível a melhoria contínua. Para isso, foi definido um plano de longo prazo:
(i) Entre 2000 e 2003 – a meta foi o estabelecimento de um framework para melhoria de processos de software com: a promoção das atividades relacionadas à melhoria de processos, ao uso do CMM e ao próprio SEPG; a organização de SEPGs em cada departamento onde houvesse desenvolvimento; treinamento em assuntos relacionados a melhoria de processos de software; estabelecimento de uma hierarquia, em três níveis, de SEPGs.
(ii) Entre 2004 e 2007 – a meta era a implantação das atividades de melhoria de processos de software com: apoio a maior maturidade e qualidade de processos e produtos;
estabelecimento do relacionamento entre o CMM e gerência de projetos; estabelecimento de uma política de garantia de qualidade de software nas organizações.
(iii) Entre 2008 e 2010 – a meta consiste no estabelecimento de uma cultura de melhoria de processos de software com: introdução de novas tecnologias para processos e produtos; implantação de compartilhamento de informações; estabelecimento de padrões de competências para melhoria de processos de software nas organizações e de nomes paras os papéis associados a estas habilidades (por exemplo, líder de SEPG, membro do SEPG etc.).
Os SEPGs são divididos em três diferentes classes: SEPG Coorporativo, SEPG Organizacional e SEPG da Unidade de Negócio. A estrutura do SEPG é hierárquica, como pode ser visto na Figura 2.1, existindo o SEPG Corporativo e pelo menos um SEPG por organização subordinada. Os SEPGs relacionados às unidades de negócio podem estar subordinados aos SEPGs Organizacionais ou ao Corporativo. O SEPG Corporativo também tem como responsabilidades: garantia de qualidade (via testes) através de ferramentas de análise estática de programas; promoção de ferramentas automáticas de qualidade de software (por exemplo, análise estática, gerência de configuração, gerência de defeitos, estimativas de confiabilidades, geração de casos de testes etc.); estabelecimento e execução de cursos para treinamento em engenharia de software. Além das ferramentas citadas anteriormente, são utilizadas para promoção das atividades sites, newsletters, listas de discussão e relatórios de atividades de SPI.
Guia de CMM Soluções de Melhoria Exemplos de Ativos de Processo Técnicas Avaliação de Processos CMM IDEAL SEPG Unidade Organizacional SEPG Organizacional SEPG Corporativo Dados Apoio Dados Apoio Uso Uso Atividades de Melhoria Serviços de Consultoria - Conferência SEPG - Workshop SEPG Eventos
- Curso Líder SEPG - Curso Introdutório SW- CMM/CMMI Treinamentos - Sites - Newsletter - Lista de Discussão - Relatório de Atividades Troca de Informações Comunidade Uso Uso Verificação Desenvolvimento Usa Usa Provê
Figura 2.1 – Framework para promoção das Atividades de Melhoria de Processos na
Toshiba (OGASAWARA et al., 2006)
Em 2006 havia cerca de 60 SEPGs em unidades de negócio ou organizações contra 17 em 2001. Além disso, a taxa de SEPGs em unidades de negócio que eram apoiados pelo SEPGs corporativo caiu de 94% para 66%, sendo que o papel dessa liderança passou a ser
realizado pelos SEPGs organizacionais. Segundo os autores, isso é um indicativo de que a infra-estrutura organizacional necessária para um processo sistemático de melhoria foi construída e que as atividades de melhoria de processos de software foram promovidas. Foi notada, também, uma melhora significativa das unidades de negócio em relação a conhecimento e domínio de processos de software e várias unidades de negócio foram avaliadas no SW-CMM níveis 2 e 3.
A unidade da Motorola no Brasil descreve a implantação de processos visando a obtenção dos Níveis 2 e 3 do SW-CMM (LIMA FILHO et al., 2002). A implantação do CMM na empresa foi feita com a ajuda de um grupo específico para a gerência das atividades envolvidas, o SEPG Local. As principais atividades do SEPG foram o gerenciamento de mudanças de processo e o acompanhamento da implantação do processo. Havia três níveis de processos de software: Processo Global (ditado pela Matriz americana), Versão Regional (para a filial brasileira) e as versões utilizadas nos projetos de fato. Adaptações nos processos podem ser realizadas na passagem de um nível para o outro. O SEPG Local é subordinado ao SEPG Global. Se uma melhoria identificada pelo SEPG Local afeta o Processo Global, essa melhoria é submetida ao SEPG Global para aprovação e institucionalização.
O SERPRO (Serviço Federal de Processamento de Dados) é uma empresa vinculada ao Ministério da Fazenda brasileiro, responsável pela execução de serviços de tratamento de informações e processamento de dados para o governo federal. A empresa está estrutura em unidades de gestão responsáveis por um segmento da administração pública. Cada segmento atende a pelo menos um órgão federal (com características e necessidades próprias), por intermédio de projeções da unidade de gestão em cada uma das unidades organizacionais. Há unidades espalhadas por dez capitais brasileiras (Rio de Janeiro, Belém, Belo Horizonte, Curitiba, Fortaleza, Porto Alegre, Recife, Salvar, São Paulo e Brasília). Desde 2000 está envolvida com a adoção dos níveis 2 e 3 SW-CMM/CMMI em suas unidades (TAVARES et al., 2002b; MALHEIROS et al., 2006).
A estratégia de implantação dos processos visando o nível 2 do SW-CMM utilizou uma estrutura de grupos de trabalho responsáveis pela definição e gerência dos processos composta por (TAVARES et al., 2002b): GEP (Grupo Executor do Projeto) formado por pessoas de cada unidade e responsável pelas diretrizes e aprovação das decisões e definições relacionadas ao Programa de Modernização do Desenvolvimento (PMoD); GTS (Grupo de Trabalho Serpro) que são grupos corporativos com função de definir a política, processos e procedimentos de cada uma das áreas de processo do nível 2 do CMM e para o
processo de Engenharia; GTI (Grupo de Trabalho Interno) que são projeções dos GTS nas unidades de gestão formados por profissionais responsáveis pela elaboração e revisão do conteúdo do processo de desenvolvimento. Ferramentas foram utilizadas como forma de apoio à execução dos processos de gerência de projetos (apoiando tarefas como cadastro de solicitações de usuários, medição de esforço e tamanho em pontos por função e controle e acompanhamento dos custos), gerência de requisitos, gerência de configuração e divulgação do processo padrão da organização. Não fica claro a partir do trabalho se alguma das unidades já tinha sido avaliada no nível 2 na época, mas lições aprendidas são descritas que comprovam a institucionalização dos processos de software em, pelo menos, parte das unidades.
Num relato posterior, MALHEIROS et al. (2006) descrevem uma abordagem e ferramenta apoiar a melhoria de processos de software na empresa. A abordagem apóia ao trabalhado do SEPG durante a implantação de CMMI níveis 2 e 3 na empresa e tem como base o programa de melhoria de processos que visa garantir treinamento, recursos e fundos para incorporação do PSDS (o processo de desenvolvimento da empresa) pelas unidades de desenvolvimento, e mantê-lo alinhado com as boas práticas de mercado. O programa trata o processo de desenvolvimento de forma corporativa, auferindo-lhe a independência necessária à formulação das políticas e procedimentos e à padronização das práticas executadas pelas unidades do SERPRO que desenvolvem software. A ferramenta GM- PSDS é utilizada pelas diversas unidades de gestão da organização e pelos envolvidos com os processos para a solicitação e acompanhamento de melhorias no processo padrão e tem por objetivo viabilizar a análise, controle e monitoração de oportunidades de melhoria nos processos de software, vinculando-as aos ganhos obtidos para o processo, numa abordagem de trabalho cooperativo. Segundo os autores, a ferramenta tem se mostrado efetiva para a execução e acompanhamento da melhoria nos processos e, através dela, é possível obter dados sobre as melhorias como, por exemplo, quantas melhorias foram abertas, aprovadas, implantação por regional ou unidade de gestão.
Em se tratando de relatos sobre implementação de melhoria de processos de software no contexto de corporações, há, também, relatos de ações pontuais dentro do contexto e necessidades específicas de determinadas unidades de negócio de grandes empresas que se comportam como corporações. A seguir, alguns exemplos, relacionados às empresas Alcatel, Nokia, IBM, Motorola e Ericsson:
• JOKIKYYNY (1999) discute a utilização de uma ferramenta para melhorar o processo de inspeção de software em unidades da Ericsson na Finlândia,
incluindo atividades de coleta e análise dos dados.
• KETTUNEN e LAANTI (2005) descrevem um quadro comparativo para seleção de modelos de processos de software a serem utilizados em projetos em uso na Nokia.
• KILPI (2001) descreve a implantação de um programa de medição na Nokia com base numa adaptação do GQM.
• STARK e CROCKER (2003) descrevem a adoção de processos de software ágeis em uma das unidades da Motorola com bons resultados; dentre eles o tempo e o custo necessários para o projeto piloto foram menores que o previsto em relação à estratégia padrão da empresa, além disso, a qualidade do produto também foi melhor que a esperada.
• EBERT (EBERT, 1999a; EBERT, 1999b) descreve uma abordagem para definição de um programa de medição corporativo na Alcatel, uma corporação de origem francesa.
• EBERT e DE MAN (2002) descrevem a experiência da Alcatel na gerência da diversidade de seus processos. Ao utilizarem uma ferramenta de workflow capaz de gerenciar a diversidade de processos dentro da empresa, conseguiram como benefícios: melhora da qualidade, redução do tempo de desenvolvimento, aumento da flexibilidade de engenharia, redução de esforço para tarefas, melhora na comunicação, melhora no alinhamento de processos e ferramentas e maior facilidade de geração de planos de treinamento.