Artigo Engenharia de Software 2 - Análise de pontos de função
Artigo da Revista Engenharia de Software edição 2.
Planejamento
Análise de pontos de função
Uma aplicação nas estimativas de tamanho de Projetos de Software
A
indústria de software continua sentindo os efeitos da crise do software
da década 80. Isto pode ser observado quando analisamos os três
principais sintomas da crise do software apresentados por Pressman em
· A produtividade não tem acompanhado a demanda por serviços;
· A qualidade do software, em alguns sistemas, não é adequada;
· As estimativas de prazo e custo são freqüentemente imprecisas.
Este
último sintoma, que está associado a um dos principais problemas que a
indústria de software tem enfrentado (a falta de previsibilidade de
custo e prazo de projetos de software), pode levar a conseqüências
desastrosas, tais como: conflitos entre o gerente do projeto e a equipe,
baixa estima da equipe, entrega de software de baixa qualidade, perda
de imagem da organização, e até mesmo o cancelamento do projeto. Assim,
torna
Este artigo tem como propósito apresentar um processo de estimativas de projetos de software, aderente ao modelo CMMI, utilizando a métrica de Pontos de Função para estimar o tamanho funcional do projeto de software.
Processo de Estimativas de Projetos de Software
Esta seção apresenta uma visão geral de um processo de estimativas de projetos de software aderente à área de processo de Planejamento do Projeto do nível 2 do CMMI.
A Figura 1 ilustra um processo de Estimativas de Projetos de Software. Este processo é descrito nos parágrafos seguintes.
Figura 1. Processo de Estimativas de Projetos de Software
O principal insumo (artefato de entrada) para um processo de estimativas é o documento de requisitos. Como as estimativas devem ser realizadas no início do processo de desenvolvimento de software, então, o artefato utilizado é freqüentemente um documento inicial de requisitos (por exemplo: Documento de Visão) ou até mesmo um documento do próprio cliente (por exemplo: modelo de processo de negócios ou manual do usuário, no caso de redesenvolvimento). O responsável pelas estimativas deve analisar os requisitos para garantir a qualidade e então estimar o tamanho do projeto de software. O próximo passo é a derivação das estimativas de esforço, prazo (cronograma), custo (orçamento) com base na estimativa de tamanho e nos dados históricos de projetos concluídos da organização, assim como o estabelecimento da estimativa de recursos computacionais críticos. Neste ponto, as principais estimativas foram geradas, no entanto estas precisam ser documentadas. As premissas e suposições utilizadas na geração das estimativas também devem ser documentadas.
A
análise das estimativas por um estimador independente, um profissional
que não atue na equipe do projeto, constitui uma boa prática. O
estimador independente poderá analisar a consistência das estimativas e a
qualidade das suas documentações. No decorrer do processo de
desenvolvimento, as estimativas devem ser acompanhadas conforme o
refinamento dos requisitos. O projeto deve ser re
O
foco deste artigo está na geração de estimativas de tamanho de projetos
de software. Observe que a estimativa de tamanho é a primeira a ser
gerada e a partir dela são derivadas as demais estimativas. Por isso, a
importância desta estimativa. A literatura apresenta várias métricas de
tamanho. Na indústria brasileira, pode
Métricas de Tamanho de Projetos de Software
A métrica Linhas de Código (LOC)
é de fato a mais antiga. A principal vantagem é que a contagem de
linhas de código pode ser automatizada por uma ferramenta. As
desvantagens são as seguintes: muitas vezes, o significado de uma linha
de código é subjetivo, por exemplo, contar ou não linhas de comentário
no código fonte; a métrica não é adequada para ser um indicador de
produtividade, por exemplo, o desenvolvedor que escrever mais linhas de
código será mais produtivo do que o desenvolvedor que escrever um
algoritmo mais elegante e mais eficiente com menos linhas de código.
Além disso, torna
A métrica Pontos por Casos de Uso (PCU) foi proposta por Gustav Karner com o propósito de estimar recursos para projetos de software orientados a objeto, modelados por meio de especificação de Casos de Uso. A métrica é de fácil aplicação, não requer muito tempo de treinamento ou experiência prática. No entanto, o PCU somente pode ser aplicado em projetos de software cuja especificação tenha sido expressa em casos de uso. Além disso, como não existe um padrão único para a escrita de uma especificação de caso de uso, diferentes estilos na escrita do caso de uso ou na sua granularidade podem levar a resultados diferentes na medição por PCU. Assim, a métrica se torna subjetiva. E ainda, devido ao processo de medição do PCU ser baseado em casos de uso, o método não pode ser empregado antes de concluída a análise de requisitos do projeto. Na maioria das vezes existe a necessidade de se obter uma estimativa antes da finalização desta etapa. Então, esta métrica não é recomendada para utilização como unidade de medida das estimativas de tamanho de projetos de software.
A métrica Pontos de Função (PF), definida por Allan Albrecht em 1979, tem sido utilizada de forma crescente pela indústria de software. O IFPUG (International Function Point Users Group), criado em 1986, é responsável pela atualização das regras de Contagem de Pontos de Função, descritas no CPM (Counting Practices Manual), que se encontra na versão 4.2.1, publicada em 2005 no IFPUG. O IFPUG também é responsável pelo exame de certificação de especialistas em contagem de Pontos de Função, denominada CFPS (Certified Function Point Specialist). A métrica Pontos de Função é uma medida de tamanho funcional de projetos de software, considerando as funcionalidades implementadas, sob o ponto de vista do usuário. Tamanho funcional é definido como “tamanho do software derivado pela quantificação dos requisitos funcionais do usuário” (Dekkers, 2003).
A contagem de Pontos de Função é independentemente da metodologia de desenvolvimento e da plataforma utilizadas no desenvolvimento da aplicação. Assim, a autora recomenda a utilização da métrica Pontos de Função nas estimativas de tamanho de projetos de software. A autora tem utilizado a métrica para estimar os projetos dos clientes da organização Serviço Federal de Processamento de Dados (SERPRO) desde 2003, tendo obtido excelentes resultados.
A seção seguinte apresenta o método Contagem Estimativa de Pontos de Função (CEPF), utilizado para estimar o tamanho de projetos de software.
Contagem Estimativa de Pontos de Função
Antes de definir o método de estimativas CEPF, é importante destacar que “estimar significa utilizar o mínimo de tempo e esforço para se obter um valor aproximado dos Pontos de Função do projeto de software investigado” (Meli, 1999). Assim, para evitar confusão, é recomendável sempre fazer uma distinção entre os termos e conceitos: Contagem de Pontos de Função e Estimativa de Pontos de Função.
· Contagem de Pontos de Função: significa medir o tamanho do software por meio do uso das regras de contagem do IFPUG (IFPUG, 2005);
· Estimativa de Pontos de Função: significa fornecer uma avaliação aproximada do tamanho de um software utilizando métodos diferentes da Contagem de Pontos de Função do IFPUG.
Além do método Contagem indicativa de Pontos de Função, existem diversos métodos para estimar tamanho de projetos em Pontos de Função, descritos na literatura, dentre outros: Contagem Indicativa, Contagem Indicativa Inteligente, Estimativas Percentuais.
O
método CEPF visa aferir o tamanho em PF de maneira simplificada, com
base no conhecimento dos requisitos iniciais do projeto. Inicialmente,
os requisitos funcionais iniciais documentados nas propostas comerciais,
nos documentos de visão, ou em qualquer especificação inicial do
sistema do usuário são mapeados nos tipos funcionais da Análise de
Pontos de Função (APF): Arquivo Lógico Interno (ALI), Arquivo de
Interface Externa (AIE), Entrada Externa (EE), Consulta Externa (CE) e
Saída Externa (SE). Posteriormente, os Pontos de Função são associados a
cada função identificada, baseando
O
estimador deve realizar uma leitura no documento inicial de requisitos,
buscando informações relevantes para a identificação de processos
elementares. O processo elementar é definido como a menor unidade de
atividade significativa para o usuário (IFPUG, 2005). O processo
elementar deve ser completo em si mesmo, independente e deixar a
aplicação em um estado consistente (IFPUG, 2005). Uma vez identificado o
processo elementar, o estimador deve buscar o entendimento deste para
classificá
A seguir são apresentadas dicas para ajudar no mapeamento dos requisitos funcionais da aplicação nos tipos funcionais da APF.
As necessidades e funcionalidades especificadas para o projeto, contidas no documento inicial de requisitos, devem ser enquadradas em uma das seguintes tabelas:
Tabela 1
Considerações: Identifique os grupos de dados lógicos de aplicação nos modelos de dados ou diagrama de classes ou a partir dos requisitos funcionais, descritos nos documentos de requisitos (Documento de Visão, Relação de Casos de Uso, etc.). Não considere arquivos físicos, arquivos de índices, arquivos de trabalho e tabelas de relacionamento sem atributos próprios (tabelas que existem para quebrar o relacionamento nxn e apenas transportam as chaves estrangeiras). As entidades fracas também não são consideradas um ALI.
Se possível, tente descobrir os atributos lógicos, campos reconhecidos pelo usuário, e subgrupos de dados existentes para obter a complexidade funcional, segundo as regras de contagem do CPM (IFPUG, 2005). Caso não seja possível, a experiência tem mostrado que a maioria dos ALIs dos sistemas são de complexidade Simples.
Nº ALIs Simples: |
X 7 PF |
Nº ALIs Médio: |
X 10 PF |
Nº ALIs Complexo: |
X 15 PF |
Total PF da Tabela 1: |
|
Tabela 1. Identificação dos Arquivos Lógicos Internos da Aplicação
Tabela 2
Considerações: Identifique os grupos de dados lógicos de outras aplicações referenciados pela aplicação que está sendo estimada. Freqüentemente, o referenciamento de dados ocorre para a validação de informações em cadastros ou consultas. Algumas vezes, relatórios ou consultas referenciam dados externos de outras aplicações, também considerados AIEs. Não são considerados arquivos físicos, arquivos de índice, arquivos de trabalho, tabelas de relacionamento sem atributos próprios e entidades fracas.
A experiência tem mostrado que praticamente 100% dos AIEs dos sistemas são Simples. Porque, segundo o CPM (IFPUG, 2005), são considerados para a determinação da complexidade funcional do AIE apenas os atributos referenciados pela aplicação que está sendo contada.
Nº AIEs Simples: |
X 5 PF |
Nº AIEs Médio: |
X 7PF |
Nº AIEs Complexo: |
X 10 PF |
Total PF da Tabela 2: |
|
Tabela 2. Identificação dos Arquivos de Interface Externa da Aplicação
Tabela 3
Considerações: Identifique as funcionalidades de inclusão, alteração e exclusões de dados. Conte separadamente as inclusões, alterações e exclusões de dados, isto é, cada função independente de inclusão ou alteração ou exclusão deve ser contada separadamente. A aplicação possui funções de entrada de dados que alteram o comportamento dela, por exemplo: processamentos batch, ou processamento de informações de controle? Caso positivo, estas funções também devem ser identificadas como Entradas Externas.
Se você não possui conhecimento da aplicação de APF ou sobre o processo elementar (funcionalidade analisada), considere as Entradas Externas identificadas com complexidade Média.
Nº EEs Simples: |
X 3 PF |
Nº EEs Média: |
X 4 PF |
Nº EEs Complexa: |
X 6 PF |
Total PF da Tabela 3: |
|
Tabela 3. Identificação das Entradas Externas da Aplicação
Tabela 4
Considerações: Você está desenvolvendo uma função para apresentar informações para o usuário: uma consulta, relatório, browse, listbox, download, geração de um arquivo, geração de CD ou de disquete? Esta função não possui cálculos ou algoritmos para derivação dos dados referenciados nem altera um Arquivo Lógico Interno, nem muda o comportamento do sistema? Caso positivo, estas funções devem ser identificadas como Consultas Externas.
Caso não haja conhecimento da aplicação de APF ou sobre o processo elementar (funcionalidade analisada), considere as Consultas Externas com complexidade Média.
Nº CEs Simples: |
X 3 PF |
Nº CEs Média: |
X 4 PF |
Nº CEs Complexa: |
X 6 PF |
Total PF da Tabela 4: |
|
Tabela 4. Identificação das Consultas Externas da Aplicação
Tabela 5
Considerações: Você está desenvolvendo uma funcionalidade para apresentar informações para o usuário: uma consulta ou relatório com totalização de dados, etiquetas de código de barras, gráficos, relatórios estatísticos, download com percentual calculado, geração de arquivo com atualização de log? Caso positivo, estas funções devem ser identificadas como Saídas Externas. Observe que esta função deve ter cálculos ou algoritmos para processar os dados referenciados nos arquivos lógicos ou atualizar campos (normalmente indicadores) nos arquivos ou mudar o comportamento da aplicação.
Caso não haja conhecimento da aplicação de APF ou sobre o processo elementar (funcionalidade analisada), considere as Saídas Externas com complexidade Média.
Nº SEs Simples: |
X 4 PF |
Nº SEs Média: |
X 5 PF |
Nº SEs Complexa: |
X 7 PF |
Total PF da Tabela 5: |
|
Tabela 5. Identificação dos Saídas Externas da Aplicação
A Estimativa de tamanho do projeto em PFs deve ser gerada totalizando
Uma aplicação da Contagem Estimativa de Pontos de Função
Esta
seção tem como propósito apresentar um exemplo utilizando o método
CEPF, bem como a derivação das estimativas de esforço e prazo, a partir
da estimativa de tamanho do projeto
Suponha
que o setor de treinamento de uma empresa solicitou um sistema,
denominado STREINA, para apoiar as atividades de planejamento e
acompanhamento das atividades de capacitação dos funcionários. A Tabela 6
apresenta as necessidades e funcionalidades do STREINA, retiradas do
Documento de Visão do projeto. Além das funcionalidades apresentadas na Tabela 6, deve
Para facilitar o entendimento da aplicação da CEPF, a Tabela 7
mostra a contribuição para a contagem de PFs não ajustados dos tipos
funcionais da APF. A complexidade funcional das funcionalidades
identificadas é inferida em uma contagem estimativa, quando não se
possui informação suficiente do projeto para aplicar as regras de
contagem do CPM. Conforme mencionado, recomenda
Necessidade 1 |
Benefício | |
Controlar capacitações |
Crítico | |
Id Func. |
Descrição das Funcionalidades/atores envolvidos | |
F 1.1 |
Cadastrar evento de capacitação | |
Técnico | ||
F 1.2 |
Planejar evento de capacitação | |
Técnico | ||
F 1.3 |
Planejar cronograma de capacitação | |
Técnico | ||
F 1.4 |
Consultar cronograma de capacitação | |
Técnico | ||
F 1.5 |
Consultar eventos de capacitação por data e local | |
Técnico | ||
F 1.6 |
Consultar detalhes de um evento de capacitação | |
Técnico | ||
F 1.7 |
Informar resultado da avaliação de um evento de capacitação | |
Técnico | ||
F 1.8 |
Emitir Certificado de Participantes | |
|
Técnico | |
F 1.9 |
Cadastrar avaliação do evento de capacitação (após treinamento) | |
Participantes do treinamento | ||
F 1.10 |
Consultar acompanhamento de comunidade capacitada | |
Técnico | ||
F 1.11 |
Gerar Consultas Gerenciais (Gráficos e Relatórios) de Capacitação Gerente | |
Tabela 6. Funcionalidades do Sistema de Treinamentos (STREINA)
Descrição do |
|
Complexidade |
|
Tipo Funcional |
Simples |
Média |
Complexa |
Arquivo Lógico Interno (ALI) |
7 PFs |
10 PFs |
15 PFs |
Arquivo de Interface Externa (AIE) |
5 PFs |
7 PFs |
10 PFs |
Entrada Externa (EE) |
3 PFs |
4 PFs |
6 PFs |
Saída Externa (SE) |
4 PFs |
5 PFs |
7 PFs |
Consulta Externa (CE) |
3 PFs |
4 PFs |
6 PFs |
Tabela 7. Contribuição para Contagem de PF dos Tipos Funcionais da APF
Aplicando
Descrição da Função |
Tipo Funcional |
Complexidade |
Tamanho (PF) |
ALI |
Simples |
7 PF | |
Incluir usuário |
EE |
Simples |
3 PF |
Alterar usuário |
EE |
Simples |
3 PF |
Excluir usuário |
EE |
Simples |
3 PF |
Lista de usuários |
CE |
Simples |
3 PF |
Consultar usuários |
CE |
Simples |
3 PF |
Controle de acesso da aplicação |
SE |
Simples |
4 PF |
Alterar senha |
EE |
Simples |
3 PF |
Esqueceu senha |
SE |
Simples |
4 PF |
Capacitação |
ALI |
Média |
10 PF |
Incluir evento de capacitação |
EE |
Média |
4 PF |
Alterar evento de capacitação |
EE |
Média |
4 PF |
Planejar evento de capacitação |
EE |
Média |
4 PF |
Consultar plano evento capacitação |
CE |
Média |
4 PF |
Definir cronograma de capacitação |
EE |
Média |
4 PF |
Consultar cronograma evento capacitação |
SE |
Média |
5 PF |
Consultar eventos de capacit. por data e local |
SE |
Média |
5 PF |
Consultar detalhes de evento de capacitação |
CE |
Complexa |
6 PF |
Incluir participantes para evento |
EE |
Média |
4 PF |
Alterar participantes para evento |
EE |
Média |
4 PF |
Excluir participantes para evento |
EE |
Simples |
3 PF |
Consultar participantes cadastrados no evento |
CE |
Média |
4 PF |
Enviar para e |
SE |
Média |
5 PF |
Informar avaliação de participante |
EE |
Simples |
3 PF |
Consultar avaliação de participante |
CE |
Média |
4 PF |
Emitir Certificado para o Participante |
SE |
Média |
5 PF |
Lista de Participantes com Emissão de Certificado Pendente |
CE |
Simples |
3 PF |
Avaliação de Evento de Capacitação |
ALI |
Simples |
7 PF |
Cadastrar avaliação de evento de capacitação |
EE |
Simples |
3 PF |
Alterar avaliação de evento de capacitação |
EE |
Simples |
3 PF |
Consultar avaliação de evento de capacitação |
CE |
Simples |
3 PF |
Consultar dados de acompanhamento de comunidade capacitada – detalhada |
SE |
Média |
5 PF |
Enviar e |
SE |
Média |
5 PF |
Consultas Gerenciais (3 gráficos e 3 relatórios com dados calculados) |
6 SE |
Média |
30 PF |
Tabela 8. Estimativa de Tamanho do Sistema de Treinamentos (STREINA)
Totalizando o tamanho em PFs das funcionalidades descritas na Tabela 8, tem
De posse da estimativa de tamanho, procede
O próximo passo é a estimativa de prazo, aplicando
O COCOMO II também possui fórmulas para o cálculo do Td, baseadas em parâmetros de calibragem e de mapeamento (Boehm, 2000). É importante destacar que as organizações devem ter ou construir um banco de dados histórico, contendo informações de projetos concluídos, com a finalidade de gerar as estimativas de prazo, custo e esforço com uma acurácia adequada.
Aplicando
· Fator de Produtividade Linear (Pessoas_Mês/KSLOC) para desenvolvimento WEB: 2,51 (Roetzheim, 2005);
· Fator Exponencial para desenvolvimento WEB: 1,030 (Roetzheim, 2005)
· 1 PF = 33 SLOC em JAVA (Jons, 1997);
· Esforço = Fator de Produtividade
· Esforço = 2,51
· O COCOMO considera o dia com 7h e o mês com 22 dias úteis, então o esforço em HH é o seguinte: 14,83 * 7 * 22 = 2284 HH. Note que o cálculo do esforço estimado é próximo ao 2244 HH obtido pelo modelo simplificado;
· Prazo (Td) = 2,5
· Note que o prazo estimado pela fórmula de Caper Jones – 5,92 meses, ficou bastante próximo do prazo estimado pelo COCOMO.
Na prática, torna
A estimativa de custo deve considerar o valor da hora da equipe alocada ao projeto (custo de pessoal), bem como outros custos de ambiente, ferramentas, deslocamentos, consultoria, etc. Algumas empresas possuem dados históricos de custo por PF de projetos concluídos, possibilitando a derivação direta da estimativa de custo a partir da estimativa de volume em Pontos de Função.
A estimativa de recursos computacionais críticos em um projeto WEB deve considerar, dentre outros, a disponibilidade dos servidores utilizados para desenvolvimento, homologação e produção do sistema e outros recursos de hardware relevantes.
É importante ressaltar que após a geração das estimativas, deve-se adicionar um percentual, prevendo uma evolução natural dos requisitos do projeto. Este percentual deve ser obtido por meio de dados de históricos de um indicador de estabilidade de requisitos de projetos concluídos da organização.
As ferramentas de estimativas também trabalham desta forma, solicitando que o usuário (estimador) forneça tal percentual. No entanto, devido à ausência de dados históricos analisados para tal indicador, a autora tem se baseado em análise de publicações e sua experiência profissional. A autora tem utilizado um percentual de 20% a 35% para os projetos com Documento de Visão. Esta variação de percentual é diretamente proporcional ao detalhamento do Documento de Visão e conhecimento dos requisitos do projeto pelo analista de negócios.
Para alguns projetos estimados, baseados apenas em atas de reunião ou documentos menos detalhados, foi utilizado o percentual de 40%. Em projetos pequenos com documentos de requisitos com um detalhamento adequado, o percentual varia de 10% a 25%.
A CEPF deve ser refinada, conforme o conhecimento dos requisitos do projeto evolui, em marcos definidos no plano do projeto. Assim, não há retrabalho no processo de estimativas, as estimativas de PF anteriores não são descartadas e sim refinadas, conforme os requisitos do projeto evoluem.
Conclusão
A indústria tem demonstrado dificuldade na previsibilidade de prazo e custo dos projetos de software. No entanto, muitas organizações ainda estimam projetos, sem a utilização de processo, de maneira “artesanal”, baseando-se apenas na opinião dos líderes ou gerentes do projeto. De fato, o método de estimar projetos baseando-se na opinião de especialistas é bastante eficaz. O problema é quando a equipe não possui especialistas no domínio do projeto em questão.
Este
trabalho apresentou um processo para as organizações nas estimativas de
projetos de software, utilizando métodos aderentes às melhores práticas
do CMMI nível 2. Espera
O método Contagem Estimativa de Pontos de Função tem sido utilizado com sucesso pela autora, além deste apoiar nas estimativas dos projetos, este também tem se mostrado bastante eficaz no suporte ao processo de engenharia de requisitos.
Referências
AGUIAR, M. Estimativas Confiáveis de Prazos para Gerentes de Projetos. Developer’s Magazine, Maio 1999, pp. 30
AGARWAL, R. et al. Estimating Software Projects. ACM SIGSOFT, Software Engineering Notes vol 26 nº4, July 2001, pp.60
BOEHM, B.W. Software Cost Estimation With COCOMO II. Prentice Hall,
DEKKERS, C. Measuring the “logical” or “functional” Size of Software Projects and Software Application. Spotlight Software, ISO Bulletin May 2003 pp10
HAZAN C.; STAA, A. v. Análise e Melhoria de um Processo de Estimativas de Tamanho de Projetos de Software. Monografias em Ciências da Computação nº 04/05, Departamento de Informática PUC
IFPUG. Counting Practices Manual. Version 4.2.1, January, 2005.
JONES, C. Applied Software Measurement: Assuring Productivity and Quality. Prentice Hall, Second Edition, 1997.
JONES, C. Estimating Software Costs. McGraw
MELI, R.; SANTILLO, L. Function Point Estimation Methods: A Comparative Overview. Proceedings of FESMA 99,
PRESSMAN, R. S. Engenharia de Software, 6ª edição, MC Graw Hill, São Paulo, 2006.
ROETZHEIM, W. Estimating and Managing Project Scope for New Development. Crosstalk –The Journal of Defense Software Engineering, April 2005, pp. 4

Space do autor