bfpug_new.jpg (7052 bytes)Brazilian Function Point Users Group
Sistemática de Métricas, Qualidade e Produtividade
por Carlos Alberto Simões
Artigo publicado na Developers' Magazine, setembro de 1999

Uma das maiores dificuldades encontradas no gerenciamento de projetos de informática, é saber a dimensão do que está sendo gerenciado. Muitas aplicações que a princípio parecem pequenas, quando em desenvolvimento, mostram-se muitas vezes maior do que o previsto inicialmente e, para alguns casos, tornam-se tão complexas e grandes, que se perde o controle. Além do que nem sempre é viável se lançar na aventura de desenvolver um aplicativo, já que atualmente existem no mercado uma infinidade de produtos prontos ou necessitando de pequenas customizações.

Um sem-número de dúvidas vem à tona, quando se fala em dimensionamento, prazo e custo de sistemas. Estas dúvidas não são só pertinentes aos gerentes e desenvolvedores e sim, a todos os envolvidos neste processo tão nebuloso e complicado de se administrar. Dentre elas, pode-se citar algumas, como por exemplo:

  • Fornecer expectativas realistas para o usuário / cliente;
  • Avaliar e medir resultados;
  • Ter conhecimento do patrimônio de software;
  • Obter reconhecimento relativo a um bom trabalho;
  • Estimativa de prazo, custo e recursos para desenvolver sistema / customizar pacote;
  • Decidir entre manter x desenvolver x comprar;
  • Estabelecer indicadores para tomada de decisão;
  • Participar do processo de qualidade.

A área de informática da grande maioria das empresas, em geral, só consegue retratar custos passados de hardware, software e peopleware, além de alguns indicadores relativos ao ambiente de produção (utilização de processador por tempo, taxa de disponibilidade do sistema, etc.). A inexistência de indicadores de desempenho financeiro, qualidade e produtividade que retratem o desenvolvimento de sistemas de informação dificulta, e muito, a efetiva gerência destas atividades. Produzir serviços de alta qualidade com o mínimo custo possível - ou seja, alta produtividade - se constitui em fator crítico de sucesso para o bom desempenho empresarial.

No esforço de implantação de uma nova mentalidade voltada para a qualidade e produtividade, não é admissível o desenvolvimento de sistemas através de ‘feeling’, onde questões como: qual é a produtividade da área de informática, qual é a capacidade de produção, qual conjunto de ferramentas possibilita a maior produtividade, quais são os indicadores de qualidade existentes, qual caminho devo adotar, desenvolver ou comprar um pacote e customizá-lo, são simplesmente deixadas de lado ou respondidas sem suporte de uma base quantificável.

A gestão do ambiente de software não está vinculada somente a um projeto ou a um produto específico e sim, ao conjunto dos projetos e produtos da instalação como um todo. É o nível tático de gestão. Neste nível, a preocupação é avaliar a qualidade dos processos de planejamento de projetos, de desenvolvimento de software e de gestão dos produtos em utilização, visando atingir patamares cada vez mais elevados de qualidade sob o conceito de melhoria contínua. Para tanto, as medições operacionais devem ser agregadas a fim de permitir: a análise de tendências de determinados indicadores, que podem subsidiar ações para reversão ou sustentação dessas tendências; a análise de impactos na introdução de novas tecnologias sobre a qualidade e produtividade, que pode auxiliar na decisão sobre quais combinações de elementos de tecnologia garantem melhores resultados; a análise de atributos, que permite a comparação da qualidade e produtividade entre plataformas, metodologias, áreas de aplicação, habilidades técnicas de pessoas e assim sucessivamente.

Uma das dimensões da gestão do software é a econômica. O esforço de atingir patamares mais evoluídos de qualidade recai também sobre a gestão de custos de não-conformidade ou má qualidade. Ou seja, qualidade aumenta lucratividade pela diminuição dos custos de falhas internas e externas e pelo aumento da satisfação do cliente.

A gerência, criando os padrões de medidas para a instalação, fica em posição de monitorar o comportamento dos projetos e produtos individualmente, analisar resultados, compará-los e verificar a adequabilidade dos respectivos processos e necessidades de implementar melhorias.

O Ciclo de Controle Aplicado à Gestão do Ambiente de Software

wpe4.gif (2492 bytes)

Planejar:

    • Metas
    • Objetivos
    • Necessidade de Informações
    • Fatores Críticos de Sucesso
    • Problemas e Oportunidades

Agir:

    • Criação de medidas, padrões e coleta de dados

Acompanhar:

    • Acompanhar o andamento físico e financeiro dos projetos e serviços
    • Verificação dos projetos com desvio de estimativas de prazos
    • Verificação dos projetos com desvio de estimativas de custos
    • Análise de Impacto (avaliar as variações de qualidade, produtividade e aspectos de custos dos processos de desenvolvimento e gestão do software, em função de mudanças no ambiente)
    • Análise de Tendências (comportamento futuro dos principais atributos do processo de planejamento de projetos, desenvolvimento de software e gestão de produto)
    • Comparação entre plataformas e tecnologias

Reagir:

    • Incentivar / Premiar
    • Treinar
    • Alocar / Realocar Recursos
    • Modelar o Ambiente de Desenvolvimento
    • Eliminar os problemas antes deles te eliminarem

A métrica Análise de Pontos de Função é utilizada como geradora de indicadores para estimativas de prazos, gerência de recursos humanos e elaboração de planos de trabalho de projetos, assim como na avaliação e acompanhamento do progresso de projetos e análise da produtividade de equipes. A medida do tamanho de sistemas, em conjunto com tempo e custo, fornece estes indicadores, que constituem um sistema de informações gerenciais - importante ferramenta para a administração da organização. A implantação de um programa de métricas, fundamentado nos indicadores obtidos através da utilização da Análise de Pontos   de Função irá possibilitar fornecer uma série de informações, como por exemplo:

  • Nossa capacidade de responder às solicitações do usuário (produtividade) aumentou 33%. No ano passado, liberávamos 15 Pontos de Função por Homem Mês. Neste ano, estamos liberando 20 PF/ HM.
  • Nossa capacidade de responder às solicitações do usuário (produtividade) diminuiu 25%. No ano passado, liberávamos 20 PF / HM. Neste ano, estamos liberando 15 PF/ HM. Precisamos fazer algo.
  • O índice de defeitos foi reduzido de 12% para 10%, resultando num aumento de 16,6% do índice de qualidade.
  • O custo por ponto de função diminuiu de 100 $ / PF para 80 $ / PF. Este custo menor gerou um aumento de demanda por parte dos usuários.
  • A precisão de nossas estimativas melhorou significativamente, passando de 45% para 15% de desvios (estimado x atual).

O objetivo principal da aplicação de medições na gestão do projeto está associado aos seguintes aspectos:

  • Atingir o prazo inicialmente previsto;
  • Atingir o orçamento inicialmente previsto;
  • Geração de um produto de software de boa qualidade, adequado ao uso
  • Satisfação do cliente / usuário;
  • Fornecimento de informações à gerência de desenvolvimento para que possa melhorar, continuamente, os processos de planejamento, desenvolvimento de software e gestão do produto
  • Motivar equipe;
  • Direcionar trabalhos - prover informações a tempo de afetar o próprio processo;
  • Identificar oportunidades de melhorias - medir impacto de técnicas e ferramentas;
  • Prover a gerência de indicadores - Avaliar o ambiente de forma a saber se estamos no caminho certo.

Para tanto, é preciso controlar / monitorar o processo de desenvolvimento, visando manter a produtividade nos níveis previstos, remover o quanto antes defeitos introduzidos no produto, reduzindo ou eliminando o esforço de retrabalho, consequentemente mantendo o orçamento sob controle.

Definindo um Programa de Métricas

O processo de definição de um programa de métricas, isto é, quais métricas e quais informações geradas por estas métricas serão utilizados pela empresa, deve ser baseado nas necessidades de informação de cada nível organizacional. Isto é obtido a partir do levantamento de informações junto as áreas interessadas. Para o tal, pode-se aplicar o método Basili GQM (Goal / Question / Metric). O diagrama apresentado a seguir ilustra o modelo Basili.

Goal Quais são as metas
Question Quais questões se deseja responder
Metric Qual Métrica \ Indicador poderá lhe ajudar

Premissas para a Medição

A escolha da métrica para auxiliar e suportar as medições de software deve levar em conta alguns parâmetros, como demonstrado a seguir:

  • Prover resultados consistentes;
  • Permitir sua obtenção por não especialistas em informática;
  • Ser de fácil aprendizado;
  • Ser compreensível ao usuário final;
  • Servir para estimativas;
  • Permitir automatização;
  • Possibilitar obter séries históricas.

Técnicas de Estimativas

As técnicas de estimativas podem ser classificadas basicamente, em três categorias:

  • Analogia;
  • Modelos Algoritmos;
  • Análise de Funcionalidade.

Analogia - Estimativa por Experiência

Este método, se é que pode ser chamado de método, é baseado na experiência de quem faz estimativas. Quanto mais estimativas feitas, maior é o conhecimento e maior é a possibilidade de acerto.

Como vantagens pode-se citar: baseado em experiência passada, aplicável para projetos com baixo nível de detalhe e o compromisso do grupo que produziu a estimativa.

Como desvantagens pode-se citar: está sujeito à pressão, necessita de experts da companhia, pode apresentar grande desvio, é altamente dependente de experiência passada, não deve ser utilizado para projetos grandes e não produz indicadores.

Modelo Algoritmo - COCOMO

O método COCOMO (Constructive Cost Model) foi desenvolvido para estimar esforços de desenvolvimento, prazo e tamanho de equipe para um projeto de sistemas. Ele é baseado no número de instruções fontes (número de linhas de código ) e supõe que as especificações dos requisitos não serão alteradas substancialmente após a fase de Planejamento e Requisitos.

Como vantagens pode-se citar: baseado em experiência passada, fundamentado em fórmula matemática e pode ser aplicado nas diversas fases do ciclo de desenvolvimento.

Como desvantagens pode-se citar: dependente da tecnologia, dependente de experiência passada e não produz indicadores.

Análise de Funcionalidade - Análise de Ponto de Função - FPA

O Ponto de Função mede o tamanho do software pela quantificação de sua funcionalidade externa, baseada no projeto lógico ou a partir do modelo de dados, abrange a funcionalidade específica requerida pelo usuário para o projeto. A funcionalidade requerida diz  "o que" será (ou é) entregue para o usuário.

Como vantagens pode-se citar: a estimativa é feita em função da visão do usuário; facilidade de aprendizagem e aplicação da técnica, independência de tecnologia, apoiar e acompanhar a avaliação de produtividade e de qualidade de projetos de software, prover um fator de comparação de softwares, possibilitar a coleta de dados para obtenção de diversos indicadores de acompanhamento, aplicabilidade nas diversas fases de desenvolvimento.

Como desvantagens pode-se citar: necessita acompanhamento constante das medições para gerar os diversos indicadores possíveis, a aplicabilidade nas diversas fases requer esforço de contagens de pontos de função para cada fase e requer um meio eficiente de armazenamento das informações obtidas nas contagens.

Comparação entre Métricas

Cada tipo de medição tem suas vantagens e desvantagens. FPA e COCOMO podem ser utilizadas em conjunto, de modo que se obtenha o melhor de cada uma, conforme as características desejadas nas etapas do desenvolvimento.

Coleta da Base de Dados

É a decisão mais importante, depois que se decide implantar a métrica de Análise de Pontos de Função. A coleta pode ser atomizada até o ponto ideal entre o útil e o desestímulo. As medições referem-se à coleta de dados sobre prazo, esforço, custo de cada fase, defeitos encontrados e removidos e outros atributos do processo, assim como a medição do tamanho do software no final do projeto. A coleta da base de dados é um dos fatores críticos de sucesso na implantação de um programa de métricas. Corresponde à etapa em que, a partir de um planejamento do que será coletado, feito na fase de definição de um programa de métrica, define-se como serão armazenadas as informações coletadas (aquisição de uma ferramenta, uso de planilhas, desenvolvimento de um sistema, etc.).

Neste momento, é necessário que todos os envolvidos no processo de coleta estejam motivados e conscientes da importância do trabalho, cujo retorno não será imediato, pois apesar do pequeno acréscimo de trabalho, proveniente das medições e da coleta de dados, ainda não se tem uma massa de dados históricos mínima, tão necessário à uma utilização da métrica.

Apesar dos grandes benefícios que podem ser obtidos com a utilização de um programa de métricas para o gerenciamento dos projetos e produtos de software, o fator humano é um item extremamente sensível que deve ser levado em consideração e que, se negligenciado, pode conduzir ao fracasso tentativas bem intencionadas de medições. O princípio básico que norteia as regras, que deve orientar o comportamento ético da gerência e das equipes de desenvolvimento, fundamenta-se no que podemos considerar um axioma enunciado por Edward Deming (Out of the Crisis, MIT Press, 1986 ): "85% dos problemas que ocorrem nos processos da empresa são de responsabilidade da gerência". Consequentemente, jamais se devem avaliar desempenhos individuais e sim enfocar processos e produtos os quais são desenvolvidos por equipes.

Medições para Atender o Aperfeiçoamento do Planejamento de projetos e do Processo de Desenvolvimento da Instalação

Ao final do processo de desenvolvimento devem ser feitas algumas medições, para que dêem subsídios ao aperfeiçoamento continuo dos processos de planejamento de projetos e de desenvolvimento da instalação. Essas medições irão atualizar o banco de dados de métricas e alimentar os indicadores, bem como estabelecer os novos padrões da instalação, os quais serão utilizados para o planejamento e desenvolvimento de novos projetos.

Estas medições compreendem:

  • Verificação da exatidão das estimativas;
  • Tamanho do software entregue;
  • Produtividade do Desenvolvimento;
  • Custo do PF de Desenvolvimento;
  • Crescimento funcional do software durante o desenvolvimento;
  • Reutilização de código;
  • Complexidade relativa do software;
  • Custo da qualidade;
  • Distribuição do esforço por fase;
  • Distribuição do custo por fase;
  • Densidade e distribuição dos defeitos por fase.

Para finalizar, são apresentados alguns exemplos de uso de indicadores, para cada classe de usuários.

Indicadores para Clientes

  • Índice de Qualidade: IQ = Número de Defeitos / Tamanho do Software;
  • Tempo médio de solução de problemas;
  • Nível de satisfação do cliente;
  • Pontos de função liberados.

Indicadores para Executivos

  • Crescimento de software;
  • Taxa de produção;
  • Qualidade do produto liberado;
  • Ranking de defeitos;
  • Custo por ponto de função;
  • Custo de retrabalho;
  • Taxa de faturamento;
  • Produtividade;
  • Patrimônio de Software e Inventário de Software.

Indicadores para Gerentes / Equipe

  • Taxa de Produtividade: PF / Pessoa-mês ou PF / Pessoa.hora

Produtividade = Tamanho do Software / Esforço

  • Eficiência na remoção de defeitos;
  • Estimativa de Esforço: Esforço = Tamanho do Software / Produtividade
  • Retrabalho;
  • Taxa de Custo de Software: Taxa de Custo = Custo Total / Tamanho do Software
  • Tendências de custo;
  • Custo por ambiente: Custo = Taxa de Custo x Tamanho do Software.