Capítulo 2. Avaliação e Melhoria de Processos de Software
2.7 Relatos de Experiências em Melhoria de Processos
A literatura apresenta poucos exemplos de abordagens utilizadas para tratar melhoria de processos de software.
KOMI-SIRVIÖ (2004) apresenta uma abordagem chamada Pr2imer, que consiste
das seguintes fases: (i) análise da situação corrente do processo de software; (ii) definição do estado ideal; (iii) planejamento das medidas e (iv) realização de projeto piloto e institucionalização. A primeira fase da abordagem é responsável por analisar a situação atual dos processos de desenvolvimento, dos métodos e das ferramentas de apoio, com o objetivo de identificar os principais problemas e definir objetivos de melhoria. São realizadas análises quantitativas e qualitativas, cujas técnicas são selecionadas de acordo com as necessidades da organização. O objetivo da fase “definição do estado ideal” é produzir novas versões dos processos de forma que possam ser avaliadas em projetos piloto. Os principais resultados dessa fase são a definição das melhorias e o planejamento das medições para avaliar os efeitos das melhorias, o que é realizado utilizando a abordagem GQM (BASILI et al., 1994). A terceira fase é responsável por definir o plano de melhoria que descreve como proceder, na prática, do estado atual para o ideal, definindo as responsabilidades, tarefas e cronograma. Além disso, um plano de medição é estabelecido para apoiar a implementação das melhorias nos projetos piloto e para avaliar o seu sucesso. Finalmente, a última fase é responsável por testar as melhorias, objetivando reduzir os riscos de adotar as novas práticas em larga escala. Essa fase produz dados de medição, resultados de análise e um relatório geral de avaliação da abordagem.
BIRK et. al (1998) propuseram uma metodologia para melhoria de processos, cuja principal característica é ser direcionada a requisitos de qualidade de software específicos. Essa metodologia é composta das seguintes fases: (i) Caracterização; (ii)
Definição dos objetivos; (iii) Planejamento; (iv) Execução; (v) Análise e (vi) Empacotamento. Na primeira fase é estabelecido o comprometimento da organização e de todos os seus colaboradores com a iniciativa de melhoria de processos. São, também, identificadas as necessidades de qualidade de produto da organização e é determinada a atual situação da empresa em relação à qualidade dos seus produtos. Finalmente, é determinada a capacidade dos processos mediante a utilização de algum método de avaliação (por exemplo, SCAMPI). A segunda fase é responsável pela definição dos objetivos de melhoria, que devem ser extraídos dos objetos de qualidade do produtos definidos na fase anterior. A fase “Planejamento” define como o conjunto de objetivos de melhoria devem ser colocados em prática, descrevendo as alterações necessárias de serem implementadas. Nessa fase é definido, também, um plano de medição com o objetivo de acompanhar e avaliar os resultados obtidos com as melhorias. Esse plano é desenvolvido utilizando-se a abordagem GQM (BASILI et al., 1994). Na terceira fase, “Execução”, as ações de melhoria são executadas de acordo com os planos e os dados são coletados e analisados em sessões de
feedback. Além disso, lições aprendidas e outras experiências relevantes são
continuamente registradas. O objetivo da fase de análise é verificar se a qualidade do produto melhorou de acordo com o esperado e se as alterações alcançaram os objetivos que haviam sido definidos. Uma das possíveis maneiras de se realizar essa fase é avaliar novamente a capacidade dos processos que foram alterados. A última fase, “Empacotamento”, transforma os resultados das análises em objetos de reutilização, de forma que possam ser utilizados em futuros projetos e programas de melhoria.
DEBOU (1999) apresenta uma abordagem para melhoria de processos de software denominada AMI - Application of Metrics in Industry (Aplicação de Métricas da Indústria), que baseia-se no ciclo de Shewhart (Plan-Do-Check-Act). A abordagem é composta de doze passos, iterativos, incrementais, orientados a objetivos e integrados a uma avaliação com relação a modelos de maturidade de processos de software. O primeiro passo é chamado de “Avaliação do Ambiente do Projeto” e tem como objetivo identificar fraquezas e problemas no processo de desenvolvimento, mediante uma avaliação com relação a um modelo de maturidade de processo de software qualquer. O resultado desse passo auxilia a organização a definir os seus objetivos de melhoria, que devem estar alinhados com os seus objetivos de negócio. O segundo passo, “Definição dos Objetivos do Processo de Software”, tem como resultado a definição dos objetivos de melhoria do processo de software. A abordagem recomenda que se defina apenas de um a dois objetivos. O terceiro passo, “Validação
dos Objetivos do Processo de Software” tem como propósito validar os objetivos, observando a consistência entre os objetivos e as conclusões das avaliações, entre os objetivos e o tempo disponível e entre os objetivos e o orçamento. É avaliada também a dificuldade dos objetivos em relação às condições do ambiente de desenvolvimento de software da organização. O quarto passo, “Decomposição dos Objetivos em Sub- objetivos”, baseia-se no paradigma GQM (BASILI et al., 1994) e é documentado mediante a utilização de uma tabela de questões e uma lista de pares de entidade- atributo. Ao final é construída uma árvore de objetivos. O quinto passo, “Verificação da Árvore de Objetivos”, tem como objetivo verificar a árvore de objetivos, observando a homogeneidade de níveis de detalhe em cada ramo da árvore, a consistência interna da árvore e a relevância da árvore para os objetivos do processo de software. No sexto passo, “Identificação das Métricas a partir das Questões”, é definido um conjunto de métricas básicas que possam atender aos objetivos definidos. No sétimo passo, “Elaboração do Plano de Medição”, é definido o Plano de Medição com informações que auxiliem a coleta e análise das métricas. O oitavo passo, “Coleta de Dados Primitivos”, tem como objetivo a coleta de dados, que pode ser manual ou automática. O nono passo, “Verificação dos Dados Primitivos”, tem como objetivo verificar a acurácia da coleta de dados, detectando dados não usuais (outliers) para que possam ser analisados e as causas identificadas. O décimo passo, “Apresentação e Utilização dos Dados”, tem como objetivo apresentar os resultados obtidos com a coleta de dados, preferencialmente de forma gráfica para facilitar o entendimento. O décimo primeiro passo, Validação das Métricas”, diz respeito a avaliar se as métricas são adequadas aos propósitos para os quais foram definidas. E finalmente, o décimo segundo passo, “Relacionamento dos Dados aos Objetivos” tem como objetivo verificar se os objetivos foram atendidos. Caso necessário, os objetivos são modificados ou são definidos novos objetivos.
BIRK e PFHAL (2002) apresentam uma abordagem para melhoria de processos de software baseada na perspectiva de sistemas. Nela é importante a definição dos objetivos de negócio, dos objetivos de produto e dos objetivos de processo, pois estes são os orientadores dos projetos de software. Em todos os projetos é, constantemente, determinada, mediante medições, tanto a situação dos processos, quanto a dos produtos. De acordo com o resultado obtido da análise comparativa entre a situação atual e a situação desejada para qualidade do processo e do produto, ações de melhoria são definidas e implementadas. Essas ações podem ser definidas de forma que possam influenciar um único projeto (single-loop feedback) ou todos os projetos da organização (double-loop feedback). O double-loop feedback pode ser
efetivado de duas formas: mediante a definição de lições aprendidas e melhores práticas identificadas no projeto ou a partir da alteração dos modelos. Nessa abordagem, as análises consideram e valorizam as informações de contexto, que podem ser modelos mentais pessoais ou modelos quantitativos e qualitativos registrados em uma base de experiência.
CAIVANO (2005) propõe uma abordagem para melhoria contínua de processos utilizando Controle de Processo Estatístico, composta das seguintes fases: (i) Realização de testes estatísticos; (ii) Interpretação dos testes; (iii) Processo de investigação e (iv) Armazenamento de experiências. A primeira fase é responsável pela realização de testes, visando descobrir algum tipo de tendência nos processos utilizando gráficos de controle. Esses testes permitem identificar os processos que não têm o desempenho controlado. Após essa fase, os resultados dos testes são interpretados de maneira que possam ser identificadas e removidas as causas atribuíveis (especiais) ou recalculados os limites de controle. A próxima fase, “Processo de Investigação”, tem como objetivo monitorar o desempenho do processo. Também a partir da utilização de gráficos de controle. Finalmente, a última fase é responsável por coletar e registrar os conhecimentos adquiridos em uma Base de Experiência, de maneira que possam ser facilmente reutilizados em futuros projetos.
LAHOZ (2005) apresenta uma abordagem para melhoria de processos de software, utilizada pela Agência Espacial Européia, no desenvolvimento de sistemas críticos e composta por nove atividades. (i) Exame das necessidades e metas de negócios da organização; (ii) Iniciação do processo de melhoria; (iii) Preparação e ralização de uma avaliação do processo; (iv) Análise dos resultados da avaliação e preparação de um plano de ação; (v) Implementação das melhorias; (vi) Confirmação das melhorias; (vii) Sustentação das melhorias; (viii) Monitoração do desempenho e (ix) Gerenciamento do projeto de melhoria.
MARTINS e DA SILVA (2007) propuseram uma abordagem de melhoria de processos de software denominada SPI – ProPAM. Essa metodologia apóia a melhoria de processos baseando-se no alinhamento entre o processo e o gerenciamento de projetos, que é definido como o grau pelo qual os planos e objetivos do projeto apóaim e são apoiados pelas práticas do processo. Os autores partiram da constatação de que vários tipos de modificações nos projetos podem levar à necessidade de alterações no processo de desenvolvimento. Segundo eles, com a monitoração do projeto é possível detectar as mudanças necessárias para o projeto e identificar oportunidades de melhoria para o processo. O ProPAM é composto de quatro passos. São eles: (i) Definição do Processo; (ii) Definição do Projeto; (iii)
Monitoração e Controle do Projeto e (iv) Avaliação do Processo. O passo “Definição do Processo” é responsável pela definição do processo a ser utilizado pelo projeto mediante a instanciação de um meta-modelo de processo. O passo “Definição do Projeto” é executado após o passo “Definição do Processo” e é responsável pela elaboração do Plano do Projeto. O terceiro passo consiste da monitoração e do controle do projeto, gerando, quando necessárias, alterações no plano do projeto e no processo. Nesse passo, o grupo de melhoria de processos detecta, avalia e registra as alterações realizadas. Ao final do projeto, o passo “Avaliação do Processo” é executado. Este passo é responsável por identificar e analisar melhorias para o processo a partir da realização de reuniões. Podem ser identificadas melhorias no nível de projeto ou no nível de processo.
SALO e ABRAHAMSSON (2005) apresentaram uma abordagem para melhoria de processos bastante focada em gestão do conhecimento, cujo objetivo é prover, sistematicamente, mecanismos para as equipes de projeto utilizarem seus conhecimentos e experiências para definir melhor os processos dos projetos e para envolver mais as equipes de projeto e os membros do grupo de melhoria de processo. A abordagem consiste dos seguintes passos: (i) preparação; (ii) coleta de experiências; (iii) planejamento de ações de melhoria; (iv) execução de projeto-piloto; (v) acompanhamento e validação e (vi) armazenamento e empacotamento de experiências. O empacotamento e armazenamento de conhecimentos adquiridos mediante as ações de melhoria de processos nos projetos possibilita a transferência desses conhecimentos do nível dos projetos para o nível organizacional. Esta abordagem apresenta duas diferenças principais com relação às abordagens tradicionais. Primeiramente, enquanto os objetivos de melhoria das abordagens tradicionais originam-se do nível organizacional, nesta abordagem os objetivos advêm das experiências e do aprendizado adquiridos pelas equipes durante o projeto. A outra diferença, destacada pelos autores, é o fato das abordagens tradicionais buscarem capturar conhecimentos relevantes apenas no final do projeto, para que sejam úteis aos futuros projetos. Esta abordagem tem como foco o aprendizado durante a execução do processo, de forma a poder melhorar o seu desempenho.