Você está na página 1de 82

MÉTRICAS DE

SOFTWARE
NPG1384

Prof. Msc. Emmanuel Nolêto


contato@emmanuelnoleto.com.br
Qual a necessidade
de medir?
Porque medir?
● Para uma tomada de decisão;
● Poder comparar com uma referência e passar a
representar um significado;
● Utilizar o significado para em um contexto para que o
mesmo tenha alguma importância;
● Aplicar o significado e a importância para encontrar a
visibilidade e consequentemente agir diante das
discrepâncias.
O que é medir?

É o processo pelo qual números ou símbolos são atributos a


atributos de entidades do mundo real para descrevê-las com
regras bem definidas.
Para que medir software?
● Forma de mapeamento de um conjunto de
funcionalidades, ou objetos que enviam ou recebem
dados, em uma forma matemática.
● As medidas representam a forma numérica as
características ou atributos de um objeto.
● Possibilita a comparação de um software por meio de
normalização.
● Ajuda a gerência de escopo em relação aos projetos.
Análise de Ponto de Função
Criada por Allan Albrecth da IBM em 1979

● É uma medida de dimensionamento de software através da funcionalidade


implementada (ou a implementar) em um sistema sob o ponto de vista do
usuário;
● Grupo de Usuários:
○ IFPUG - International Function Point Users Group
○ www.ifpug.org.br
● Regras de Contagem descritas no manual:
○ CPM - Counting Practices Manual - Versão 4.3.1
● Certificação de Especialistas:
○ CFPS - Certified Function Point Specialist
Pontos de Função

● O método de medição de tamanho funcional do IFPUG é


conhecido como Análise de Pontos de Função (APF) e suas
unidades de tamanho funcional são chamadas de Pontos de
Função;
● PF é uma medida de tamanho funcional;
● PF considera as funcionalidades sob o ponto de vista do
usuário;
● Padrão em conformidade com a ISO/IEC 14143-1:2007.
Vantagens em usar

● Fornecer suporte à análise de qualidade e produtividade;


● Estimar o custo e recursos requeridos para o
desenvolvimento, melhoria e manutenção do software.
Vantagens em usar

● Fornecer um fator de normalização para a comparação de


software.
● Determinar o tamanho de um pacote de aplicação adquirido,
por meio do dimensionamento funcional de todas as funções
incluídas no mesmo (make or buy);
Definição

● O que é Análise de Pontos de Função?


○ Técnica para medir o tamanho funcional de um software

do ponto de vista do usuário.


Porquê usar APF

● Medir a funcionalidade implementada no software, que o usuário


solicita e recebe;
● Medir a funcionalidade impactada pelo desenvolvimento, melhoria e
manutenção de software, independentemente da tecnologia utilizada na
implementação.
● OBS: Mede apenas Requisitos Funcionais!
Não entra nas medidas!!!

● Requisitos Não Funcionais.


● Exemplo:
○ Usabilidade;
○ Desempenho;
○ Segurança;
○ Acessibilidade.
Não entra nas medidas e nem se preocupa!!!

● Tecnologia Utilizada
○ (sistemas em diferentes linguagens, diferentes ambientes de
implantação, sistemas operacionais utilizados, versões de browsers,
etc).
● Arquitetura de Software
○ (modelagem física de dados, estrutura de banco de dados,
componentes, etc).
● Infra-Estrutura
○ (conexões de rede, disposição física de equipamentos, quantidade de
computadores em operação).
Visão do usuário

● Definição:
○ Requisitos Funcionais do Usuário, conforme
percebidos pelo usuário;
○ São um subconjunto dos requisitos do usuário que
descrevem o que o software deverá fazer em termos
de tarefas e serviços.
Visão do usuário

● Representa uma descrição formal das necessidades de


negócios do usuário, na linguagem do usuário.
● Os desenvolvedores traduzem a informação do usuário para
informações em linguagem técnica a fim de prover uma
solução.
Visão do usuário
● É uma descrição das funções do negócio;
● Pode ser feito por declaração verbal pelo usuário através de seu
ponto de vista
● Pode variar na forma física
○ Exemplo: catálogo de transações, propostas, documento de
requisitos, especificações externas, especificações detalhadas,
manuais do usuário
● OBS: “Uma medição de tamanho funcional é realizada utilizando a
informação em uma linguagem que é comum para o usuário(s) e
desenvolvedores”.
Exemplo
Contagem, para que ela serve?

● Determina o tipo de contagem de ponto de função e o


escopo da contagem necessária para obter a resposta
ao problema de negócios sob investigação;
● Influencia o posicionamento da fronteira entre o
software sob análise e o software vizinho.
Exemplo de contagem

● Fornecer o tamanho funcional de um projeto como uma


entrada para o processo de estimativa a fim de determinar o
esforço para desenvolver a primeira versão de uma aplicação;
● Fornecer o tamanho funcional da base instalada das
aplicações para determinar os custos de sustentação por
ponto de função;
● Fornecer o tamanho funcional de dois pacotes para permitir a
comparação de funcionalidade oferecida por cada um dos
pacotes.
Medição de tamanho funcional
Obter a Documentação Disponível

● Uma documentação adequada pode incluir:


● Requisitos
○ (documento de visão, casos de uso, regras de negócio);
○ Modelos de dados/objetos;
○ Diagramas de classe;
○ Diagramas de fluxo de dados;
○ Descrições procedurais;
○ Layout de relatórios e telas;
○ Manuais de usuário.
Obter a Documentação Disponível

Se não há documentação suficientemente disponível, deve


se buscar o acesso aos especialistas no negócio para cobrir
as lacunas da documentação.
Escopo da Contagem e Fronteira

● Escopo
○ O escopo da contagem define o conjunto dos
Requisitos Funcionais do Usuário que serão incluídos
na contagem de pontos de função.
● Fronteira
○ A fronteira é uma interface conceitual entre o
software em análise e seus usuários.
Tipos de Contagem

● De acordo com o seu propósito, as contagens de pontos de função podem


ser identificadas da seguinte maneira:
○ Contagem de PF de projeto de desenvolvimento
■ PF associados com a instalação inicial de um software novo.
○ Contagem de PF de projeto de melhoria
■ PF associados com a melhoria de um software existente.
■ Inclui funcionalidade que é adicionada modificada ou excluída.
○ Contagem de PF da aplicação
■ PF associados com uma aplicação instalada.
Diagrama dos Tipos de Contagem
Escopo dos Tipos de Contagem

● O escopo de uma contagem de projeto de


desenvolvimento inclui todas as funções impactadas
(construídas ou customizadas) pelas atividades do
projeto.
● O escopo de uma contagem de pontos de função de
projeto de melhoria inclui todas as funções que estão
sendo incluídas, alteradas e excluídas.
Escopo dos Tipos de Contagem

● O escopo de uma contagem de pontos de função da


APLICAÇÃO pode incluir:
○ apenas as funções sendo usadas pelo usuário;
○ todas as funções disponibilizadas.
● O escopo das duas contagens é diferente resultando em
um tamanho funcional diferente medido para mesma
aplicação.
Escopo da Contagem

● O posicionamento da fronteira é independente do


escopo!
● O escopo pode conter mais de uma aplicação.
Medição x Ciclo de Vida do Software
Considerações Tipos de Contagem

A precisão da contagem está relacionada com a maturidade


de conhecimento sobre os requisitos.

Para a contratação de um Projeto de Desenvolvimento


podemos ter diferentes tamanhos de contagem, conforme o
gráfico a seguir.
Estimativa x Ciclo de Vida do Software
O que é Scope Creep ?

● A medida que o escopo é esclarecido e as funções


desenvolvidas, é bastante comum identificar funcionalidades
adicionais que não foram especificadas nos requisitos
originais.
Exemplo

● O Projeto de Desenvolvimento de um Sistema de Locação de


Veículos, com todos os requisitos especificados, totalizou 250
PF.
● À medida que o desenvolvimento do sistema iniciou-se, novos
requisitos foram identificados.
● O Gestor do Sistema havia contratado 30% de Scope Creep.
● Nesse contexto, o fornecedor poderia desenvolver até 325 PF
para este Sistema.
Exemplo
Visão Geral da APF
Função de dados

● Representa a funcionalidade fornecida ao usuário para


atender requisitos de armazenamento de dados internos e
externos;
● Uma função de dados é um ALI ou um AIE;
● ALI - APLICAÇÃO SOBRE CONTAGEM;
● AIE - APLICAÇÃO REFERENCIADA.
Como medir funções de dados?

1. Identificar as funções de dados.


2. Classificar cada função de dado como um ALI ou AIE.
3. Determinar a complexidade dos ALI ou AIE e sua contribuição
para o tamanho funcional.
Como identificar funções de dados?

● Utilizar um Modelo Lógico de Dados.


● Identificar todos os dados e informações de controle
logicamente relacionados e reconhecidos pelo usuário.
● Excluir entidades que não são mantidas por nenhuma
aplicação.
● Agrupar entidades relacionadas que são dependentes
Como identificar funções de dados?

● Excluir as entidades classificadas como Dados de código


● Excluir entidades que não contém atributos necessários para
o usuário.
● Remover entidades associativas que contém apenas chaves
estrangeiras;
Como classificar funções de dados?

● Classificar como um ALI se o dado é mantido pela aplicação


que está sendo medida.
● Classificar como um AIE se:
○ É referenciado, mas não mantido, pela aplicação que está
sendo medida e..
○ É identificado como um ALI em uma ou mais aplicações
Exemplo

● A aplicação de contas a receber identificou uma conta


paga e precisou atualizar o arquivo lógico conta corrente
da aplicação bancária que era apenas referenciado.
● O arquivo lógico conta corrente passa, então a ser um
ALI para aplicação de contas a receber.
O que é um arquivo lógico interno

● É um grupo de dados ou de informações de controle


logicamente relacionados, reconhecido pelo usuário, mantido
dentro da fronteira da aplicação que está sendo contada.
● Armazenar dados mantidos através de um ou mais processos
elementares da aplicação que está sendo contada.
O que é Mantido?

● Inserido, atualizado,
excluído, deletado,
alterado, modificado,
incluído, apagado.
● Termos relacionados a
manipulação de dados.
Exemplos de ALI

● Dados de Usuário (login, senha);


● Perfis de Usuário (administrador, operador);
● Dados de Negócio (Vendas, Compras, Pedidos, Contas,
Boletos, Pagamentos);
● Dados de Auditoria (Dados antes e depois de alterados);
● Dados de Histórico (Ocorrências);
● Dados de Controle (Ex: data/hora de início de um processo
batch, quantidade de linhas por página de relatório).
Exemplos Não ALI

● Tabelas como Solução ● Arquivos de View


de Performance ● Arquivos de Índices
● Arquivos Temporários ● Arquivos introduzidos
(Temp) devido à Tecnologia
● Arquivos de ● Dados de Backup
Trabalho(Work Files) ● LOGs automáticos
● Arquivos de Sort
(Classificação)
Arquivos de Interface Externa

● É um grupo de dados ou de informações de controle logicamente


relacionados, reconhecido pelo usuário, referenciado pela aplicação que
está sendo contada, porém, mantido dentro da fronteira de uma outra
aplicação.
● A intenção primária de um AIE é armazenar dados referenciados
através de um ou mais processos elementares dentro da fronteira da
aplicação que está sendo contada. Isto significa que um AIE contado
para uma aplicação deve ser um ALI em outra aplicação.
Exemplo
Observações

● A Aplicação Contada referência (utiliza) CEP da


aplicação Correios.
● CEP NÃO é mantido pela Aplicação Contada, mas é
mantido pela Aplicação Correios.
● CEP é um ALI para Aplicação Correios.
Exemplo de AIE
Diferença entre ALIs e AIEs

● A diferença primária entre um arquivo lógico interno e


um arquivo de interface externa é que um AIE não é
mantido pela aplicação que está sendo contada,
enquanto que um ALI é mantido pela aplicação que está
sendo contada.
Identificar Funções de Dados

● São mais facilmente identificadas quando se utiliza um


modelo lógico de dados;
● Isto não impede a medição em ambientes onde técnicas
alternativas de modelagem de dados ou objetos são
empregadas.
Termos Comuns para APF

● Informações de Controle
○ Informações de
Controle são dados
que influenciam um
processo elementar.
○ Especificam o que,
quando ou como os
dados serão
processados.
Termos Comuns para APF

● Usuário
○ Um usuário é qualquer pessoa ou coisa que se comunica ou
interage com o software a qualquer momento.
○ Exemplos: funcionários que operam o sistema, um temporizador,
um sistema ou equipamento que aciona um processo
● Significativo
○ É reconhecido pelo usuário e satisfaz um Requisito Funcional do
Usuário
Termos Comuns para APF

● Reconhecido pelo Usuário


○ O termo reconhecido pelo usuário refere-se a requisitos definidos
para processos e/ou grupos de dados que foram acordados e
entendidos tanto pelo(s) usuário(s) quanto pelos desenvolvedor(es)
de software.
○ Por exemplo, usuários e desenvolvedores concordam que uma
Aplicação de Recursos Humanos terá funcionalidade para manter e
guardar informações do Funcionário na aplicação.
Termos Comuns para APF

● Mantido
○ O termo mantido refere-se à habilidade de incluir,
modificar ou excluir dados a partir de um processo
elementar.
○ Exemplos incluem, mas não estão limitados a:
■ Inclusão, Modificação, Exclusão, Carga Inicial, Revisão, Atualização,
Atribuição e Criação.
Termos Comuns para APF

● Processo Elementar
○ Um processo elementar é a menor unidade de atividade que
tem significado para o usuário.
○ Deve-se compor e/ou decompor os Requisitos Funcionais do
Usuário até a menor unidade de atividade, a qual satisfaz os
itens a seguir:
■ É significativo para o usuário;
■ Constitui uma transação completa;
■ É auto contida e deixa o negócio da aplicação contada em
um estado consistente.
Exemplos: Processos Elementares
Exemplos: Processos Elementares

● Novo: usuário insere os dados de cadastro e confirme no


botão OK.
● Alterar: usuário altera os dados de cadastro e confirme
no botão OK.
● Excluir: usuário exclui um registro e confirma no botão
OK.
● Pesquisar: usuário informa um Código do Fornecedor e
aciona o botão Pesquisar.
Complexidade e Contribuição

● Complexidade Funcional
○ Corresponde ao peso atribuído a Função de Dados;
○ Obtém-se o peso através da identificação da quantidade de Registros
Lógicos Referenciados e dos Itens de Dados;
○ Poderá ser:
■ Baixa;
■ Média;
■ Alta.
Complexidade e Contribuição

● Complexidade Funcional
○ Etapa 1
■ Identificar Registros Lógicos (TR/RLR)
● Usualmente chamado: Tipo de Registro, Registro Lógico Elementar
ou Registro Lógico Referenciado.
○ Etapa 2
■ Identificar Itens de Dados (TD/DER)
● Usualmente chamado: Tipos de Dados, Dados Elementares
Referenciados ou Itens de Dados.
RLR

● Definição
○ Registro Lógico Referenciado (RLR) ou Tipo de Registro
(TR) é um subgrupo de dados reconhecido pelo usuário
dentro de uma função de dados (ALI ou AIE).
● Regra
○ Conte um RLR para cada função de dados (por padrão
cada função de dado tem um subgrupo de DERs para ser
contado como um RLR)
Outras Regras

● Conte um RLR adicional para cada subgrupo de DER lógico


adicional (com a função de dados) que contém mais de um
DER:
○ Entidade associativa com atributos não-chave ;

○ Subtipo (outro além do primeiro subtipo);


○ Entidade atributiva, em um relacionamento que não seja obrigatório
1-1.
O que é um DER?

● Um Dado Elementar Referenciado (DER) ou Tipo de Dado (TD)


é um campo:
○ Único;
○ Reconhecido pelo usuário;
○ Não repetido.
● Conte um DER para cada campo único, reconhecido pelo
usuário e não repetido, mantido ou recuperado na função de
dados durante a execução de todos os processos
elementares no escopo da contagem.
Exemplo
Complexidade e Contribuição

● Funções de Dados ALI e AIE: Complexidade


Complexidade e Contribuição

● Contribuição
○ Corresponde ao valor em Pontos de Função atribuído a Função de
Dados.
● ALI : Contribuição
Complexidade e Contribuição

● AIE : Contribuição
Exemplo
Exemplo
Exemplos

● Uma função de dados com 51 DERs e 2 RLRs com


complexidade funcional alta.
● Se a função de dados for:
○ 1 ALI = ????
● Se a função de dados for:
○ 1 AIE = ????
Exemplos - resposta

● Uma função de dados com 51 DERs e 2 RLRs com


complexidade funcional alta.
● Se a função de dados for:
○ 1 ALI = 15 PF
● Se a função de dados for:
○ 1 AIE = 10 PF
Diretrizes para Identificação de Arquivos
Lógicos

● Entidade
independente
○ É significativa ou tem
sentido para o
negócio por si só,
sem a presença de
outras entidades.
Diretrizes para Identificação de Arquivos
Lógicos
● Entidade dependente
○ Não é significativa ou não tem sentido para o negócio por si só, sem a
presença de outras entidades, de modo que:
■ Uma ocorrência da entidade X deve estar ligada a uma ocorrência da
entidade Y;
■ A eliminação de uma ocorrência da entidade Y resulta na eliminação de
todas as ocorrências relacionadas da entidade X.
Observação
● Toda entidade dependente é um registro
lógico.
Entidades Associativas com atributos chaves
Entidades Associativas com atributos chaves
Observação

● Os requisitos devem dizer a qual ALI pertence o Resultado do Estudante


no Curso;
● Verificar a qual ALI a informação pertence para contar 2 RLRe os Tds
nos ALIs equivalentes.
Entidade Associativa Independente
Observação

● Existem processos elementares para manter


○ Funcionário, Funções Atribuídas e Funções;
○ Excluir Funções Atribuídas não exclui Funcionário e
nem Funções;
○ As três entidades são independentes.
Dados de Código

● Dados de código são facilidades criadas para fornecer


uma lista de valores válidos que um atributo descritivo
pode ter;
● São considerados dados estáticos;
● Geralmente contém código e descrição e/ou mais algum
atributo padrão, como data, abreviação, sigla, etc.
Exemplo de dados de código

● Código Estado / Sigla Estado / Nome Estado


● Código Departamento / Descrição Departamento
● Código Cargo / Nome Cargo / Data Criação

Os dados do código não são contados mesmo que sejam


mantidos pela aplicação, ou seja, faça a inclusão, exclusão e
edição.
Referência

● Professora Nádia Rafaela M. Costa

Você também pode gostar