Professional Documents
Culture Documents
Apostila
Julho/2018
1
Sumário
MÓDULO 1. Introdução às Métricas de Software................................................................................4
1.1. DEFINIÇÃO DE MÉTRICAS DE SOFTWARE...................................................................................4
1.2. POR QUE MEDIR .......................................................................................................................5
1.3. PROCESSO DE MEDIÇÕES E MELHORIA CONTÍNUA DO PROCESSO DE SOFTWARE .......................7
1.4. OBJETIVO DE UM PROCESSO DE MEDIÇÕES ..............................................................................8
MÓDULO 2. Análise de Pontos de Função ....................................................................................... 10
2.1. DEFINIÇÕES E HISTÓRICO DA ANÁLISE DE PONTOS DE FUNÇÃO ...............................................10
2.2 OBJETIVOS DA ANÁLISE DE PONTOS DE FUNÇÃO .....................................................................14
2.3. BENEFÍCIOS DA ANÁLISE DE PONTOS DE FUNÇÃO ...................................................................15
2.4. LIMITAÇÕES DA ANÁLISE DE PONTOS DE FUNÇÃO ...................................................................16
2.5. PROCEDIMENTO DE CONTAGEM DE PONTOS DE FUNÇÃO ........................................................ 17
2.6. VISÃO DO USUÁRIO .................................................................................................................21
MÓDULO 3. Procedimento de Contagem de Pontos de Função....................................................... 24
3.1. OBTER A DOCUMENTAÇÃO DA APLICAÇÃO OU PROJETO A SER CONTADO .................................24
3.2 DETERMINAR O PROPÓSITO DA CONTAGEM .............................................................................25
3.3 DETERMINAR T IPO DE CONTAGEM ........................................................................................... 25
3.4 DETERMINAR ESCOPO DA CONTAGEM ...................................................................................... 27
3.5 DEFINIR A FRONTEIRA DA APLICAÇÃO ...................................................................................... 27
3.6 T IPOS FUNCIONAIS DA ANÁLISE DE PONTOS DE FUNÇÃO ......................................................... 30
3.7. CONTAGEM DAS FUNÇÕES DE DADOS ..................................................................................... 34
3.7.1 Classificação de Funções de Dados ................................................................................36
3.7.2 Contribuição Funcional das Funções de Dados ............................................................... 37
3.7.3 Contagem das Funções de Dados de uma Aplicação ...................................................... 38
3.7.4 Estudo de Casos: Contagem Função de Dados............................................................... 39
3.8 CONTAGEM DAS FUNÇÕES T RANSACIONAIS .............................................................................46
3.8.1 Classificação das Funções Transacionais........................................................................52
3.8.2 Contribuição Funcional das Funções Transacionais ........................................................ 54
3.8.3 Como Identificar Funções Transacionais nas Aplicações.................................................63
3.9 CONTAGEM DE PONTOS DE FUNÇÃO DE UMA APLICAÇÃO ......................................................... 65
3.10. CÁLCULO DE PONTOS DE FUNÇÃO ........................................................................................ 80
3.11. DOCUMENTAÇÃO DA CONTAGEM DE PONTOS DE FUNÇÃO ..................................................... 83
MÓDULO 4. CONTAGEM DE PONTOS DE FUNÇÃO DE PROJETOS DE MELHORIA .......................................85
4.1. DEFINIÇÃO DE PROJETOS DE MELHORIA ................................................................................85
4.2. COMO CONTAR FUNÇÕES DE DADOS EM PROJETOS DE MELHORIA .........................................85
4.3. COMO CONTAR FUNÇÕES T RANSACIONAIS EM PROJETOS DE MELHORIA ............................ 86
4.4. FÓRMULAS DE CÁLCULO .........................................................................................................88
4.5. ESTUDO DE CASOS ................................................................................................................89
MÓDULO 5. ESTIMATIVA DE PROJETOS DE SOFTWARE ......................................................................95
5.1. INTRODUÇÃO E MOTIVAÇÃO ....................................................................................................95
5.2. ESTIMATIVAS - CONCEITOS BÁSICOS ...................................................................................... 96
5.3. PROCESSO DE ESTIMATIVAS ..................................................................................................96
5.3.1 MÉTODOS DE ESTIMATIVA DE T AMANHO EM PONTOS DE FUNÇÃO ......................................104
5.4. ESTUDO DE CASOS: ESTIMATIVA DE UM PROJETO DE DESENVOLVIMENTO DE SOFTWARE .....113
MÓDULO 6. ROTEIRO DE MÉTRICAS DE SOFTWARE DO SISP ................................................................ 132
6.1. MELHORES PRÁTICAS: USO DE MÉTRICAS EM CONTRATOS DE SOFTWARE ........................... 132
6.2 ROTEIROS DE MÉTRICAS DE SOFTWARE ................................................................................ 134
6.3 ROTEIRO DE MÉTRICAS DE SOFTWARE DO SISP...................................................................135
2
6.3.1. Projetos de Desenvolvimento....................................................................................... 135
6.3.2. Projetos de Melhoria ....................................................................................................135
6.3.3 Projetos de Migração de Dados ..................................................................................... 137
6.3.4 Manutenção Corretiva....................................................................................................137
6.3.5 Mudança de Plataforma .................................................................................................138
6.3.6 Atualização de Versão ...................................................................................................139
6.3.7 Manutenção em Interface .............................................................................................. 140
6.3.8 Adaptação em Funcionalidades sem Alteração de Requisitos Funcionais .................... 141
6.3.9 Apuração Especial - Base de Dados.............................................................................. 142
6.3.10 Apuração Especial - Geração de Relatórios.................................................................143
6.3.11 Apuração Especial - Reexecução ................................................................................ 144
6.3.12 Atualização de Dados ..................................................................................................144
6.3.13 Desenvolvimento, Manutenção e Publicação de Páginas Estáticas de Intranet,
Internet ou Portal .................................................................................................................... 145
6.3.14 Manutenção de Documentação de Sistemas Legados................................................ 145
6.3.15 Verificação de Erros.....................................................................................................145
6.3.16 Pontos de Função de Teste ......................................................................................... 146
6.3.17 Componente Interno Reusável..................................................................................... 147
6.3.18 Contagem de Pontos de Função de Mudança de Requisitos .......................................148
3
MÓDULO 1. Introdução às Métricas de Software
Objetivos do Módulo
Ao final deste módulo, o aluno deverá ser capaz de:
Tamanho
Defeitos
Esforço
Custo
A métrica Pontos de Função é reconhecida pelo padrão ISO/IEC 20926, sendo seu
uso recomendado em Acórdãos do Tribunal de Contas da União para contratos de
software de órgãos públicos.
6
Melhorar a gerência de contratos de software
7
As medições e os indicadores, bem como estatísticas e atributos de projetos
armazenados em um banco de dados histórico, também denominado baseline, fornecem
uma base quantitativa para os gerentes de projetos tomarem decisões, baseando-se nos
pontos fortes e oportunidades para melhoria.
A análise dos resultados pode ser realizada baseando-se nas medições atuais
comparando-se com os dados históricos de projetos concluídos (Banco de Dados
Histórico ou Baseline) e por meio de Benchmarking. Os resultados serão avaliados e
incorporados à Baseline, então novas decisões podem ser tomadas, dando
prosseguimento ao ciclo de melhoria contínua do processo.
Comunicar eficientemente
8
Identificar e corrigir problemas cedo
Apoiar decisões
9
MÓDULO 2. Análise de Pontos de Função
Objetivos do módulo
Este módulo tem como objetivos:
11
O BFPUG é um grupo constituído com o objetivo de estimular e divulgar a utilização
de métricas no desenvolvimento de sistemas, em particular a Análise de Pontos de
Função. O BFPUG é a representação brasileira oficial (Chapter) do IFPUG - International
Function Point Users Group. Navegue no sítio do BFPUG http://www.bfpug.com.br.
O século 21 está sendo marcado pelo uso crescente da métrica Pontos de Função
pela indústria de software. Em 2001 pela primeira vez ocorreu o exame de Certificação
CFPS no Brasil. O número de profissionais certificados é crescente, sendo um dos países
com maior número de profissionais CFPS do mundo, demonstrando a expansão da
utilização da métrica.
Em 2003 a métrica Pontos de Função Não Ajustados foi reconhecida pela ISO como
métrica padrão de tamanho funcional de software.
"§ 2º - A aferição de esforço por meio da métrica homens-hora apenas poderá ser
utilizada mediante justificativa e sempre vinculada à entrega de produtos de acordo com
prazos e qualidade previamente definidos."
O Tribunal de Contas da União também tem recomendado em Acórdãos o uso da
métrica Pontos de Função Não Ajustados em contratos de fábrica de software.
12
Neste contexto, os Órgãos públicos têm estabelecido contratos com base na métrica
Pontos de Função. Além dos Órgãos públicos, muitas empresas privadas também
contratam software usando Pontos de Função.
Em 2016 foi publicada versão 2.2 do Roteiro de Métricas do SISP. Esta versão
apresenta orientações para contagem de Pontos de Função de Log, Trilha de Auditoria e
Histórico.
14
Adicionalmente, a técnica também possui os seguintes objetivos:
O uso da técnica Análise de Pontos de Função (APF) traz diversos benefícios para
as organizações, sob ponto de vista gerencial: gestão de projetos de desenvolvimento e
de manutenção de sistemas, gestão do processo de desenvolvimento de sistemas, gestão
de contratos de projetos de software.
PF é uma métrica padrão que pode ser usada na construção de indicadores, para
comparação de tamanho funcional de projetos de software.
A métrica Pontos de Função é sem dúvida uma excelente métrica, objetiva e com
maturidade em sua utilização na indústria de software e no Governo. É importante
ressaltar que a métrica foi concebida para medir o tamanho funcional de projetos de
software. Desta forma, deve-se observar as limitações do uso da métrica na gestão de
contratos de software:
16
Conclusão: O tamanho do projeto em PF influencia o esforço e o custo de
desenvolvimento do mesmo. No entanto, dois projetos com o mesmo tamanho
funcional medido em PF podem ter esforço e custo bastante diferentes.
17
Obter a documentação disponível do projeto
O propósito da contagem fornece uma reposta para uma questão de negócio a ser
resolvida. Influencia o escopo da contagem e o tipo da contagem. Também influencia o
estabelecimento da fronteira do software a ser medido.
18
Identificar o Tipo de Contagem
19
A principal diferença entre os ALIs e AIEs é que um Arquivo de Interface Externa
não é mantido pela aplicação que está sendo contada, e um Arquivo Lógico Interno é
mantido por funcionalidades da aplicação em questão.
Cada tipo funcional identificado possui uma complexidade - Baixa, Média ou Alta, definida
com base nas regras de contagem. Cada funcionalidade possui uma contribuição
funcional para a contagem de PF de acordo com a complexidade, conforme a tabela
abaixo:
20
Complexidade
Tipo Funcional
Baixa Média Alta
Arquivo Lógico Interno (ALI) 7 PF 10 PF 15 PF
Arquivo da Interface Externa (AIE) 5 PF 7 PF 10 PF
Entrada Externa (EE) 3 PF 4 PF 6 PF
Saída Externa (SE) 4 PF 5 PF 7 PF
Consulta Externa (CE) 3 PF 4 PF 6 PF
PF_Aplicação = PF_Incluído
21
Cabe ressaltar que o usuário deve ser capaz de definir as necessidades e funcionalidades
da aplicação e geralmente exerce o papel de Analista de Negócios.
A Visão do Usuário:
É uma descrição das funções de negócio;
É aprovada pelo usuário;
Pode variar de forma física (Documento de Visão, Especificação Funcional,
Formalização Simples de Requisitos, Manual do Usuário);
Pode ser usada na contagem de Pontos de Função.
Desta forma, a contagem de Pontos de Função deve ser realizada com base na
análise de um documento de requisitos funcionais do sistema. E, ainda, este documento
deve ser formalizado, validado e aprovado pelo cliente.
Exemplo:
A contagem de Pontos de Função de um Sistema deve ser realizada considerando o
Requisito funcional final do Sistema, que representa a visão do usuário. Este exemplo
apresenta os três estágios observados na atividade de definição da Visão do Usuário de
um Sistema.
Observe que este requisito não está consistente. Quando dois empregados tiverem
o mesmo nome, os dados de qual empregado devem ser apresentados?
Desta forma, este requisito inicial não traduz a visão do usuário. Não pode ser
utilizado para contar Pontos de Função.
22
Cabe ressaltar que Uma medição de tamanho funcional é realizada utilizando a
informação em uma linguagem que é comum para o usuário e desenvolvedores.
23
MÓDULO 3. Procedimento de Contagem de Pontos de Função
Objetivos do módulo
Ao final deste módulo, o aluno deverá ser capaz de entender as atividades que compõem
o procedimento de contagem (Figura 2), a saber:
De acordo com manual CPM 4.3, uma documentação adequada pode incluir
requisitos, modelos de dados/objetos, diagramas de classe, diagramas de fluxo de dados,
casos de uso, descrições procedurais, layout de relatórios e telas, manuais de usuário e
outros artefatos do desenvolvimento de software.
24
Uma vez obtida a documentação que subsidiará a contagem de Pontos de Função,
deve-se identificar o propósito, tipo e escopo da contagem e fronteira da aplicação,
conforme descrito nos tópicos a seguir.
Tomemos como exemplo uma organização que possui uma aplicação de Gestão de
Recursos Humanos (GRH) implantada em COBOL, e que deseja contratar o
desenvolvimento de um sistema de Treinamento com base na métrica Pontos de Função.
Observe que a questão não é contar a aplicação implantada GRH, mas sim obter o
tamanho funcional do Sistema de Treinamento em Pontos de Função para contratação,
que neste contexto está sendo concebido como um novo sistema.
25
Contagem de pontos de função de projeto de desenvolvimento
26
3.4 DETERMINAR ESCOPO DA CONTAGEM
O escopo:
A fronteira da aplicação:
Indica o limite entre o software que está sendo medido e o usuário (ou aplicações).
28
Observe, na Figura acima, a definição da fronteira do Sistema de Recursos
Humanos e como esta interage com as funcionalidades da aplicação.
29
definição das fronteiras a serem utilizadas nas contagens; 9.2.1.5. políticas para definição
de: novas fronteiras (...)"
30
Fronteira da Aplicação
Usuário Final
Qualquer pessoa que interage com o sistema que está sendo contado.
Outra Aplicação
Qualquer aplicação que interage com o sistema que está sendo contado.
Entrada Externa
31
um Sistema de Cadastro de Treinamentos a funcionalidade de Alterar dados de um curso
é um exemplo de Entrada Externa.
Consulta Externa
A consulta Externa também pode ser entendida como Função Transacional com
objetivo de apresentar informações para o usuário ou outra aplicação, por meio de
recuperação de dados de ALI ou AIE. Por exemplo, em um Sistema de Cadastro de
32
Treinamentos a funcionalidade de Consultar dados de um curso específico é um exemplo
de Consulta Externa. Observe que todos os dados são recuperados do ALI de cursos.
Saída Externa
33
Outro exemplo de SE é a emissão de certificado com atualização de indicador de status
de certificado emitido. A emissão de certificado apresenta os dados em papel e atualiza
um atributo de status de emissão em um ALI.
Como terceiro exemplo de Saída Externa, consideremos a emissão de uma lista final
de notas de alunos com a seguinte regra: se o aluno tiver nota igual ou superior a 70%
exibir o nome do aluno em azul; se o aluno tiver nota inferior a 70% exibir o nome do
aluno em vermelho. O procedimento deve recuperar o nome e a nota do aluno e tomar a
decisão de exibir o nome do aluno em azul ou em vermelho. Ou seja, o nome do aluno
exibido em azul ou vermelho não é um dado recuperado. A criação da informação nome
do aluno em azul ou vermelho com base em um algoritmo, atendendo a uma necessidade
de negócio do usuário, é uma lógica de derivação de dados. Portanto, a funcionalidade é
classificada como Saída Externa, devido à lógica de derivação de dados.
34
Interface Externa (AIE). Apresentamos abaixo explicações mais detalhadas sobre o
assunto.
Observe que o AIE é um grupo dados referenciado pela aplicação sendo contada
para apoiar validações de dados, cálculos ou apresentação de dados em consulta ou
relatórios.
Se um grupo de dados é lido e mantido deve-se contar como ALI. Por exemplo, o
Sistema da loja ABC lê os dados de clientes do Sistema Matriz (nome, endereço e
telefone) e também atualiza dados de produtos de interesse do cliente. O Sistema da loja
ABC conta a entidade de Clientes como ALI. Um grupo de dados pode ser contado como
ALI para várias aplicações.
35
3.7.1 Classificação de Funções de Dados
1 a 19 20 a 50 51 ou mais
Tipos de Dados Tipos de Dados Tipos de Dados
1 Registro Lógico BAIXA BAIXA MÉDIA
2 a 5 Registros Lógicos BAIXA MÉDIA ALTA
6 ou mais Registros Lógicos MÉDIA ALTA ALTA
Exemplo 1: Suponha um sistema de gestão de projetos que mantém dados dos projetos
de uma organização. A Entidade Projeto possui associação de dependência com uma
entidade Equipe do Projeto.
ALI: Projeto;
RL: 2 (Projeto e Equipe do Projeto);
37
TD: 10 (Nome do Projeto, Objetivo do Projeto, Data Início, Data fim, Esforço estimado,
Custo estimado, Nome do Participante, Tipo de participação, Papel desempenhado no
projeto, Atividades alocadas);
Complexidade: Baixa;
Tamanho: 7 PF.
Exemplo 2:
O Sistema de Treinamentos deve apresentar uma Lista com o nome dos Municípios
e a UF associada com dados recuperados da Tabela de Municípios do Sistema do IBGE.
Observe que considerando a visão do usuário do Sistema de Treinamentos, a Tabela de
Municípios possui apenas dois atributos (nome do município e UF) lido de uma outra
aplicação (Sistema do IBGE).
Uma vez, identificada uma Entidade de Dados, devemos verificar se esta deve ser
contada como ALI ou AIE ou Não ser contada.
Cabe ressaltar que entidades físicas não reconhecidas pelo usuário, por exemplo,
arquivos temporários, ou qualquer outro tipo de tabela criada para apoiar a construção de
código não deve ser contado como Arquivos Lógicos: ALI ou AIE.
Devemos responder as seguintes questões para verificar se a Entidade de Dados é
um ALI:
38
- É um grupo de dados reconhecido pelo usuário? Sim
Observe que uma Entidade de Dados para ser contada como ALI ou AIE precisa ser
mantida por pelo menos um Processo Elementar, funcionalidade, da aplicação sendo
contada (ALI) ou de outra aplicação (AIE). As Entidades de dados de domínio mantidas
que não são mantidas pela aplicação não devem ser contadas. Muitas vezes, estas
tabelas são mantidas manualmente pelo programador ou DBA quando precisam ser
atualizadas.
39
Descrição do Sistema de Agenda de Compromissos
O Presidente da empresa Inovação solicitou o desenvolvimento de um Sistema de
Agenda de Compromissos para seus Gerentes cadastrarem os Compromissos e
Aniversário dos empregados da empresa. O sistema deve ler a tabela de Empregados do
Sistema de Recursos Humanos (SRH) para acesso ao nome, departamento, e-mail e
telefones para contato com o empregado. Segue o Modelo de Dados do Sistema.
Tabela de Compromissos
Esta tabela é utilizada para armazenar os dados de compromissos cadastrados na
aplicação.
Identificador do Compromisso (Campo Físico)
Nome do Compromisso
Descrição do Compromisso
Tipo do Compromisso
Data do Compromisso
Hora do Compromisso
Nome do Local do Compromisso
Telefone do Local
Endereço do Local – Rua, Compl, Bairro
Endereço do Local – Município
Endereço do Local – UF
40
Tabela de UFs
Esta tabela é utilizada para alimentar a combobox de UFs, visando minimizar a digitação
do usuário e melhorar a consistência da entrada de dados de UF na tela de cadastro de
compromissos.
Código da UF (Campo Físico)
Sigla da UF
Descrição da UF
Tabela de Aniversários
Esta tabela é utilizada para armazenar as datas de aniversário dos empregados da
empresa cadastrados pela aplicação.
Matricula do empregado
Data do Aniversário
Tabela de Empregados
Esta tabela é mantida pelo Sistema de Recursos Humanos (SRH), sendo acessada pelo
Sistema de Agenda Corporativo para leitura de dados dos empregados da empresa.
Matricula do empregado
Nome do empregado
Telefone do empregado –DDD
Telefone do empregado – num. Telefone
Telefone Celular do empregado
e-mail do empregado
Departamento do empregado
Tabela de Compromissos
Identificador do Compromisso (Campo Físico)
Nome do Compromisso
Descrição do Compromisso
Tipo do Compromisso
Data do Compromisso
41
Hora do Compromisso
Nome do Local do Compromisso
Telefone do Local
Endereço do Local – Rua, Compl, Bairro
Endereço do Local – Município
Endereço do Local – UF
ALI: Compromissos
RL: 1 – Compromissos
TD: 8 - Nome do Compromisso, Descrição do Compromisso, Tipo do Compromisso, Data
do Compromisso, Hora do Compromisso, Nome do Local do Compromisso, Telefone do
Local, Endereço do Local
Complexidade: Baixa
Contribuição Funcional: 7 PF
Tabela de UFs
Código da UF (Campo Físico)
Sigla da UF
Descrição da UF
Observe que esta entidade não tem como objetivo o armazenamento de dados de
negócio do usuário. A implementação desta entidade de dados está associada a
requisitos não funcionais: minimizar a digitação do usuário e melhorar a consistência da
entrada de dados.
“Esta tabela é utilizada para alimentar a combobox de UFs, visando minimizar a digitação
do usuário e melhorar a consistência da entrada de dados de UF na tela de cadastro de
compromissos.”
Além disso, observe que esta entidade de dados não é mantida por um processo
elementar da aplicação. Desta forma, esta entidade de dados não deve ser contada,
representa a implementação de dados de domínio da aplicação.
O Manual de Práticas de Contagem (CPM) denomina estas entidades que
armazenam dados de código, descrição e outros atributos descrevendo o código,
utilizadas para implementação de requisitos não funcionais, como Dados de Código
(Code Data). As entidades do tipo Dados de Código não devem contadas.
Observe que esta entidade não tem como objetivo o armazenamento de dados de
negócio do usuário. A implementação desta entidade de dados está associada ao
requisito não funcional de implementação da validação de dados.
“Esta tabela é utilizada para validação do tipo de compromisso é uma tabela estática não
é mantida pela aplicação. A tabela será mantida pelo DBA da aplicação, caso seja
necessário.”
Além disso, observe que esta entidade de dados não é mantida por um processo
elementar da aplicação. Desta forma, esta entidade de dados não deve ser contada,
representa a implementação de dados de domínio da aplicação.
43
O Manual de Práticas de Contagem (CPM) denomina estas entidades que
armazenam dados de código, descrição e outros atributos descrevendo o código,
utilizadas para implementação de requisitos não funcionais, como Dados de Código
(Code Data).
As entidades do tipo Dados de Código não devem contadas.
Tabela de Aniversários
Matricula do empregado
Data do Aniversário
44
5) Análise da Entidade de Dados de Empregados
Tabela de Empregados
Matricula do empregado
Nome do empregado
Telefone do empregado –DDD
Telefone do empregado – num. Telefone
Telefone Celular do empregado
e-mail do empregado
Departamento do empregado
Esta entidade lógica de dados é reconhecida pelo usuário e é mantida por outra
fronteira de aplicação (SRH), sendo lida pelo sistema que está sendo contado. Desta
forma, é contada como Arquivo de Interface Externa (AIE).
“Esta tabela é mantida pelo Sistema de Recursos Humanos (SRH), sendo acessada pelo
Sistema de Agenda Corporativo para leitura de dados dos empregados da empresa.”
45
Complexidade: Baixa
Contribuição Funcional: 5 PF
ALI: Aniversários
RL: 1 – Aniversários
TD: 2 – Matricula do Empregado, Data do Aniversário
Complexidade: Baixa
Contribuição Funcional: 7 PF
AIE: Empregados
RL: 1 – Empregados
TD: 6 – Matricula do empregado, Nome do empregado,Telefone do empregado, Telefone
Celular do empregado,e-mail do empregado,Departamento do empregado
Complexidade: Baixa
Contribuição Funcional: 5 PF
Observe que Entrada Externa, Consulta Externa e Saída Externa são processos
elementares.
46
Primeiro passo: Identificar um Processo Elementar
47
Lógicas de Processamento Utilizadas por EEs, CEs e SEs
Forma de Processamento Lógico EE SE CE
Validações são realizadas P P P
Cálculos são efetuados P O* N
Valores equivalentes são convertidos P P P
Filtro e seleção de dados com base em critérios específicos para comparar grupos
P P P
de dados
Condições são analisadas para determinar quais são aplicáveis P P P
Atualização de pelo menos um ALI O* O* N
No mínimo um ALI ou AIE é referenciado P P O
Dados ou informações de controle são recuperados P P P
Dados derivados são criados P O* N
Alteração do Comportamento do Sistema O* O* N
Prepara e apresenta informações fora da fronteira da aplicação P O O
Capacidade de aceitar dados ou informações de controle que entram pela fronteira
O P P
da aplicação
Reordena ou Reorganiza um conjunto de dados P P P
Onde:
O*: Pelo menos uma das lógicas O* é obrigatória para o tipo de função
Toda Consulta Externa deve ler dados de pelo menos um Arquivo Lógico (ALI ou
AIE).
48
Uma Entrada Externa pode ter dados calculados. Por exemplo, na função incluir
vendas, sempre que for adicionado um item, o preço do item vendido deve ser
somado ao campo de total de vendas.
49
O usuário insere seus dados para se inscrever no CONSEGI. Observe que a
funcionalidade tem como propósito processar dados recebidos de fora da fronteira da
aplicação (dados do usuário) para atualizar o Arquivo Lógico Interno - Inscrições. Os
dados inseridos pelo usuário estão atravessando a fronteira da aplicação.
50
A funcionalidade apresenta para o usuário uma lista com todas as Oficinas
cadastradas para o evento CONSEGI. Observe que funcionalidade tem como propósito
recuperar dados do Arquivo Lógico Interno Oficinas e apresentar para fora da fronteira da
aplicação (usuário). Os dados das oficinas apresentados para o usuário estão
atravessando a fronteira da aplicação.
Outro exemplo de Saída Externa é a emissão de uma lista final de notas de alunos
com a seguinte regra: se o aluno tiver nota igual ou superior a 70%, exibir o nome do
aluno em azul; se o aluno tiver nota inferior a 70%, exibir o nome do aluno em vermelho.
Observe que a funcionalidade recupera o nome e a nota do aluno e toma uma decisão de
exibir o nome do aluno em azul ou vermelho. Ou seja, o nome do aluno exibido em azul
ou vermelho não é um dado recuperado. A criação da informação nome do aluno em azul
ou vermelho com base em um algoritmo, atendendo a uma necessidade de negócio do
usuário, é uma lógica de derivação de dados. Portanto, a funcionalidade é classificada
como Saída Externa, devido à lógica de derivação de dados.
51
Exemplo: Consultar Desembarque em Voos Domésticos.
Uma vez identificada, a função transacional deve ser classificada de acordo com sua
complexidade: Baixa, Média ou Alta. Seguem as Tabelas de Classificação das Funções
Transacionais.
52
Tabelas de Complexidade Funcional - Funções Transacionais (EEs, SEs, CEs)
O conceito de atravessar a fronteira significa que não devem ser contados como
TDs campos que são apenas utilizados pela função para processamento interno, mas não
entram ou saem pela fronteira da aplicação. Também não são contados números de
páginas, mesmo que a implementação destes não seja facilitada pela ferramenta de
programação (ex: pag 2/10) e data e hora de emissão de relatórios fornecidas pelo
sistema operacional.
Além dos dados que atravessam a fronteira, são contados 1 TD para ação, botões
de ação (OK, dropdown de listbox, links para chamar outras funcionalidades...) e 1 TD
para mensagem (mensagens de validação de campos, mensagens de confirmação de
processamento...).
54
Exemplo 1: Consultar Oficinas do CONSEGI
AR: 1 (Oficinas)
TD: 6 (Nome, Oficineiro, Local, Data Início, Data fim, Ação - botão de ação da tela inicial
da consulta)
Complexidade: Baixa
Tamanho: 3 PF
55
Exemplo 2: Alterar reservas de hotel
Descrição: A Função Alterar Reservas do Hotel ABC atualiza o ALI Reservas e valida o
Nome do Funcionário no AIE Funcionário e valida o código do cliente no ALI Clientes.
Caso o funcionário ou cliente não existam, é apresentada uma mensagem para o usuário.
Complexidade: Alta.
Tamanho: 6 PF.
56
Descrição: Esta funcionalidade permite ao usuário obter uma estimativa rápida de
esforço de um projeto. O usuário entra com o tamanho funcional do projeto em PF e o
índice de produtividade em horas/PF a ser utilizado para estimar o esforço do projeto em
questão. Quando o usuário clica no botão calcular, a funcionalidade valida se os dois
parâmetros foram preenchidos, apresentando mensagem de "tamanho do projeto não
informado" ou " índice de produtividade não informado". Caso os dois campos estejam
preenchidos, a funcionalidade calcula o esforço multiplicando o tamanho do projeto pelo
índice de produtividade e apresenta o resultado.
AR: 0 (a funcionalidade não referencia Arquivo Lógico. A referência a arquivo lógico não é
uma lógica de processamento obrigatória para a SE. É uma lógica obrigatória para a CE).
Complexidade: Baixa.
Tamanho: 4 PF.
TD: 8 (Nome da aplicação, Nome do projeto, Descrição do projeto, Data de Criação, Data
de Encerramento, Situação, Qtde PF, ação).
Complexidade: Baixa.
57
Tamanho: 3 PF.
58
TD: 9 (Data, UG Cliente, Projeto, horas, macroatividade, insumo, observação, ação –
botão incluir, mensagens validação).
Complexidade: Alta
Tamanho: 6 PF.
59
Saldo consolidado. Caso o empregado não tenha realizado atividades associadas à
instrutoria, então é apresentada a mensagem “o empregado não participou de eventos de
incentivo à instrutoria”.
TD: (Lotação, Matrícula, Nome empregado, Data Referência, Data Evento, Crédito,
Débito, Greve, Saldo, mensagem).
Complexidade: Alta.
Tamanho: 7 PF.
Descrição – Tela de Filtro: O usuário define o período – data inicial e data final e o tipo
do evento que deseja emitir o relatório. Clica no botão “Emitir” e o sistema emite o
relatório desejado.
O usuário pode clicar no calendário para identificar a data inicial e final ou digitar. O
calendário é um recurso para atender o um requisito não funcional de usabilidade,
portanto não possui contagem de Pontos de Função.
Cabe ressaltar que esta tela de filtros é parte de dois processos elementares distintos.
“Relatório de Eventos – Videoconferências” e “Relatórios de Eventos – Não
Videoconferências”. Estes dois relatórios são considerados processos elementares
distintos porque os filtros “tipo de eventos” são mutuamente excludentes. O requisito
60
funcional é de emissão de dois relatórios independentes que não podem ser combinados.
Desta forma, para a contagem de Pontos de Função destes relatórios, torna-se
necessário observar os dados que saem pela fronteira da aplicação, ou seja, a tela de
resultados. Observe que a tela de filtro e a tela de resultados fazem parte do mesmo
processo elementar.
TD: 15 (Data Início, Data Fim, Ação, Mensagem, Data, Hora Inicial, Hora Final, Tipo,
Nome do Evento, Local de Transmissão, Reservado por, Responsável, Unidade, Cliente,
Locais de Recepção).
Complexidade: Alta.
61
Tamanho: 6 PF.
Ao clicar no botão “Emitir” com o Tipo do Evento “Somente Eventos que não são
videoconferências” selecionado, o sistema gera um arquivo .pdf com as informações do
relatório solicitado. Observe que é apresentado o Título do Relatório, que não é contado
como TD por se tratar de um dado estático. Também são apresentados os dados do filtro
período “data inicial” e “data final”. Estes campos entram (tela de filtros) e saem ( tela de
resultados) pela fronteira da aplicação e devem ser contados apenas uma vez,
considerando o processo elementar - “Relatório de Eventos- Não Videoconferência”. A
informação de paginação “Página 1” não conta como TD. As informações de data e hora
de emissão de relatório também não contam como TD. Este Relatório é uma Consulta
Externa porque consiste em uma recuperação de dados, sem derivação de dados, sem
mudança de comportamento do sistema, sem dados calculados, sem atualização de ALI.
A marcação das linhas com sombreado cinza não constitui uma derivação de dados e sim
um requisito não funcional de usabilidade.
TD: 14 (Data Início, Data Fim, Ação, Mensagem, Data, Hora Inicial, Hora Final, Nome do
Evento, Local, Espaço, Reservado por, Responsável, Unidade, Situação).
Complexidade: Média
Tamanho: 4 PF.
62
3.8.3 Como Identificar Funções Transacionais nas Aplicações
Sim
Sim
Observe que as Entradas Externas podem apresentar dados para o usuário, por
exemplo, uma funcionalidade que tem como objetivo Incluir um usuário, gera um código
de acesso e apresenta para o usuário. A funcionalidade Incluir Usuário é uma EE porque
o objetivo principal é atualizar o ALI Usuário e não apresentar o Código de Acesso.
63
Observe que uma Consulta Externa pode ter entrada de dados, por exemplo, uma
funcionalidade que tem como objetivo apresentar uma lista de Alunos que tenha um filtro
de ano matricula. A funcionalidade Consulta – Lista Alunos é uma CE porque o objetivo
principal é apresentar dados de alunos por meio de recuperação no ALI Alunos e não a
entrada do ano de matrícula, utilizado como filtro para recuperação de dados.
Observe que uma Saída Externa pode atualizar Arquivo Lógico Interno, por exemplo,
uma funcionalidade que tem como objetivo gerar um Certificado de Conclusão de
Treinamento e adicionalmente atualize um ALI com indicador de Emissão de Certificado.
A funcionalidade Emitir Certificado é uma SE porque o objetivo principal é apresentar
dados do Certificado e não a atualização do ALI com dados de emissão do Certificado.
Uma vez que a função transacional foi identificada, então o próximo passo é definir
se ela conta Pontos de Função ou se ela já foi contada. Ou seja, devemos verificar a
unicidade da função identificada. A função deve ser única para ter contagem de PF.
Para a função ser contada devemos responder Sim a pelo menos uma das questões.
O conjunto dos tipos de dados é diferente dos tipos de dados de outras funções;
ou
64
3.9 CONTAGEM DE PONTOS DE FUNÇÃO DE UMA APLICAÇÃO
4. Toda tela de cadastro segue o mesmo conceito. O usuário preenche o filtro e clica no
botão Pesquisar. O sistema preenche o grid com o resultado. Caso não encontre registros
o sistema retorna a mensagem "Nenhum registro encontrado". Para detalhar, alterar um
registro ou excluir um ou mais registros, o usuário marca o checkbox da linha desejada
(ou os checkbox das linhas desejadas, no caso da exclusão) e clica no botão da função
desejada (Detalhar, Alterar ou Excluir). Na exclusão o sistema exibe a pergunta "Deseja
excluir o(s) registro(s) selecionado(s)?". Se o usuário responder que sim, o sistema exclui
os registros; se responder que não, o sistema cancela a exclusão.
65
usuário pode matricular quantos alunos quiser escolhendo o nome do aluno e o código da
turma. Ao clicar na opção Sair, o sistema retorna à tela de Matricular Aluno.
12. Ao excluir um aluno, todas as suas Matrículas em Turmas serão excluídas do sistema.
13. Nas telas de Emissão de Relatórios, na parte de cima temos o filtro e na parte de
baixo temos o formato e os dados que os relatórios devem possuir.
14. Toda funcionalidade possui uma ação e pelo menos uma mensagem.
Resolução
1) O controle de acesso não possui perfil de acesso, logo temos uma função transacional
do tipo consulta externa. Para autenticação no sistema a transação acessa o arquivo de
Controle de Acesso que é mantido em outra fronteira chamada de Sistema Administrativo.
Esse arquivo é um arquivo de interface externa.
66
Nesta tela temos as seguintes funções:
67
Nesta tela temos as seguintes funções:
68
Nesta tela temos a seguinte função:
70
Nesta tela temos a seguinte função:
71
Ao clicar nos botões Incluir ou Alterar temos a seguinte tela:
72
Nesta tela temos as seguintes funções:
73
Pesquisar Turma - CE - AR = 2 (Turma, Disciplina), TD = 6 (Código Turma,
Número da Sala, Código Disciplina, Descrição, Comando e Mensagem) - Média = 4
PF
74
Nesta tela temos as seguintes funções:
75
Nesta tela temos as seguintes funções:
76
Nesta tela temos a seguinte função:
77
Nesta tela temos a seguinte função:
78
Acesso
Controle Usuário, Senha, Comando,
Controlar Acesso CE B 3
Acesso Mansagem
Matrícula, Nome Aluno, Identidade,
Pesquisar Aluno CE Aluno B 3
Comando e Mensagem
Matrícula, Nome Aluno, Identidade,
Incluir Aluno EE Aluno B 3
Endereço, Comando e Mensagem
Matrícula, Nome Aluno, Identidade,
Alterar Aluno EE Aluno B 3
Endereço, Comando e Mensagem
Excluir Aluno EE Aluno, Turma Matrícula, Comando e Mensagem B 3
Consulta Detalhada Matrícula, Nome Aluno, Identidade,
CE Aluno B 3
Aluno Endereço, Comando e Mensagem
Código Disciplina, Descrição, Crédito,
Pesquisar Disciplina CE Disciplina B 3
Comando e Mensagem
Código Disciplina, Descrição, Crédito,
Incluir Disciplina EE Disciplina B 3
Ementa, Comando e Mensagem
Código Disciplina, Descrição, Crédito,
Alterar Disciplina EE Disciplina B 3
Ementa, Comando e Mensagem
Disciplina, Código Disciplina, Comando e
Excluir Disciplina EE B 3
Turma Mensagem
Consulta Detalhada Código Disciplina, Descrição, Crédito,
CE Disciplina B 3
Disciplina Ementa, Comando e Mensagem
Número, Endereço, Comando e
Combo Sala CE Sala B 3
Mensagem
Combo Código Código Disciplina, Descrição,
CE Disciplina B 3
Disciplina Comando e Mensagem
Código Turma, Número da Sala,
Pesquisar Turma Turma,
CE Código Disciplina, Descrição, M 4
(turma e disciplina) Disciplina
Comando e Mensagem
Código Turma, Número da Sala,
Código Disciplina, Descrição
Incluir Turma EE Turma Disciplina, Dias da Semana, Horário B 3
Início, Horário Fim, Comando e
Mensagem
Código Turma, Número da Sala,
Código Disciplina, Descrição
Alterar Turma EE Turma Disciplina, Dias da Semana, Horário B 3
Início, Horário Fim, Comando e
Mensagem
Código Turma, Comando e
Excluir Turma EE Turma, Aluno B 3
Mensagem
Código Turma, Número da Sala,
Consulta Detalhada
Turma, Descrição Disciplina, Dias da
Turma (turma e CE M 4
Disciplina Semana, Horário Início, Horário Fim,
disciplina)
Comando e Mensagem
Combo Nome Aluno CE Aluno Nome Aluno, Comando e Mensagem B 3
79
Código Turma, Comando e
Combo Código Turma CE Turma B 3
Mensagem
Turma, Código Turma, Nome Aluno, Data
Pesquisar Matrícula
CE Disciplina, Matrícula, Descrição Disciplina, M 4
de Aluno
Aluno Comando e Mensagem
Nome Aluno, Código Turma,
Matricular Aluno EE Turma, Aluno B 3
Comando e Mensagem
Excluir Matrícula de Código Turma, Nome do Aluno,
EE Turma, Aluno B 3
Aluno Comando e Mensagem
Código Turma, Dias da Semana,
Emitir Relação de Turma, Aluno, Horário Início, Horário Fim, Descrição
SE M 5
Alunos em Turma Disciplina da Disciplina, Nome Aluno, Total de
Alunos, Comando e Mensagem
Código Turma, Dias da Semana,
Emitir Grade de Turma
CE Horário Início, Horário Fim, Descrição M 4
Horário Disciplina
da Disciplina, Comando e Mensagem
Projeto de Desenvolvimento
Projeto de Melhoria
Seu tamanho funcional é uma medida das funcionalidades que a aplicação atual fornece
ao usuário. Também é chamada de contagem de aplicação instalada ou de Baseline. Não
considera funções de conversão de dados (migração de dados).
PF_APLICAÇÃO = PF_INCLUÍDO
81
PF_INCLUÍDO: Pontos de Função associados às funcionalidades incluídas na aplicação
por meio do projeto de desenvolvimento.
Seu tamanho funcional é uma medida das funcionalidades que a aplicação atual
fornece ao usuário. Também é chamada de contagem de aplicação instalada ou de
Baseline. Não considera funções de conversão de dados (migração de dados). A
contagem de Baseline deve ser atualizada após um projeto de melhoria, de acordo com a
fórmula abaixo:
o resultado da contagem;
Referência:
IFPUG. "Practical Guide for Documenting the Function Point Count", Version 1, May 2010
84
MÓDULO 4. CONTAGEM DE PONTOS DE FUNÇÃO DE PROJETOS DE MELHORIA
Objetivos do módulo
85
inclusão ou exclusão de tipos de dados em uma função de dados existente. Ou mudança
de tamanho (número de posições) ou tipo de campo (por exemplo: mudança de numérico
ou alfanumérico), sendo que esta ocorre por mudança de regra de negócio do usuário e
não por motivos técnicos.
Observação Importante:
PF_Alterado: 15 PF
Observação Importante:
PF_Alterado: 7 PF
87
Uma função transacional (Entrada Externa, Consulta Externa e Saída Externa) é
considerada excluída quando o usuário solicitar a exclusão de uma funcionalidade
existente na aplicação em questão.
Onde:
89
Observação: A Consulta de Projetos (Lista) já existe na aplicação sem o filtro Gestor. A
Combo Gestor já existe na aplicação em outras telas. O usuário pode ordenar a consulta
clicando na coluna “Nome do Projeto”; “Gestor” ou “Status”. O usuário terá a opção de
marcar “Todos” na combo Gestor.
90
Trata-se de uma funcionalidade excluída da aplicação existente.
AR 1 – Projetos
Complexidade: Baixa - 4 PF
PF_Excluído: 4 PF
91
CE: Consulta de Projetos (Lista)
Complexidade: Média - 4 PF
PF_Alterado: 4 PF
Observações:
PF_Alterado_Atual: 4 PF
Complexidade: Média - 4 PF
PF_Alterado_Anterior: 4 PF
Complexidade: Média - 5 PF
Complexidade: Baixa - 7 PF
PF_Incluído: 12 PF
Observações:
A consulta detalhes de projeto não foi contada porque não foi alterada. Mesmo que
na implementação exista um esforço para a inclusão do link para a nova
funcionalidade de envio de mensagem, na visão do usuário o link para chamada de
Enviar Mensagem para o Gestor faz parte da funcionalidade em questão.
PF_Melhoria = 12 PF + 4 PF + 4 PF + 0 PF= 24 PF
93
A Contagem de PF da aplicação implantada antes do projeto de melhoria era de 200PF.
Para realizarmos a contagem de Baseline após a implantação do projeto de melhoria,
vamos seguir a fórmula abaixo:
Após o projeto de melhoria a aplicação que tinha o tamanho funcional de 200 PF passou
a ter o tamanho funcional de 208 PF.
94
MÓDULO 5. ESTIMATIVA DE PROJETOS DE SOFTWARE
Objetivos do módulo
Estimativa: Obtida por meio de uma atividade técnica. Não deve sofrer
interferências. Por exemplo, de acordo com a fórmula de Capers Jones o prazo estimado
para o sistema é de 7 meses.
Como definir quando o projeto vai ficar pronto? Por onde começar?
Fonte: HAZAN, Claudia. Análise de Pontos de Função: uma aplicação nas estimativas de tamanho
de projetos de software. Engenharia de Software Magazine, Edição 2, Devmedia, pp.25-31.
A métrica Pontos de Função pode ser usada como unidade de medida para as
estimativas de tamanho funcional de projetos de desenvolvimento e de melhoria de
sistemas. O manual de Práticas de Contagem (CPM) ressalta que a contagem de Pontos
de Função é baseada no Projeto Lógico (logical design) do sistema. No início o que temos
disponível é um documento inicial de requisitos, assim deve utilizado um método de
estimativa de Pontos de Função para identificar o tamanho funcional do projeto em
questão por meio da análise da documentação disponível. A seguir são apresentados os
métodos: Contagem Indicativa (NESMA), Contagem Indicativa Inteligente, Contagem
Estimada de Pontos de Função (NESMA), Contagem Detalhada de Pontos de Função
(NESMA) e Contagem Estimativa de Pontos de Função. A Contagem Detalhada (NESMA)
segue o padrão IFPUG, sendo utilizada para estimar projetos com requisitos mais
detalhados.
Boa Prática: Considerar a evolução de requisitos (Scope Creep) como premissa nas
estimativas de tamanho.
98
Estimativa inicial: realizada após o fechamento do escopo do projeto. Geralmente
é baseada em um documento inicial de requisitos, por exemplo, Documento de
Visão.
Referências.
Estimar Esforço
O esforço pode ser estimado por meio do modelo simplificado de estimativas, o qual
consiste em obter um índice de produtividade em horas/PF para o projeto específico em
questão, e então multiplicar o tamanho em PF do projeto pelo índice de produtividade,
conforme a fórmula [Vazquez,2012]:
99
Por exemplo, suponha que o índice médio de produtividade da organização para
projetos de médio porte desenvolvidos em PHP seja de 12 horas/PF. Assim, se o projeto
de desenvolvimento do sistema de Gestão de projetos possui 400 PF, o esforço estimado
para a construção deste é de 400 x 12 = 4800 horas.
Referência Bibliográfica
Estimar Cronograma
O prazo de um projeto menor que 100 PFs pode ser estimado por meio da estimativa
de esforço considerando o tamanho da equipe. Desta forma:
Observações importantes:
Exemplo
Então:
Resulta:
100
O Roteiro de Métricas de Software do SISP v2.2 propõe a seguinte tabela de prazo
para projetos menores que 100 PF.
Existem vários métodos para estimar prazo de projetos utilizando como insumo o
tamanho funcional em Pontos de Função. Neste curso, é apresentada a fórmula de
Capers Jones [Jones, 2007]. A fórmula de Capers Jones estima o prazo, baseando-se no
tamanho do projeto em Pontos de Função, nos seguintes termos:
Td = V t
Onde:
Sistema OO (se o projeto OO não for novidade para a equipe, não tiver o
0,36
desenvolvimento de componentes reusáveis, considerar sistema comum)
Exemplo
Td = V t
Td = 300 0,34
Td=7 meses.
102
Referências
[Jones, 2007] JONES, C. Estimating Software Costs. Second Edition, Mc Graw Hill,2007.
Estimar Custo
CP = QPF x CPF
Onde:
103
As estimativas do projeto de software devem ser documentadas juntamente com as
premissas utilizadas na geração destas. As estimativas constituem a base para o Plano
do Projeto. A análise da estimativa consiste na análise das premissas consideradas,
negociação de redução de prazo, considerando a redução de escopo do projeto ou
priorização de requisitos. O Documento de estimativas deve ser aprovado pelo cliente, já
que este constitui um acordo entre a fábrica de software e o requisitante ou analista de
negócios do projeto em questão.
Acompanhar Estimativas
104
5.3.1.1 Método Contagem Estimativa de Pontos de Função (CEPF)
105
Externa. Adicionalmente, o estimador deve descobrir os dados associados ao processo
elementar, visando a determinação da complexidade funcional da função identificada.
Caso não seja possível a identificação da complexidade da funcionalidade em questão,
recomenda-se a utilização da complexidade Média. Na análise do processo elementar
também são identificados os grupos de dados lógicos da aplicação, que são classificados
como Arquivos Lógicos Internos ou Arquivos de Interface Externa. Caso não seja possível
a identificação da complexidade da função de dados em questão, recomenda-se a
utilização da complexidade Baixa. É importante ressaltar que se o estimador identificar
mais de um Registro Lógico no Arquivo Lógico Interno, recomenda-se utilizar a
complexidade Média.
Tabela 1 - Contagem dos Arquivos Lógicos Internos (ALIs): Banco de Dados Lógico
da Aplicação (tabelas e arquivos mantidos pela aplicação).
N° ALIs Baixa: X 7 PF
N° ALIs Média: X 10 PF
N° ALIs Alta: X 15 PF
Total PF:
106
Tabela 2 - Contagem de Arquivos de Interface Externa (AIEs): Banco de Dados de
outras Aplicações, apenas referenciados pela aplicação que está sendo estimada
(tabelas e arquivos mantidos por outra aplicação).
N° AIEs Baixa: X 5 PF
N° AIEs Média: X 7 PF
N° AIEs Alta: X 10 PF
Total PF:
107
N° EEs Baixa: X 3 PF
N° EEs Média: X 4 PF
N° EEs Alta: X 6 PF
Total PF:
N° CEs Baixa: X 3 PF
N° CEs Média: X 4 PF
N° CEs Alta: X 6 PF
Total PF:
N° SEs Baixa: X 4 PF
N° SEs Média: X 5 PF
N° SEs Alta: X 7 PF
Total PF:
determina-se todas as funções de todos os tipos (ALI, AIE, EE, SE, CE)
toda função de dados (ALI, AIE) tem sua complexidade funcional classificada
como Baixa, e toda função transacional (EE, SE, CE) é classificada com
complexidade Média.
Fonte: https://nesma.org/themes/sizing/function-point-analysis/early-function-point-counting/
109
5.1.1.3 Método Contagem Detalhada de Pontos de Função
A contagem detalhada é a Contagem de Pontos de Função e é realizada da
seguinte forma:
determina-se todas as funções de todos os tipos (ALI, AIE, EE, SE, CE)
determina-se a complexidade de cada função (Baixa, Média, Alta)
calcula-se o total de Pontos de Função do projeto
Fonte: https://nesma.org/themes/sizing/function-point-analysis/early-function-point-counting/
PF = 35 * Nº ALI + 15 * Nº AIE
Na qual:
Para obtenção das constantes “35” e “15” utilizados na fórmula acima, o método leva
em consideração as seguintes premissas [NESMA, 2005]:
Desta forma, este projeto possui 2 ALIs (Cliente e Produto) e 1 AIE (Fornecedor).
Portanto o tamanho estimado do projeto pelo Método Contagem Indicativa é 85 PF.
PF = 2 x 35 + 1 x 15 = 85 PF
111
Assim, é fundamental que as fórmulas de estimativas considerem as
características de complexidade funcional específicas de cada projeto em questão. As
premissas ou suposições utilizadas na geração das estimativas devem ser
documentadas.
Por exemplo, suponha que um sistema hipotético XPTO a ser desenvolvido, tenha
quatro tabelas pequenas (menos de 20 campos) mantidas por meio das funções de
inclusão, alteração e consulta (usada para a edição dos dados na alteração). Assim,
considera- se que o sistema possui 4 ALIs Simples. O sistema também utiliza uma
tabela de usuário do Sistema de Controle de Acesso, apenas para validação dos dados
de acesso. Assim, considera-se que o sistema possui um AIE Simples. Note que o
usuário não especificou relatórios nem funções de exclusão para esta release. Se
utilizarmos o método contagem indicativa, a contagem seria de 155 Pontos de Função,
obtidos segundo a fórmula abaixo:
PF = 4 ALIs x 35 + 1 AIE x 15
O tamanho está superestimado, o sistema XPTO é muito simples e não atende as
premissas utilizadas na concepção do método Contagem Indicativa, descritas na seção
anterior. Então para maior acurácia da estimativa, utiliza-se o conhecimento inicial do
projeto para aplicar o método “Contagem Indicativa Inteligente”. Tem-se o seguinte:
Cada ALI Simples (Tabelas pequenas) - 7 PFs possui duas Entradas Externas
(inclusão e alteração) de complexidade desconhecida, considera-se médias - 8 PFs (4
x 2) e uma Consulta Externa (recuperação de dados para alteração) de complexidade
desconhecida, considera-se média 4 PFs. Note que o índice multiplicador dos ALIs não
é mais 35 PF e sim 19 PF (8 +7 + 4).
O AIE Simples (dados de acesso - logon e senha) - 5 PFs com uma Consulta
Externa Simples (controle de acesso) com 3 PFs. Note que o índice multiplicador dos
AIEs não é mais 15 PF e sim 8 PF (5 + 3).Então, aplicando o método com novos
índices, tem-se a estimativa de 84 Pontos de Função:
PF = 4 ALIs x 19 + 1 AIE x 8
112
5.4. ESTUDO DE CASOS: ESTIMATIVA DE UM PROJETO DE DESENVOLVIMENTO DE SOFTWARE
3) O prazo deve ser estimado por meio da fórmula de Capers Jones. O sistema é comum,
de complexidade baixa, desenvolvido em PHP para Web.
F1: Manter Cadastro de Usuários do Sistema (Incluir, Alterar, Excluir, Consultar) com as
seguintes informações: Matrícula, Nome, Senha, Função (atendente ou supervisor), e-
mail
OBS: Os Supervisores do sistema serão pré cadastrados com senha padrão. Esta
funcionalidade somente poderá ser executada por supervisores.
F3: Alterar Senha: o usuário entra com a matrícula – senha atual e nova senha. A senha
deve conter no mínimo 5 caracteres.
F4: Esqueceu senha: o usuário digita a matricula, o sistema gera uma nova senha e envia
para o e-mail do usuário em questão.
F5: Manter Cadastro de Clientes (Incluir, Alterar, Excluir e Consultar Detalhes) com as
seguintes informações: CPF, nome, endereço, telefone, celular e e-mail.
113
F6: Manter Cadastro de filmes (Incluir, Alterar, Excluir, e Consultar Detalhes) com as
seguintes informações: código, título, categoria, diretor, atores, sinopse, ano de produção,
gênero, estúdio, distribuidora e país de produção.
F7: Atualizar preço de locação por categoria de filmes com as informações: categoria
filme, preço locação, data atualização.
F8: Registrar locação de filme a cliente com as seguintes informações: CPF, código filme,
data de locação, data devolução prevista, valor locação.
F9: Registrar devolução de filme com cobrança de multa se devolvido fora do prazo (uma
locação por dia de atraso), com as seguintes informações: CPF, Código filme, data
devolução realizada, multa calculada, se aplicável.
F10: Pesquisar Filmes Emprestados para o cliente com devolução pendente, entrando
com o CPF do cliente. A lista deve ser ordenada por data de devolução prevista e conter o
CPF do Cliente, Nome do Cliente, data de locação, data de devolução prevista, Código do
Filme e Título do Filme.
F11: Pesquisar Filme – deve ser apresentada uma lista com todos os filmes que atendem
o critério de busca com total de registros encontrados. O critério de busca é o título do
filme (total ou parcial) combinado com gênero, categoria e situação (disponível,
emprestado, todos). A lista deve apresentar o código do filme, título, gênero, categoria,
ano e situação. A lista deve ser ordenada dinamicamente de acordo com a coluna
escolhida pelo usuário.
F12: Pesquisar Cliente – a função traz uma lista ordenada pelo nome dos clientes com
todos os clientes que atendem o critério de busca com total de registros encontrados. O
critério de busca é o nome ou parte do nome do cliente. A lista contém as seguintes
informações: nome, telefone, celular.
114
F13: Relatório de filmes por cliente (quais filmes cada cliente realizou locação e devolveu,
ordenado por data). Este relatório deve apresentar a lista de clientes em ordem alfabética
e ter como filtro o período (data início e data fim) e apresentar CPF Cliente, Nome Cliente,
Código Filme, Nome Filme, data locação, data devolução realizada. Este relatório deve
conter também os valores pagos pelo cliente, considerando os dados de multa. E
totalizando os resultados.
F14: Relatório de empréstimos por filme (quantas vezes cada filme foi emprestado em
cada mês). Este relatório deve ter como filtro o mês e apresentar o código do filme, nome
do filme e quantas vezes o filme foi emprestado. O usuário pode escolher como ordenar o
relatório por nome do filme ou por totalização de empréstimos.
F15: Envio de requisição de compra para o sistema de compras (externo) cada vez que
um filme for emprestado mais de 15 vezes no mesmo mês. Esse relatório é enviado
automaticamente no fim de cada mês com a lista dos filmes (código, título e distribuidora)
informando os filmes locados mais de 15 vezes no mês corrente. O relatório deve ser
agrupado por distribuidora e enviado na forma de um arquivo xml.
115
F1: Manter Cadastro de Usuários do Sistema (Incluir, Alterar, Excluir, Consultar) com as
seguintes informações: Matricula, Nome, Senha, Função (atendente ou supervisor), e-mail
OBS: Os Supervisores do sistema serão pré cadastrados com senha padrão. Esta
funcionalidade somente poderá ser executada por supervisores.
ALI: Usuário
RL: 1 - Usuário
Complexidade: Baixa
PF: 7 PF
AR:1 – Usuário
Complexidade: Baixa
PF: 3 PF
AR:1 – Usuário
Complexidade: Baixa
PF: 3 PF
Complexidade: Baixa
PF: 3 PF
AR:1 – Usuário
Complexidade: Baixa
PF: 3 PF
AR:1 – Usuário
Complexidade: Baixa
PF: 4 PF
F3: Alterar Senha: o usuário entra com a matrícula – senha atual e nova senha. A senha
deve conter no mínimo 5 caracteres.
117
AR: 1 – Usuário
Complexidade: Baixa
PF: 3 PF
F4: Esqueceu senha: o usuário digita a matricula, o sistema gera uma nova senha e envia
para o e-mail do usuário em questão.
AR:1 – Usuário
Complexidade: Baixa
PF: 4 PF
F5: Manter Cadastro de Clientes (Incluir, Alterar, Excluir e Consultar Detalhes) com as
seguintes informações: CPF, nome, endereço, telefone, celular e e-mail.
ALI: Cliente
118
RL: 1 - Cliente
Complexidade: Baixa
PF: 7 PF
AR:1 – Cliente
Complexidade: Baixa
PF: 3 PF
AR:1 – Cliente
Complexidade: Baixa
PF: 3 PF
AR:1 – Cliente
Complexidade: Baixa
PF: 3 PF
AR:1 – Cliente
119
TD: 8 - CPF, nome, endereço, telefone, celular, e-mail, ação, mensagem
Complexidade: Baixa
PF: 3 PF
F6: Manter Cadastro de filmes (Incluir, Alterar, Excluir, e Consultar Detalhes) com as
seguintes informações: código, título, categoria, diretor, atores, sinopse, ano de produção,
gênero, estúdio, distribuidora e país de produção.
ALI: Filme
RL: 1 - Filme
TD: 11 - código, título, categoria, diretor, atores, sinopse, ano de produção, gênero,
estúdio, distribuidora, país de produção
Complexidade: Baixa
PF: 7 PF
AR:1 – Filme
TD: 13 - código, título, categoria, diretor, atores, sinopse, ano de produção, gênero,
estúdio, distribuidora, país de produção, ação, mensagem
Complexidade: Baixa
PF: 3 PF
AR:1 – Filme
120
TD: 13 - código, título, categoria, diretor, atores, sinopse, ano de produção, gênero,
estúdio, distribuidora, país de produção, ação, mensagem
Complexidade: Baixa
PF: 3 PF
AR:1 – Filme
Complexidade: Baixa
PF: 3 PF
AR:1 – Filme
TD: 13 - código, título, categoria, diretor, atores, sinopse, ano de produção, gênero,
estúdio, distribuidora, país de produção, ação, mensagem
Complexidade: Baixa
PF: 3 PF
F7: Atualizar preço de locação por categoria de filmes com as informações: categoria
filme, preço locação e data atualização.
121
TD: 3 - categoria filme, preço locação, data atualização
Complexidade: Baixa
PF: 7 PF
Complexidade: Baixa
PF: 3 PF
Complexidade: Baixa
PF: 3 PF
F8: Registrar locação de filme a cliente com as seguintes informações: CPF, código filme,
data de locação, data devolução prevista, preço locação.
122
ALI: Locação
RL: 1 – Locação
TD: 7 - CPF, código filme, data devolução prevista, data de locação, data devolução
realizada, multa calculada, preço locação
Complexidade: Baixa
PF: 7 PF
Observação: Os TDs data devolução realizada, multa calculada estão descritos na F9.
TD: 6 - CPF, código filme, data devolução prevista, preço locação, ação, mensagem
Complexidade: Alta
PF: 6 PF
Observação: Os TDs nome do cliente e nome do filme podem ser contados caso a
funcionalidade apresente estas informações para o usuário.
F9: Registrar devolução de filme com cobrança de multa se devolvido fora do prazo (uma
locação por dia de atraso), com as seguintes informações: CPF, Código filme, data
devolução realizada, multa calculada, se aplicável.
Complexidade: Alta
PF: 6 PF
123
Observação: Os TDs nome do cliente e nome do filme podem ser contados caso a
funcionalidade apresente estas informações para o usuário. Observe que o preço da
locação e a data de prevista de devolução, utilizados para o cálculo da multa não são
contados como TD porque não atravessam a fronteira da aplicação.
F10: Pesquisar Filmes Emprestados para o cliente com devolução pendente, entrando
com o CPF do cliente. A lista deve ser ordenada por data de devolução prevista e conter o
CPF do Cliente, Nome do Cliente, data de locação, data de devolução prevista, Código do
Filme e Título do Filme.
TD: 8 - CPF do Cliente, Nome do Cliente, data de locação, data de devolução prevista,
Código do Filme, Título do Filme, ação, mensagem
Complexidade: Média
PF: 4 PF
F11: Pesquisar Filme – deve ser apresentada uma lista com todos os filmes que atendem
o critério de busca com total de registros encontrados. O critério de busca é o título do
filme (total ou parcial) combinado com gênero, categoria e situação (disponível,
emprestado, todos). A lista deve apresentar o código do filme, título, gênero, categoria,
ano e situação. A lista deve ser ordenada dinamicamente de acordo com a coluna
escolhida pelo usuário.
A F11 descreve o processo elementar Pesquisar Filmes contado como Saída Externa.
Porque a funcionalidade deve apresentar o total de registros encontrados, ou seja, um
dado calculado.
124
TD: 11 – critério de busca (título ou parte título filme), título do filme, gênero, categoria,
situação, código do filme, ano, total de registros, como ordenar, ação, mensagem
Complexidade: Média
PF: 5 PF
F12: Pesquisar Cliente – a função traz uma lista ordenada pelo nome dos clientes com
todos os clientes que atendem o critério de busca com total de registros encontrados. O
critério de busca é o nome ou parte do nome do cliente. A lista contém as seguintes
informações: nome, telefone, celular.
A F12 descreve o processo elementar Pesquisar Clientes contado como Saída Externa.
Porque a funcionalidade deve apresentar o total de registros encontrados, ou seja, um
dado calculado.
AR: 1 - Cliente
TD: 6 - critério de busca (nome ou parte do nome do cliente), nome do cliente, telefone,
celular, total de registros, ação, mensagem
Complexidade: Baixa
PF: 4 PF
F13: Relatório de filmes por cliente (quais filmes cada cliente realizou locação e devolveu,
ordenado por data). Este relatório deve apresentar a lista de clientes em ordem alfabética
e ter como filtro o período (data início e data fim) e apresentar CPF Cliente, Nome Cliente,
Código Filme, Nome Filme, data locação, data devolução realizada. Este relatório deve
conter também os valores pagos pelo cliente, considerando os dados de multa. E
totalizando os resultados.
A F13 descreve o processo elementar Relatório de filmes por cliente contado como Saída
Externa. Porque a funcionalidade deve apresentar uma totalização dos valores pagos pelo
cliente.
TD: 12 - data início, data fim, CPF Cliente, Nome Cliente, Código Filme, Nome Filme, data
locação, data devolução realizada, valor pago, total pago, ação, mensagem
Complexidade: Média
PF: 5 PF
F14: Relatório de empréstimos por filme (quantas vezes cada filme foi emprestado em
cada mês). Este relatório deve ter como filtro o mês e apresentar o código do filme, nome
do filme e quantas vezes foi emprestado. O usuário pode escolher como ordenar o
relatório por nome do filme ou por totalização de empréstimos.
A F14 descreve o processo elementar Relatório de empréstimos por filme contado como
Saída Externa. Porque a funcionalidade deve apresentar a totalização de quantas vezes o
filme foi emprestado, dado calculado.
TD: 7 – mês, código do filme, nome do filme, total empréstimos, como ordenar, ação,
mensagem
Complexidade: Média
PF: 5 PF
F15: Envio de requisição de compra para o sistema de compras (externo) cada vez que
um filme for emprestado mais de 15 vezes no mesmo mês. Esse relatório é enviado
automaticamente no fim de cada mês com a lista dos filmes (código, título e distribuidora)
informando os filmes locados mais de 15 vezes no mês corrente. O relatório deve ser
agrupado por distribuidora e enviado na forma de um arquivo xml.
A F15 descreve o processo elementar Enviar requisição de compra contado como Saída
Externa. Porque a funcionalidade deve realizar um cálculo para identificar os filmes
emprestados mais de 15 vezes.
126
SE: Enviar Requisição de Compra
Complexidade: Baixa
PF: 4 PF
Observe que os campos acessados que não atravessam a fronteira da aplicação não
devem ser contados como Tipo de Dados (TD). A data é o atributo de entrada para
disparar o processo elementar.
Memória de Cálculo
127
[F2] Controle de Acesso SE 1 - Usuário 4 – Matricula, Senha, ação, B 4 PF
mensagem
128
[F7] Atualizar Preço de EE 1 – Preço de 5 - categoria filme, preço locação, B 3 PF
Locação Locação data atualização,ação, mensagem
Total: 127 PF
129
Estimativa de Tamanho Funcional:
Estimativa de Prazo:
Conforme descrito no Estudo de Casos, o sistema é Web de complexidade baixa. Desta
forma, deve ser aplicado o expoente t = 0,34 da fórmula de Capers Jones.
0,34
Prazo Estimado = 172 = 5,8 meses
Estimativa de Esforço:
Conforme descrito no Estudo de Casos, o sistema será desenvolvido em PHP e a
produtividade média da equipe é de 10 hh/PF.
Estimativa de Equipe:
Considerando a dedicação de desenvolvimento do projeto de 7 horas/dia e o mês com 22
dias úteis.
130
131
MÓDULO 6. ROTEIRO DE MÉTRICAS DE SOFTWARE DO SISP
Objetivos do módulo
Este módulo tem como objetivo:
132
Estabelecer Regras para tratar as mudanças de requisitos
Importante: Em projetos menores que 100 PF onde não se aplica o uso da fórmula
de Capers Jones, é comum o estabelecimento de prazo por faixa de tamanho do projeto
com base na produtividade.
133
Prazo máximo (em dias úteis)
Tamanho do Projeto
Projetos Complexidade Baixa Projetos Complexidade Média
Até 10 PF 9 dias 15 dias
De 11 PF a 20 PF 18 dias 30 dias
De 21 PF a 30 PF 27 dias 45 dias
De 31 PF a 40 PF 36 dias 60 dias
De 41 PF a 50 PF 45 dias 75 dias
De 51 PF a 60 PF 54 dias 90 dias
De 61 PF a 70 PF 63 dias 105 dias
De 71 PF a 85 PF 70 dias 110 dias
De 86 PF a 99 PF 79 dias 110 dias
134
essencial a definição de métricas para dimensionar o tamanho de outros tipos de projetos
de manutenção, os quais são itens não mensuráveis pelo CPM.
Além disso, o CPM não tem como objetivo suportar contratos de prestação de
serviços de desenvolvimento e manutenção de sistemas. Assim, torna-se necessário criar
roteiros complementares, contemplando questões não abordadas pelo manual.
onde:
135
de Impacto para o cálculo de PF das funcionalidades alteradas e excluídas. Segue a
fórmula de cálculo utilizada no dimensionamento de projetos de melhoria:
PF_CONVERSÃO = PF_INCLUÍDO
Quando o sistema estiver fora da garantia ou não tiver sido desenvolvido pela
empresa contratada, deverá ser estimado e calculado o tamanho do projeto de
137
manutenção corretiva. Nestes casos, a aferição do tamanho em pontos de função da
funcionalidade ou das funcionalidades corrigidas deve considerar um fator de
impacto (FI) sobre o PF_ALTERADO.
PF_CORRETIVA = FI x PF_ALTERADO
50% quando estiver fora da garantia e a correção for feita pela mesma
empresa que desenvolveu a funcionalidade.
75% quando estiver fora da garantia e a correção for feita por empresa
diferente daquela que desenvolveu a funcionalidade.
São considerados nesta categoria projetos que precisam ser migrados para
outra plataforma. Por exemplo, um sistema legado em COBOL precisa ser
redesenvolvido em JAVA; o banco de dados de um sistema legado precisa ser
migrado para o DB2.
138
Segue a fórmula de cálculo:
140
complexidade (3PF), ou seja, 0,6 PF, independentemente da complexidade da
funcionalidade alterada. Segue a fórmula de cálculo:
141
Observe que se trata de mudança em validação com regra de negócio não
funcional.
PF_ADAPTATIVA = FI x PF_ALTERADO
142
É importante ressaltar que as funções de dados associadas aos dados
atualizados não devem ser contadas, considerando que não há mudanças nas
estruturas dos Arquivos Lógicos Internos.
PF_APURAÇÃO_BD = PF_INCLUÍDO
PF _CONSULTA_PRÉVIA = PF_INCLUÍDO
Caso a Apuração Especial - Base de Dados seja solicitada após uma demanda de
consulta prévia, deve-se aplicar um fator de 60% na fórmula de contagem da
Apuração Especial - Base de Dados, seguindo a fórmula abaixo.
143
Deve-se destacar que estas funções são executadas apenas uma vez, não
fazendo parte da aplicação. Nestes casos, considera-se contagem de pontos de
função das funcionalidades desenvolvidas. Frequentemente, estas funcionalidades
são classificadas como Saídas Externas. Também podem ser classificadas como
Consultas Externas, caso não possuam cálculos ou criação de dados derivados.
PF_APURAÇÃO_RELATÓRIOS = PF_INCLUÍDO
145
Entretanto, uma vez não constatado o problema apontado pelo cliente ou o mesmo
for decorrente de regras de negócio implementadas ou utilização incorreta das
funcionalidades, será realizada a aferição do tamanho em pontos de função das
funcionalidades verificadas sobre as quais o cliente reportou erro, sendo
considerado 20% do tamanho funcional das funcionalidades com solicitação de
análise pelo órgão contratante, caso não exista documentação de testes disponíveis
dessas funcionalidades, segundo a fórmula abaixo:
146
PF_Testes = Somatório dos Tamanhos das Funções Transacionais Testadas x
0,15
PF_COMPONENTE = FI x PF_ALTERADO
147
Segue um exemplo de manutenção de componentes:
148
A contagem do PF_RETRABALHO leva em conta o esforço já realizado no
processo de desenvolvimento da funcionalidade até o momento da solicitação
de mudança de requisitos;
Requisito Original
Fator Incluir Alterar Excluir
Função Função Função
Acréscimo - - -
Alteração de
75% 75% -
Tipo da Mudança Requisitos
Alteração
de Requisito Alteração de
0,6 PF 0,6 PF -
Interface
Desistência 130% 105% 30%
149
Para fins de planejamento ou de faturamento, a quantidade total de pontos de
função será obtida da seguinte forma:
Onde:
PF_Alterado: requisito original a ser alterado.
SE: Relatório de Alunos
AR: 2 TD:7 - M - 5 PF
Fator Impacto Fases Concluídas: Considerar todas as fases até a fase em que
ocorreu a mudança - Homologação - 90%
PF_Projeto_ Melhoria = 5 PF
O cálculo de PF total da demanda é o seguinte:
PF_TOTAL = PF_PROJETO + Σ PF_RETRABALHO
PF_TOTAL = 5 + 3,375 = 8,375 PFs
151