Clube Delphi Edição 94
Esse artigo faz parte da revista Clube Delphi Edição 94. Clique aqui para ler todos os artigos desta edição

Análise de Pontos de Função

Saiba mensurar o tamanho de seu software e estimar o tempo que levará para ficar pronto

 

Um dos grandes desafios atualmente em projetos de software é garantir que estimativas de tamanho, custo e cronograma sejam realistas, tanto em projetos de desenvolvimento quanto de manutenção. Entretanto, as crescentes necessidades dos usuários, a alta complexidade e baixo entendimento do domínio das aplicações a serem construídas, aliadas às constantes mudanças tecnológicas, promovem um alto grau de incerteza nas estimativas para o cumprimento das metas estabelecidas.

Como resultado, os desenvolvedores têm enfrentado problemas de subestimativas, culminando em atrasos no cronograma e descumprimento de orçamentos. Por outro lado, entende-se que os usuários também precisam de respostas rápidas em relação ao tempo e custos envolvidos em projetos de software. No sentido de obter estimativas mais confiáveis, necessita-se lançar mão de técnicas específicas para esse fim, como a Análise de Pontos de Função (do inglês FPA - Function Point Analysis).

Dessa forma, pode-se estimar o tamanho das funcionalidades de um sistema e, em função disso, definir o tempo e recursos para o projeto em questão com base na produtividade da equipe ou na taxa de entrega de projetos semelhantes. Essas estimativas definidas no início do projeto são determinantes para planejar as suas iterações, prever o custo e elaborar o orçamento detalhado do projeto, minimizando os riscos que o projeto termine fora do prazo ou do orçamento previsto.

Assim, o objetivo deste artigo é descrever como obter o tamanho de sistemas através da técnica de contagem de Pontos de Função, através de um protótipo de interface de uma aplicação de exemplo. Não se tem a pretensão de apresentar todas as regras de FPA, mas introduzir os conceitos básicos para a contagem em projetos de desenvolvimento.

O estudo de caso apresentado neste artigo é relativo à contagem de Pontos de Função de um fragmento de um sistema de Controle Acadêmico.

 

Introdução à análise de Pontos de Função

A FPA foi desenvolvida em meados da década de 70 na tentativa de minimizar as dificuldades associadas à medição de tamanho de software através de linhas de código-fonte, além de prover um mecanismo que pudesse prever o esforço associado ao desenvolvimento de software.

Em 1984, uma versão mais refinada foi lançada e, posteriormente, com o aumento da utilização da FPA, tornou-se necessário definir um guia que interpretasse as regras originais para novos ambientes. Devido a essa necessidade, em 1986 foi criado o International Function Point Users Group (IFPUG). No Brasil, esse grupo é representado pelo BFPUG (Brazilian Function Point Users Group).

O cálculo de Pontos de Função (PF) segue um conjunto de diretrizes descritas no manual de Práticas de Contagem de Pontos de Função do IFPUG. Entretanto, divergências de como aplicar essas regras fazem com que as contagens nem sempre resultem num mesmo valor.

No sentido de criar um método mais rigoroso nesse processo de contagem, surgiu a norma ISO/IEC 14143, que estabelece uma série de padrões para contagem funcional. Em 2002, a versão 4.1 do manual do IFPUG foi aprovada como aderente a essa norma.

Dessa forma, a FPA permite uma contagem indicativa do tamanho do projeto no início do seu desenvolvimento, sem conhecer detalhes de modelos de dados ou de classes. Posteriormente, na fase de construção, essa contagem representa uma estimativa com maior precisão da complexidade das funções e, ao término da construção do software, na etapa de transição, é realizada uma contagem detalhada, obtida a partir do grau de complexidade das funções levantadas no processo funcional, modelo de dados ou modelo de classes, descrição de telas e relatórios.

 

Contagem de Pontos de Função

A contagem de pontos de função é realizada através de um conjunto de passos previamente determinados. Para facilitar o entendimento desse processo, cada um desses passos será apresentado e aplicado a um estudo de caso que demonstrará como a contagem pode ser feita.

Nesse sentido, o artigo conduzirá um estudo de caso relacionado ao cadastro de cursos e  alunos de uma faculdade. O cadastramento de cursos é iniciado pelo usuário e apresenta uma lista dos cursos já cadastrados, permitindo pesquisa a partir da descrição do curso e oferecendo as opções de cadastro relativas à inclusão, alteração, exclusão e consulta (Figura 1).

 

imagem

Figura 1. Janela de pesquisa de cursos

 

A partir dessa janela, o sistema deve possibilitar a manutenção no cadastro de cursos contendo código e descrição do mesmo, além do tipo do curso, que pode ser de graduação ou pós-graduação. Para cursos de graduação informa-se também o número de períodos, enquanto que, para cursos de pós-graduação, informa-se a carga horária (Figura 2).

Ao final de qualquer dos processos de manutenção, o sistema deve emitir uma mensagem de confirmação ao usuário.

 

imagem

Figura 2. Janela de cadastro de cursos

     

Após o cadastramento de cursos, podemos matricular os alunos. Da mesma maneira, existe uma janela de pesquisa de alunos, praticamente igual à de pesquisa de cursos, exceto que oferece ainda uma possibilidade de filtrar os alunos por um curso específico (Figura 3).

 

imagem

Figura 3. Janela de pesquisa de alunos

 

O cadastramento de alunos, também semelhante ao de cursos, possui matrícula, nome, dados pessoais (Figura 4), dados de endereço (Figura 5) e dados de documentação (Figura 6). Após o cadastramento de um aluno, o sistema deverá exibir para o usuário o valor da mensalidade a ser pago pelo aluno.

 

imagem

Figura 4. Janela de Cadastro de Alunos – Dados Pessoais

 

imagem

Figura 5. Janela de Cadastro de Alunos – Dados de Endereço

 

imagem

Figura 6. Janela de Cadastro de Alunos – Dados de Documentação

 

Para o cálculo da mensalidade, um valor base é utilizado para cada tipo de curso e considera ainda o número de períodos para cursos de graduação e a carga horária para cursos de pós-graduação. Os valores base das mensalidades são mantidos por um sistema financeiro e estão fora dos limites dessa aplicação, sendo consultados por ela.

Para a construção dessas funcionalidades, será primeiramente determinado o tamanho da aplicação que será desenvolvida, de forma a orientar as estimativas de prazo e custo. Assim, para estimar o tamanho do software de acordo com a FPA, segue-se um procedimento de contagem, que está representado no esquema da Figura 7.

 

imagem

Figura 7. Processo de contagem de pontos de função.

 

A seguir, cada uma dessas atividades será descrita e aplicada ao estudo de caso apresentado.

1) Tipo de Contagem: existem três tipos de contagem de pontos de função. A diferença no procedimento adotado entre esses tipos de contagem está nas fórmulas aplicadas na contagem. São eles:

·         Projeto de desenvolvimento: mede todas as funções que serão entregues com o projeto em sua primeira versão. É o tipo de contagem que será utilizada neste artigo;

·         Projeto de melhoria: mede as funcionalidades alteradas, incluídas e excluídas ao projeto;

·         Aplicação: mede as funções de uma aplicação já instalada.

2) Escopo da Contagem: é a fronteira da aplicação. Define as funções que serão incluídas em uma determinada contagem de pontos de função. No nosso estudo de caso, o escopo da contagem restringe-se às funcionalidades de pesquisa e cadastramento de cursos e alunos, conforme apresentado anteriormente;

3) Funções de Dado: consiste na contagem dos tipos de dados utilizados nas funcionalidades a serem desenvolvidas. Esses tipos de dados podem ser agrupados em um Arquivo Lógico Interno (ALI) que representa grupos de dados relacionados e reconhecidos pelo usuário, dentro da fronteira da aplicação; ou um Arquivo de Interface Externa (AIE) que representa dados referenciados pela aplicação mas mantidos dentro da fronteira de outra aplicação. No exemplo temos:

·         ALI: Curso, Aluno

·         AIE: Mensalidade

Para calcular a complexidade das funções de dados, deve-se contar o número de Tipos de Dados (TD) e Tipos de Registros (TR) de cada uma dessas funções. Um TD refere-se a um campo único reconhecido pelo usuário, sem repetição, ou seja, se um campo se repetir mais de uma vez numa interface, conta-se apenas uma vez.

Um TR refere-se a um subgrupo de tipos de dados, também reconhecidos pelo usuário e componente de um ALI ou AIE. No exemplo, os TDs estão apresentados nas Tabelas 1 a 3, representando os arquivos Curso, Aluno e Mensalidade, respectivamente. Como Curso apresenta dois tipos de registro (cursos de graduação e de pós-graduação com dados específicos), considera-se TR igual a 2.

Os demais possuem TR igual a 1. Se os cursos estivessem divididos em mais de um arquivo como, por exemplo, um arquivo para cursos de graduação e outros de pós, mesmo assim, consideraríamos para a contagem um único ALI com dois Tipos de Registros.

 

TD

Tipo de Dado

1

Código do curso

2

Descrição do curso

3

Tipo do curso (1=Graduação / 2=Pós-Graduação)

4

Quantidade de períodos

5

Carga horária

Tabela 1. Tipos de Dados de Curso

 

TD

Tipo de Dado

1

Matrícula do aluno

2

Nome do aluno

3

Data de nascimento

4

Identificador do curso

5

Ano de início

...

Quer ler esse conteúdo completo? Tenha acesso completo