Estimativa de software com derivações em custo, prazo e esforço é uma necessidade comum entre as empresas de TI. Nesse contexto, o objetivo deste artigo é apresentar de forma simples, por meio de exemplos, o uso de um método poderoso para a solução destes problemas recorrentes, a APF (Análise de Ponto de Função).
Análise de Ponto de Função é um método de medição do tamanho funcional de um software, com base em operações extraídas dos requisitos funcionais. A partir dessa medição inicial de tamanho, derivam-se outras medidas como, por exemplo, o tempo necessário para desenvolvimento, e uma estimativa inicial de custos.
APF tem por definição medir o que o software deve fazer, e não como ele deve ser construído, portanto o processo de medição é fundamentado em uma avaliação padronizada dos requisitos lógicos do usuário.
Em que situação o tema é útil
Na fase inicial de um projeto, existe a necessidade de obter o custo, prazo e o esforço de implementação para estabelecimento de contratos de desenvolvimento. Análise de Ponto de Função é um método de medição do tamanho funcional de software que permite fazer essas avaliações com base em informações disponíveis nas fases iniciais dos projetos. O uso do método profissionaliza a avaliação inicial de tamanho, permitindo repetição do processo e aumento do nível de maturidade no gerenciamento de projetos.
Resumo DevMan
Na fase inicial de um projeto, a necessidade em obter o custo, prazo e o esforço é observado em todas as empresas, pois as mesmas precisam gerar um orçamento para os seus clientes e avaliar uma série de projeções. Este artigo organiza de forma simples e introdutória conhecimentos sobre a Análise de Ponto de Função.
Inicialmente não se tem conhecimento de todas as características do produto bem como da sua real dimensão, por esse motivo é necessário utilizar técnicas de extração de requisitos para realizar um levantamento inicial dos mesmos e compreender melhor o problema. Os requisitos são condições, características ou capacidades necessárias para atingir uma finalidade, categorizados na implementação de sistemas em funcionais e não funcionais como forma de estabelecer critérios de qualidade.
Uma vez definidos os requisitos, pode-se então avaliar o tamanho do sistema em termos de suas funcionalidades. Existem vários métodos de estimativa, a APF (Análise de Ponto de Função) é uma delas. Esse método não tem como objetivo realizar estimativas de prazo, custo e esforço para implementação de sistema, mas sim avaliar o tamanho de um sistema em termos de suas funcionalidades. Resulta desta avaliação o tamanho funcional do sistema expresso em Pontos de Função (unidade de medida do método). A partir do tamanho funcional, podem ser derivadas estimativas adicionais, como tempo e custo.
Autores: Jhoney da Silva Lopes e José Luis Braga
Este artigo apresentará uma visão geral sobre todos os passos necessários para utilização da análise de ponto de função, para a realização de estimativas na fase inicial de um projeto de desenvolvimento, proporcionando ao leitor uma visão restrita do método, mas suficiente para estimar um projeto em sua fase inicial e, com isso, realizar derivações de acordo com suas necessidades.
A análise por pontos de função surgiu em 1979 na IBM (International Business Machines) e foi desenvolvida por Alan Albrecht. A aceitação foi muito grande, e uma quantidade cada vez maior de pessoas começaram a utilizar o método, resultando na criação do IFPUG (International Function Point Users Group). Hoje o método é mantido e evoluído pelo IFPUG e fundamenta-se em seis passos:
1. Determinar o tipo de contagem;
2. Identificar o escopo da contagem e a fronteira da aplicação;
3. Contar funções:
a. Tipo dados;
b. Tipo transação;
4. Determinar a contagem de pontos de função não ajustados;
5. Determinar o valor do fator de ajuste;
6. Calcular o número dos pontos de função ajustados.
Como foi dito, a APF é um método que visa medir o tamanho funcional de um software do ponto de vista do usuário e possui como unidade de medida o ponto de função (PF) (ler Nota 1).
Em Análise de Ponto de Função, usuário possui um conceito mais amplo: qualquer entidade que se relacione com o sistema ou que produza um ônus ao mesmo. Ex: Pessoa, aplicação, leis, restrições, etc.
É importante perceber que para a APF o usuário não é somente a pessoa que interage com o sistema.
Possui como base os seguintes objetivos:
- Medir as funcionalidades (ler Nota 2) implementadas no sistema;
- Medir esforço de implementação e de manutenção do software, independente de tecnologia, ou seja, a APF leva em consideração o que o software faz e não como ele é construído;
- Simplicidade, o trabalho para aplicar a APF deve ser o mínimo possível, ele não deve ser um ônus no desenvolvimento do software.
É importante ter em mente, durante todo o processo da utilização do método de análise de pontos de função, que o usuário é quem define o que faz parte ou não do projeto, diferentemente de alguns métodos que levam em consideração a visão do desenvolvedor, ou seja, uma visão técnica. Na APF o que importa é a visão do negócio e quem possui essa visão é o usuário, lembrando que usuário na APF possui um conceito amplo e não é somente a pessoa que irá interagir com o software final.
Funcionalidade é o conjunto de tarefas fornecidas pelo sistema para poder realizar transação, processamento e armazenamento dos dados dos usuários.
Determinar o tipo de contagem
O primeiro passo para a contagem será determinar qual o tipo de contagem a ser realizada, como pode ser visto na Figura 1. Na APF existem três tipos de contagem:
• Projeto de desenvolvimento;
• Projeto de melhoria;
• Aplicação.
Figura 1. Passos para a contagem dos pontos de função (VAZQUEZ, 2009)
Este artigo tem por objetivo apresentar a solução de contagem para projeto de desenvolvimento, mas serão apresentadas as diferenças entre elas.
Projeto de desenvolvimento
É caracterizado como projeto de desenvolvimento, um novo projeto desde a fase de extração de requisitos (ler Nota 3) até a instalação do mesmo. Neste tipo de projeto são contadas na APF todas as funcionalidades fornecidas aos usuários até a instalação do sistema, ou seja, funcionalidades de conversão (ler Nota 4) também são contadas. Só se pode saber todos os requisitos de um sistema após o término do projeto, sendo assim, toda a contagem de um projeto de desenvolvimento pode ser entendida como estimativa e não medição.
São as necessidades e características que o sistema deve ter para atingir as expectativas do cliente. A extração dos requisitos consiste em uma parte crítica na elaboração de uma proposta, ela é parte determinante do sucesso ou fracasso de um projeto.
Para um entendimento considere o exemplo: um sistema
A possui uma lista de funcionários cadastrados, o sistema B sendo contado
deverá incluir todos esses funcionários em sua base de dados, essa
funcionalidade será disparada uma única vez que é durante a instalação do
sistema, sendo caracterizada como função de conversão.
Projeto de melhoria
O projeto de melhoria mede todas as funcionalidades novas, modificadas e excluídas de um determinado sistema. Ao término de um projeto de melhoria a aplicação deverá ser contada com o intuito de atualizar o valor em pontos de função da mesma.
Aplicação
Entende-se por contagem do tipo aplicação um software instalado, ou seja, a contagem após o término de um projeto de desenvolvimento. Neste caso, não se leva em consideração as funções do tipo conversão.
Aplicando o conhecimento – Determinar o tipo de contagem
Neste artigo será realizada a contagem de um projeto simples, extraído da base de projetos da No Bugs - Empresa Júnior do Bacharelado em Ciência da Computação da Universidade Federal de Viçosa.
O foco deste artigo são as derivações dos pontos de função para auxiliar na elaboração da proposta do projeto para o cliente. A sua contagem será de um projeto de desenvolvimento, um sistema simples de locação de veículos.
Identificar o escopo da contagem
O segundo passo para a contagem é identificar o escopo da contagem e a fronteira da aplicação, como pode ser visto na Figura 1. Muitas vezes a identificação do escopo e da fronteira da aplicação não são levados tão a sério, principalmente por empresas que não utilizam gerência de projetos no gerenciamento do desenvolvimento de software.
Esta é uma etapa crucial para o andamento do projeto, a definição de um escopo (ler Nota 5) errado pode acarretar em prejuízos para o projeto ou até a perda total dele. O escopo define quais funções serão incluídas na contagem, ele pode abranger todas as funcionalidades, apenas as funções utilizadas ou funções específicas.
A fronteira da aplicação é a linha que separa uma aplicação de outra. Dentro de um escopo de contagem pode existir mais de uma aplicação a ser contada, por isso é importante definir qual é a sua fronteira.
Uma sugestão simples para não errar nesta etapa é seguir a regra do IFPUG que é determinar a fronteira da aplicação baseado no Ponto de Vista do Usuário. O usuário define o que ele entende sobre as atribuições do sistema e de cada aplicação.
Escopo do projeto é o trabalho que precisa ser realizado para entregar um produto, serviço ou resultado com as características e funções especificadas (PMBOK, 2004), o escopo da contagem é tudo aquilo que deve ser contado.
Considera-se o exemplo apresentado na Figura 2, que mostra três aplicações, AP01, AP02 e AP03, separadas por fronteiras (círculos tracejados) e cada uma dessas aplicações interagem umas com as outras, esta interação é feita a partir do que é chamado de arquivos lógicos, que aparecem na figura como quadrados preenchidos de preto.
Figura 2. Arquivos lógicos e fronteiras das aplicações
Aplicando o conhecimento – Identificar o escopo da contagem
Como foi visto, nesta etapa devemos definir o escopo da contagem e a fronteira da aplicação. No exemplo deste artigo, trata-se de software destinado a uma empresa que realiza locação de automóveis, o sistema é simples e composto por uma única aplicação.
...