Análise de Pontos de Função
Olá Pessoal! Tudo Bom?! 🙂
Iremos apresentar o método de medição de Análise de Pontos de Função, também conhecido como APF ou do inglês FPA. O método de APF é muito difundido no ocidente, tendo sua origem nos Estados Unidos. Atualmente o Brasil é o país que mais utiliza a APF para compra e venda de serviços de desenvolvimento de software, principalmente nos setores de Governo, Indústria, Financeiro e Telecomunicações.
A APF é mantida pela instituição IFPUG sediada nos Estados Unidos, e responsável por manter o principal documento de contagem, o CPM (Counting Pratices Manual). No CPM encontramos todas as regras oficiais para contagem de Pontos de Função.
Pontos de Função (PF) é a unidade de medida da APF.
Afinal o que mede a APF?
“A métrica de Análise de Pontos de Função é um método utilizado para dimensionar um projeto de desenvolvimento de software utilizando como ponto central a quantidade de requisitos que o software atende. É o ponto de vista do usuário e o que ele pode entender e descrever. Trata-se de uma métrica funcional e de negócio. A Visão do Usuário prevalece.”
Antes de Começar a Contar!
Antes de começarmos a contar vamos passar correndo pela parte “chata” 😀 , aprender o jargão da APF para compreendermos as regras de contagem. Para quem deseja obter a certificação CFPS (Certified Function Point Specialist) saber na “ponta da língua” o jargão é obrigatório. Segue abaixo as principais.
Objetivo da APF
Medir o quanto de funcionalidade o software fornece. Quanto de funcionalidade é desenvolvido e entregue após um projeto de desenvolvimento. Quanto de funcionalidade é incluído, alterado e excluído em um projeto de melhoria.
Objetivo do Processo
Ser um padrão de contagem entre organizações, e ser simples de forma que não adicione esforços em demasia para executar as contagens.
Os Benefícios
Permite determinar o tamanho de um pacote de software sendo adquirido. Permite analisar produtividade e qualidade de projeto. Normaliza contagens, produtividades, qualidade, etc. Estimar custos, prazo e equipe de projeto. Determinar o quanto funcional é um pacote de software.
Usuário
Qualquer pessoa ou “coisa” que interage com o software sendo contado. Entendemos “coisa” como sistema de software ou hardware que comunica com o usuário e que é reconhecido pelo mesmo.
Requisitos Funcionais
Os requisitos do usuário definem o comportamento do negócio. São as regras de execução, tarefas e serviços.
Visão do Usuário
Descrição formal do usuário a respeito do comportamento funcional do software. Informação que deve ser compreendida pelo requisitante e pelo responsável pelo desenvolvimento do software, Compreende as funções do software, é uma declaração da visão do usuário em sua própria linguagem, é aprovada pelo mesmo, pode variar em formato físico e passível de ser mensurada.
Propósito da Contagem
O propósito da contagem é fornecer uma resposta a um problema de negócio. Por exemplo: “Qual o tamanho deste software a nível funcional? Quanto tempo para desenvolver? Qual o tamanho da equipe?..”
Fronteira da Aplicação
Interface conceitual entre o usuário e o software que está sendo mensurado. É como uma membrana que define o que é externo ao software. Será a base para definir os tipos de função como EE/CE/SE/ALI/AIE.
Escopo da Contagem
Com base no propósito da contagem é definido o software, módulo do software ou subconjunto que será mensurado. Esta definição de grupo de funcionalidades definem o escopo.
Tipos de Contagem
Projeto de Desenvolvimento – Entrega a primeira versão do software ou módulo do software. Contém todas as funcionalidades fornecidas pelo mesmo. Adicionalmente funcionalidades de Conversão utilizadas na primeira instalação, por exemplo, uma carga de dados de um sistema legado, devem ser mensuradas também.
Projeto de Melhoria – Entrega melhorias que visam adicionar novas funcionalidades, alterar funcionalidades existentes e/ou excluir funcionalidades de um software
Aplicação – Este tipo de contagem visa mensurar um software e ou módulo já existente e completamente desenvolvido. Neste tipo de contagem não deve contar funções do tipo Conversão.
Processo Elementar (PE)
Menor unidade funcional reconhecida pelo usuário, auto-contida e indivisível. É uma transação de negócio completa. É como um caso de uso em sua menor granularidade, por exemplo, UC Altera, UC Incluir, UC Excluir e/o UC Consultar tal como em um CRUD.
Lógica de Processamento (LP)
Complementa um processo elementar tal como regras de negócio. Especifica filtros, comportamentos, etc. sobre os tipos de dados envolvidos no processo elementar.
Informação de Controle (IC)
São informações que alteram o processo elementar e/ou o comportamento do software. Exemplos: Ações do usuário, tempo de timeout, parâmetros de configuração mantidos pelo usuário e/ou preferências de usuário mantidas pelo mesmo.
Tipo de Dado (TD)
Campo único no processo elementar, não repetido e reconhecido pelo usuário que atravessa a fronteira do software.
Tipo de Registro (TR)
Subgrupo de tipos de dados reconhecido pelo usuário, opcional ou obrigatório, e que atravessam a fronteira do software.
Reconhecido pelo Usuário
Requisitos funcionais para processos elementares e/ou grupos de dados acordados e reconhecidos pelo usuário e responsável pelo desenvolvimento do software.
Dado Derivado
Dado oriundo de uma lógica matemáticas, fusão de tipos de dados e condição do software.
Arquivo Lógico Interno (ALI)
Grupo de dados ou informações de controle logicamente relacionado, mantido dentro da fronteira da aplicação e reconhecido pelo usuário. A principal intenção de um ALI é armazenar dados mantidos por um ou mais processos elementares do software sendo contado.
Arquivo de Interface Externa (AIE)
Grupo de dados ou informações de controle logicamente relacionado, reconhecido pelo usuário, referenciado pelo software mas mantido na fronteira de outra software. Sua principal intenção é armazenar dados referenciados por um ou mais PEs da aplicação sendo contada. O AIE contado para a aplicação deve ser um ALI para outra aplicação.
Entrada Externa (EE)
PE que processa dados e/ou informações de controle vindos de fora da fronteira da aplicação. Sua principal intenção é manter um ou mais ALIs e/ou alterar o comportamento do sistema.
Saída Externa (SE)
Gera dados ou informações de controle que saem pela fronteira da aplicação. Sua principal intenção é apresentar dados ao usuário com outra lógica que não só a sua simples recuperação. Deve conter fórmula matemática ou cálculo, criar dados derivados, manter um ou mais ALI e/ou alterar o comportamento do sistema.
Consulta Externa (CE)
Recuperação de dados ou informações de controle, enviados para fora da fronteira da aplicação. Sua principal intenção é apresentar informação ao usuário pela simples recuperação de dados ou informações de controle de um ALIs/AIEs.