segunda-feira, 13 de maio de 2013

Métrica de Software - IV


Determinando o Tipo de Contagem 

Para usarmos Análise de Ponto de função precisamos definir o escopo, ou seja, o tipo da contagem. No segundo post da série fiz uma breve introdução e agora avançaremos fundamentando alguns conceitos fundamentais para uma contagem bem sucedia.

Algumas definições antes de avançarmos:
  • ALI - Arquivo Lógico Interno: grupo logicamente relacionado de dados ou informações de controle, identificável pelo usuário, mantido dentro da fronteira da aplicação que está sendo controlada. Por exemplo: as tabelas ou classes do sistema.
  • AIE - Arquivo de Interface Externa: grupo logicamente relacionado de dados ou informações de controle, referenciado pela aplicação, identificável pelo usuário, mantido fora da fronteira da aplicação que está sendo controlada. Por exemplo: as tabelas acessadas noutro sistema.
  • TED - Tipos de Elementos de Dados: campo único, reconhecido pelo usuário, não recursivo. Por exemplo: campos das tabelas.
  • TER - Tipos de Elementos de Registros: subgrupo de dados, reconhecido pelo usuário. Por exemplo: generalização/especialização de classes.
  • EE - Entrada Externa: processo elementar da aplicação que processa dados ou informações de controle que vêm de fora da fronteira da aplicação que está sendo controlada. Exemplos: validações, fórmulas e cálculos matemáticos cujos parâmetros vêm de fora da fronteira da aplicação. 
  • SE - Saída Externa: processo elementar da aplicação que gera dados ou informações de controle que são enviados para fora da fronteira da aplicação que está sendo controlada. Exemplos: relatórios e gráficos. 
  • CE - Consulta Externa: processo elementar da aplicação que representa uma combinação de entrada (solicitação de informação) e saída (recuperação de informação). Exemplos: consultas implícitas, verificação de senhas e recuperação de dados com base em parâmetros. 
Processo de Contagem

Vimos antes que o processo de contagem dos pontos de função pode ser dividido em sete etapas:
  1. Determinar tipo de contagem;
  2. Identificar a fronteira da aplicação;
  3. Contar as funções tipo dados;
  4. Contar as funções tipo transação;
  5. Calcular pontos de função não ajustados (com base nos resultados obtidos em (3) e (4));
  6. Calcular o valor do fator de ajuste;
  7. Calcular os pontos de função ajustados (com base nos resultados obtidos em (5) e (6)).
1. Determinar o Tipo de Contagem 

Projeto de Desenvolvimento: mede a funcionalidade fornecida aos usuários finais do software para a primeira instalação da aplicação. Inclui as funcionalidades da contagem inicial da aplicação e as funcionalidades requeridas para conversão de dados.

Projeto de Manutenção: mede as modificações realizadas para aplicações existentes. Inclui as funcionalidades fornecidas aos usuários através de adição, modificação ou exclusão de funções na aplicação. As funcionalidades de conversão de dados também devem ser consideradas, caso existam. Após a manutenção, a contagem da aplicação deve ser refeita para refletir as alterações realizadas.

Aplicação: mede uma aplicação instalada. É também referenciada como contagem de linha de base ou contagem instalada e avalia as funcionalidades correntes providas aos usuários finais da aplicação.

2. Identificar a Fronteira da Aplicação

Após determinado o tipo de contagem, a fronteira da aplicação deve ser identificada. Ela indica a separação entre o projeto que está sendo medido e as aplicações externas ao domínio do usuário. É através dela que torna-se possível definir quais funcionalidades serão incluídas no processo de contagem dos pontos de função.

3. Contar Funções Tipo Dados

Nesta etapa as funcionalidades da aplicação começam a ser identificadas e contadas.

A funcionalidade da aplicação é avaliada em termos do quê é fornecido pela mesma, não do como é fornecido. Apenas componentes definidos e solicitados pelo usuário devem ser contados.

As Funções Tipo Dados representam as funcionalidades fornecidas pelo sistema ao usuário, para atender às necessidades referentes aos dados que o sistema irá manipular. Essas funções podem ser:

A diferença básica entre um ALI e um AIE é que o último não é mantido pela aplicação que está sendo contada. Um AIE contado para uma aplicação sempre será contado como um ALI em sua aplicação de origem.

Nas definições de ALI e AIE foram utilizados alguns termos e expressões que merecem esclarecimento. São elas:

Informações de Controle: são dados utilizados pela aplicação para garantir aderência com os requisitos funcionais especificados pelo usuário. Por exemplo: datas e horas são utilizadas pelos usuários para estabelecer a sequência ou o momento de eventos. Assim, datas e horas são informações de controle. 

Identificável pelo Usuário: refere-se aos requisitos específicos que um usuário ou grupo de usuários seria capaz de definir para a aplicação.

Mantido: refere-se ao fato de que o dado pode ser modificado através de um processo elementar da aplicação. Um processo elementar é a menor atividade capaz de produzir resultados significativos para o usuário. Por exemplo: incluir, alterar e excluir.

Cada Arquivo Lógico Interno e cada Arquivo de Interface Externa possuem dois tipos de elementos que devem ser contados para cada função identificada:

Tipos de Elementos de Dados (TED): campo único, reconhecido pelo usuário, não recursivo. Por exemplo: campos das tabelas.

Tipos de Elementos de Registros (TER): subgrupo de dados, reconhecido pelo usuário. Por exemplo: generalização/especialização de classes.

Ao final dessa etapa devem estar identificados quantos Arquivos Lógicos Internos e Arquivos de Interface Externa o sistema possui e para eles, quantos são os Tipos de Elementos de Dados e os Tipos de Registros encontrados.

4. Contar Funções Tipo Transação

As Funções Tipo Transação representam as funcionalidades de processamento dos dados fornecidas pelo sistema ao usuário. Cada Entrada Externa, Saída Externa e Consulta Externa possui dois tipos de elementos que devem ser contados para cada função identificada:

Tipos de Elementos de Dados (TED): campo único, reconhecido pelo usuário, não recursivo. Por exemplo: campos das tabelas.

Tipos de Arquivos Referenciados ou Arquivos Referenciados (TAR): arquivos lógicos utilizados para processar a entrada e/ou saída. É o total de ALI e AIE utilizados pela transação.

Ao final dessa etapa devem estar identificadas quantas Entradas Externas, Saídas Externas e Consultas Externas o sistema possui e, para elas, quantos são os Tipos de Elementos de Dados e os Arquivos Referenciados encontrados.

5. Calcular os Pontos de Função Não Ajustados

Após serem contadas todas as Funções Tipo Dados e as Funções Tipo Transação e seus elementos, é preciso calcular os pontos de função não ajustados, que refletem especificamente as funcionalidades fornecidas ao usuário pelo produto. Para isso, é preciso identificar a complexidade e a contribuição, em pontos por função, de cada uma das funções e elementos contados. 

Para determinar a complexidade e contribuição das funções e seus elementos, é necessário utilizar as relações dos valores de complexidade e contribuição fornecidas pela técnica. A seguir são apresentadas tabelas que indicam a complexidade e contribuição das funções e seus elementos em um sistema, de acordo com a contagem estabelecida nas etapas (3) e (4). 

Complexidade de um Arquivo Lógico Interno ou Arquivo de Interface Externa de acordo com o número de Tipos de Elementos de Dados e de Tipos de Elementos de Registros identificados para ele.

Complexidade ALI e AIE
Tipo de Elemento de Dados
1 a 19
20 a 50
≥ 51
Tipo de Elementos de Registro
1
BAIXA
BAIXA
MÉDIA
2 a 5
BAIXA
MÉDIA
ALTA
≥ 6
MÉDIA
ALTA
ALTA

Complexidade de uma Entrada Externa de acordo com o número de Tipos de Elementos de Dados e de Arquivos Referenciados identificados para ela. Também é utilizada para determinar a complexidade das entradas de uma Consulta Externa.

Complexidade EE e CE
Tipo de Elemento de Dados
1 a 4
5 a 15
≥ 16
Tipo de Arquivo Referenciado
0 a1
BAIXA
BAIXA
MÉDIA
2
BAIXA
MÉDIA
ALTA
≥ 3
MÉDIA
ALTA
ALTA

Complexidade de uma Saída Externa de acordo com o número de Tipos de Elementos de Dados e de Arquivos Referenciados identificados para ela. Também é utilizada para determinar a complexidade das saídas de uma Consulta Externa.

Complexidade SE e CE
Tipo de Elemento de Dados
1 a 5
6 a 19
≥ 20
Tipo de Arquivo Referenciado
0 a1
BAIXA
BAIXA
MÉDIA
2 a 3
BAIXA
MÉDIA
ALTA
≥ 4
MÉDIA
ALTA
ALTA

Contribuições (pesos) obtidas através das complexidades calculadas para as funções identificadas.

Contribuições das Complexidades
Contribuições (peso)
ALI
AIE
EE
SE
CE
Complexidades
7
5
3
4
3
10
7
4
5
4
15
10
6
7
6

Para calcular os pontos de função não ajustados, multiplica-se o número de funções identificadas para uma determinada complexidade por sua contribuição. Ao final, soma-se todos os pontos de função encontrados.

A seguir é apresentado um exemplo para o cálculo dos pontos de função não ajustados (PFNA) gerados pelos ALI de um sistema hipotético. O mesmo deve ser feito para outras funções do sistema (AIE, EE, SE e CE).

Função
Itens Contados por Complexidade
Contribuição
Total por Complexidade
Total de PFNA da Função
ALI
1 Baixa
x 7
7
42
2 Média
x 10
20
1 Alta
x 15
15
 
6. Calcular Valor do Fator de Ajuste 

O número de pontos de função não ajustados de um sistema reflete a funcionalidade que o sistema fornecerá ao usuário, sem considerar as especificidades do sistema. Por exemplo, um mesmo sistema pode ser implementado para operar stand alone para um cliente e em arquitetura cliente servidor para outro. As funcionalidades seriam as mesmas, o que resultaria na mesma contagem de pontos de função não ajustados, mas quando considera-se as características do sistema para cada cliente, observa-se que os pontos de função devem ser ajustados para refletir a maior complexidade do sistema na arquitetura cliente servidor.

Para ajustar os pontos de função encontrados na etapa (5) devem ser levadas em consideração 14 (quatorze) características do sistema que serão analisadas e fornecerão o valor do fator de ajuste. São elas:
  1. Comunicação de Dados
  2. Processamento Distribuído
  3. Performance
  4. Configuração Altamente Utilizada
  5. Taxa de Transações
  6. Entrada de Dados On-Line
  7. Eficiência do Usuário Final
  8. Atualização On-Line
  9. Processamento Complexo
  10. Reutilização
  11. Facilidade de Operação
  12. Facilidade de Instalação
  13. Múltiplos Locais
  14. Modificações Facilitadas.
Para cada característica deve ser atribuído um nível de influência de 0 (zero) a 5 (cinco), onde: 

0 (zero) indica nenhuma influência
1 (um) influência mínima
2 (dois) influência moderada
3 (três) influência média
4 (quatro) influência significativa
5 (cinco) grande influência.

Para calcular o valor do fator de ajuste deve-se seguir a relação VFA = (GIT * 0,01) + 0,65

  • VFA é o valor do fator de ajuste
  • GIT é o grau de influência total (soma de todos os valores dos níveis de influência).
7. Calcular Pontos de Função Ajustados

Após calculado o valor do fator de ajuste, os pontos de função não ajustados serão ajustados, multiplicando-se o valor dos pontos de função não ajustados (PFNA), obtidos em (5), pelo valor do fator de ajuste (VFA),obtido em (6).

Assim,  PFA = PFNA x VFA

O número de pontos de função encontrado representa o tamanho da aplicação de acordo com sua funcionalidade.

Para calcular as estimativas de esforço, prazo e custos para a aplicação é necessário conhecer valores como o custo de um ponto de função (por exemplo R$200,00) e o tempo necessário para realizar um ponto de função (por exemplo 2,5 h), ou o esforço para realizar um ponto de função (por exemplo 14 pessoas/mês) e o custo do esforço. Com esses valores é possível calcular as estimativas para o projeto através das relações entre o número total de pontos de função do sistema e os valores de um ponto de função.

Para determinar os valores de um ponto de função, a organização pode realizar medições em projetos anteriores e obter um valor médio para o ponto de função. Caso não existam projetos anteriores podem ser consultadas tabelas disponibilizadas pelo IFPUG (Institute Function Point Users Group) e por seus órgãos representantes em cada país.

Grande Abraço,

Gilberto Ribeiro

Nenhum comentário :

Postar um comentário