estimativa de software usando pontos de função
DESCRIPTION
Aula sobre medição e estimativa de tamanho de software usando Análise de Pontos de Função.TRANSCRIPT
1
Estimativas e Medição em Projeto de Software
Estimativas e Medição em Projeto de Software
Métrica com Pontos de Função (PF)
Cláudio Roberto [email protected]
Gerência de Projetos de Informática
2
Objetivos
• Apresentar os conceitos de Estimativas e Medição em Projeto de Software
• Apresentar a técnica de Pontos de Função para estimativa de medição de projeto de software.
3
O problema
• Dado um projeto de desenvolvimento de software, estabelecer:– Tamanho e perfil da equipe
– Prazos
– Custos
4
Conceitos Básicos
• Métrica– Uma medida quantitativa do grau que um sistema,
componente, ou processo possui um determinado atributo (IEEE Std 610.12-1990).
– As métricas vão permitir que um processo ou um produto do ciclo de desenvolvimento de um sistema seja analisado da mesma forma que um objeto físico pode ser caracterizado através do seu tamanho, cor ou peso.
5
Métricas de Projeto
• Primeiro uso: nas estimativas
• Após: monitoração e controle
• Objetivo:– minimizar (e prever) o prazo de desenvolvimento
– medir a qualidade do produto
6
Métricas de Projeto
• Cada projeto deve medir:– Entradas (recursos, pessoal, ambiente), – Saídas (medida dos produtos intermediários
durante o processo de Eng.Software), e – Resultados (indicam a efetividade dos
produtos finais)
7
Tipos de Medidas
• Medidas diretas (Ex: comprimento do parafuso), e
• Medidas indiretas (Ex: qualidade dos parafusos produzidos).
8
Medidas Em Relação ao Software...
• Diretas - linhas de código (LOC) produzidas, velocidade de execução, defeitos relatados.
• Indiretas: funcionalidade, qualidade, complexidade, confiabilidade, manutenibilidade.
9
Métricas Orientadas a Tamanho
• Consideram o tamanho do software produzido.
• Referem-se a todas as atividades da Engenharia (análise, projeto, codificação, teste).– Ex: Linhas de código (LOC)
10
Linhas de código (LOC)
• Cada projeto pode obter as seguintes métricas a partir das linhas de código:– Erros por KLOC (K = milhares)– Defeitos por KLOC– $ por LOC– Páginas de documentação por KLOC– Erros por pessoa/mês– LOC por pessoa/mês– $ por pagina de documentação
11
Exemplo de métricas orientadas a tamanho
Projeto LOCEsforço(mês)
$(Mil)
Pág. Doc
Erros Defeitos Pessoas
Alfa 12.100 24 168 365 134 29 3
Beta 27.200 62 440 1.224 321 86 5
Gama 20.200 43 314 1.050 256 64 6
... ... ... ... ... ... ... ...
12
Linha de Código - Observações
• Não é muito utilizada como parâmetro de estimativa, pois requer um nível de detalhes difícil de alcançar:– Padronização na forma de codificar– Manter apenas uma linguagem de
programação– Não diferencia linhas de código geradas por
ferramentas CASE daquelas criadas manualmente
13
Métricas Orientadas por Função
• Consiste em um método para medição de software do ponto de vista do usuário
• Tem a funcionalidade como fator de normalização. • Dimensiona um software, quantificando a funcionalidade
proporcionada ao usuário a partir do seu desenho (projeto) lógico e não dos detalhes de implementação.
• A medida é PONTO por FUNÇÃO (FP – Function
Point). – Pontos de Função (FP) definem uma relação empírica baseada
em medidas de contagem do domínio de aplicação do software (requisitos) e à avaliação da complexidade do software.
14
Objetivo da análise de PF
• A análise considera as várias formas com que os usuários interagem com o sistema, com os seguintes objetivos:
1. Fornecer medidas consistentes;
2. Medir funcionalidades que o usuário solicita ou recebe;
3. Independência da tecnologia;
4. Método simples.
15
O Processo de Contagem de PF
1Determinar tipo de Contagem
2Identificar escopo da contagem
e fronteira da aplicação
3.1Contar funções do
tipo dados
3.2Contar funções do
tipo transação
4Totalizar PF não
ajustados (3.1 + 3.2)
5 (opcional)Determinar valor do
fator de ajuste
6Calcular os PF
ajustados (5 + 4)
16
Elementos da contagem de PF
Fronteira da Aplicação
Entradas Externas(EE)
Consultas Externas(CE)
Arquivos de Interfaces Externas
(AIE)
Saídas Externas(SE)
Arquivos Lógicos Internos
(ALI)
17
Tipo de Contagem
• São três:– Contagem de um projeto de desenvolvimento
(incluindo migração)– Contagem de um projeto de melhoria– Contagem de uma aplicação em produção
(ou baseline)
18
Escopo da Contagem
• O escopo define se a contagem abrangerá um ou mais sistemas ou apenas parte de um sistema.
• Por exemplo:– Todas as funcionalidades disponíveis– Apenas as funcionalidades efetivamente
utilizadas pelo usuário– Apenas algumas funcionalidades específicas
(relatórios, transações cadastrais, etc.)
19
Fronteira da Aplicação
• É a interface conceitual que delimita o software que será medido e o mundo exterior (os atores de interface)– Ator = pessoa ou sistema que interage com a
aplicação, recebendo ou enviando dados
20
Algumas regras para identificar as fronteiras
• Deve ser feita com base no Ponto de Vista do Usuário (que ele pode entender e descrever)
• Baseada na separação das funções relacionadas pelos processos do negócio, não considerando tecnologias (banco de dados, p. ex.)
• Obter a documentação do sistema• Verificar como os grupos de dados são mantidos• Identificar as entidades (dados) e processos
(casos de uso, por exemplo)
21
Funções do Tipo Dado
• Representam a funcionalidade oferecida ao usuário para cumprir requisitos de dados
• Podem ser de dois tipos:– Arquivo Lógico Interno (ALI)– Arquivo de Interface Externa (AIE)
• O nome “arquivo” refere-se a grupos de dados logicamente correlatos e não à sua implementação física
22
Arquivo Lógico Interno (ALI)
• Um grupo lógico de dados ou de informações de controle, identificável pelo usuário, mantido dentro da fronteira da aplicação que está sendo contada.
• Armazena dados mantidos por um ou mais processos (transações) da aplicação em questão.– Ex: tabelas de banco de dados atualizadas pela
aplicação (não considerar chaves primárias do tipo identificador, como “id” ou “seqüência”).
23
Arquivo de Interface Externa (AIE)
• Um grupo lógico de dados ou informações de controle, identificável pelo usuário, mantido fora da fronteira da aplicação que está sendo contada.
• Exemplos: – tabelas de banco de dados lidas pela aplicação, mas
mantidas por outra– Arquivos externos (gerados externamente)– Mensagens de dados (em um protocolo) gerados
externamente
24
Atribuindo complexidade a um ALI/AIE
• Identificar os TERs e TEDs– TER – Tipo de elemento de registro
• Subgrupo de dados dentro de um ALI/AIE reconhecível pelo usuário
– TED – Tipo de elemento de dado• Campo único, não repetitivo e reconhecível pelo
usuário
25
Tabela de referência - Complexidade de ALI’s e AIE’s
26
Peso das Funções de Dados
27
Funções de transação
• Representam a funcionalidade oferecida ao usuário para processar dados da aplicação
• Podem ser de três tipos:– Entrada Externa (EE)– Saída Externa (SE)– Consulta Externa (CE)
28
Entrada Externa (EE)
• Cada transação de entrada é contada.• A transação deve atualizar uma base de
dados com inclusão, alteração ou exclusão.– Transação pode ser interpretada como uma
rotina/processo que executa um conjunto de ações atômicas que produz um resultado visível e de valor ao usuário do sistema.
– Pode ser mapeado em telas, formulários (em janelas), páginas, etc.
29
Saída Externa (SE)
o Relatórios, telas, mensagens de erros e qualquer processo que é visível externamente ao sistema (caso de uso).
o Deve obrigatoriamente calcular ou criar dados derivados como detalhes de subtotais, arquivos intermediários internos ou alterar o resultado do comportamento do sistema.
30
Consulta Externa (CE)
o É uma funcionalidade de consulta simples, que através de uma solicitação do usuário (uma entrada on-line), resulta na geração de uma resposta imediata sob a forma de uma saída on-line.
o Exemplo: consulta ao cadastro de clientes.
31
Atribuindo complexidade a uma Função de Transação
• Identificar os TARs e TEDs– TAR – Tipos de arquivos referenciados
• Quantidade de ALI/ AIE mantidos (exceto CE) ou referenciados pela função de transação
– TED – Tipos de elementos de dados• Campos reconhecíveis pelo usuário, que cruzam a
fronteira da aplicação durante a função de transação
32
Tabela de referência - Complexidade de EE’s
Pontuação• Para cada Entrada Externa será atribuído um número de Pontos de
Função, de acordo com a sua complexidade funcional relativa:– BAIXA (SIMPLES COMPLEXIDADE): 3 (três) Pontos por Função;– MÉDIA COMPLEXIDADE: 4 (quatro) Pontos por Função;– ALTA (COMPLEXA): 6 (seis) Pontos por Função.
33
Complexidade de Saídas Externas
ITENS DE DADOS REFERENCIADOS (TED)
Nº DE ARQUIVOS REFERENCIADOS (TAR)
1 A 5 6 A 19 20 OU MAIS
Apenas 1 SIMPLES SIMPLES MÉDIA
De 2 ou 3 SIMPLES MÉDIA COMPLEXA
4 ou mais MÉDIA COMPLEXA COMPLEXA
Pontuação• Para cada Saída Externa será atribuído um número de Pontos de
Função, de acordo com a sua complexidade funcional relativa:– SIMPLES: 4 (quatro) Pontos por Função;– MÉDIA: 5 (cinco) Pontos por Função;– COMPLEXA: 7 (sete) Pontos por Função.
34
Complexidade de Consultas Externas
ITENS DE DADOS REFERENCIADOS (TED)
Nº DE ARQUIVOSREFERENCIADOS
(TAR)1 A 5 6 A 19 20 OU MAIS
Apenas 1 SIMPLES SIMPLES MÉDIA
De 2 a 3 SIMPLES MÉDIA COMPLEXA
4 ou mais MÉDIA COMPLEXA COMPLEXA
Pontuação• Para cada Consulta Externa será atribuído um número de Pontos
por Função, de acordo com a sua complexidade funcional relativa:– SIMPLES: 3 (três) Pontos por Função;– MÉDIA: 4 (quatro) Pontos por Função;– COMPLEXA: 6 (seis) Pontos por Função
35
Resumo dos pesos das Funções de Transação
36
Resumo do Cálculo dos PF não ajustados
Contagem total - Pontos por função (não ajustado)
EE – Entradas Externas SE – Saídas Externas CE – Consultas Externas ALI – Arquivos Lógicos Internos AIE – Arquivos de interfaces ext.
Parametro de Medição
3 4 3 7 5
Contagem Fator de peso da Complexidade
baixa media alta
4 5 4 10 7
6 7 6 15 10
= = = = =
X X X X X
37
Etapa 5: Determinar o Fator de Ajuste
• Fator de Ajuste de Valor (VAF)– Passo final na contagem de pontos de função– Avalia restrições de negócio adicionais do
software não consideradas pelos cinco tipos de funções.
– Todas as funções avaliadas na contagem de Pontos de Função são funções do software
– Baseado na influência de 14 Características Gerais do Sistema
38
Fator de Ajuste
• O IFPUG (International Function Point Users Group), órgão responsável pela técnica, tornou o fator de ajuste opcional para adequar-se ao padrão ISO/IEC.
• O objetivo do fator é ajustar os pontos de função não-ajustados em ± 35% de acordo com a influência de 14 características gerais.
• No processo aqui apresentado, não será utilizado no cálculo final.
39
Cálculo do Fator de Ajuste
• Características não funcionais interferem na complexidade do produto.
• Calcular o Fator de Ajuste:– Avaliar o impacto de cada uma das quatorze
características (próximo slide)• atribuir a cada característica um peso de 0 a 5.
– Calcular o nível de influência:• Somando-se os pesos de cada uma das
características.
– Aplicar a fórmula de cálculo do fator de ajuste (variação de + − 35%).
40
Cálculo do Fator de Ajuste
Características Gerais:1. Comunicação de Dados
2. Processamento de Dados Distribuído (Funções Distribuídas)
3. Desempenho
4. Configuração do equipamento
5. Volume de Transações
6. Entrada de Dados On-Line
7. Interface com o usuário
8. Atualização On-Line
9. Processamento Complexo
10.Reusabilidade
11.Facilidade de Implantação
12.Facilidade Operacional
13.Múltiplos Locais
14.Facilidade de mudanças
É atribuída uma nota de 0 à 5 a cada uma das Características Gerais do Sistema correspondendo ao seguinte critério: (nenhuma influência, influência incidental, moderada, média, significante, essencial)
Fator de Ajuste:
Nt(total) = Nt
VAF = 0,65 + (0,01 X Nt(total))
(0,65 <= VAF <= 1,35)
14
i=1
41
Tamanho de produtos conhecidos*
Fonte: *Jones, Capers T., Estimating Software Costs, McGraw-Hill, 1998
42
Correspondência aproximada entre PF e linhas de código
Fonte: http://www.qsm.com/FPGearing.html
LOC/FPProdutividade
Linguagem Média Mediana Baixa Alta Média Cons
Access 35 38 15 47 -
JSP 59 - - - -
JavaScript 58 63 42 75 50
ASP 69 62 32 127 -
Java 62 63 53 77 80
Visual Basic 47 42 16 158 -
VBScript 36 34 27 50 50
43
Fatores de McConnell
• Variação da produtividade em função da escala
PM – Pessoa Mês
44
Aplicações da Técnica FPA
• Produtividade no desenvolvimento– Horas por PF
• Esforço de desenvolvimento– Produtividade (H/PF) * Tamanho (PF)
• Custo de software– Tamanho (PF) * Custo (R$/PF)
• Taxa de produção de software– PF/Mês; PF/Ano
• Taxa de manutenção de software– PF manutenção / PF aplicativo
Qual o valor / preço de um pontode função (R$/PF)?
• O valor R$/PF irá variar de acordo com as funcionalidades do software, considerando:– a produtividade e experiência da equipe nas
tecnologias e padrões;– o grau de qualidade solicitado pelo cliente;– a complexidade do software,– a quantidade de entregáveis (artefatos, documentos,
modelos, etc).
45FONTE: http://www.fattocs.com.br/blog/index.php/2012/04/569?lang=pt
Qual o preço de um PF?
• Em resumo, tudo aquilo que afeta custo de forma significativa mas que não tem relação direta com o tamanho medido pela APF acaba sendo computado no preço do ponto de função.
46
Qual o preço de um PF em uma tecnologia específica?
• As tecnologias disponíveis para desenvolvimento de sistemas podem influenciar diretamente na produtividade (tanto positivamente quanto negativamente)
• Assim, é bastante comum no mercado a diferenciação do valor do PF (R$/PF) de acordo com a plataforma tecnológica (mainframe, web, cliente-servidor, etc) e a linguagem de programação (Cobol, C, Java, .net, etc).
47
Licitações públicas com PF
• O Governo Federal aplica PF em contratos para desenvolvimento e manutenção de software (por recomendação do Tribunal de Contas da União).– PF são usados como medição para o pagamento e
verificação dos serviços.
• Na tabela http://www.fattocs.com.br/editais.asp, há exemplos de editais e valores. – Pode-se observar que a variação dos números é
muito significativa, com valores na faixa de R$100/PF a R$1.000/PF.
48
EXEMPLOS E ESTUDO DE CASO
49
50
Estudo de Caso: Sistema de Controle de Ponto
• O sistema tem por objetivo registrar a entrada e saída de funcionários de uma determinada empresa.
• O exemplo serve para ilustrar a técnica de PF. Portanto, o sistema é uma simplificação de um sistema real.
• A seguir, é apresentada uma pequena documentação necessária para compreensão do sistema e serve de base para o cálculo dos PF.
51
Descrição do Sistema• No sistema de controle de pontos, um
trabalhador registra suas entradas e saídas do ambiente do trabalho.
• Caso o trabalhador esqueça o cartão de ponto, ele pode justificar tal ocorrência.
• O trabalhador também pode acompanhar a sua freqüência, onde o sistema apresenta os totais de horas trabalhadas em um determinado período.
• Cada trabalhador pode ter acesso apenas às suas informações.
• Além disso, o gerente pode emitir um relatório com as informações de freqüência de todos os funcionários de seu departamento.
52
Visão do Sistema de Ponto
53
Casos de Uso
Registrar freqüência Permite ao trabalhador inserir, alterar, excluir as informações de entrada e saída em uma data.
Registrar justificativa O trabalhador insere uma justificativa em caso de alteração ou exclusão de horário.
Acompanhar freqüência Exibe ao trabalhador o acompanhamento de seus registros de ponto em um período escolhido.
Emitir relatório de freqüência
Permite ao gerente acompanhar o registro de presença dos trabalhadores em um determinado período informado.
Efetuar Logon Permite que o funcionário (trabalhador ou gerente) efetue a autenticação no sistema e, a partir deste ponto, escolher as opções disponíveis para acesso ao sistema dependendo do perfil do usuário.
54
Diagrama de Classes de Domínio
Observar que a classe Funcionário faz parte de outro sistema (Controle de Segurança) e a aplicação de controle de ponto apenas faz referência a ela.
55
Modelo de Banco de Dados (ER)
Observe que a classe Justificativa (do modelo de classes) foi mapeada para duas tabelas: JUSTIFICATIVA e LINHAS.
56
Transações (Campos e Arquivos Referenciados)
Transação (Tela/Rel)
Campos Arquivo (Tabela)
Logon Matricula, Senha, Mensagens, Comando Funcionário
Registro de Ponto Indicador de entrada e saída, Mensagens, Comando
Apontamento (Ponto)
Consultar Freqüência Data do ponto, Horário de entrada, Hora de saída, Mensagens, Comando
Apontamento
Registrar (incluir) freqüência com Justificativa
Indicador de entrada ou saída, Horário, Justificativa, Mensagens, Comando
Apontamento, Justificativa
Excluir Apontamento Mensagens, Comando Apontamento, Justificativa
Alterar Apontamento Horário anterior, Horário novo, Justificativa, Mensagens, Comando
Apontamento, Justificativa
Acompanhar Freqüência
Data inicial, Data final, Total de horas no período, nome do funcionário, data do ponto, horário do ponto, indicador de ent/saída, justificativa, Mensagens, Comando
Apontamento, Justificativa,
Funcionário
Emitir Relatório de Freqüência
Data Inicial, Data final, Matricula, Nome, Total de horas, Quantidade de Justificativas, Total de horas geral, Mensagens, Comando
Apontamento, Justificativa,
Funcionário
57
Contagem: Entradas Externas
Descrição da função TAR TEDCompl
ex.PF
Registro de Ponto 1 3 S 3
Registrar (incluir) freqüência com Justificativa
2 5 M 4
Excluir Apontamento 2 2 S 3
Alterar Apontamento 2 5 M 4
TOTAL (EE) 14
58
Contagem: Saídas Externas
Descrição da função TAR TEDCompl
ex.PF
Logon 1 4 S 4
Acompanhar Frequencia 3 10 M 5
Emitir Relatório de Frequencia 3 9 M 5
TOTAL (SE) 14
59
Contagem: Consultas Externas
Descrição da função TAR TED Complex PF
Consultar Freqüência 1 5 S 3
TOTAL (CE) 3
60
Contagem: Arquivos Lógicos Internos
Descrição da função TER TED Complex. PF
Apontamento 1 4 S 7
Justificativa 1 3 S 7
TOTAL (ALI) 14
61
Contagem: Arquivos de Interface Externa
Descrição da função TER TED Complex PF
Funcionário 1 4 S 5
TOTAL (AIE) 5
62
Contagem Final de PF (não ajustados)
Item PF Brutos
Entradas Externas 14
Saídas Externas 14
Consultas Externas 3
Arquivos Lógicos Internos 14
Arquivos Lógicos Externos 5
Pontos Função (não-ajustados) 50
63
Exercício 1
• Utilizando a definição do sistema para o consultório odontológico (ver material anexo):– Elabore a documentação dos
requisitos/funcionalidades do sistema;– Calcule os pontos de função não ajustados do
sistema;– Calcule os pontos de função considerando os fatores
de ajuste: sistema on-line (na web), desenvolvido para alta disponibilidades, prevendo o reuso de componentes, com poucas transações e desempenho médio.
64
Exercício 2
• Considere a tela para uma aplicação de cadastro (ver figura no próximo slide)
• Aplique a técnica de estimativa de pontos de função para calcular os PF não ajustados.
• Para calcular os PF não ajustados você terá que modelar o banco de dados a partir da tela em questão. Considere um modelo de dados normalizado.
65
Formulário de Cadastro “Criar Conta email”
66
Exercício resolvido.Contagem de Pontos de Função – Transações para incluir, alterar,
excluir e consultar “Mercadorias em Estoque”.
67
Contagem de Pontos de Função
68
Exercício resolvido.Estimativas
• Considere um projeto estimado em 100 PF• Numa fase que corresponde a 20% do Projeto• Numa equipe de 4 pessoas• Considerando uma produtividade média de 20 horas/PF• Considerando uma jornada de 6 horas diárias• Considerando um valor de R$35,00 o valor de 1h de
Trabalho
– Calcule os valores• Do tamanho em PF dos 20% do projeto• Do Esforço total em horas• Do Prazo em dias• Do Custo em R$
69
Estimativas. Resolução
• 20% de 100 PF = 20 PF• Esforço - 20hs/PF então: 20hs/PF x 20PF = 400h• Prazo - 400h/(4 x 6) = 16,7 Dias• Custo - 400h x R$ 35,00 = R$ 14.000,00
70
Referências
• Paula Filho, Wilson de Pádua. Engenharia de Software - Fundamentos, Métodos e Padrões. 2ª. edição. LTC, 2003.
• Carlos Eduardo Vasquez, Guilherme Siqueira Simões, Renato Machado Albert. ANÁLISE DE PONTOS DE FUNÇÃO: medição, estimativas e gerenciamento de projetos de software. Érica, 2003.– http://www.fattocs.com.br/citacao-livro-apf.asp