Escolar Documentos
Profissional Documentos
Cultura Documentos
SAC 0800-0117875
De 2ª a 6ª, das 8h às 18h
www.editorasaraiva.com.br/contato
1ª edição
2018
Autores e Editora acreditam que todas as informações aqui apresentadas estão corretas e podem ser utilizadas
para qualquer fim legal. Entretanto, não existe qualquer garantia, explícita ou implícita, de que o uso de tais
informações conduzirá sempre ao resultado desejado. Os nomes de sites e empresas, porventura
mencionados, foram utilizados apenas para ilustrar os exemplos, não tendo vínculo nenhum com o livro, não
garantindo a sua existência nem divulgação. A Ilustração de capa e algumas imagens de miolo foram retiradas
de www.shutterstock.com, empresa com a qual se mantém contrato ativo na data de publicação do livro. Outras
foram obtidas da Coleção MasterClips/MasterPhotos© da IMSI, 100 Rowland Way, 3rd floor Novato, CA 94945,
USA, e do CorelDRAW X6 e X7, Corel Gallery e Corel Corporation Samples. Corel Corporation e seus
licenciadores. Todos os direitos reservados.
Todos os esforços foram feitos para creditar devidamente os detentores dos direitos das imagens utilizadas
neste livro. Eventuais omissões de crédito e copyright não são intencionais e serão devidamente solucionadas
nas próximas edições, bastando que seus proprietários contatem os editores.
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem a prévia autorização
da Saraiva Educação. A violação dos direitos autorais é crime estabelecido na lei nº 9.610/98 e punido pelo
artigo 184 do Código Penal.
Dedicatória
A Andréa Guimarães Meira.
Carlos Vazquez
A Deus;
Aos meus pais Simões ( in memoriam ) e Lurdinha;
Aos meus irmãos Gustavo e Julia;
À minha filhota Clara.
Guilherme Simões
Aos meus pais pela solidez da educação e formação moral;
Ao meu irmão, causador da minha existência;
À minha esposa pela companhia salutar;
Aos meus amigos sócios, referências seguras;
Ao Pai, sempre iluminando meus caminhos.
Renato Albert
Agradecimentos
Agradecemos aos milhares de profissionais que já participaram de
nossos treinamentos, cuja troca de ideias e experiências favoreceu a
elaboração deste material, proporcionando um conteúdo objetivo, prático e
voltado à realidade da comunidade de software.
Agradecemos também:
• Aos mais de 3.000 membros do grupo
br.groups.yahoo.com/group/livro-apf (Grupo de Leitores
do Livro de APF) pela manutenção de discussões do
mais alto nível, que fazem com que esse fórum seja um
dos grupos de discussão mais ativos do mundo e nos
apoiam na evolução do conteúdo deste livro há cerca de
dez anos, e aos colegas dos fóruns do IFPUG e BFPUG.
• Ao Márcio Silveira e Mauricio Aguiar por manterem o
BFPUG e representarem a comunidade brasileira no
IFPUG.
• Ao IFPUG pela manutenção e evolução da técnica da
análise de pontos de função, e cujo manual foi a base da
elaboração deste livro.
• A Antonio Braga, um dos responsáveis pela difusão
inicial da técnica de pontos de função no Brasil, e
também autor do primeiro livro em português publicado
sobre o assunto.
• A todos os nossos clientes, sem os quais não teríamos a
oportunidade de praticar e aplicar a técnica de pontos de
função.
• Aos leitores das edições anteriores do livro que nos
forneceram sugestões e críticas para que pudéssemos
aperfeiçoar o material.
• Aos diversos estudantes, professores e pesquisadores que
usaram o livro como fonte de pesquisa nos seus
trabalhos acadêmicos (monografias, artigos, teses,
aulas). Para nós, autores, é muito gratificante saber que o
livro foi citado em mais de 100 trabalhos acadêmicos,
conforme nossa compilação, disponível em
http://www.fattocs.com.br/citacao-livro-apf.asp.
Sumário
Capítulo 1 - Por que Medir Software?
Motivação
Contexto
Dilema
Recursos
Gerência de Projetos
Visibilidade
Planejamento
Controle
A Curva do Pânico
O Adiamento do Projeto
Escolha de uma Abordagem Alternativa
O Problema não é só o Erro, é a Demora em Identificá-lo
Foco
Terceirização e Gestão de Contratos
Análise Make-Or-Buy
Seleção do Tipo de Contrato
Distribuição de Riscos
Algumas Medidas Preventivas
Iniciativas de Melhoria de Processo de Software (SPI)
O Que Medir?
Qual Medida Melhor Representa o Tamanho?
O que é a Análise de Pontos de Função? E o que é Ponto de Função?
Questões para Fixação
Bibliografia
Capítulo 2 - O Mundo das Métricas Funcionais
Objetivo
Breve Histórico
IFPUG
Pontos de Função no Brasil e BFPUG
NESMA
Mark II
COSMIC
Padrão ISO de Medição Funcional
ISBSG
Pontos por Caso de Uso (Use Case Points)
Bibliografia
Capítulo 3 - O Processo de Medição Funcional
Introdução
Os Requisitos e a Contagem de Pontos de Função
A Visão do Usuário e a Dinâmica da Evolução dos Requisitos
Ciclo de Vida do Software e a Medição
Orientação Prática ao Segregar Requisitos Funcionais de não Funcionais
Distinção de Requisitos de Usabilidade
Distinção de Requisitos de Desempenho
Distinção de Requisitos de Confiabilidade
A Análise de Pontos de Função
Objetivos da APF
Objetivos do Processo de Medição
Conceito de Usuário
Benefícios
Propósito da Contagem de Pontos de Função
Reunir a Documentação Disponível
Determinação do Tipo de Contagem
Projeto de Desenvolvimento
Projeto de Melhoria
Aplicação
A Fronteira da Aplicação e o Escopo da Contagem
Fronteira da Aplicação
Escopo da Contagem
Funções do Tipo Dado
Funções do Tipo Transação
Cálculo do Tamanho Funcional
Fator de Ajuste
Documentar e Reportar
Estudo de Caso - Sistema de Controle de Ponto
Descrição do Sistema
Lista de Atores
Casos de Uso Identificados
Especificação do Caso de Uso 1 - Registrar Presença
Especificação do Caso de Uso 2 - Registrar Justificativa
Especificação do Caso de Uso 3 - Acompanhar Presença
Especificação do Caso de Uso 4 - Emitir Relatório de Presença
Especificação do Caso de Uso 5 - Efetuar Login
Diagrama de Classes
Modelo de Entidades e Relacionamentos
Detalhamento dos Campos e Arquivos Referenciados
Identificação e Classificação das Funcionalidades
Questões para Fixação
Bibliografia
Capítulo 4 - Funções do Tipo Dado
Introdução
O que é um Arquivo de Interface Externa (AIE)?
Diferença entre ALI e AIE
Exemplos de Arquivos Lógicos
Não Exemplos de Arquivos Lógicos
Definição dos Termos Utilizados
Quantos PFs valem um ALI e um AIE?
Definição de Tipo de Dado (TD)
Definição de Tipo de Registro (TR)
Regras de Contagem de Tipos de Registro
Determinação da Contribuição
Dados de Código
Outras Entidades não Contadas como Arquivos Lógicos
O que Fazer com as Entidades que Sobraram?
Compartilhamento de Dados
Sistema de Controle de Ponto
Questões de Fixação
Bibliografia
Capítulo 5 - Funções do Tipo Transação
Introdução
Definição de Entrada Externa (EE)
Exemplos de EE
Não Exemplos de EE
Definição de Saída Externa (SE)
Exemplos de SE
Não Exemplos de SE
Definição de Consulta Externa (CE)
Exemplos de CE
Não Exemplos de CE
Definição de Termos Utilizados
Processo Elementar
Para que Serve o Conceito de Processo Elementar?
Informações de Controle
Dado Derivado
Modificar o Comportamento do Sistema
Lógica de Processamento
Regras para Determinar se um Processo Elementar é Único
Variações do Mesmo Processo Elementar
Proposta de Diretrizes para Identificar Processos Elementares e Determinar
a Sua Unicidade
Requisito Funcional
“Completo”
Determinação da Complexidade
Definição de Arquivo Referenciado (AR)
Regras de Contagem para Arquivo Referenciado
Definição de Tipo de Dado (TD)
Regras de Contagem de Tipos de Dados
Determinação da Contribuição
Questões de Fixação
Bibliografia
Capítulo 6 - Fator de Ajuste
Considerações
Diretrizes para Determinação do Nível de Influência
1. Comunicação de Dados
2. Processamento Distribuído
3. Performance
4. Configuração Altamente Utilizada
5. Volume de Transações
6. Entrada de Dados On-Line
7. Eficiência do Usuário Final
8. Atualização On-Line
9. Complexidade de Processamento
10. Reusabilidade
11. Facilidade de Instalação
12. Facilidade de Operação
13. Múltiplos Locais
14. Facilidade de Mudanças
Questões para Fixação
Bibliografia
Capítulo 7 - Cálculo do Tamanho Funcional e Documentar e Reportar
Projeto de Desenvolvimento
Fórmula do Projeto de Desenvolvimento
Exemplo 1
Projeto de Melhoria - IFPUG
Critérios para Avaliar Mudança em Arquivos Lógicos
Critérios para Avaliar Mudança em Transações
Fórmula do Projeto de Melhoria - IFPUG
Exemplo 2
Aplicação
Fórmula da Contagem Inicial da Aplicação
Fórmula da Aplicação após Projeto de Melhoria
Projeto de Melhoria - NESMA
Fórmula do Projeto de Melhoria - NESMA
Considerações sobre o Fator de Impacto
Manutenções “Cosméticas”
Custo x Benefício da Adoção do Método NESMA para Melhorias
Pontos de Função de Teste
Estimativa de Esforço da Melhoria
Documentar e Reportar a Medição
Organização das Funções
Nomenclatura das Funções
Questões para Fixação
Bibliografia
Capítulo 8 - Estudos de Caso
Introdução
Contagem de Aplicação
Características da Aplicação
Diagrama Entidade-Relacionamento
Dicionário de Dados
Transações
Requisitos de Transição
Projeto de Melhoria
Capítulo 9 - Estimativa
Estimativa de Tamanho Funcional
Contagem Dedutiva
Complexidade Média
Backfiring
A Escolha do Tipo de Contagem
Fator de Crescimento
Estimativa de Esforço
Como Começar?
Produtividade e Taxa de Entrega
Cuidado com as Relações Lineares!
Estimativa de Duração
Curva de Rayleigh-Putnam
A Região Impossível
Cuidados com a Utilização de Indicadores de Mercado
Geração de Indicadores Internos
Conclusão
Questões de Fixação
Bibliografia
Capítulo 10 - Aplicações em Contratos de Desenvolvimento de Software
Introdução
Desafios na Contratação de Software
Modalidade de Contratação Homem-Hora
Modalidade de Contratação Preço Global Fixo
Modalidade de Contratação Preço Unitário
Pontos de Função como Unidade Padrão
Pontos de Função que Facilitam a Comunicação
O Cliente é o Dono do Escopo
Manutenção Corretiva
Itens não Mensuráveis
Uso de Deflatores na Manutenção
Guia de Contagem (ou Guia de Métricas)
Decomposição do Custo (ou Esforço) por Atividade do Ciclo de Vida
Qual o Preço de um Ponto de Função?
Como Estimar o Preço de um Ponto de Função?
Dicas para Otimizar o Custo do Contrato
Contratação de Serviços de Medição
Seleção de Fornecedores de Serviços de Medição
Acompanhamento do Contrato de Serviços de Medição
Questões de Fixação
Bibliografia
Capítulo 11 - Certificação em Pontos de Função (CFPS)
Programa de Certificação
O Exame
Dicas e Comentários
Exame Simulado
Parte 1 - Definições
Parte 2 - Aplicação das Regras
Parte 3 - Estudos de Caso
Glossário
Prefácio
A análise de pontos de função é atualmente um instrumento utilizado
por profissionais da área de sistemas e em empresas de todos os portes e
segmentos da economia brasileira. Inicialmente o foco principal de sua
aplicação era em estimativas. Ainda continua sendo uma ferramenta
importante em estimativas, mas também tem sido aplicada cada vez com
mais sucesso como unidade de medição de contratos de desenvolvimento de
software e como ferramenta na gerência de projetos.
Este livro é o resultado de vinte anos de experiência prática dos autores
em projetos de desenvolvimento de sistema, manutenção de sistemas,
gerência de projetos, treinamento e consultoria em análise de pontos de
função. Seu objetivo é transmitir essa experiência aos profissionais que já
conhecem a técnica e permitir àqueles que ainda não a dominam iniciarem-
se no assunto. Ele aborda aspectos da aplicação de pontos de função em
estimativas e contratação de software, além do processo de certificação de
especialistas em pontos de função (CFPS); uma das certificações
profissionais de TI mais valorizadas atualmente no Brasil.
A seguir, veja uma breve descrição de cada capítulo.
O capítulo 1 - Por Que Medir Software? fornece a perspectiva do
contexto em que as métricas funcionais, em particular a análise de pontos
de função, podem ser aplicadas nas organizações que contratam e
desenvolvem softwares. Explora aplicações em gerência de projetos,
terceirização, gestão de contratos e em iniciativas de melhoria de processos
de software. Traz também os conceitos e fundamentos básicos para a
determinação dos aspectos do processo de desenvolvimento e manutenção
de sistemas que devem ser dimensionados.
O capítulo 2 - O Mundo das Métricas Funcionais apresenta um breve
histórico da análise de pontos de função no mundo e no Brasil, comenta o
papel de importantes organizações de métricas no mundo, entre elas o
International Function Point Users Group (IFPUG), e mostra outros
métodos de medição funcional existentes.
O capítulo 3 - O Processo de Medição Funcional apresenta uma visão
geral do processo de medição e a estreita relação existente entre esse
processo de medição e a devida identificação dos requisitos funcionais de
um software. Os termos básicos para a aplicação da técnica são definidos e
a medição de um caso de uso é feita para ilustrar os aspectos teóricos de
forma prática e objetiva.
Os capítulos 4 e 5, respectivamente, Funções do Tipo Dado e Funções
do Tipo Transação ensinam a identificar os elementos-chave definidos pela
técnica. Todos os conceitos apresentados são seguidos de exemplos e casos
práticos que permitem uma melhor assimilação do conteúdo.
O capítulo 6 - Fator de Ajuste aborda os cálculos envolvidos e as
descrições das 14 características gerais de sistema que influenciam a
medição dos pontos de função ajustados.
O capítulo 7 - Cálculo do Tamanho Funcional e Documentar e Reportar
mostra as fórmulas utilizadas para cálculo dos pontos de função dos três
tipos de contagem, sendo projetos de desenvolvimento, de melhoria e de
aplicação. Traz também a abordagem de medição do projeto de melhoria de
acordo com o IFPUG e com a NESMA. Na seção Documentar e Reportar
são discutidos aspectos relevantes para a documentação da contagem para
que esta tenha valor. O interesse da contagem nem sempre está restrito ao
número final calculado.
O capítulo 8 - Estudos de Caso contém exercícios de medição funcional
para os três tipos de contagem de pontos de função: aplicação, projeto de
desenvolvimento e projeto de melhoria.
O capítulo 9 - Estimativa apresenta um modelo geral para o processo de
estimativas de projetos e ensina como utilizar pontos de função para
produzir estimativas com razoável confiabilidade em fases iniciais do
projeto. São feitas diversas considerações para o uso correto dessa
importante ferramenta.
O capítulo 10 - Aplicações em Contratos de Desenvolvimento de
Software estuda as três principais modalidades de medição adotadas em
contratos de software e ilustra as aplicações da análise de pontos de função
em cada uma dessas modalidades. Apresenta um roteiro para que tanto
empresas que contratam quanto aquelas que são contratadas possam
estabelecer políticas que permitam um relacionamento positivo entre as
partes.
O capítulo 11 - Certificação em Pontos de Função (CFPS) comenta o
processo de certificação de especialistas em pontos de função promovido
pelo IFPUG e apresenta uma série de dicas úteis ao candidato à certificação,
inclusive com um exame simulado da prova.
Finaliza com um glossário dos termos mais utilizados pela técnica de
pontos de função com o significado das siglas comumente utilizadas.
Os autores
Sobre os Autores
Os dois primeiros autores são sócios-diretores da empresa FATTO
Consultoria e Sistemas (www.fattoCS.com.br), na qual atuam como
consultores em métricas de software, estimativas de projetos e instrutores
dos cursos oferecidos pela empresa.
Carlos Eduardo Vazquez é um profissional de TI com mais de 20 anos
de experiência no desenvolvimento, manutenção e gestão em software de
aplicação e de sistemas, direcionando a tecnologia às necessidades das
pessoas. Ele tem a visão de que tecnologias de medição de software e a
medição do tamanho funcional em particular, tais quais os pontos de função
como definidos pelo IFPUG, NESMA ou COSMIC, sejam ferramentas
fundamentais para alcançar esse objetivo. Desde 1991, é um usuário da
análise de pontos de função do IFPUG; treina turmas no assunto desde
1993. Em 1996, foi um dos primeiros brasileiros a ser certificado
especialista em pontos de função (CFPS) pelo IFPUG, organização da qual
é membro com direito a voto. Repete o feito em 2012, sendo um pioneiro
como detentor da certificação COSMIC. Em 1998, lecionou como professor
substituto na Universidade Federal do Espírito Santo (UFES); fundou a
FATTO neste mesmo ano. Em 2001, escreveu o livro “Análise de Pontos de
Função: Medição, Estimativas e Gerenciamento de Projetos de Software”,
hoje em sua 13 ª edição, com mais de 12.000 exemplares vendidos e uma
das principais referências no assunto no Brasil. Coordena a pesquisa e
desenvolvimento do conteúdo para os serviços educacionais na FATTO;
atua como um instrutor e facilitador em turmas abertas ao público e in-
company. Atua também como responsável pela consultoria gerencial em TI,
liderando um time de especialistas em métricas de software. Perfil no
linkedin disponível em br.linkedin.com/in/cvazquezbr.
Guilherme Siqueira Simões é sócio da FATTO Consultoria e Sistemas,
onde atua como consultor e instrutor em serviços de medição, estimativas e
requisitos de software. Atuou no desenvolvimento de toda a linha de
serviços da FATTO e treinou centenas de profissionais do Brasil em APF.
Participou da equipe de tradução para o português das versões 4.2.1 e 4.3 do
Manual de Práticas de Contagem do IFPUG. Tem mais de 20 anos de
experiên- cia em desenvolvimento de sistemas (oito deles em projetos de
software para automação bancária). Graduado em Ciência da Computação
pela UFES, pós-graduado em gestão empresarial pelo IEL/UFES e
certificado como especialista em pontos de função pelo IFPUG desde 2002.
Veja currículo completo em http://br.linkedin.com/in/guilhermesimoes.
Renato Machado Albert é gestor público e atua na formulação e
execução de políticas públicas na área de TI no estado do ES. Possui MBA
em Gerenciamento de Projetos pela FGV, com experiência no assunto em
empreendimentos da área de software e de produção de petróleo e gás. É
graduado em Ciência da Computação e pós-graduado em Marketing e TI
pela UFES. Éspecialista em análise de pontos de função, atuou por mais de
dez anos como desenvolvedor, analista e coordenador de equipe em projetos
de sistemas nas áreas industrial, de serviços e bancária.
Sobre o Material Disponível na Internet
O material disponível no site da Editora Érica contém as respostas dos
exercícios do livro, do simulado do capítulo 11 e a planilha eletrônica dos
estudos de casos do capítulo 8.
Para utilizar os arquivos, você precisa ter instalados em sua máquina o
Acrobat 8, Word 2003 e o Excel 2003, ou versões mais recentes.
Exercícios_13ED.EXE - 499KB
Procedimentos para Download
Acesse o site da Editora Érica Ltda. (www.editoraerica.com.br). A
transferência do arquivo disponível pode ser feita de duas formas:
Motivação
A primeira pergunta que deve ser respondida ao apresentar a técnica da
análise de pontos de função é: qual a motivação para sua utilização? É
fundamental levar em consideração três principais aspectos que devem ser
avaliados para respondê-la:
Contexto
O contexto citado anteriormente é influenciado por duas forças que,
apesar de antagônicas, são mutuamente complementares. Por um lado
existem os requisitos do sistema que tendem a aumentar com o tempo,
como qualidade, funcionalidade e performance. Todos aqueles que
vivenciaram essa situação sabem que mesmo após o fechamento da fase de
levantamento de requisitos, quando todas as especificações funcionais e não
funcionais foram concluídas, à medida que o produto vai tomando forma,
seus futuros usuários já idealizam novas características inicialmente não
percebidas. Independentemente do projeto atender a essas necessidades
nessa versão ou em alguma próxima, tal fato só vem por ratificar a natureza
expansiva dos requisitos. Muitas vezes, com a utilização do produto,
aqueles requisitos que eram desejáveis passam a ser necessários, e muitos
outros, até então inexistentes, são percebidos.
Dilema
Por outro lado, atender a esses requisitos implica em trabalho. Para
realizá-lo, é necessário mobilizar o esforço tanto de profissionais
qualificados no projeto e construção dos produtos do sistema quanto de seus
futuros clientes, disponibilizar ferramentas de hardware e software e
providenciar a infraestrutura logística, compreendendo instalações físicas,
hospedagem, passagens, secretariado, entre outros recursos, para acomodar
e fornecer as condições apropriadas ao trabalho. Todos esses recursos:
humanos, materiais e financeiros são limitados, inclusive o próprio tempo.
Desta forma, satisfazer os requisitos que tendem à expansão envolve a
disputa pelos recursos que tendem à escassez. Então, para responder por
que medir, deve-se antes avaliar os mecanismos para manter essa situação
sob controle, a fim de obter o melhor resultado - atender ao máximo às
expectativas dos clientes com a utilização do mínimo de recursos.
Recursos
Os primeiros recursos utilizados na solução dessa equação foram os de
natureza tecnológica: ferramentas CASE, linguagens de quarta geração,
tecnologias orientadas a objetos, ambientes integrados de desenvolvimento,
arquitetura cliente-servidor, entre outros. Em seguida, como consequência
da manutenção do cenário apresentado, o foco passou a ser direcionado ao
estudo de métodos que permitissem uma maior organização, disposição e
ordem dos elementos que compõem os sistemas. Isoladamente ou em
conjunto com as novas tecnologias, a aplicação desses métodos não foi
capaz de fornecer as respostas desejadas.
Recentemente, em maior ou menor escala, quatro são as principais
alternativas utilizadas para tentar equilibrar a balança que mede as
demandas por sistemas e os recursos disponíveis: enfoque de gerência de
projetos, a terceirização e gestão de contratos, iniciativas de melhoria de
processos e o uso intensivo de pacotes de software, em especial, os ERPs.
Gerência de Projetos
Gerência é uma palavra que deriva de gerir, originária do latim, gerere
que significa trazer, produzir, criar, executar e administrar. Em resumo,
gerir é planejar, executar e controlar. De acordo com o Project Management
Institute 1 (PMI) um projeto é um empreendimento temporário posto em
execução para criar um único produto ou serviço. Na condução desse
empreendimento, existem vários processos que visam permitir sua gerência.
Esses processos são agrupados em alguns passos básicos, dos quais
destacam-se três:
Visibilidade
O mecanismo descrito anteriormente é chamado retroalimentação e a
palavra-chave que define seu principal benefício é visibilidade. Com ela
tanto é possível saber para onde ir antes de iniciar a caminhada quanto saber
se o caminho em curso é o correto. Ou seja, permite definir objetivos
realistas e a adoção de medidas necessárias à prevenção e correção dos
desvios que causam impacto negativo no cumprimento desses objetivos.
Essas medidas são um dos objetos dos processos de planejamento e controle
do projeto.
Planejamento
Nas fases iniciais do projeto, como por exemplo, durante o
levantamento de requisitos, ainda não há o conhecimento completo das
características do produto que permita a apuração de sua futura dimensão.
Nesse caso é necessário estimar. Vários modelos de estimativa foram
criados para fornecer métricas que permitam atender com menor margem de
erro às necessidades de comunicação e informação do projeto.
A análise de pontos de função permite não só medir o tamanho do
sistema em termos da funcionalidade fornecida ao usuário, mas também
estimar seu tamanho em qualquer fase do seu ciclo de vida (mesmo que os
requisitos ainda não tenham sido detalhados). A manutenção de registros de
outros projetos semelhantes, com a evolução das estimativas iniciais até a
medição final, permite um acompanhamento da relação entre a quantidade
de pontos de função estimados ou calculados nos vários estágios de
conhecimento do produto.
Na Figura 1.1, a área em destaque indica que, durante a especificação de
requisitos, projeto de alto nível, projeto detalhado e implementação, toda
medição funcional realizada ainda é uma projeção do que de fato será
entregue. Ao final do projeto detalhado já é possível realizar uma medição
dos pontos de função do projeto, não do produto final. O resultado dessa
medição em termos práticos ainda será uma estimativa do que realmente
será entregue, pois normalmente entre o final do projeto detalhado e a
conclusão do projeto ainda pode haver mudanças no escopo por mudanças
nos requisitos e necessidades que originaram o projeto.
Controle
Nesse cenário, é de suma importância que a definição de meios para a
comparação do progresso real com o planejado seja parte do planejamento
do projeto. O controle é uma das principais atividades envolvidas na
gerência de projetos. Trazendo estes conceitos para o contexto de um
projeto de desenvolvimento de sistemas, é possível ter algumas ideias
interessantes na busca da resposta de por que medir. Afinal, não se
consegue controlar o que não se consegue medir.
A Curva do Pânico
O resultado da medição tem o papel de permitir a comunicação efetiva
não só entre os vários indivíduos e organizações envolvidos no projeto, mas
também com os que possam ser afetados por ele. A penalidade pela falta
desses mecanismos de apuração ou pela sua não utilização frequente é
enfrentar a dinâmica representada na Figura 1.3, dinâmica dos 99%
concluídos.
Figura 1.3: A dinâmica do pânico.
O Adiamento do Projeto
Entre os resultados dessa dinâmica está o adiamento da conclusão do
projeto, e até chegar a essa decisão, a equipe do projeto teve seu ânimo
abatido, suas expectativas frustadas e passa a se sentir impotente diante do
inevitável. A qualidade interna do produto é prejudicada e como
consequência quase certa, sua qualidade externa também será afetada,
mesmo após o adiamento. E a pergunta que se deve fazer é se será o último
adiamento, visto que, se as mesmas premissas forem adotadas com o novo
prazo, não existirão garantias da visibilidade do problema, a não ser quando
já for tarde demais para adotar alguma ação.
Figura 1.4: Adiamento. Será o último?
Foco
Com o exposto procurou-se sensibilizar o leitor para o papel que a
utilização de métricas exerce no suporte ao empreendimento de atividades
de desenvolvimento ou manutenção de sistemas com um enfoque de
projeto.
É cada vez mais frequente a concentração do foco das organizações nas
suas atividades principais. Como consequência, é crescente a quantidade de
projetos de sistemas que deixa de ser empreendida internamente para ter sua
execução contratada. Tal fato não invalida os pontos já destacados, visto
que em algum momento alguém deverá se preocupar com os assuntos
tratados.
Terceirização e Gestão de Contratos
O fato de parte ou todo trabalho envolvido no desenvolvimento e
manutenção de sistemas estar terceirizado não elimina a necessidade de
medição, muito pelo contrário. Tanto no corpo de conhecimento em
gerência de projetos (PMBOK) do Project Management Institute (PMI)
quanto no Capability Maturity Model (CMM) do Software Engineering
Institute 2 (SEI) a aplicação de métricas é um aspecto determinante no
relacionamento entre a empresa que contrata e a empresa contratada.
O PMI dedica toda uma área de conhecimento, denominada gerência
das aquisições do projeto, aos processos envolvidos na obtenção de bens e
serviços externos à organização. O planejamento das contratações é o
primeiro dos processos compreendido por essa área de conhecimento. Ele
objetiva identificar as necessidades do projeto que podem ser melhor
atendidas através da contratação de produtos ou serviços no mercado.
Análise Make-Or-Buy
Assim como todos os processos componentes das diversas áreas do
corpo de conhecimento organizado pelo PMI, o planejamento das
contratações é descrito em termos de suas entradas, das ferramentas e
técnicas utilizadas e de suas saídas. A análise de make-or-buy é uma das
técnicas introduzidas nesse processo. Ela visa determinar se é mais
vantajosa a contratação de um produto específico no mercado ou o seu
desenvolvimento interno.
Este tipo de avaliação está baseado na comparação dos níveis de
performance da organização contra os níveis oferecidos pelo mercado.
Alguns componentes representativos desses níveis de performance são
quantificáveis e podem ser objeto de uma análise objetiva. A utilização de
indicadores é o principal insumo para essa comparação de alternativas
disponíveis. Os indicadores, considerados métricas secundárias, são
derivados do inter-relacionamento de outras métricas. Agem como a “cola”
que relaciona custo, prazo, esforço e dimensão, métricas primárias
envolvidas na análise.
Quando uma série de valores históricos é utilizada na determinação da
evolução desses indicadores, seu conjunto passa a representar uma
tendência de comportamento que permite estabelecer premissas de
produtividade e qualidade. Se a organização possui esses indicadores
internos segmentados de forma que o objeto da análise possa ser
enquadrado em função dos fatores básicos que afetam essas variáveis, como
o ambiente tecnológico, a quantidade de usuários, a experiência da equipe
com o domínio do problema, um dos lados da equação já está bem
encaminhado - quanto custa, em quanto tempo, com que qualidade o
trabalho é realizado internamente.
Por exemplo, é realizada uma análise cujo objetivo é determinar se:
a) A organização deve empreender internamente o
desenvolvimento de um novo sistema.
b) Deve ser contratada uma empresa externa para o
desenvolvimento completo do novo sistema.
c) Deve ser realizado internamente o trabalho de
especificação de requisitos e implantação, enquanto a
codificação e os testes serão contratados no mercado.
d) É conveniente a aquisição de um pacote (COTS -
Commercial Off-The-Shelf ) com sua parametrização e
adequações tanto no parque de sistemas quanto na
organização.
O conhecimento dos aspectos que influenciam a decisão sobre qual
dessas opções é a mais vantajosa permite estruturar a metodologia para
seleção. Nem todas as respostas necessárias ao processo têm o mesmo nível
de dificuldade ou mesmo a viabilidade de obtenção. Com a análise de
pontos de função é possível medir a funcionalidade solicitada pela
organização. Com base na quantidade de pontos de função e em indicadores
como a produtividade (PF/HM), o custo ($/PF) e indicadores de qualidade
(Defeitos/PF), é possível extrapolar essas informações de outra forma
inacessíveis ou de difícil apuração ou justificativa.
Com base nesses indicadores, é possível avaliar a performance interna
em termos de quanto se pode produzir por unidade de tempo ou custo.
Simplificando, se é sabido o QUANTO deve ser produzido, pode-se
extrapolar quais serão o custo, prazo e esforço envolvidos nesse trabalho.
Como já foi discutido, o ponto de função objetiva medir esse QUANTO
em termos da funcionalidade solicitada e fornecida ao usuário do sistema.
Com base na aplicação da análise de pontos de função pode-se responder a
essa outra parte da equação. Agora, com o QUANTO se deve produzir
pode-se chegar à quantidade de unidades de tempo e custo necessárias à
comparação com o mercado.
Distribuição de Riscos
Com a análise de pontos de função é possível melhorar o modelo
homem-hora, só que utilizando uma unidade que quantifique um produto, e
não a passagem do tempo. O próprio Sistema de Pagamentos utilizado na
administração dos contratos pode realizar o faturamento dos serviços não
com base em horas, mas com base na funcionalidade solicitada e recebida -
o ponto de função.
O IFPUG 3 , International Function Point Users Group , organismo
internacional responsável pela manutenção e evolução do padrão de
medição de pontos de função, empreende através de comitês específicos
ações no sentido de garantir a consistência da técnica, requisito básico para
utilização do ponto de função como unidade de medição contratual. As duas
principais ações neste sentido são o Manual de Práticas de Contagem e os
programas de certificação de cursos e de profissionais. O capítulo 2 discute
um pouco mais o IFPUG.
O Que Medir?
Uma vez estabelecido por que medir, a próxima pergunta que se deve
responder é: o que medir? Medida é, por definição, a quantificação de uma
característica. No caso da área de sistemas devem ser avaliadas não só suas
características de produto final, mas também as características dos
processos envolvidos em sua concepção e construção. Dessa forma primeiro
é preciso identificar as características relevantes para análise.
No artigo intitulado “Software modeling and measurement: The
Goal/Question/ Metric paradigm” , publicado pelo Departamento de
Ciência da Computação da Universidade de Maryland, Victor R. Basili
apresentou um modelo bastante ilustrativo e útil no processo de
identificação dessas características:
“Para cada um dos objetivos que deseja acompanhar é possível
estabelecer um conjunto de perguntas que verifique o seu cumprimento;
para muitas dessas perguntas é possível identificar uma métrica que possa
quantificar a resposta.”
De forma bastante resumida e objetiva, em um único parágrafo, é
possível construir as bases para a seleção das características cuja medição
seja relevante. A chave está na identificação dos objetivos estabelecidos
tanto para o processo de desenvolvimento e manutenção de sistemas quanto
para o produto gerado em si.
Uma determinada organização estabeleceu que o lançamento do novo
serviço de captação de pedidos on-line estaria disponível dois meses antes
do Natal. Nessa empreitada a administração da empresa reservou um
orçamento de $ 500.000,00. Esses objetivos foram traçados com base nas
estimativas do departamento de tecnologia que, com base nos requisitos, na
funcionalidade fornecida pelo novo sistema e em outros aspectos
tecnológicos, optou por especificá-lo internamente e contratar sua
construção por uma empresa. Para resguardar os interesses da empresa,
cláusulas de garantia de nível de serviço foram incluídas no contrato.
Do parágrafo anterior é possível extrair alguns aspectos que são
relevantes para a organização, como, por exemplo, recursos e custos,
tamanho do produto, qualidade do produto, cronograma e progresso.
Contudo, neste nível a abrangência é muito ampla e de difícil
acompanhamento. A criação de categorias que agrupem conjuntos de
métricas afins é uma solução para diminuir a complexidade envolvida e
permitir um maior foco em itens mais específicos. Por exemplo, ao avaliar
Recursos e Custos, é possível definir as informações sobre Equipe como
uma categoria em particular. Nessa categoria são incluídas informações que
caracterizam a quantidade de esforço planejado e consumido por atividades
ou produtos de interesse, a quantidade e experiência da equipe alocada ao
projeto, assim como a taxa de rotatividade dessas pessoas. Essas métricas
podem ser usadas para avaliar a adequação do esforço previsto e analisar a
situação atual do esforço despendido, sendo essenciais para avaliar a
produtividade.
O Tamanho e a Estabilidade do Produto consiste em outro aspecto
relevante que também pode ser extraído da situação hipotética apresentada.
Esse aspecto por um lado considera o tamanho ou volume do objeto da
análise, enquanto por outro lado pondera mudanças em seu escopo ou
quantidade. O aumento do tamanho ou a diminuição de sua estabilidade
normalmente requer mais recursos ou uma dilatação de seu prazo. Da
mesma forma que na avaliação dos recursos e custos é útil criar categorias
que tornem mais simples o monitoramento, na avaliação do Tamanho e
Estabilidade do Produto também podem ser criadas algumas categorias
como Tamanho Funcional e Tamanho Físico. Na primeira, Tamanho
Funcional, três são as medidas mais utilizadas: Pontos de Função, Carga de
Trabalho com Mudanças Funcionais e Quantidade de Requisitos.
A sistemática apresentada anteriormente é baseada no modelo definido
pelo PSM ( Practical Software and Systems Measurement ). Esse modelo
define um processo prático para avaliação dos diversos aspectos, riscos e
considerações envolvidos em projetos de software. Ele fornece informações
objetivas não só para suporte a decisões coerentes, mas também para que se
alcancem os objetivos técnicos e gerenciais definidos. Ele está baseado em
experiências reais do departamento de defesa, do governo e do mercado
americano, representando as melhores práticas utilizadas por esses grupos.
O núcleo do PSM é a definição do mapeamento entre aspectos gerais e
específicos ao projeto ou organização e as diversas métricas envolvidas,
agrupadas em categorias. A esse mapeamento é dada a designação de “I-C-
M List”. Uma das grandes vantagens do PSM é a disponibilidade de
modelos que refletem padrões adequados para a grande maioria dos casos.
Independentemente do modelo utilizado para implementar um programa
de métricas, a coleta de métricas é apenas um dos requisitos envolvidos. A
combinação dessas medidas coletadas é o que gera visibilidade quanto a
algum aspecto ou conceito relevante ao desenvolvimento ou manutenção de
sistemas. Esses indicadores, baseados em medidas diversas, permitem o
monitoramento dos vários processos envolvidos.
Então, respondendo à pergunta original sobre o que medir: devem ser
medidos características, propriedades e eventos, cuja quantificação seja
relevante para responder a objetivos definidos.
Uma destas propriedades que certamente se enquadra na proposição
referida é o tamanho. Ele tem o papel de ser um fator normalizador dos
dados coletados e deve ser representativo dos bens ou serviços produzidos.
Objetivo
O objetivo deste capítulo é apresentar um breve histórico da análise de
pontos de função e citar outros métodos de medição funcional
desenvolvidos e utilizados atualmente com alguma relevância em outras
partes do mundo. São destacadas também várias organizações que realizam
um importante trabalho de divulgação da importância da medição de
software e de suporte ao desenvolvimento de pesquisas sobre os métodos de
medição e suas aplicações. A página na Internet de cada uma dessas
organizações citadas ao longo deste capítulo é uma interessante fonte de
informações e vale a visita.
Breve Histórico
A técnica da análise de pontos de função surgiu na IBM, no início da
década de 1970, como alternativa às métricas baseadas em linhas de
programa (código-fonte). Na época, Allan Albrecht foi encarregado de
estudar a produtividade dos projetos de software desenvolvidos por uma
unidade da IBM. Alguns desses projetos tinham sido desenvolvidos em
linguagens de programação distintas, tornando inviável uma análise
conjunta de produtividade usando a métrica de linhas de código. Isso
motivou a busca por uma medida que fosse independente da linguagem de
programação utilizada.
Após a apresentação da técnica à comunidade, no final da década de
1970, e dos sucessivos trabalhos efetuados por Capers Jones, destacando
sua importância, houve um crescimento acelerado do número de usuários de
pontos de função, culminando, em 1986, na fundação do International
Function Point Users Group (IFPUG). Em 1988 o IFPUG publicou a
versão 2.0 do seu Manual de Práticas de Contagem (ou CPM - Counting
Practices Manual ), com o objetivo de padronização da técnica. Juntamente
com a aceitação crescente do mercado da técnica de pontos de função
surgiram também diversas variações da proposta apresentada por Allan
Albrecht. Em 1990, o IFPUG publicou a versão 3.0 do seu manual que foi a
primeira versão considerada madura. Desde então este é o padrão mais
difundido no mercado para pontos de função.
Atualmente a versão mais recente do CPM é a 4.3.1. Embora
posteriormente à publicação original tenham surgido outras técnicas de
medição funcional, como Mark II e COSMIC, nenhuma delas possui ainda
a aceitação tão ampla pelo mercado quanto os pontos de função do IFPUG.
IFPUG
O IFPUG 6 é uma entidade sem fins lucrativos, composta por pessoas e
empre- sas de diversos países, cuja finalidade é promover um melhor
gerenciamento dos processos de desenvolvimento e manutenção de
software com o uso de pontos de função e outras técnicas de medição. É
movido pelo trabalho voluntário de seus membros e promove uma série de
ações:
• Conferência anual: especialistas renomados apresentam
o estado da arte na área de métricas de software e os
usuários têm a oportunidade de trocar experiências.
• Seminários e workshops educacionais: abrangem uma
série de tópicos como práticas de contagem de pontos de
função, técnicas de gerenciamento de projeto e melhoria
de processos.
• Certificação profissional: programa que envolve a
certificação dos usuários da técnica como especialistas
em pontos de função (CFPS), de materiais de
treinamento de fornecedores e de ferramentas de
software para apoio ao processo de contagem.
• Comitês e grupos de trabalho: são o centro das
atividades do IFPUG. O comitê de certificação é
responsável por desenvolver e manter o programa de
certificação. O comitê de comunicação e marketing é
responsável por estabelecer e manter os canais de
comunicação entre o IFPUG e seus membros. O comitê
de conferência planeja e promove a conferência anual. O
comitê de padrões de medição funcional é responsável
por manter o CPM e solucionar questões ligadas à
técnica, além de desenvolver conteúdo com diretrizes
para a aplicação de pontos de função em novos
ambientes. O comitê de educação promove os seminários
e workshops . O comitê de performance de TI tem a
missão de ajudar os membros a planejar, gerenciar e
melhorar as práticas e processos de engenharia de
software.
Além dessas ações, o IFPUG tem uma diretoria que possui como um
dos objetivos estimular a criação de associações locais ( chapters ) para
trocar experiências e estabelecer uma rede de contatos entre pessoas com
objetivos comuns, como a análise de pontos de função e métricas de
software.
O manual de práticas de contagem está disponível gratuitamente para os
membros do IFPUG e para os não membros somente mediante aquisição.
Isso dificulta um pouco a difusão da técnica. É uma filosofia diferente da
adotada pelas organizações responsáveis pelo Mark-II e COSMIC que
disponibilizam acesso gratuito aos seus manuais.
NESMA
A NESMA 9 ( Netherlands Software Metrics Users Association ), uma
associação de usuários de métricas de software da Holanda, foi fundada em
maio de 1989, inicialmente com o nome NEFPUG ( Netherlands Function
Point Users Group ). Suas ações e objetivos são semelhantes aos do
IFPUG, inclusive com uma colaboração muito próxima entre as duas
organizações. A NESMA mantém seu próprio manual de contagem (com
distribuição paga), atualmente na versão 2.1, cuja primeira versão de 1990
foi baseada no manual do IFPUG. Ambos os manuais utilizam a mesma
filosofia, conceitos, termos e regras, com algumas diretrizes diferentes, o
que permite que uma contagem de pontos de função de um projeto de
desenvolvimento ou de uma aplicação utilizando as duas abordagens
alcance resultados bem próximos.
Ambas as organizações possuem abordagens distintas para a aplicação
da análise de pontos de função em projetos de melhoria de software,
abordadas no capítulo 7. Atualmente a NESMA é um dos maiores grupos
de usuários de pontos de função da Europa. Algumas propostas
apresentadas pela NESMA são bastante utilizadas pelos usuários de pontos
de função do IFPUG, por exemplo, as técnicas de estimativa de tamanho
(contagem indicativa e estimativa, descritas no capítulo 9).
Mark II
O Mark II ou Mk II foi publicado em 1991 no artigo “Software Sizing
and Estimating: Mk II FPA” por Charles Symons após desenvolvimento
interno da KPMG entre 1985 e 1986, inspirado na proposta de Albrecht.
Seu trabalho tornou-se mais conhecido somente em 1988, após uma
publicação na revista IEEE - Transactions on Software Engineering . A
disseminação da técnica foi dificultada inicialmente pelo fato de o método
ter a situação de método proprietário da consultoria KPMG por vários anos.
Atualmente é de domínio público e a organização responsável por manter o
padrão da técnica é a associação de métricas do Reino Unido - UKSMA 10 ,
que também possui ações e objetivos similares ao IFPUG. Porém, continua
sendo um método de aplicação restrita ao Reino Unido. O manual do MK-II
pode ser obtido gratuitamente por download do site da UKSMA.
COSMIC
Em 1997, um grupo de pesquisadores (Denis St-Pierre, Marcela Maya,
Alain Abran, Jean Marc Desharnais e Pierre Bourque) da Universidade de
Quebec desenvolveu um novo método de medição funcional para sistemas
de tempo real, denominado Full Function Points (FFP). Posteriormente os
experimentos de campo mostraram que esse método poderia ser aplicado
também em sistemas de informação tradicionais, o que motivou os
pesquisadores a trabalhar em uma versão melhorada do método.
Em 1998, um grupo de especialistas em medição de software, liderados
por Alain Abran e Charles Symons, constituiu o COSMIC 11 ( Common
Software Measurement International Consortium ) com o objetivo de
desenvolver um novo método de medição de tamanho funcional baseado
nas melhores características dos métodos existentes e que incorporasse
novas ideias. Esse novo método proposto em 2000, batizado de COSMIC-
FFP (posteriormente simplificado para apenas COSMIC), na prática foi um
refinamento do método FFP.
Atualmente a difusão desse método é maior na Europa e Canadá.
Embora o método do IFPUG seja o de uso mais difundido no mundo, a
produção de trabalhos acadêmicos sobre o COSMIC tem sido maior. O
manual do COSMIC (atualmente na versão 3.0.1) pode ser obtido
gratuitamente por download do site do COSMIC.
ISBSG
O ISBSG 13 ( International Software Benchmarking Standards Group ) é
uma organização sem fins lucrativos, resultado de uma iniciativa conjunta
de diversas organizações de métricas de software do mundo (Austrália,
Estados Unidos, Índia, Espanha, Alemanha, Itália, Japão, Holanda, Reino
Unido etc.), cuja missão é “manter um repositório público de métricas de
projetos de software que possa ajudar na gestão dos recursos de TI pela
melhoria das estimativas de projeto e produtividade, análise de riscos e
benchmarking ”.
As ações do ISBSG nesse sentido são fornecimento de um modelo
padrão para o registro e a coleta de dados de projetos de software,
fornecimento de uma ferramenta de auxílio à coleta de dados,
gerenciamento do repositório de dados de projeto, coordenação de um
programa de pesquisa baseada em seu repositório e publicação de livros e
relatórios.
Seu repositório de dados, contendo informações de mais de 6.000
projetos de software de dezenas de países, constitui-se em uma valiosa
ferramenta de benchmarking . Além disso, possibilita que sejam feitas
diversas análises e pesquisas abordando questões como estimativa,
produtividade, boas práticas etc. Periodicamente o próprio ISBSG publica
diversos relatórios oferecendo análises detalhadas do seu repositório em
diversos aspectos.
Figura 2.1: Produtividade (H/PF) por linguagem de programação
primária dos projetos do repositório do ISBSG. Fonte: The Software
Metrics Compendium, 2002.
Bibliografia
1. ALBRECHT, A. J. Measuring Application
Development Productivity: Proceedings of Joint
SHARE/GUIDE/IBM Application Development
Symposium. Disponível em:
<http://www.fattocs.com.br/artigos/MeasuringAplication
DevelopmentProductivity.pdf>. Versão traduzida para o
português disponível em:
<http://www.fattocs.com.br/artigos/MedindoaProdutivid
adedoDesenvolvimentodeAplicativos.pdf>. Acesso em:
9 jun. 2010.
2. BRAGA, A. Análise de Pontos de Função . Rio de
Janeiro: IBPI Press, 1996.
3. COSMIC. COSMIC Measurement Manual: Versão
3.0.1. Common Software Measurement International
Consortium, 2009.
4. GARMUS, D.; HERRON, D. Function Point
Analysis: Measurement Practices for Sucessful Software
Projects. Addison-Wesley, 2000.
5. IFPUG. Framework for Functional Sizing: Versão
1.0. International Function Point Users Group, 2003.
6. IFPUG. Function Point Counting Practices Manual:
Versão 4.3. International Function Point Users Group,
2010.
7. ISBSG. The Software Metrics Compendium .
International Software Benchmarking Standards Group,
2002.
8. JONES, C. Applied Software Measurement . 2. ed.
Nova York: McGraw-Hill, 1996.
9. KARNER, G. Use Case Points: Resource Estimation
for Objectory Projects. Objective Systems, 1993.
10. SYMONS, C.R. Function Point Analysis: Difficulties
and Improvements. IEEE Transactions on Software
Engineering , v. 14, n. 1, jan. 1988.
11. UKSMA. Mk II Function Point Analysis Counting
Practices Manual: Versão 1.3.1. United Kingdom
Software Metrics Association, 1998.
3
O Processo de Medição
Funcional
Introdução
Este capítulo apresenta a visão geral da medição de software em pontos
de função de acordo com o IFPUG e destaca os princípios fundamentais
para a correta aplicação do método tanto em software pronto (produto)
quanto naquele em desenvolvimento ou melhoria (projeto).
Os métodos de medição permitem expressar quantitativamente
qualidades de um objeto ou fenômeno. Quando se mede um objeto físico, as
dimensões de interesse mais populares costumam ser sua altura, volume,
área ou peso. De maneira análoga, software também tem uma diversidade
de dimensões. A análise de pontos de função mede especificamente os
requisitos funcionais do usuário e essa dimensão recebe o nome de
tamanho funcional .
O processo de medição funcional é representado pelo diagrama da
Figura 3.1, que mostra suas etapas, bem como as relações de
interdependência entre seus passos. Cada passo será explicado ainda neste
capítulo, e alguns serão mais detalhados em capítulos seguintes.
Figura 3.1: Visão geral do processo de medição funcional do
IFPUG.
• Estória de usuário;
• Proposta de projeto;
• Especificação de necessidades de negócio;
• Documento de visão;
• Modelo conceitual de entidades e relacionamentos;
• Diagrama de fluxo de dados;
• Diagrama de casos de uso;
• Especificação de caso de uso;
• Protótipo de interface etc.
A Figura 3.5 a seguir representa, de maneira geral, a dinâmica até a
formação de um requisito de software, segundo os pontos de vista dos
usuários e dos responsáveis pelo desenvolvimento do projeto.
Em um estágio inicial do processo, a necessidade do negócio do usuário
pode ser o único documento disponível para a análise de pontos de função,
o que não invalida sua aplicação. Nesse momento, devido ao baixo grau de
maturidade das informações, algumas premissas quanto a funcionalidades
desconhecidas e suas complexidades são assumidas, viabilizando a
realização de uma estimativa.
Distinção de Requisitos de
Confiabilidade
De maneira similar à orientação “Distinção de Requisitos de
Usabilidade”, quando avaliar, por exemplo, telas estruturadas em abas e
onde em cada passo do processo os dados sejam salvos , faça a seguinte
pergunta ao especialista no assunto:
Pergunta-Chave: “O motivo pelo qual esses dados são salvos em cada
etapa é relativo à instabilidade do ambiente? Por exemplo, em sistemas
Web é comum ao cadastrar um pedido, a cada produto incluído, alterado
ou excluído no pedido, haver a salva da operação para evitar uma nova
digitação, caso a conexão caia. Não fosse essa instabilidade, haveria a
preparação de todo o pedido e apenas ao final da edição desse pedido, ele
seria salvo como um todo, caracterizando o final de um processo de
negócio completo e indivisível. É este o caso nessa situação em análise?”.
Em caso positivo, cabe confirmar a veracidade da resposta com outra
pergunta:
Pergunta de Confirmação: “Outros usuários terem acesso aos dados
salvos nos passos intermediários é um problema violando as regras que
governam o seu sistema? No caso do pedido, antes de se concluir a
montagem do pedido existem mecanismos que impedem que esses dados
sejam publicados para outros usuários. É este o seu caso?”.
Se a resposta for positiva, está confirmado que a única razão para as
salvas intermediárias são os requisitos de confiabilidade do sistema. A
pergunta de confirmação, muitas vezes apresenta um “falso negativo”, na
medida em que a sua implementação requer um trabalho adicional de
desenvolvimento. Muitas vezes nem é dada essa opção ao usuário que não
se apercebe do impacto negativo do atendimento desse requisito não
funcional nas suas práticas e procedimentos (funcional).
Objetivos da APF
O IFPUG define como objetivos primários da análise de pontos de
função:
• Medir a funcionalidade que o usuário solicita e recebe.
• Medir o desenvolvimento e a manutenção de software de
forma independente da tecnologia utilizada para sua
implementação.
Conceito de Usuário
É importante ressaltar que o termo usuário tem um significado mais
amplo para a análise de pontos de função do que o usual. O conceito não
está restrito apenas à pessoa física que usa o software. Usuário é qualquer
pessoa ou coisa que interaja (envia ou receba dados) com a aplicação .
Exemplos de usuário: pessoa física, outra aplicação, um hardware, um ator
em um caso de uso, agentes governamentais (exigências regulatórias do
governo normalmente abrangem boa parte dos requisitos de um software),
gestores do negócio que o software vai atender (na medida em que quem
especifica os requisitos do software, com ele também interage ).
Se a contagem de pontos de função fosse baseada apenas no conceito de
usuário como sendo uma pessoa, não seria possível medir sistemas que não
têm interface com o usuário final. No entanto, a APF pode ser usada para
medir qualquer tipo de software . Todo software existe para fornecer
serviços a alguém (seja uma pessoa ou uma coisa), portanto todo software
tem funções e usuários dessas funções.
Levando-se em consideração essa amplitude do conceito de usuário ,
durante uma contagem de pontos de função convém buscar no conjunto de
usuários possíveis aquele cuja visão melhor representa as funções que a
aplicação fornece. Por exemplo, a aplicação de autoatendimento de um
banco tem como usuários o cliente do banco, o funcionário da agência, o
gestor do departamento responsável. Basear a medição dessa aplicação
somente na visão do cliente final do banco e usuário do autoatendimento é
ter uma visão limitada da aplicação. É fundamental levar em consideração
também a visão do usuário que especifica os requisitos e regras de negócio,
neste caso, o gestor do departamento.
Benefícios
É possível destacar vários benefícios da aplicação da análise de pontos
de função nas organizações:
• Uma ferramenta para determinar o tamanho de um
pacote adquirido pela contagem de todas as funções
incluídas .
• Provê auxílio aos usuários na determinação dos
benefícios de um pacote para sua organização, através da
contagem das funções que especificamente
correspondem aos seus requisitos . Ao avaliar o custo
do pacote, o tamanho das funções que serão
efetivamente utilizadas, a produtividade e o custo da
própria equipe, é possível realizar uma análise do tipo
make or buy .
• Suporta a análise de produtividade e qualidade , seja
diretamente ou em conjunto com outras métricas como
esforço, defeitos e custo. Indicadores de produtividade
(Horas/PF) e qualidade (Defeitos/PF) exercem um papel
fundamental em muitas iniciativas de melhoria de
processo de software.
• Apoia o gerenciamento de escopo de projetos. Um
desafio de todo gerente de projetos é controlar a variação
do escopo (ou scope creep ). Ao realizar estimativas e
medições dos pontos de função do projeto em cada fase
do seu ciclo de vida, é possível determinar se os
requisitos funcionais cresceram ou diminuíram, e se essa
variação corresponde a novos requisitos ou a requisitos
já existentes e que foram apenas mais detalhados.
Portanto, a APF permite quantificar qualquer mudança
de escopo.
• Complementa o gerenciamento dos requisitos ao
auxiliar na verificação da solidez e completeza dos
requisitos especificados. O processo de contagem de
pontos de função favorece uma análise sistemática e
estruturada da especificação de requisitos e traz
benefícios semelhantes ao de uma revisão em pares. A
medição ajuda a expor falhas na documentação de
requisitos. Quando não se consegue medir algum aspecto
do projeto, em geral isso está relacionado às deficiências
nos requisitos.
• Um meio de estimar custo e recursos para o
desenvolvimento e manutenção de software. Por meio da
realização de uma contagem ou estimativa de pontos de
função no início do ciclo de vida de um projeto de
software, é possível determinar seu tamanho funcional.
Essa medida pode ser então utilizada como entrada para
diversos modelos de estimativa de esforço, prazo e custo.
O capítulo 9 é dedicado inteiramente a este assunto.
• Uma ferramenta para fundamentar a negociação de
contratos . É possível utilizar pontos de função para
gerar diversos acordos de níveis de serviço (SLA -
Service Level Agreement ) em contratos de
desenvolvimento e manutenção de sistemas. Além disso,
permite o estabelecimento de contratos a preço unitário -
pontos de função - em que a unidade representa um bem
tangível para o cliente. Essa modalidade possibilita uma
melhor distribuição de riscos entre o cliente e o
fornecedor. O capítulo 10 discute essa abordagem em
detalhes.
• Um fator de normalização para comparação de
software ou para a comparação da produtividade na
utilização de diferentes técnicas. Diversas organizações,
como o ISBSG, disponibilizam um repositório de dados
de projetos de software que permitem a realização de
benchmarking com projetos similares do mercado.
Projeto de Desenvolvimento
O tamanho funcional de um projeto de desenvolvimento mede a
funcionalidade fornecida aos usuários finais do software quando da sua
primeira instalação, e abrange também as eventuais funções de conversão
de dados necessárias à implantação do sistema. Por exemplo, uma
organização empreende um projeto de desenvolvimento de um sistema A
que substituirá um sistema B em uso, e alguns dados desse sistema devem
ser importados para o novo sistema. A contagem desse projeto envolve
todas as funções do sistema A e também todas essas funções que
converterão os dados do sistema B no sistema A.
É importante destacar que qualquer medição realizada antes do término
de um projeto é na verdade uma estimativa das funcionalidades que serão
entregues ao seu final. Conforme os requisitos vão ficando mais claros
durante o projeto, é bastante natural identificar funcionalidades que não
haviam sido especificadas inicialmente e isso impactar no tamanho
originalmente medido.
Projeto de Melhoria
O número de pontos de função de um projeto de melhoria mede as
funções adicionadas, modificadas ou excluídas do sistema pelo projeto, e
também as eventuais funções de conversão de dados.
Quando o projeto de melhoria é concluído e seus produtos instalados, o
número de pontos de função da aplicação deve ser atualizado para refletir as
alterações na funcionalidade da aplicação.
Aplicação
O número de pontos de função de uma aplicação mede a funcionalidade
fornecida aos usuários por uma aplicação instalada. Também é chamado de
número de pontos de função instalados ou baseline . Esse número fornece
uma medida da atual funcionalidade obtida pelo usuário da aplicação. Ele é
inicializado ao final da contagem do número de pontos de função do projeto
de desenvolvimento, sendo atualizado no término de todo projeto de
melhoria que altera a funcionalidade da aplicação.
Na área da tecnologia da informação, o termo “aplicação” possui vários
significados. Na definição do IFPUG, “uma aplicação é um conjunto coeso
de dados e procedimentos automatizados que suportam um objetivo de
negócio, podendo consistir de um ou mais componentes, módulos ou
subsistemas. Frequentemente, o termo “aplicação” é utilizado como
sinônimo para sistema, sistema aplicativo ou sistema de informação”. A
aplicação deve ser definida segundo a visão do usuário e de acordo com
considerações de negócio e não com base em questões técnicas como
arquitetura do software ou plataforma tecnológica.
Fronteira da Aplicação
A fronteira da aplicação é a interface conceitual que delimita o software
que será medido e o mundo exterior (seus usuários). Embora muitas vezes o
conceito da fronteira esteja bem explícito para o sistema que está sendo
contado e não se gaste muito tempo com sua análise, esta etapa é uma das
mais importantes do processo de contagem, pois serve de premissa para os
passos seguintes. Se a definição da fronteira não estiver muito clara, há um
risco muito grande de que todo trabalho de contagem posterior seja
invalidado, pois várias funções serão indevidamente medidas ou deixadas
de fora da medição.
Fazendo uma analogia com o mundo real, a fronteira da aplicação seria
a cerca que delimita uma fazenda. Da mesma forma que seria difícil medir
corretamente a área da fazenda se não houvesse a cerca estabelecendo seus
limites, não é possível medir o tamanho funcional de um sistema sem que
antes tenha se estabelecido claramente a sua fronteira.
Quando há mais de uma aplicação incluída no escopo de uma contagem,
várias fronteiras devem ser identificadas. O IFPUG especifica as seguintes
regras para determinação da fronteira da aplicação:
1. Sua determinação deve ser feita com base no Ponto de
Vista do Usuário . O foco deve estar no que ele pode
entender e descrever.
2. A fronteira entre aplicações deve ser baseada na
separação das funções conforme estabelecido pelos
processos do negócio, não em considerações
tecnológicas.
3. Em projetos de melhoria, a fronteira estabelecida no
início do projeto deve estar de acordo com a fronteira já
estabelecida para a aplicação sendo modificada.
As seguintes dicas ajudam a identificar a fronteira da aplicação:
1. Obter uma documentação do fluxo de dados no sistema
e desenhar uma fronteira em volta para destacar quais
partes são internas e externas à aplicação.
2. Verificar como os grupos de dados são mantidos.
3. Identificar áreas funcionais pela atribuição de
propriedade de certos objetos de análise, como entidades
e processos.
4. Comparar os critérios utilizados em outras métricas,
como esforço, duração, custo e defeitos. As fronteiras
para efeito da análise de pontos de função e as outras
métricas devem ser as mesmas.
5. Verificar como a aplicação é gerenciada; se é
desenvolvida ou mantida na sua totalidade por uma
equipe distinta.
6. Verificar se o software possui Ordens de Serviço
específicas e independentes.
7. Olhe o organograma da empresa e observe qual a
relação entre as áreas e seus sistemas.
A identificação da fronteira da aplicação é um passo essencial para a
medição funcional. Pode ser difícil delinear onde uma aplicação termina e
outra começa. Procure sempre delinear a fronteira de uma perspectiva de
negócio, em vez de se basear em considerações técnicas. O posicionamento
incorreto da fronteira pode alterar a perspectiva da contagem de uma visão
lógica (princípio da APF) para uma visão física. As principais
consequências disso são as seguintes:
1. Contagem duplicada da mesma transação por várias
“aplicações”, uma vez que cada uma delas contribui com
um subprocessamento para a transação do negócio.
2. Contagem de funções de transferência de dados entre
plataformas/aplicações. Por exemplo, a carga diária de
uma tabela do servidor para uma aplicação cliente
poderia ser contada como uma transação de saída para o
servidor e uma transação de entrada para o cliente, além
de dois arquivos (a versão servidor e cliente da tabela).
No entanto, o requisito poderia ser simplesmente o de
validar as transações contra essa tabela.
3. Dificuldade na determinação do tipo de transação.
Como uma “aplicação” provê somente parte do
processamento de uma transação do negócio, esse
processamento pode não satisfazer as regras do IFPUG
para determinação do tipo da transação.
4. Duplicidade na contagem de arquivos. Por exemplo, um
mesmo arquivo poderia ser contado como um requisito
de armazenamento interno para uma “aplicação” e um
requisito de armazenamento externo para outra
“aplicação”.
Dica Prática: Para evitar os problemas citados, uma das primeiras
iniciativas que uma organização interessada em usar a APF deve tomar,
antes de fazer qualquer medição, é mapear todas as suas aplicações (sob a
ótica da APF), identificando suas fronteiras. É muito comum encontrar
elementos que são denominados “sistema”, que não atendem aos princípios
da APF. Geralmente são pedaços de aplicações maiores, que foram tratadas
separadamente talvez por questões técnicas (diferentes plataformas,
linguagens etc.). A tabela seguinte ilustra como uma organização mapeou
suas aplicações, explicitando todos os seus componentes (técnicos ou
módulos), para que todas as medições usem sempre a mesma referência de
fronteira.
Tabela 3.2: Lista de aplicações de uma organização, mapeando os
componentes técnicos e módulos.
Escopo da Contagem
O escopo define quais funções serão incluídas na contagem, se ela
abrangerá um ou mais sistemas ou apenas parte de um sistema. Por
exemplo, o escopo da contagem de uma aplicação pode abranger:
Fator de Ajuste
Para adequar-se ao modelo de referência 14143 da ISO/IEC de medição
do tamanho funcional, o IFPUG tornou o fator de ajuste opcional na
aplicação da técnica da análise de pontos de função. Mesmo antes disso,
vários usuários da APF já não usavam o fator de ajuste. O propósito do
fator de ajuste é medir requisitos gerais da aplicação (não funcionais). Ele
ajusta os pontos de função em ± 35% de acordo com a influência de 14
características gerais. O capítulo 6 aborda o fator de ajuste em detalhes,
discutindo as razões pelas quais este passo do processo tem sido ignorado
por muitos usuários da APF.
Documentar e Reportar
A etapa final da medição consiste em documentar e reportar o resultado
da medição.
O nível de documentação da medição pode variar bastante (implicando
também em mais ou menos esforço na medição). Esse nível de
detalhamento da documentação deve estar alinhado ao propósito da
contagem. Por exemplo, se o propósito for estimar uma ordem de grandeza
de custo para o projeto, qual o sentido de detalhar ao máximo a medição?
Uma vez que a própria medição não necessita de grande precisão para este
caso, o nível de documentação também não deveria ser tão minucioso.
O nível de documentação deve estar previamente acordado entre as
partes interessadas na medição, ponderando-se os custos e benefícios
envolvidos. Um nível de documentação alto na medição implica mais
tempo e custo para essa atividade, porém uma medição bem documentada
facilita:
• Realizar a auditoria da medição;
• Rastrear as funções identificadas até os artefatos do
projeto usados na medição;
• Usar os resultados da medição;
• Manter e evoluir a medição.
Cada organização pode estabelecer os seus padrões de documentação da
medição. A seguir destacamos alguns itens relevantes para documentação.
O capítulo 7 discute esta etapa com mais detalhes.
• As datas de medição e revisão;
• Todas as suposições feitas e questões resolvidas;
• Identificação da documentação de origem na qual a
medição foi baseada;
• Identificação dos participantes, seus papéis e
qualificações;
• Breve descritivo de cada função;
• Referência cruzada de todas as funções de dados para as
funções de transação;
• Referência cruzada de todas as funções para a
documentação de origem.
• Descrição do sistema;
• Lista de atores;
• Lista de casos de uso;
• Especificação dos casos de uso;
• Diagrama de classes;
• Diagrama de entidades e relacionamentos;
• Identificação e classificação das funcionalidades;
• Sumário da contagem dos pontos de função.
Descrição do Sistema
Em um Sistema de Controle de Horário, um trabalhador registra suas
entradas e saídas do ambiente de trabalho. Nos casos em que se esquece de
fazê-lo, ele justifica tal ocorrência. Além disso, ele pode acompanhar a sua
presença com os totais de horas trabalhadas em um determinado período.
Cada trabalhador pode ter acesso apenas às suas informações. Por outro
lado, o gerente pode emitir um relatório com as informações de presença de
todos os funcionários.
Lista de Atores
• Trabalhador
• Gerente
Diagrama de Classes
O diagrama de classes seguinte, Figura 3.18, apresenta uma modelagem
do caso de uso descrito anteriormente. Observe que a classe Pessoa faz
parte de outra aplicação (controle de segurança) e a aplicação de controle de
ponto apenas faz referência a ela.
• Mensagens, Comando
• Apontamento, Justificativa
Alteração de Apontamento:
Tip T P
Nome da função AR/TR Complexidade Origem
o D F
A Caso de
Pessoa (do controle de segurança) 4 1 BAIXA 5
IE Uso 5
A Caso de
Apontamento 4 1 BAIXA 7
LI Uso 1
A Caso de
Justificativa 3 1 BAIXA 7
LI Uso 2
S Caso de
Login 4 1 BAIXA 4
E Uso 5
E Caso de
Registro de ponto 3 1 BAIXA 3
E Uso 1
C Caso de
Consulta apontamento diário 5 1 BAIXA 3
E Uso 1
E Caso de
Apontamento com justificativa 6 2 MÉDIA 4
E Uso 2
E Caso de
Exclusão de apontamento 2 2 BAIXA 3
E Uso 1
E Caso de
Alteração de apontamento 5 2 MÉDIA 4
E Uso 1
S 1 Caso de
Acompanhar presença 3 MÉDIA 5
E 0 Uso 3
S Caso de
Emitir relatório de presença 9 3 MÉDIA 5
E Uso 4
5
Total de Pontos de Função
0
Legenda
(Tipo) - Classificação da funcionalidade (ALI, AIE, EE, SE ou CE)
(TD) - Quantidade de Tipos de Dado
(AR) - Quantidade de Arquivos Referenciados
(TR) - Quantidade de Tipos de Registro
Bibliografia
Introdução
Este capítulo explica o processo e as regras de medição das funções do
tipo dado. Elas representam a funcionalidade fornecida pela aplicação ao
usuário para atender à sua necessidade de dados internos e externos à
aplicação, ou seja, representam os seus requisitos de armazenamento de
dados. São classificadas em Arquivos Lógicos Internos (ALI) e Arquivos de
Interface Externa (AIE). Em resumo, um ALI representa dados centrais de
negócio ou suas referências, mantidos pela aplicação analisada, e um AIE
representa dados referenciados pela aplicação analisada, classificados como
ALI por alguma outra aplicação.
Tipos de dados
< 20 20 - 50 > 50
Tipos de registros 1 Baixa Baixa 1. Média
2- 5 Baixa 2. Média Alta
>5 3. Média Alta Alta
Importante
Na prática, a avaliação dessas considerações é mais relevante
quando a quantidade de tipos de dados está nos limites das
faixas da tabela de complexidade. Não é necessário ser
rigoroso na contagem dos tipos de dados se já se sabe de
antemão que esse número está longe dos limites de mudança
de complexidade. Além disso, uma eventual classificação
incorreta da complexidade da função afeta de forma bem
limitada o resultado final da medição. Um rigor maior deve ser
dedicado à correta identificação da quantidade de funções,
pois isso produz um impacto muito mais significativo para o
resultado final da medição.
Determinação da Contribuição
Após a determinação da complexidade dos arquivos, deve-se calcular sua
contribuição utilizando a seguinte tabela:
Tabela 4.2: Contribuição dos pontos de função das funções do tipo
dado.
Dados de Código
Os requisitos de armazenamento, funcionais e não funcionais, de uma
aplicação são classificados em dados de negócio, dados de referência e dados
de código. Aqueles enquadrados como dados de código, apesar de poderem
representar até metade das entidades em um modelo de dados em terceira
forma normal, não devem ser considerados arquivos lógicos. Eles são uma
implementação de requisitos técnicos e não devem influenciar o tamanho
funcional da aplicação. As operações que existem exclusivamente para a
manutenção de dados de código não devem ser consideradas funções, assim
como os dados de código não devem ser considerados durante a análise da
complexidade das transações (veja capítulo 5).
Em resumo, o IFPUG reconhece que o tamanho de um software possui
dois componentes, sendo técnico e funcional, e apenas o tamanho funcional
pode não ser capaz de responder a todos os problemas relacionados a
estimativas. Uma alternativa apontada é o uso do fator de ajuste. No capítulo
6 são discutidas as várias deficiências existentes nesta abordagem.
Os dados de código, também chamados metadados, em geral não são
especificados pelo próprio usuário, sendo identificados pelo desenvolvedor
em resposta a um ou mais requisitos técnicos. A codificação de atributos
descritivos em objetos de negócio, sua descrição, nome ou outros dados que
também o descrevam, como a data de início e término de sua vigência, são os
atributos típicos desses arquivos. Um arquivo armazenando a sigla e o nome
das unidades da federação se enquadra neste caso. Essa função de
substituição, descrição pelo código, é condição suficiente para que
determinado arquivo em análise seja considerado um metadado, contudo não
é uma condição necessária. Outros casos que devem ser considerados como
dados de código são os seguintes arquivos:
• Que sempre armazenam apenas uma ocorrência e cujo
conteúdo de seus atributos raramente mude. Exemplo: um
sistema projetado para atender a várias organizações deve
permitir que os dados de cada empresa usuária, como
razão social, logomarca, endereço e outras informações
afins, sejam configurados. Essas informações são
utilizadas no cabeçalho de todos os relatórios. O arquivo
que contém esses dados é um exemplo de arquivo de uma
ocorrência e dados de código, não devendo ser
considerado na contagem de pontos de função. A exceção
a esta regra é quando esse arquivo com apenas um
registro armazernar informações de controle do negócio
(parâmetros). Exemplo: a aplicação de automação
bancária possui uma tabela de parâmetros globais com
uma única linha (um único registro). Nela estão
armazenados os seguintes parâmetros: valor limite diário
para saque em conta-corrente no autoatendimento, horário
limite para autodepósito e número de erros permitidos
para a senha. Como esses dados são parâmetros ligados
diretamente ao negócio que o sistema atende, esse arquivo
(mesmo com uma única ocorrência) será considerado um
arquivo lógico (ALI ou AIE).
• Em que tanto a quantidade de ocorrências quanto seu
respectivo conteúdo raramente mudam.
• Templates que armazenam valores padrão para alguns
atributos de uma nova ocorrência de um objeto de
negócio. Uma tabela em que cada ocorrência corresponda
a um objeto de negócio e relacionada a ela uma lista de
campos, indicando em cada um o valor que deve ser
apresentado como default quando da criação de um
registro do respectivo objeto de negócio, é um exemplo de
template.
• Com apenas um atributo. Cada ocorrência representa um
valor válido para o preenchimento do respectivo atributo
em uma ocorrência de um ou mais objetos de negócio. A
relação das unidades (m2 , l, Kg, PF) para cadastramento
de insumos é um exemplo de valores válidos.
• Com dados que raramente mudem e que representam uma
faixa de valores válidos. A mão de obra alocada a um
serviço, em situações normais, apenas pode apropriar
horas em determinado período do dia. A tabela que
armazena essas informações é um exemplo de faixa de
valores válidos.
Os dados de referência são definidos como requisitos de armazenamento
que suportam regras de negócio na manutenção de dados de negócio. É
importante que os dados de referência, incluídos na medição dos pontos de
função, não sejam confundidos com os dados de código, estes não incluídos.
Os dados de código podem ter o código substituído pela respectiva descrição
nos objetos de negócio em que são utilizados sem que o significado destes
últimos seja alterado, enquanto o mesmo não pode ser feito com os dados de
referência.
As informações contendo os impostos aplicáveis em uma operação
comercial, com a sua descrição, codificação e a relação das alíquotas
vigentes em cada período, é um exemplo de dado de referência. A alíquota
aplicável a determinada operação não é substituída pelo código. O código
não é passível de substituição pelo código do imposto.
Os dados de código têm impacto na contagem de projetos medidos e
remunerados em pontos de função. Considere os casos a seguir:
a) O desenvolvedor dimensiona uma tabela e as funções
que a mantêm em 1.000 pontos de função. Algumas
poucas entidades armazenadas lá são dados de
referência, outras, a maioria, são dados de substituição
ou mesmo listas de domínios de valores válidos. Ele
considera cada uma dessas entidades, 40, como ALI, e a
inclusão, alteração, exclusão, consulta detalhada,
consulta em lista e, por fim, lista de seleção (“ drop-
down list box ”) como transações. Antes do CPM 4.2, o
usuário teria alguma dificuldade em questionar tal
medição, apesar de já haver publicações do IFPUG que
ratificassem a sua perspectiva. Com a inclusão das
práticas de contagem no CPM 4.2 e sua manutenção nas
versões subsequentes fica mais fácil questionar tal
medição.
b) O desenvolvedor é remunerado pela medição dos
projetos de melhoria em termos de pontos de função.
Como remunerar uma manutenção especificamente em
uma tabela que implementa dados de código? O estado
da prática é incluir esse tipo de entrega em uma lista de
Itens não Mensuráveis em que se atribui uma medição
específica nessa situação.
Dados O que são? Função de substituição, descrição pelo código.
de Dados de
código substituiçã Condição suficiente para considerar dado de código.
o
Não é condição necessária.
Tanto a quantidade de ocorrências...
Dados
Quanto seu respectivo conteúdo...
estáticos
Raramente mudam.
“Domínios”.
Valores Relação com os valores válidos para preenchimento de atributos de um ou mais
válidos objetos de negócio.
Chamados “ Metadados ”.
Não são especificados pelo próprio usuário.
Representa até 50% das entidades em um modelo de dados em terceira forma normal.
Não devem ser contados como Arquivos Referenciados nas transações que os leem ou mantêm.
Dados de código
Distribuição de dados de um mesmo grupo lógico de dados em vários
Distribui arquivos físicos mantidos em localidades diferentes.
ção de Atende um requisito técnico de disponibilização dos dados.
Arquivos que atendem requisitos de
dados
armazenamento não funcional
Eventualmente, podem atender requisitos funcionais.
Entidades de ligação.
Uma ordem de serviço excluída não tem seus itens remanejados para
outra. Eles são parte integrante daquela ordem de serviço. Sem os dados da
ordem de serviço seus itens não têm significado para o negócio. Ou seja, a
“Itens” é uma entidade dependente. O diagrama seguinte ilustra o
mapeamento da visão do usuário, do negócio, para uma visão de
implementação, técnica.
A entidade independente analisada de forma isolada não é um arquivo
lógico quando tem uma ou mais entidades dependentes. O mesmo se dá com
as entidades dela dependentes. Isoladamente também não são arquivos
lógicos. Um arquivo lógico é identificado pela análise da entidade
independente em conjunto com todas as suas entidades dependentes. Cada
uma das entidades, dependentes ou não, pode ser um tipo de registro
considerado na determinação da complexidade desse arquivo lógico. Por
exemplo, tanto a entidade Ordem de Serviço quanto a entidade Itens da OS
isoladamente não são arquivos lógicos, contudo em conjunto é um arquivo
lógico.
É importante não confundir o conceito de dependente/independente com
a obrigatoriedade de ligação entre duas entidades. Quando a ocorrência do
gerente responsável por determinado conjunto de clientes é excluída da
entidade “ F ”, as ocorrências desse conjunto de clientes na
entidade “ C ” continuam tendo significado para o negócio. No
máximo, a referência ao gerente desses clientes será atualizada com o novo
responsável ou mesmo deixada sem preenchimento - Caso 1. Uma vez
atualizados, esses dados não perderiam seu significado mesmo que o
preenchimento do gerente responsável pelo cliente fosse obrigatório - Caso 2.
A obrigatoriedade de cada cliente ter um gerente responsável é condição
necessária, mas não suficiente para considerar a entidade “ C ”
dependente da entidade “ F ”.
Cada funcionário é responsável por vários clientes.
Entidades
Interdependência entre dependentes (ED)
entidades
Entidade Atributiva
É a entidade dependente que estende conceitualmente outra entidade, a
entidade principal, descrevendo uma ou mais de suas características e cujas
ocorrências podem substituir a repetição de um mesmo subgrupo de dados
em uma única ocorrência da principal. Por exemplo, as entidades
dependentes “ I OS” e “ E C
OS”.
Como exposto, a entidade independente, principal, em conjunto com
todas as entidades dependentes que a descrevem são contadas como um
único arquivo lógico. A entidade atributiva, ou melhor, o grupo lógico com
os tipos de dados que ela compreende afeta a complexidade desse arquivo
lógico pela contagem de novos tipos de registro, ou apenas pela contagem de
novos tipos de dados.
O CPM, ao avaliar as práticas de contagem dessas entidades, considera
que para cada ocorrência da entidade principal deve corresponder no máximo
uma ocorrência da entidade dependente. Neste sentido, quando uma
ocorrência da entidade principal puder existir sem o respectivo par na
entidade dependente, deve-se contar dois tipos de registro, sendo a entidade
principal e a entidade dependente. Quando obrigatoriamente para cada
ocorrência da entidade principal houver necessidade de uma ocorrência da
entidade dependente, ou seja, uma só tem sentido para o negócio
acompanhada do preenchimento da outra, deve-se contar apenas um tipo de
registro, compreendendo os tipos de dados de ambas as entidades.
Existem entidades atributivas que compreendem grupos de dados
repetidos para uma mesma ocorrência da entidade principal. Neste caso,
conta-se um tipo de registro para cada entidade. Mesmo que não haja uma
entidade dependente para tal fim, mas ainda assim existam grupos de dados
repetidos em uma mesma ocorrência de uma entidade, esses grupos também
são contados como um novo tipo de registro. Por exemplo, a entidade “
C ” possui doze campos para armazenar o montante pedido em cada
mês durante o ano. Essa situação deve ser contada como se houvesse uma
entidade “ P M ” com um tipo de dados com o montante pedido e
outro indicando o mês. Ou seja, um tipo de registro deve ser contado com
dois tipos de dados.
Entidade dependente que estende conceitualmente outra entidade.
Defini Descreve uma ou mais características de outra entidade.
ção
Ocorrências podem substituir a repetição de um mesmo subgrupo de dados em
uma única ocorrência de outra entidade.
Entidad Conta-se 1AL em conjunto com a outra entidade.
Relação de
es
interdepen-dência Se uma ocorrência da outra entidade existe sem seu par,
Atributi CPM só
das entidades deve-se contar 2 TR [1:(1) ou (1):1]
vas considera
Conta Se cada ocorrência da outra entidade requer um par, deve-
relacionamento
gem se contar apenas um 1 TR com os TD de ambas as
s 1:1
entidades [1:1]
Entidades atributivas podem compreender grupos de dados repetidos para uma
mesma ocorrência da outra entidade. Conta-se 1 TR para cada entidade.
Figura 4.20: Contagem de entidades atributivas.
Entidades Associativas
As entidades que relacionam duas ou mais outras entidades entre si são
chamadas “Entidades Associativas”. No exemplo seguinte, a entidade
“Trabalho” relaciona as entidades “Ordem de Serviço” e “Funcionário”. Com
a informação disponível no diagrama não podemos concluir se ela pode
apenas relacionar em quais ordens de serviço um funcionário trabalha, se ela
registra dados de negócio relativos ao trabalho ou registra um fato que deve
ser armazenado mesmo quando o trabalho de cada funcionário terminar.
Questões de Fixação
Bibliografia
Introdução
Este capítulo apresenta as definições para as funções do tipo transação e
explica o processo e as regras de contagem relacionadas, exemplificando
sempre que possível.
Função de transação
Atividade de entrada Atividade de saída
Entrada Externa (EE) Saída Externa (SE) Consulta Externa (CE)
Exemplos de EE
São exemplos de entradas externas:
• Transações que recebem dados externos utilizados na
manutenção de arquivos lógicos internos.
• Janela que permite adicionar, excluir e alterar registros
em arquivos lógicos internos contribui com três entradas
externas.
• Processamento em lotes de atualização de bases
cadastrais a partir de arquivos de movimento.
Em geral o nome das transações possui termos bem característicos de
uma entrada externa, como incluir, alterar, excluir, editar, registrar,
importar, gravar, carregar.
Não Exemplos de EE
Não são exemplos de entradas externas:
• Telas de filtro de relatórios e consultas, pois são parte do
relatório ou consulta. Isoladamente não cumprem uma
função para o usuário.
• Menus, que são apenas meios de agrupar e acionar
transações (estas é que são medidas).
• Telas de login cuja sua principal intenção é dizer se o
usuário tem ou não acesso, sendo classificadas como CE
ou SE.
Exemplos de SE
São exemplos de saídas externas:
• Relatórios que possuem totalização de dados.
• Relatórios que também atualizam arquivos.
• Consultas que apresentam cálculos ou dados derivados.
• Arquivo de movimento (exemplo: arquivo de remessa ou
retorno) que foi gerado para outra aplicação.
• Informações que têm formato gráfico (em geral possuem
cálculo, totalização).
• Telas de login que em geral contemplam cálculo, por
exemplo criptografia, ou atualização de dados.
Não Exemplos de SE
Não são exemplos de saídas externas:
• Telas de help , pois normalmente a capacidade de ajuda
on-line é requisito não funcional.
• Listagens de dados que em geral são classificadas como
CEs, pois consistem apenas em recuperação e
apresentação de dados.
• Consultas e relatórios sem nenhum totalizador, que não
atualizam arquivos, não têm dados derivados ou
modificam o comportamento do sistema.
Definição de Consulta Externa (CE)
Uma consulta externa (CE):
1. É um processo elementar .
2. Envia dados ou informações de controle para fora da
fronteira da aplicação.
3. Tem como principal intenção apresentar informação ao
usuário por meio de uma simples recuperação de dados
ou informações de controle de ALIs e/ou AIEs. A lógica
de processamento não deve conter fórmula matemática
ou cálculo, tampouco criar dados derivados. Nenhum
ALI é mantido durante seu processamento, nem o
comportamento do sistema é alterado.
Exemplos de CE
São exemplos de consultas externas:
Não Exemplos de CE
Não são exemplos de consultas externas:
Processo Elementar
Um processo elementar é a menor unidade de atividade que satisfaz
todas as seguintes regras:
a) Tem significado para o usuário.
b) Constitui uma transação completa.
c) É autocontido.
d) Deixa o negócio da aplicação sendo contada em um
estado consistente.
Exemplo: o agendamento de um compromisso, indicando como será o
parcelamento da despesa e o rateio desta entre as unidades organizacionais
é a menor unidade de atividade do usuário de contas a receber.
Exemplo: ao final do agendamento de um compromisso, ele deixa o
sistema em estado íntegro. O agendamento do compromisso sem o devido
registro do parcelamento não é considerado um processo completo para o
usuário.
Na tela seguinte de manutenção de compromisso não se pode dizer que
há uma única transação de Manter Compromisso, pois há unidades de
atividade com significado para o usuário menores que ela: Incluir (novo)
Compromisso (EE), Alterar Compromisso (EE), Consultar Compromisso
(implícita, precedendo a alteração, classificada como SE se interpretarmos
que ela possui cálculos) e Excluir Compromisso (EE). Estas quatro
transações também são completas do ponto de vista do usuário,
independentes entre si e deixam a aplicação num estado consistente.
Por outro lado, se tentarmos quebrar demais a tela, o conceito de
processo elementar deixa de ser atendido. É o caso paralisa os campos de
Plano de Pagamento da mesma tela. Embora eles tenham uma barra de
ferramentas própria, permitindo inclusão, alteração e exclusão de dados, do
ponto de vista de negócio a manutenção do Plano de Pagamento só tem
sentido quando se inclui ou se altera um compromisso. Ou seja,
isoladamente a manutenção de Plano de Pagamento não é algo completo,
portanto não haverá transações adicionais.
Informações de Controle
Informações de Controle são dados que influenciam um processo
elementar da aplicação sendo contada. Elas especificam o quê, quando ou
como os dados devem ser processados. Em resumo, são parâmetros.
Exemplos
O quê: determinado campo especifica que o cálculo da parcela deve
contemplar somente o valor vencido ou o valor corrigido com juros e multa.
Quando: uma enquete pode ter um fechamento automático (votações
finalizadas) definido pela data do seu encerramento.
Como: durante a compra de uma passagem aérea, o cliente informa em
um campo como deseja receber a confirmação da compra: por e-mail,
torpedo (SMS) ou fax.
Exemplo: as telas de configuração de preferências de usuário, na
maioria dos softwares, contêm várias informações de controle. No caso do
Internet Explorer são exemplos de informação de controle: página inicial,
quantidade de dias que as páginas ficam no histórico de visitas, nível de
privacidade.
Exemplo: em uma loja de comércio eletrônico, a operação de compra
possui uma informação de controle - forma de pagamento - que determina
como o processo ocorrerá (se vai emitir um boleto, se fará débito na conta,
se vai usar cartão de crédito). Cada forma de pagamento possui um
tratamento diferenciado.
Figura 5.4: Exemplo de informações de controle do Internet
Explorer 7.0.
Dado Derivado
Informação criada a partir da transformação de dados existentes. Requer
outro processamento além da recuperação, conversão e edição direta de
dados de um arquivo lógico interno e/ou arquivo de interface externa. Ou
seja, é um dado apresentado pelo sistema, mas não está armazenado em um
arquivo lógico. Ele é criado através de uma lógica de processamento
(cálculo, por exemplo). Exemplos de dados derivados podem ser todos os
campos apresentados pela transação que sejam resultados de cálculos: total
de faturamento, tempo médio entre falhas, porcentagem de participação do
produto X nas vendas.
Modificar o Comportamento do Sistema
Modificar o comportamento do sistema significa alterar um parâmetro
de negócio (através de alguma transação). O efeito causado por essa
mudança no parâmetro tem reflexo no comportamento de outras transações.
Exemplo: o sistema de compras dá autonomia para que cada comprador
possa efetuar compras de até R$10.000,00 no mês sem autorização da
chefia. Este valor é um parâmetro do sistema e quando for alterado, afetará
as transações de compra, ou seja, alterará o comportamento do sistema.
Lógica de Processamento
Lógica de Processamento é definida como qualquer um dos requisitos
apresentados em seguida especificamente solicitados pelo usuário para
completar um processo elementar. A tabela seguinte resume as lógicas de
processamento que podem ser executadas por cada tipo de transação. A
diferença fundamental entre elas está na sua principal intenção . Em cada
uma delas é necessário que seja executada determinada lógica de
processamento para que sua principal intenção seja alcançada.
Tabela 5.2: Resumo das lógicas de processamento.
Requisito Funcional
Definição: os requisitos funcionais do usuário são um subconjunto dos
requisitos do usuário; descrevem o que o software deve fazer em termos de
tarefas e serviços.
Diretriz: requisitos funcionais são aqueles requisitos particulares e
específicos de uma tarefa ou serviço; contrasta com aqueles requisitos já
atendidos de maneira geral por infraestrutura que fornece serviços
genéricos, independentes de uma tarefa em particular.
Cenário (a) - Requisito não Funcional: todos os relatórios do sistema
devem, por força de uma política de TI, ser passíveis de geração nos
formatos Portable Document Format (.pdf); Microsoft Word (.doc);
Microsoft Excel (.xls) e texto (.txt).
Os usuários do ambiente Java são informados quanto a essa política
geral e orientados a não solicitar essa característica como um requisito ao
expor as suas necessidades em função de ela já ser uma limitação do
projeto. Trata-se de um requisito não funcional.
Cenário (b) - Requisito Funcional: um determinado relatório em
particular deve poder ser gerado em papel e em um leiaute específico para
envio para um órgão regulador. Ambos os produtos são idênticos em termos
de conteúdo e em boa parte de sua lógica de processamento. Diferem na
apresentação dos dados que é feita de uma forma específica em cada caso.
Trata-se de um requisito funcional.
“Completo”
Definição
i. Estado consistente: ponto onde o processamento foi
totalmente executado; o requisito funcional do usuário
foi satisfeito e não há nada mais a fazer.
ii. Autocontido: não há passos de processamento
anteriores ou posteriores necessários para iniciar ou
completar o requisito funcional do usuário.
Diretriz
1) Considerar a ótica do negócio e não a ótica do sistema
para julgar um estado como consistente e um
processamento como autocontido.
Cenário (1.a): é muito comum em ambiente Web haver gravações de
quadros em um formulário que o compreende e representando um único
documento alvo como uma transação completa em nível de sistema.
Trata-se do mesmo ator realizando uma mesma função em um único
passo do fluxo de trabalho . Por motivações não funcionais (restrições em
função da instabilidade do ambiente) o trabalho realizado no quadro é
gravado antes de terminar todo esse passo para atender limitações de ordem
geral quanto à qualidade e à organização.
Os conceitos de completo e autocontido aplicam-se ao preenchimento
do documento alvo em termos dos dados definidos naquele passo do fluxo
de trabalho por um mesmo ator, incluindo eventuais conjuntos de dados que
tenham várias possíveis ocorrências informadas e apresentadas em quadros.
Cenário (1.b): antes de prosseguir para um próximo passo em um fluxo
de trabalho automatizado, o documento pode ser salvo como um rascunho
ou então como uma versão final. Haverá uma série de consequências em
termos dos próximos passos. Se salvo como um rascunho, o usuário pode
realizar alterações ou mesmo excluir o documento informado no sistema. Se
salvo como uma versão final, o documento não pode ser mais alterado por
esse usuário e se torna disponível para processamento em outros passos do
fluxo de trabalho. Mesmo que salvar como um rascunho ou como uma
versão final sejam duas ações em um formulário, trata-se de um campo
sendo informado pelo usuário durante um processo de inclusão e alteração.
O que é completo é informar os dados do formulário; informar a sua
condição (rascunho ou versão final) é salvar os dados.
2) Se atores diferentes ou eventualmente o mesmo ator,
desde que em diferentes passos do fluxo de trabalho,
realizam atualizações em um mesmo documento
referentes às informações que são criadas e devem ser
registradas nos diferentes passos, vários processos
diferentes são considerados completos e não
simplesmente as funções de inclusão e alteração do
documento são contadas.
Cenário (2.a): antes de prosseguir para um próximo passo em um fluxo
de trabalho automatizado, o documento deve ser caracterizado como uma
versão final. Sempre ao salvar o documento nas funções de inclusão ou
alteração, ele é guardado na condição de rascunho. Existe um passo no
fluxo de trabalho em que nenhum dado é alterado e o usuário indica, após a
revisão dele, que ele agora está na condição de versão final. Neste cenário,
promover documento à condição de versão final é completo e independente
da alteração ou inclusão (observe o contraste deste exemplo com o exemplo
(1.4.1.b) anteriormente apresentado).
3) O critério para identificar um processo completo é de
que o requisito do usuário possa ser atendido com apenas
uma interface com o usuário em vez de utilizar diversas,
ainda que dessa forma funcione mal (pouca usabilidade e
desempenho sofrível, por exemplo) e ofereça maior
complexidade técnica.
Cenário (3.a): todos os atores habilitados a incluir ou alterar uma
solicitação de serviço podem também registrar um complemento a ela ou
incluir um novo participante. Existem três interfaces com o usuário para
esse fim, contudo não há nada em termos das práticas e procedimentos do
usuário que impeça de isso ser entregue como uma única interface com o
usuário.
Determinação da Complexidade
Cada Entrada Externa, Saída Externa e Consulta Externa deve ser
classificada com relação à sua complexidade funcional (baixa, média ou
alta) baseado em:
• Número de Arquivos Referenciados (AR);
• Número de Tipos de Dado (TD).
Determinadas as quantidades de arquivos referenciados e de tipos de
dados, a classificação com relação à complexidade é fornecida pelas
seguintes tabelas:
Tabela 5.3: Tabela de complexidade para entradas externas (EEs).
Tipos de dados (TDs)
<5 5 - 15 > 15
<
Baixa Baixa Média
Arquivos referenciados (ARs) 2
2 Baixa Média Alta
>
Média Alta Alta
2
Importante
Das tabelas de complexidade percebe-se que tanto EEs
quanto SEs podem não ter arquivos referenciados, no entanto
uma CE, pela própria definição, deve referenciar ao menos
um arquivo lógico (ALI/AIE).
Mesmo que o ALI/AIE tenha vários tipos de registro, não deve contá-lo
mais de uma vez.
NÃO conte arquivos que não são classificados como ALI ou AIE. Veja
exemplo para dados de Tipo de Documento, Figura 5.7, destacada da
transação Incluir Compromisso, Figura 5.2. Assumindo que Tipo de
Documento fosse classificado como Dados de Código e que a transação de
inclusão do compromisso tivesse de ler dados dessa entidade, ainda assim
esta não seria contada como AR da transação.
Figura 5.7: Tipo de Documento (dados de código), lido pela
transação, mas não contado como AR.
Quando a transação manipula dados que não são arquivos lógicos, não
há AR a ser contabilizado para esses dados.
NÃO conte o mesmo arquivo mais de uma vez, mesmo que a transação
faça várias leituras ou atualizações nele.
Importante
Na prática, a avaliação dessas considerações é mais relevante
quando a quantidade de tipos de dados está nos limites das
faixas da tabela de complexidade. Não é necessário ser
rigoroso na contagem dos tipos de dados se já se sabe de
antemão que esse número está longe dos limites de mudança
de complexidade. Além disso, uma eventual classificação
incorreta da complexidade da função afeta de forma bem
limitada o resultado final da medição. Um rigor maior deve
ser dedicado à correta identificação da quantidade de funções,
pois isso produz um impacto muito mais significativo para o
resultado final da medição.
Determinação da Contribuição
Após a determinação da complexidade das funções do tipo transação,
deve-se calcular sua contribuição utilizando a seguinte tabela:
Tabela 5.5: Contribuição dos pontos de função das funções do tipo
transação.
Questões de Fixação
Bibliografia
Fator de Ajuste
O fator de ajuste não faz mais parte do processo de medição funcional
aderente à ISO/IEC 14133, contudo ainda é parte do Manual de Práticas de
Contagem como um apêndice, para manter a compatibilidade com aqueles
usuários que usam pontos de função com o fator de ajuste. Embora seja um
apêndice do manual, as suas regras e definições são objeto de questões na
prova de certificação como especialista em pontos de função (CFPS, veja
capítulo 11). Apenas por este motivo ainda mantemos no livro este assunto,
pois ele está obsoleto e na prática quase ninguém mais se interessa por ele.
O Valor do Fator de Ajuste (VAF) é baseado em 14 Características
Gerais de Sistema (CGS), listadas a seguir.
Tabela 6.1: Características Gerais de Sistema que determinam o
Fator de Ajuste.
0. Nenhuma Influência
1. Influência Mínima
2. Influência Moderada
3. Influência Média
4. Influência Significativa
5. Grande Influência
N N
CGS CGS
I I
Comunicação de Dados 5 5
Processamento Distribuído 2 Atualização On-Line 2
Performance 2 Complexidade de Processamento 0
Configuração Altamente Utilizada 2 Reusabilidade Facilidade de Instalação 1
Volume de Transações 2 Facilidade de Operação 2
Entrada de Dados On-Line 5 Múltiplos Locais Facilidade de Mudanças 2
Eficiência do Usuário Final 2 2
Considerações
Quando a técnica de pontos de função foi apresentada por Allan
Albrecht, em 1979, não havia as 14 CGSs. O fator de ajuste era
determinado de forma totalmente subjetiva, o qual poderia produzir uma
variação de ± 25% nos pontos de função. Na revisão da técnica, em 1984,
foram introduzidas as atuais 14 CGSs e o fator de ajuste foi alterado para
produzir a variação de ± 35%.
O uso do fator de ajuste tornou-se opcional ao final do ano de 2002,
como uma medida para aceitação dos pontos de função do IFPUG como um
método padrão de medição funcional aderente à norma ISO/IEC 14143,
pois várias das CGSs contemplam requisitos não funcionais.
Antes mesmo do uso do fator de ajuste tornar-se opcional, uma
pesquisa(8) apoiada pelo IFPUG demonstrou que vários usuários já não o
utilizavam. Por exemplo, um dos modelos de estimativa para software mais
comuns, o COCOMO II, utiliza apenas os pontos de função como entrada
do processo; o fator de ajuste é ignorado.
Este é um ponto tão criticado da técnica que um grupo de trabalho do
comitê de práticas de contagem do IFPUG foi composto para se dedicar ao
assunto. Duas razões para a criação desse grupo foram: a grande variação
na interpretação das CGSs e a constatação de que algumas delas estão
desatualizadas. O resultado produzido pelo grupo foi a alteração de algumas
diretrizes para a pontuação das CGSs e a inclusão de dicas e exemplos.
Embora isso tenha melhorado um pouco a questão da subjetividade na
determinação do nível de influência das CGSs, na essência os problemas
originais permanecem.
Pesquisas realizadas (LOKAN, 1999) apontam várias críticas ao VAF e
às CGSs tanto do ponto de vista teórico quanto prático:
1. Comunicação de Dados
Descreve o nível em que a aplicação comunica-se diretamente com o
processador. Os dados ou informações de controle utilizados pela aplicação
são enviados ou recebidos por meio de recursos de comunicação. Terminais
conectados localmente à unidade de controle são considerados recursos de
comunicação. Protocolo é um conjunto de convenções que permite a
transferência ou intercâmbio de informações entre dois sistemas ou
dispositivos. Todos os links de comunicação necessitam de algum tipo de
protocolo.
Pontue de acordo com as seguintes orientações:
0 A aplicação é puramente batch ou uma estação de
trabalho isolada.
1 A aplicação é puramente batch , mas possui entrada de
dados ou impressão remota.
2 A aplicação é batch , mas possui entrada de dados e
impressão remota.
3 A aplicação possui entrada de dados on-line , front-end
de teleprocessamento para um processamento batch ou
sistema de consulta.
4 A aplicação é mais que um front-end , mas suporta
apenas um tipo de protocolo de comunicação.
5 A aplicação é mais que um front-end , e suporta mais de
um tipo de protocolo de comunicação.
Considerações e Exemplos
Pelo perfil atual das aplicações, sistemas batch são cada vez mais raros,
por isso poucas aplicações hoje pontuariam com menos de 2 ou 3. Segundo
um estudo realizado por Lokan(5), de uma amostra de 235 projetos de
software do repositório do ISBSG, 56% dos projetos pontuavam com 4 ou
5. Em geral, uma aplicação cliente x servidor em duas camadas pontuará
com 4. Aplicações de tempo real, servidores de aplicação e middlewares
pontuarão com 5.
2. Processamento Distribuído
Descreve o nível em que a aplicação transfere dados entre seus
componentes. Funções ou dados distribuídos dentro da fronteira são
características da aplicação.
Pontue de acordo com as seguintes orientações:
0 A aplicação não participa da transferência de dados ou
processamento de funções entre os componentes do
sistema.
1 A aplicação prepara dados para processamento pelo
usuário final em outro componente do sistema, como
planilhas eletrônicas ou banco de dados.
2 Dados são preparados para transferência, então são
processados em outro componente do sistema (não para
processamento pelo usuário final).
3 Processamento distribuído e transferência de dados são
feitos on-line e em apenas uma direção.
4 Processamento distribuído e transferência de dados são
feitos on-line e em ambas as direções.
5 O processamento de funções é executado dinamicamente
no componente mais apropriado do sistema.
Considerações e Exemplos
Segundo o estudo de Lokan (5) , esta é uma característica mais presente
em sistemas transacionais do que em sistemas de informação gerencial e
suporte à decisão. Um sistema de desktop isolado (aplicação e banco de
dados local) pontuará com 0. Um sistema de n camadas pontuará com 4.
Para pontuar como 5, o sistema deveria ter componentes executando em
múltiplos servidores ou processadores, sendo cada um deles selecionado
dinamicamente de acordo com sua disponibilidade.
3. Performance
Descreve o nível em que considerações sobre tempo de resposta e taxa
de transações influenciam o desenvolvimento da aplicação. Os objetivos
estabelecidos ou aprovados pelo usuário, em termos de tempo de resposta
ou taxa de transações, influenciam (ou influenciarão) o projeto,
desenvolvimento, instalação e suporte da aplicação. A questão que deve ser
avaliada para essa CGS é “Quão rápida deve ser a aplicação e o quanto isso
influencia o projeto?”
Pontue de acordo com as seguintes orientações:
0 O usuário não estabeleceu nenhum requisito especial
sobre performance.
1 Requisitos de performance e projeto foram estabelecidos
e revisados, mas nenhuma ação em especial foi tomada.
2 Tempo de resposta ou taxa de transações são críticos
durante as horas de pico. Não é necessário nenhum
projeto especial para a utilização de CPU. O limite para o
processamento é o dia seguinte.
3 Tempo de resposta ou taxa de transações são críticos
durante todas as horas de trabalho. Não foi necessário
nenhum projeto especial para a utilização de CPU. O
limite de processamento é crítico.
4 Adicionalmente, requisitos especificados pelo usuário
são exigentes o bastante para que tarefas de análise de
performance sejam necessárias na fase de projeto.
5 Adicionalmente, ferramentas de análise de performance
devem ser utilizadas nas fases de projeto,
desenvolvimento e/ou implementação para que os
requisitos de performance do usuário sejam atendidos.
Considerações e Exemplos
Esta característica tem uma forte relação com a CGS 5 - Volume de
Transações. Como exemplo de um sistema que pontuaria como 5, pode-se
citar um presenciado pelos autores. Um novo sistema de automação de
agências bancárias seria desenvolvido para substituir o existente. Havia um
requisito de performance: o tempo para autenticação de um documento pelo
caixa do banco não poderia ser superior ao do sistema atual. Uma diferença
de um segundo já era considerada inaceitável, portanto tarefas de análise de
performance tiveram que ser executadas e uma forma de demonstrar ao
cliente que o objetivo estava sendo atingido foi implementada.
5. Volume de Transações
Descreve em que nível o alto volume de transações influencia o projeto,
desenvolvimento, instalação e suporte da aplicação. A questão que deve ser
avaliada para essa CGS é “O quanto o volume de transações que a aplicação
deve processar em um determinado período de tempo afeta o projeto?”
Pontue de acordo com as seguintes orientações:
0 Não é previsto nenhum período de pico de transações.
1 São previstos períodos de pico de processamento (por
exemplo: mensal, quinzenal, periódico, anual), mas o
impacto no esforço do projeto é mínimo.
2 Volumes de transação regulares (por exemplo: picos
semanais) são previstos. Há algum impacto no esforço do
projeto.
3 Altos volumes de transação (por exemplo: picos diários)
são previstos, consequentemente com impacto
significativo no esforço do projeto.
4 Altas taxas de transação definidas pelo usuário nos
requisitos ou os níveis de serviço acordados são altos o
bastante para requererem tarefas de análise de
performance na fase de projeto.
5 Adicionalmente, existem requisitos de ferramentas de
análise de performance nas fases de projeto,
desenvolvimento e/ou instalação.
Considerações e Exemplos
Esta característica tem uma forte relação com a CGS 3 - Performance.
Um exemplo de aplicação com picos diários de transação é o registro de
pontos de funcionários.
8. Atualização On-Line
Descreve em que nível os arquivos lógicos internos da aplicação são
atualizados de forma on-line .
Pontue de acordo com as seguintes orientações:
0 Não há nenhuma atualização on-line .
1 Existe a atualização on-line de um a três arquivos.
Volume de atualização é pequeno e a recuperação é fácil.
2 Existe a atualização on-line de quatro ou mais arquivos.
Volume de atualização é pequeno e a recuperação é fácil.
3 A atualização da maioria dos arquivos internos é on-line
.
4 Adicionalmente, a proteção contra a perda de dados é
essencial e foi especialmente projetada e programada no
sistema.
5 Adicionalmente, o alto volume de processamento torna
necessária a análise do custo do processo de recuperação.
São incluídos procedimentos altamente automatizados
com um mínimo de intervenção do operador.
Considerações e Exemplos
Nesse caso também algumas das diretrizes estão defasadas. À exceção
de aplicações batch , a pontuação será de no mínimo 3.
9. Complexidade de Processamento
Descreve em que nível o processamento lógico ou matemático
influencia o desenvolvimento da aplicação. Os seguintes componentes estão
presentes:
10. Reusabilidade
Descreve em que nível a aplicação e seu código foram especificamente
projetados, desenvolvidos e suportados para serem utilizados em outras
aplicações.
Pontue de acordo com as seguintes orientações:
0 Não há código reutilizável.
1 Código reutilizável é utilizado na aplicação.
2 Menos de dez por cento do código-fonte da aplicação foi
construído levando em consideração o uso em mais de
uma aplicação.
3 Dez por cento ou mais do código-fonte da aplicação foi
construído levando em consideração o uso em mais de
uma aplicação.
4 A aplicação foi especificamente empacotada e/ou
documentada para fácil reutilização. Ela é customizada
pelo usuário no nível de código.
5 A aplicação foi especificamente empacotada e/ou
documentada para fácil reutilização. Ela é customizada
pelo usuário por meio de manutenção de parâmetros.
Considerações e Exemplos
Essa CGS é um requisito de qualidade do software, não um requisito
funcional. É difícil (senão impossível) de ser avaliada para uma aplicação
em que não estão disponíveis documentos do projeto ou o código-fonte.
Além disso, possui considerações técnicas que contrariam o objetivo
principal da técnica que é medir o software do ponto de vista do usuário
pela funcionalidade fornecida.
Bibliografia
Projeto de Desenvolvimento
Componentes para o cálculo do número de pontos de função de um
projeto de desenvolvimento:
Exemplo 2
Após a implantação do sistema de controle de ponto do exemplo 1, ele
sofrerá manutenção. O projeto de melhoria vai excluir funções da aplicação,
adicionar e alterar. Não há funções de conversão de dados envolvidas no
projeto.
Depois do projeto de
Antes do projeto de melhoria
Tip melhoria
Descrição da função
o1 T AR/TR Complexidad P T AR/TR Complexidad P
D2 3 e F D2 3 e F
AI
Senha 2 1 Baixa 5
E
Depois do projeto de
Antes do projeto de melhoria
Tip melhoria
Descrição da função
o1 T AR/TR Complexidad P T AR/TR Complexidad P
D2 3 e F D2 3 e F
S 1
Relatório de ponto 4 Alta 7
E 2
C
Login 4 1 Baixa 3 4 2 Baixa 3
E
Relatório de S
8 4 Alta 7
justificativas E
S 1
Relatório de horas 4 Alta 7
E 0
1 Tipo: EE, EI, CE, ALI e AIE
2 TD: Número de tipos de dados
3 AR/TR: Número de arquivos referenciados/tipos de registro
Aplicação
Existem duas fórmulas para calcular o número de pontos de função da
aplicação. Uma para a primeira contagem dos pontos de função da
aplicação e outra para recalcular seu tamanho após um projeto de melhoria
ter alterado sua funcionalidade.
Fórmula da Contagem Inicial da
Aplicação
AFP = ADD
Em que:
≤100 >100
(%) Mudança de TDs ≤ 1/3 (x 100%) ≤ 2/3 (x 100%)
% %
Fator de impacto 0,25 0,50 0,75 1,00
% Mudança de TDs
% Mudança de ARs ≤ 2/3 (× 100%) ≤ 100% > 100%
≤ 1/3 ( × 100%) 0,25 0,50 0,75
≤ 2/3 ( × 100%) 0,50 0,75 1,00
≤ 100% 0,75 1,00 1,25
> 100% 1,00 1,25 1,50
Manutenções “Cosméticas”
Outra diferença entre o método da NESMA e o do IFPUG é com relação
a alterações “cosméticas” nas transações. Para o método da NESMA isso
entra no escopo da contagem, ao contrário do IFPUG que considera uma
manutenção perfectiva e, portanto, não ponderado pela APF.
A manutenção cosmética é caracterizada por mudança apenas na
apresentação da função ao usuário ou na forma como a entrada de dados é
realizada, sem nenhuma alteração na lógica de processamento. Exemplos:
mudança de ordem (posicionamento ou tabulação) dos campos, formatação
de rótulos ou campos (cores, fontes, tamanho etc.). Para essa manutenção
não há alteração em TDs e ARs, portanto o fator de impacto é 0,25.
Imagine que você leve o seu carro para fazer uma revisão na oficina.
Após avaliação da oficina você é informado de que o orçamento total da
revisão ficou em R$2.000,00. Qual a sua decisão, autorizar ou não o
serviço? Na prática não é possível tomar uma boa decisão sem conhecer
todos os itens que farão parte da revisão e que computaram neste valor total.
Se você é informado de que a revisão será apenas a troca de óleo
provavelmente, você não aprovará o orçamento, pois este valor é caro,
considerando apenas esse serviço. Porém, se você é informado que tem de
ser trocado o óleo, os quatro pneus, correia dentada, filtro de combustível,
escapamento, catalisador, talvez julgue o valor do orçamento adequado e
autorize o serviço.
O ponto que queremos destacar é que nem sempre o que interessa na
contagem de pontos de função é apenas o número final que reflete o
tamanho medido. Não basta entregar ao cliente o número final da medição
(ou estimativa); é preciso que junto seja entregue também toda a memória
de cálculo do processo de análise que resultou naquele número. Caso
contrário, quem recebe a informação da medição não tem como se certificar
de que o número final apresentado é correto ou não. O mais comum é que a
medição seja entregue com a planilha de contagem final, permitindo que
todo processo de análise seja verificado se necessário por quem usará o
resultado daquela medição.
A documentação da contagem tem o propósito de agregar valor à
medição que será feita, facilitando um eventual processo de auditoria e
também minimizando erros do analista responsável pela medição. O nível
de documentação da medição pode variar bastante (implicando também em
mais ou menos esforço na medição). Esse nível de detalhamento da
documentação deve estar alinhado ao propósito da contagem. Por exemplo,
se o propósito for estimar uma ordem de grandeza de custo para o projeto,
qual o sentido de detalhar ao máximo a medição? Uma vez que a própria
medição não necessita de grande precisão para este caso, o nível de
documentação também não deveria ser tão minucioso.
É importante lembrar que um dos objetivos principais do processo de
medição é ser simples. Logo, o nível de documentação deve ser bem dosado
para que equilibre o esforço que se gastará na medição e a necessidade de
informação que agregue valor a esta.
O nível de documentação deve estar previamente acordado entre as
partes interessadas na medição, ponderando-se os custos e benefícios
envolvidos. Um nível de documentação alto na medição implica mais
tempo e custo para essa atividade. Cada organização deve estabelecer os
seus padrões de documentação da medição.
Bibliografia
Estudos de Caso
Introdução
Este capítulo fornece estudos de caso para que sejam exercitados os
tipos de contagem da análise de pontos de função. Como regra geral,
abstraia da análise e da modelagem do sistema apresentado, concentrando-
se apenas nas funcionalidades descritas nos enunciados.
O tipo de contagem, o propósito, o escopo e a fronteira da aplicação
estão definidos no enunciado de cada exercício. É preciso identificar as
funções dos tipos dado e transação, classificá-las, calcular o tamanho
funcional e, opcionalmente, o fator de ajuste e os pontos de função
ajustados.
São quatro estudos de caso: contagem de aplicação, contagem de projeto
de desenvolvimento, contagem de projeto de melhoria e estimativa. Você
pode utilizar uma planilha eletrônica para auxiliá-lo na tarefa, a qual pode
ser obtida gratuitamente no site da Editora Érica.
Dica
Para a identifi cação das funções do tipo dado, não se
restrinja ao modelo de entidades e ao dicionário de dados;
leia todos os requisitos da aplicação. O modo como as
transações operam os dados traz informações relevantes à
correta identifi cação e classifi cação dos arquivos lógicos.
Contagem de Aplicação
Neste estudo o objetivo é contar os pontos de função de uma pequena
aplicação de faturamento de uma empresa de serviços, a ACME, e
consolidar todos os conceitos teóricos abordados no curso por meio de um
estudo de caso simples.
Lembre-se de que esta é uma aplicação em uso pela empresa e não se
deve entrar no mérito da análise e modelagem do sistema ou do negócio.
Sua função é apenas medir o tamanho funcional. Não se preocupe em
avaliar se os requisitos estabelecidos fornecem a melhor solução ao usuário,
pois isso é papel do analista de negócios.
Características da Aplicação
O sistema é uma aplicação típica do Windows. Foi desenvolvida
internamente na empresa em linguagem de quarta geração e utiliza banco de
dados relacional (MS-Access). É uma aplicação monousuário e não
funciona em rede.
Para a implantação e operação da aplicação um novo computador seria
adquirido. Nessa época, o gerente de informática da ACME alertou os
usuários de que poderiam existir problemas de performance quando a base
de dados ficasse muito volumosa. Os usuários alegaram que isso não seria
crítico e o custo para utilizar um outro gerenciador de banco de dados não
compensaria, pois o volume de faturamento da empresa era pequeno,
portanto tal situação demoraria demais a ocorrer.
Para reduzir o custo, a aplicação foi desenvolvida sem o uso de ajuda
on-line e instalador ( setup ). O fato de a ACME possuir uma biblioteca
para telas de cadastro genéricas também ajudou a baratear o custo e a
padronizar as telas. O backup é feito pelo usuário fora da aplicação - o
banco de dados é copiado para outra mídia por meio do sistema
operacional.
Diagrama Entidade-Relacionamento
Dicionário de Dados
UF
CIDADE
CLIENTE
CONTATO CLIENTE
NOTA FISCAL
ITEM NOTA FISCAL
Transações
CADASTRO DE CIDADES (TR0306)
Figura 8.2: Tela do cadastro de cidades.
Requisitos de Dados
As tabelas sinalizadas com * já existem no sistema de retaguarda e
apenas os atributos usados pelo sistema autorizador foram listados (sendo
alguns campos criados para serem usados exclusivamente pelo sistema
autorizador). Assuma que a tabela de cartões é um subgrupo de dados da
tabela de beneficiários. A tabela Transação foi criada com a previsão de ser
usada em algumas consultas que serão construídas posteriormente no
sistema de retaguarda.
Tabela Campo
Id. do estabelecimento
*Estabelecimento Comercial Nome do estabelecimento
Situação
Id. da empresa
*Empresa Cliente
Situação
Id. do beneficiário (CPF)
Id. da empresa
*Empregado Beneficiário Nome do empregado
Senha
Saldo
Id. do beneficiário
Número do cartão
Cartão
Data de validade
Situação
Tabela Campo
Data
Código da transação
Número sequencial da transação
Situação da transação
Movimento de Transações
Id. do estabelecimento de origem
Número do terminal
Valor da transação
Identificador do beneficiário
Código da transação
Transação
Nome da transação
Requisitos de Transição
Para a instalação do sistema, o banco JDK decidiu que inicialmente o
serviço estará disponível apenas para seus próprios funcionários (que
também serão beneficiados pelo vale-alimentação por cartão). Os
funcionários do banco JDK já estão cadastrados na base de dados
Empregado Beneficiário, pois já recebem o benefício via ticket em papel,
porém a base de dados de cartões deve ser preenchida com dados. Sendo
assim, decidiu-se que provisoriamente os funcionários vão usar esse
benefício através do cartão de movimentação de conta-corrente, porém com
uma senha específica (diferente da senha de movimentação da conta-
corrente).
Logo, deve ser desenvolvida uma funcionalidade que pesquisa na base
de funcionários do banco JDK (mantidos pelo sistema de RH) os
funcionários ativos e recupera a sua respectiva conta-corrente e CPF.
Através da conta-corrente deve-se pesquisar os dados de cartão de conta-
corrente do funcionário na base de cartões de conta-corrente (mantidos no
sistema de contas-correntes) e gravar os dados de número do cartão, data de
validade e situação na base de cartões do sistema autorizador de compras. A
senha do cartão para uso do benefício vale-alimentação será a senha da
conta-corrente, mas com os dígitos na ordem inversa.
Projeto de Melhoria
Neste estudo o objetivo é contar os pontos de função do projeto de
melhoria da aplicação de faturamento do primeiro estudo de caso, o sistema
de faturamento da ACME. Ao final da medição dessa melhoria
(“Adequação ao faturamento internacional”), recalcule os pontos de função
da aplicação.
Um aspecto do projeto de desenvolvimento do sistema ficou falho.
Mesmo sabendo que em breve a ACME atuaria fora do país, seu cadastro de
clientes não previu um campo para o país de origem do cliente. Assim,
foram solicitados os seguintes requisitos de melhoria (RM):
• RM1: criar uma tabela de países, que irá armazenar a
cotação do câmbio do dia da moeda usada no país. A
tabela terá os campos identificador, nome, moeda e
cotação em R$.
• RM2: criar uma tela de cadastro de países (consulta,
inclusão, alteração e exclusão) nos moldes do cadastro
de cidades. Acompanhe o esboço de tela na Figura 8.13
em seguida.
Estimativa
Ao identificar a necessidade de desenvolvimento, manutenção ou
mesmo aquisição e customização de um software para atender a novas
demandas de uma organização, dois questionamentos sempre presentes são
os seguintes:
1. Quanto tempo será necessário para concluir o projeto?
2. Quanto o projeto vai custar para a organização?
As particularidades dos requisitos de um projeto de software, bem como
da equipe responsável e da tecnologia empregada, são fatores que
dificultam a obtenção de respostas confiáveis a estas perguntas. Tais
dificuldades podem ser evidenciadas ao tentar analisar questões como:
• Os requisitos traduzem com fidelidade as necessidades
do negócio dos usuários? Já se encontram
suficientemente estabilizados? Refletem características
de software transacionais de baixa complexidade ou
possuem atributos que exigem conhecimentos
específicos, tais como alta performance, matemática
complexa, processamento distribuído etc.?
• A equipe de desenvolvimento possui conhecimento na
área de negócio que será atendida pelo projeto de
software? Possui experiência na utilização das fer‐
ramentas necessárias à conclusão do projeto? Possui
todos os perfis necessários impostos pelas características
do projeto? Existem conflitos internos à equipe que
precisam ser solucionados? É possível identificar uma
liderança entre os integrantes da equipe? Qual o grau de
motivação da equipe mediante o projeto?
• A tecnologia já faz parte da cultura da organização?
Pode ser facilmente absorvida por novos integrantes da
equipe de projeto? Existe material de apoio suficiente
para o aprendizado da tecnologia? Sua aplicação exige
pessoal com algum tipo de especialização? Suporta a
implementação de todas as características do software?
Atende inclusive aos requisitos não funcionais do
projeto?
Devido a estas e outras particularidades inerentes a cada projeto,
determinar com exatidão seu custo final e a data de sua conclusão é uma
tarefa que só pode ser realizada quando ele já está finalizado. Antes disso,
tudo o que pode ser feito, até os cálculos mais rigorosos, são estimativas.
Seja qual for o método empregado, o que muda é a precisão e a acurácia dos
resultados obtidos quando comparados aos dados reais.
Mesmo quando tais questionamentos são realizados na área da
engenharia civil, na produção de algo bem mais tangível que um software,
como uma casa ou uma ponte, características específicas que diferenciam
um novo projeto dos anteriores adicionam um certo grau de incerteza às
respostas.
Obter dados baseados em estimativas não muda a importância deles.
Muito pelo contrário. A partir da manutenção de uma base de dados
históricos estimados e realizados dos projetos, a organização pode avaliar a
adequação de seu processo de desenvolvimento e extrair indicadores de
produtividade e qualidade cada vez mais próximos de sua realidade e,
portanto, cada vez mais confiáveis. Com esses indicadores as estimativas
dos futuros projetos de software podem ser realizadas com segurança o
mais cedo possível durante o seu ciclo de vida de desenvolvimento,
ocasionando decisões mais rápidas e com menor custo para a organização.
O processo de estimativa de um projeto de software envolve,
basicamente, quatro atividades:
1. Estimar o tamanho do produto a ser gerado.
2. Estimar o esforço empregado na execução do projeto.
3. Estimar a duração do projeto.
4. Estimar o custo do projeto.
Para obter as respostas aos questionamentos iniciais de tempo e custo a
partir da aplicação de um processo de estimativa, antes de qualquer coisa, é
necessário decidir a unidade utilizada para medir o tamanho do produto.
Na construção civil, por exemplo, a unidade padrão de medida de
tamanho utilizada é o metro quadrado (m 2 ), que também serve como
unidade básica de definição de custo dos projetos. Na engenharia de
software são duas as unidades mais comuns, sendo linhas de código (LOC -
Lines of Code ) e pontos de função (PF).
Devido ao propósito principal de um processo de estimativa ser o de
fornecer informações que beneficiem o planejamento e o controle dos
projetos de software o mais cedo possível durante seu ciclo de vida, a
utilização de pontos de função como unidade padrão de medida de tamanho
é a mais acertada. Isso se dá por uma série de motivos.
Em primeiro lugar, para que uma estimativa de tamanho baseada em
LOC seja confiável, é necessário que se esteja em um adiantado estado da
fase de projeto do software, atrasando a geração de indicadores úteis para o
seu gerenciamento. A própria definição da linguagem de programação a ser
utilizada no desenvolvimento do projeto, fundamental para o processo de
contagem de linhas de código, nem sempre é realizada na fase inicial de seu
ciclo de vida, já que algumas características funcionais e até não funcionais
do software devem ser exploradas antes de se tomar alguma decisão. Por
outro lado, como a obtenção de pontos de função depende unicamente do
conhecimento da funcionalidade requerida para o software e não da
tecnologia empregada em seu desenvolvimento, uma estimativa de tamanho
pode ser realizada desde a fase inicial do levantamento de requisitos e ser
refinada à medida que se avança no entendimento do projeto.
Além disso, é fato que softwares bem projetados ou com alto índice de
componentização ou de reutilização de código têm seus indicadores
baseados em LOC penalizados. Por exemplo, um sistema com 50.000 LOC,
mas que exigiu um alto esforço para a definição de uma arquitetura bem
elaborada, irá apresentar uma produtividade final média inferior à de outro
projeto similar e de funcionalidade equivalente, porém com arquitetura
menos trabalhada, com 60.000 LOC e que exigiu o mesmo esforço total de
desenvolvimento que o projeto anterior. Utilizando pontos de função, essa
distorção não seria observada, uma vez que não existiria diferença relevante
no tamanho estimado de ambos os projetos.
Após a decisão da unidade de tamanho empregada, pode-se utilizar um
modelo de processo de estimativa como o apresentado na Figura 9.1.
Contagem Dedutiva
Essa técnica considera a possibilidade de contagem de um único
componente da análise de pontos de função para a aplicação, geralmente o
número de Arquivos Lógicos Internos, derivando o resto da contagem de
bases estatísticas.
No trabalho Early Function Point Counting , publicado pela NESMA 16
, encontra-se descrita uma abordagem para esse método. Trata-se da
Contagem Indicativa, na qual apenas é necessária a identificação dos
Arquivos de Interface Externa (AIE) e Arquivos Lógicos Internos (ALI).
Considera-se 35 PF para cada ALI e 15 PF para cada AIE identificado.
Os números 35 e 15 representam as médias de pontos de função
identificadas para cada um dos tipos de arquivo, considerando projetos que,
em média, possuam três Entradas Externas (EE), duas Saídas Externas (SE)
e uma Consulta Externa (CE) para cada ALI e uma Saída Externa e uma
Consulta Externa para cada AIE.
Complexidade Média
A versão 5 do ISBSG Benchmark apresenta uma média de
complexidades para os projetos de desenvolvimento, distribuídas por tipos
de funções, conforme a Tabela 9.1.
Tabela 9.1: Média de PFs, por tipo de função, do ISBSG comparado
na tabela de complexidade do IFPUG.
Backfiring
Esse método consiste em derivar o número de pontos de função da
aplicação a partir de seu tamanho físico, medido em linhas de código,
utilizando um fator de conversão constante dependente da linguagem de
programação. A ideia em si possui bastante apelo, uma vez que a contagem
de linhas de código pode ser feita por meio de ferramentas automáticas e,
consequentemente, o número de pontos de função poderia ser derivado de
imediato. Por exemplo, utilizando um fator de conversão de 80 LOC/PF
para C ++ e tendo uma aplicação escrita em C ++ com 8.000 linhas de
código, chega-se a 1.000 pontos de função para essa mesma aplicação.
Entretanto, não raro, essa técnica apresenta erros consideráveis quando
confrontada com uma contagem manual dos pontos de função de uma
aplicação. Isso porque assume uma relação linear entre o tamanho funcional
e o tamanho físico, que são grandezas distintas. Alguns autores sugerem
que se houvesse essa relação entre pontos de função e linhas de código, uma
das seguintes assertivas deveria ser verdadeira:
• LOC não é uma medida técnica, mas funcional.
• FP não é uma medida funcional, mas técnica.
• Medidas técnicas também são medidas funcionais.
Além disso, as variações encontradas nos próprios fatores de conversão
publicados por várias organizações no mercado podem chegar a 100%! A
Tabela 9.2 apresenta um exemplo dessas variações para a linguagem
COBOL.
Tabela 9.2: De fatores de conversão obtidos do mercado para
backfiring em aplicações COBOL.
Algumas das razões para explicar essa variação tão grande são
premissas distintas na definição do que é uma linha de código e bases de
projetos com características muito distintas. Daí a necessidade de calibrar
esse fator de conversão para a realidade dos projetos desenvolvidos pela
própria organização. Para efetuar essa calibração, deve haver uma amostra
representativa de projetos desenvolvidos pela organização em determinada
linguagem e um profissional experiente e capacitado para saber interpretar
os resultados e entender as razões de possíveis distorções para esse fator de
conversão.
Devido a esses fatores, aplicar backfiring para obter um tamanho em
pontos de função a partir de linhas de código é uma técnica arriscada e
sujeita a uma grande margem de erro. Daí, o próprio IFPUG ressalta no
FAQ, em sua página na Internet, que ela até pode ser usada (com muita
cautela) em sistemas legados, em que uma contagem manual de pontos é
inviável na prática e a precisão não seja um fator crítico.
Alguns profissionais advogam que backfiring é uma maneira rápida e
barata de obter o tamanho em pontos de função do portfolio de aplicações
de uma organização. Outros argumentam que o barato sai caro; é melhor
investir na contagem manual dos pontos de função e ter confiabilidade
desses dados, com compensação no longo prazo.
Por outro lado, muitos modelos de estimativa de software, como o
COCOMO II, utilizam como dado primário de entrada de seu processo o
tamanho em linhas de código. Nesses casos é muito comum realizar o
inverso: obter o número de linhas de código a partir do tamanho em pontos
de função. Isso porque nas fases iniciais de um projeto de software é mais
fácil estimar ou medir o seu tamanho em pontos de função do que em linhas
de código. Mesmo nesse caso, as considerações anteriores sobre backfiring
continuam válidas.
Estimativa de Esforço
No geral, o dimensionamento ou a estimativa da quantidade de pontos
de função nos vários estágios do projeto, isoladamente, são relevantes como
base para a remuneração de contratos, assunto tratado especificamente neste
livro. Os pontos de função passam a ter maior significado quando utilizados
como parâmetros na obtenção de estimativas de outras variáveis relevantes
para a gerência de projetos, entre elas o esforço.
Ao utilizar a quantidade de pontos de função como base para a obtenção
do esforço, considera-se a existência de alguma função que relacione essas
duas dimensões. Dentre as dificuldades para sua identificação, a principal
delas é a falta de um processo de desenvolvimento bem definido, em que as
particularidades de todas as etapas do ciclo de vida do desenvolvimento são
conhecidas, bem como todos os subprodutos gerados em cada uma dessas
etapas. Este assunto é bastante abrangente e foge do escopo deste texto
abordá-lo. Outra dificuldade é a falta de cultura e experiência prática na
aplicação de pontos de função, aliada a uma mitologia simplista que
promete com uma simples multiplicação de alguns números mágicos
fornecer resultados próximos à realidade.
Por estes motivos geralmente se estima o esforço total de um projeto
pela soma das estimativas de esforço de cada atividade. O principal insumo
nesse processo é a experiência individual dos responsáveis pela estimativa.
Uma prática comum observada nas organizações para alcançar uma
estimativa de esforço é a utilização da WBS ( Work Breakdown Structure ),
em que o projeto de software é decomposto em suas funções e uma
estimativa de esforço é fornecida para cada uma delas. Também é comum a
utilização de métodos diretos, como as técnicas Delphi e Three-Point .
A Delphi pode ser descrita como uma técnica de grupo iterativa que
permite que um participante melhore suas estimativas individuais a partir da
colaboração dos diferentes pontos de vista dos demais especialistas. São
executados ciclos iterativos de estimativas anônimas realizadas por cada
especialista do grupo, até que os valores convirjam para uma faixa
aceitável. O resultado é uma estimativa obtida pelo consenso de todo o
grupo, alcançando valores melhores que qualquer previsão individual.
Já a técnica Three-Point é utilizada para melhorar a estimativa direta,
quando mais valores são fornecidos pelos responsáveis pela execução das
estimativas. Dados os valores mínimos, mais comuns e máximos para o
tamanho, aplica-se a fórmula:
Como Começar?
A melhor forma de chegar à estimativa de esforço a partir da estimativa
de tamanho do projeto é utilizar dados internos à própria organização, como
o número de horas apropriadas em projetos passados, juntamente com a
quantidade de pontos de função dimensionados nas diversas fases dos
respectivos projetos.
Atualmente já é bastante comum a manutenção de dados de apropriação
de horas alocadas não só a um projeto, mas, muitas vezes, também aos tipos
de atividade. Mesmo quando essa informação não está disponível, pelo
menos a apropriação de custos costuma estar. Ainda assim, poucas são as
organizações que possuem o baseline de suas aplicações. Menor ainda é o
número daquelas que mantêm informações sobre o dimensionamento do
projeto em suas diversas fases. Sem essas informações como começar a
estimar?
A primeira consideração envolve a criação de classes de projetos, as
quais devem procurar compreender projetos que tenham características
semelhantes quanto a fatores que afetem a relação entre tamanho e esforço.
Antes de dar prosseguimento a este assunto, é preciso definir melhor alguns
conceitos. O primeiro deles diz respeito a um dos indicadores que descreve
a relação entre tamanho e esforço: a produtividade.
em 2:15 horas
Pelo momento, será considerado que a quantidade de bens ou serviços
produzidos (F) não é estimada, mas calculada. Até agora a principal
heurística é a produtividade (P). É bom lembrar que, apesar das
semelhanças existentes entre os dois trechos, eles são diferentes. Para que
as previsões quanto ao esforço (E) sejam as mais aproximadas do que vier a
ser efetivamente realizado, tais diferenças devem ser identificadas e o
impacto que elas causam na produtividade deve ser avaliado.
No desenvolvimento de sistemas, essas diferenças podem ser
classificadas como inerentes ao projeto, à equipe ou ao cliente (usuário). As
combinações mais comuns dos atributos dessas dimensões devem ser
determinadas para fins de melhor estratificação no fornecimento e
utilização de indicadores.
As unidades utilizadas nos exemplos anteriores são cotidianas e nem se
nota que o consumo e a velocidade do carro são invertidos para obter uma
estimativa de quantos litros serão gastos ou quanto tempo durará a viagem.
Muitas vezes, um outro indicador é utilizado indistintamente como um
medidor de produtividade. Tal indicador é denominado pelo mercado de
taxa de entrega e medido numa razão inversa àquela da produtividade.
A fim de esclarecer a diferença básica entre estes dois indicadores,
pode-se utilizar o exemplo da linha de montagem de uma fábrica de
automóveis. A produção da linha de montagem pode ser observada sob duas
perspectivas. Por um lado encontra-se a capacidade de produção ou
produtividade, que corresponde à quantidade de automóveis fabricados por
unidade de tempo. Por outro lado encontra-se o custo, em unidades de
tempo, para se fabricar um automóvel, ou seja, quanto tempo é necessário
para a produção de um único automóvel. Desta forma, observa-se que
quanto maior a taxa de entrega, ou seja, quanto maior o tempo necessário
para a produção de um bem, menor a produtividade anotada em
determinado período de tempo e vice-versa.
Mais uma vez, o conceito de produtividade no desenvolvimento de
software depende, principalmente, da determinação da medida de tamanho
a ser utilizada. No Brasil, os pontos de função (PF) têm sido a medida
adotada pela maioria das empresas que aplicam algum processo sistemático
de medição de tamanho de software. A partir daí, pode-se definir a
produtividade (P), como, por exemplo, a razão entre o tamanho do projeto
em PF e a quantidade total de horas (H) ou de Homem x Mês (HM) gastos
no seu desenvolvimento, na unidade PF / H ou PF / HM respectivamente. A
taxa de entrega, geralmente é medida em H / PF. Assim, uma taxa de
entrega de 4 H / PF corresponde a uma produtividade de 0,25 PF / H, da
mesma forma que uma produtividade de 0,5 PF / H equivale a uma taxa de
entrega de 2 H / PF.
Enfim, ambos os indicadores representam o mesmo fato: a relação entre
o tamanho funcional e o esforço.
Voltando à questão inicial da extrapolação do conhecimento do histórico
de produtividade para fins de estimativa de esforço, para o caso do
desenvolvimento de software pode-se adotar a mesma relação:
,
em que F é uma medida de tamanho em PF.
Para efeito de estimativa de esforço, o que parece ser mais natural é a
utilização da taxa de entrega ( T ):
,
em que é possível obter uma relação direta entre o aumento da taxa de
entrega e o aumento do esforço. Nesse sentido, a utilização da
produtividade conforme definida seria mais natural para efeito de
monitoramento do desenvolvimento de software, a partir do conhecimento
do tamanho e esforço realizados em cada fase de seu ciclo de vida, em que
um aumento desse indicador teria uma relação direta com o aumento da
maturidade e qualidade do processo de desenvolvimento.
Exemplificando, para estimar o custo de um projeto de software a partir
do conhecimento da produtividade ou da taxa de entrega alcançada em
projetos de mesmo contexto ou plataforma, basta realizar as seguintes
operações:
1. Estimar a quantidade de horas necessárias para a
conclusão do projeto, dividindo seu tamanho estimado
em PF pela produtividade em PF / H ou multiplicando-o
pela taxa de entrega em H / PF. O resultado será o
esforço em horas estimado para o projeto.
2. Multiplicar a quantidade de horas obtida no passo
anterior pelo custo médio da hora da equipe. O resultado
será a estimativa de custo para o projeto.
Curva de Rayleigh-Putnam
Com base em análise estatística, Lawrence Putnam relacionou o
comportamento entre o prazo e o esforço com a distribuição de Rayleigh .
Esse modelo utiliza como métrica para quantificar o tamanho, linhas de
código, o prazo em anos e o esforço em homens-ano. Outra característica
importante é que ele também representa o impacto do ambiente no
comportamento dessa relação, para tanto utiliza uma constante C. Os
valores utilizados para esta constante podem variar de 2000 a 11000.
A Região Impossível
O gráfico seguinte ilustra a trajetória descrita pela curva de Rayleigh-
Putnam . Os pontos destacados representam a quantidade de recursos
Conclusão
O objetivo principal deste capítulo é apresentar as várias técnicas de
estimativa de tamanho de projetos de software, realçando a sua importância
em meio ao modelo geral de processo de estimativa. Por este modelo, pode-
se observar que o tamanho é o dado inicial que irá permitir a geração das
estimativas dos demais indicadores, como produtividade, esforço, duração e
custo. Além disso, vários modelos de estimativa do mercado também
utilizam o tamanho como dado de entrada para a obtenção das demais
estimativas. É o caso dos modelos paramétricos COCOMO II, SLiM e
KnowledgePlan.
Outro objetivo é destacar os benefícios alcançados com a utilização dos
pontos de função como unidade de estimativa de tamanho, servindo de base
para a definição dos indicadores de produtividade e esforço.
O comportamento geral que pode ser observado em um processo de
estimativa de métricas e de demais indicadores de produtividade e
qualidade dos projetos de software tem relação direta com o tamanho dos
projetos, conforme representado na Figura 9.6. O gráfico ilustra a alta
precisão das estimativas realizadas em projetos pequenos seguida pela
diminuição da precisão das mesmas estimativas à medida que os projetos
crescem no tamanho. Em contrapartida, a precisão exigida para as
estimativas é mais alta quanto maior o tamanho dos projetos. Isso se deve
ao fato de que os impactos negativos nos prazos e custos dos projetos,
causados pelas distorções entre a situação prevista e realizada, são baixos
em projetos pequenos, aumentando de acordo com o seu crescimento.
Figura 9.6: Precisão das estimativas x tamanho dos projetos.
Questões de Fixação
1. A manutenção de uma base de dados históricos
estimados e realizados sobre os projetos de software
pode trazer uma série de benefícios para as organizações.
Cite alguns desses benefícios sob os pontos de vista de
uma empresa fornecedora e de uma empresa
consumidora de produtos de software.
2. Qual a primeira atividade a ser realizada em um
processo de estimativa de um projeto de software?
3. Qual o propósito principal da execução de um processo
de estimativa?
4. Cite alguns fatores que causam a contraindicação do uso
de LOC para as estimativas de tamanho dos projetos.
5. Que são os métodos diretos de estimativas? Cite
exemplos.
6. Que são os métodos derivados de estimativas? Cite
exemplos.
7. Por que a técnica de Backfiring apresenta diferenças
significativas em seus resultados se comparados aos
valores reais obtidos em PF?
8. Quais são as vantagens obtidas ao utilizar uma técnica
de estimativa como a contagem indicativa, se comparada
à contagem detalhada dos pontos de função? Em que
casos essa técnica é mais indicada?
9. Quais são os benefícios que o indicador de fator de
crescimento pode trazer para a organização?
10. Como a estimativa de tamanho pode auxiliar na
obtenção da estimativa de esforço?
11. Como a estimativa de duração pode ser derivada a
partir da estimativa de esforço?
12. Por que não existe uma relação linear entre o prazo
para a conclusão de um projeto e a quantidade de
recursos alocados?
13. Por que é preciso tomar cuidado ao utilizar indicadores
obtidos do mercado?
14. Quais são os tipos de indicadores úteis para cada tipo
de organização, fornecedora e consumidora de produtos
de software?
15. Qual a importância da relação entre a contribuição de
cada tipo de função (ALI, AIE, EE, SE, CE) e o tamanho
total do sistema?
16. Efetue a contagem indicativa e estimativa do primeiro
estudo de caso do capítulo 8 e compare os valores com a
contagem detalhada.
Bibliografia
Aplicações em Contratos de
Desenvolvimento de Software
Introdução
A Análise de Pontos de Função (APF), quando de sua concepção, teve o
principal propósito de servir como insumo para quantificar a produção de
software em estudos de produtividade. Da medição da produção passou a
ser aplicada em seu planejamento, na estimativa de unidades de tamanho, a
partir das quais se estima o esforço ou custo.
Dentre os vários usos da APF, essa ligada à estimativa tornou-se tão
popular que o método é quase sinônimo de estimativa. Mesmo em situações
onde o que cabe é uma medição, ainda hoje não é incomum chamar de
“estimar” a contagem de pontos de função (ou medição do tamanho
funcional).
Uma situação como esta é quando a medição do tamanho funcional é
usada para medir os resultados entregues por uma fábrica de software para
determinar o valor a ser pago a ela. Em um contexto como este, o objetivo
do método não é estimar custo ou esforço, mas prescrever o valor das
entregas independentemente de quanto custo ou esforço efetivamente
tenham sido empregados.
Atualmente esta é uma das principais aplicações do método em
contratos para o desenvolvimento, manutenção e migração de software. O
objetivo deste capítulo é explorar esses diferentes usos do tamanho
funcional em contratos, começando pelos principais desafios na contratação
de software.
Vantagens Desvantagens
Visibilidade do Trabalho - geralmente o
Controle da Produtividade - o
desenvolvimento do projeto é feito internamente,
contratante é responsável pelo
facilitando sua supervisão. Contudo, esse trabalho
acompanhamento da produtividade do
acaba por deslocar profissionais internos à
serviço.
organização de atividades fim de seu negócio.
Simplicidade - pouca tramitação burocrática e Problemas Trabalhistas - a questão de
esforço na negociação da alocação de recursos no haver ou não a caracterização do
caso de mudanças de requisitos ou outros aspectos vínculo empregatício pode ser
conjunturais. levantada em eventuais litígios.
Ausência de Garantia - dificuldade de
identificar a responsabilidade e, como
consequência, exigir a garantia do
serviço quando ele é realizado por
equipes mistas de várias empresas.
Modalidade de Contratação Preço
Global Fixo
Essa modalidade privilegia a abordagem de projeto com um início e fim
bem definidos (além, é claro, do escopo). Exige maior nível de organização
tanto do cliente quanto do fornecedor. Quanto melhor definidos estiverem
os requisitos, menor a chance de atritos entre as partes.
Em geral, o fornecedor não dispõe de muita informação sobre o domínio
do problema ou não dispõe de tempo para a análise detalhada dos requisitos
para a elaboração da proposta comercial. Como consequência, haverá um
subdimensionamento ou superdimensionamento do orçamento proposto.
Quando a concorrência é intensa, é mais provável que o primeiro caso
ocorra.
Ambos os casos anteriores são indesejáveis. No primeiro, o fornecedor
terá dificuldades em atender ao cliente. Se os requisitos não foram bem
definidos, é provável que haja um impasse e uma nova negociação
comercial tenha de ser conduzida, quase sempre com desgaste para ambos
os lados. Ainda que os requisitos tenham sido bem definidos, o orçamento
proposto pelo fornecedor pode ter sido tão subdimensionado que a
qualidade do produto seja seriamente afetada ou o projeto sequer seja
concluído.
Em projetos de longa duração, é necessário estabelecer pontos de
controle por meio dos quais a empresa contratante possa acompanhar o
progresso do projeto. A definição desses pontos deve ser realizada antes
mesmo da contratação efetiva do serviço, visto que o contratado deve estar
ciente desses pontos e preparar-se para apre- sentar os resultados previstos.
Muitas empresas erram ao não planejar esse acompa- nhamento. A
consequência mais leve é a sensação de perda de controle. A mais grave é
só perceber a inabilidade do contratado para realizar o serviço tarde demais.
Nessa modalidade o quanto se paga também está sob o controle do
fornecedor. É muito comum que o racional de formação do preço esteja
fundamentado na estrutura analítica de projeto e na quantidade horas e
perfil do profissional alocado à realização da atividade. O mesmo acontece
nas mudanças (ou alegadas mudanças) que ocorrem durante o projeto. Na
medida em que a estrutura de preços é feita dessa forma, tal qual na
contratação em homens-hora, o controle está com aquele que detém o
conhecimento técnico da engenharia de software e aplicação das suas
disciplinas.
Um benefício do tamanho funcional nesses casos é seu uso como um
fator de normalização, que muda o paradigma da estruturação do racional
de preços de uma perspectiva “interna” à engenharia de software para uma
perspectiva “externa” à contratante.
A contratante estabelece acordos de nível de serviço quanto a prazo e
qualidade, exigindo que seja apresentada uma planilha com a análise de
pontos de função aplicada na estimativa de escopo do projeto, e solicitando
que seja informada a contingência técnica referente ao nível de informação
disponível quando da solicitação de proposta. Com isso ela pode comparar
as propostas de diferentes fornecedores não em termos de perfil e
quantidade de profissionais, mas em termos de sua produtividade.
Uma experiência que pode se revelar interessante não só para fins do
processo de contratação, mas para o próprio desenho da solicitação de
proposta, é a própria contratante realizar a estimativa de escopo, aplicando a
análise de pontos de função e, com isso, avaliar se realmente a contratação
de um projeto cotado a preço global fixo é a melhor opção. Ao realizar a
estimativa, é possível perceber que o nível de informação é tão baixo que,
ao transferir o risco do escopo para o fornecedor, ou se inclui um custo
muito alto de contingência para esse risco ou se corre o risco de não receber
o produto esperado.
Outra aplicação da APF no contexto de contratos de preço global fixo é
a valoração das solicitações de mudança. A contratante pode estimar o
escopo do projeto original e, com base no resultado da análise, pode
calcular o valor unitário cobrado pelo fornecedor. O serviço adicional para o
qual se solicitou uma proposta pode também ser dimensionado em pontos
de função e aplicado o valor unitário calculado para o projeto original. Se o
preço resultante for significativamente diferente do valor cobrado pelo
fornecedor, a empresa contratante pode questionar as causas para essa
discrepância.
Um fator que complica o uso desta abordagem é assumir que os
requisitos não mudam após o início do projeto. Assim como o mundo é
dinâmico, os requisitos também o são. Quanto maior a duração do projeto,
mais provável que haja alteração nos requisitos. E é difícil estimar quanto
essas alterações afetam o orçamento proposto originalmente pelo
fornecedor. Segundo [Jones C., 2001], mais de 2% dos requisitos mudam
mensalmente após a fase de requisitos. Neste caso, é quase certo que seja
necessário uma nova negociação. Se este for o caso, dificilmente o cliente
irá obter as mesmas condições originais, pois dependendo do momento em
que o projeto esteja, não haverá concorrência e tampouco uma unidade para
comparar o preço originalmente cobrado com o preço cobrado pelas novas
características solicitadas.
Tabela 10.2: Vantagens e desvantagens da contratação do
desenvolvimento de software a preço global fixo.
Vantagens Desvantagens
Preço Contingenciado - para
absorver os riscos de requisitos
Transferência de Riscos - variações na produtividade
mal definidos ou de um
e escopo durante a execução do projeto são de
crescimento de escopo, o
responsabilidade do fornecedor.
fornecedor acrescenta margens de
segurança à proposta comercial.
Desgaste com o Fornecedor - se
Previsibilidade de Custos - se os requisitos foram os requisitos forem nebulosos ou o
definidos de forma adequada e as mudanças forem fornecedor subestimar o custo,
pequenas, o orçamento será cumprido. haverá um desgaste em
renegociações contratuais.
Garantia - após a entrega do produto, a
responsabilidade de garantia sobre eventuais problemas Dependência - se não houver a
de conformidade à especificação é bem definida e pode transferência adequada de
ser cobrada, inclusive, se necessário, com amparo conhecimento do projeto, o cliente
legal. Tal fato faz com que seja interesse mútuo a pode ficar “refém” do fornecedor.
qualidade do produto.
Vantagens Desvantagens
Melhor distribuição de
responsabilidades - atribuição da Necessidade de pessoal qualificado na técnica de
responsabilidade pelas variações APF - nessa abordagem há a necessidade de pessoal
da produtividade e escopo àqueles qualificado na técnica (preferencialmente especialistas
que efetivamente as causam. Paga- certificados) tanto no cliente quanto no fornecedor.
se pelo que se recebe.
As vantagens apresentadas para os Tamanho mínimo de projeto - para projetos
projetos a preço fixo aplicam-se pequenos, por exemplo, 50 pontos de função, não
também aos contratados por costuma haver uma boa relação entre o tamanho
pontos de função. funcional e o esforço envolvido. Contudo, se a análise
for feita em um conjunto de projetos pequenos, as
distorções tendem a se anular.
Manutenção Corretiva
A medição funcional representa uma quantificação dos requisitos
funcionais do usuário para o software. Não existe ponto de função
“defeituoso” . Se entendermos defeito como uma falha no atendimento aos
requisitos estabelecidos pelo usuário, conclui-se que toda manutenção
corretiva não é motivada por mudança de requisito do usuário. Ela existe
para reparar defeitos inseridos no software durante a sua construção.
Portanto, se não há mudança de requisitos funcionais, não há o que se medir
em pontos de função para essa manutenção.
Cabe considerar que só é possível caracterizar um defeito de forma clara
e inequívoca se houver uma boa especificação de requisitos. Se a
especificação de requisitos estiver ruim (como muitas vezes ocorre), ou
seja, incompleta, ambígua, genérica, o fornecedor pode alegar (e muitas
vezes com razão) que a questão apontada pelo cliente não é um defeito de
construção, pois foi construída conforme o seu entendimento daquele
requisito, que dava margem a múltiplas interpretações.
Como remunerar uma manutenção corretiva em um contrato por pontos
de função, uma vez que ela não é medida? Simples; não se paga!
Considerando que a correção é de defeitos resultantes de serviços
previamente executados pelo fornecedor, o cliente já o remunerou para que
o serviço fosse feito corretamente. Além disso, há que se considerar que
parte das manutenções corretivas adicionam novos defeitos ao software.
Não há sentido em pagar para corrigir o que já deveria ter sido entregue
correto originalmente. Isso é um estímulo para que o fornecedor entregue
software com baixa qualidade. No âmbito de contratos públicos,
remunerar para corrigir defeitos na execução de serviços contratados é
ilegal (artigo 69 da Lei 8.666/1993).
Mas e se a manutenção corretiva é sobre um software legado
desenvolvido por outro fornecedor que não o atual, este deve executar o
serviço sem remuneração? Não necessariamente. O cliente deve prever no
seu contrato como deseja que isso seja tratado. São três alternativas
possíveis:
• Não remunerar qualquer manutenção corretiva. Esta
abordagem é simples e prática para o cliente. E também
pode ser justa para o fornecedor, desde que esta regra
esteja clara no início da negociação e que o cliente
consiga demonstrar qual tem sido a incidência histórica
de defeitos nos seus sistemas. Neste caso o fornecedor
irá formular o seu preço sabendo que terá que absorver
esse custo eventual. Se a incidência de defeitos for baixa,
isso na prática terá impacto pequeno na formulação de
preços. Porém se o cliente não possui uma visão clara do
nível de incidência de defeitos, ou se essa incidência for
alta, significa transferir um risco alto para o fornecedor,
que vai embutir esse risco no seu preço. Neste caso não
será bom negócio para nenhuma das partes.
• Remunerar para corrigir defeitos preexistentes. A
princípio parece uma abordagem mais justa. Defeitos
que não foram causados pelo fornecedor provocam
manutenções corretivas que serão remuneradas. Defeitos
causados pelo próprio fornecedor não têm a manutenção
remunerada, pois estão na garantia do serviço prestado
por ele previamente. A dificuldade nesta questão é de
ordem mais prática. Como o cliente identifica se o
defeito é novo ou preexistente ao contrato? Para que isso
seja possível, é necessário que alguém no cliente
conheça tão bem tecnicamente todo o software quanto o
próprio fornecedor. Assim ele conseguirá verificar se o
que o fornecedor apontou como defeito preexistente
procede ou não. Isso implica em saber quais pontos do
código-fonte terão de ser alterados, se as alterações estão
corretas e se o problema no código-fonte existia na
versão desse código-fonte antes de o contrato ser
iniciado. Ou seja, o cliente está na mesma situação que
muitos vivenciam quando levam seu carro para uma
oficina. Se ele entende de mecânica, saberá evitar pagar
por manutenções desnecessárias; caso contrário, resta
apenas confiar no que a oficina disser. Enfim, adotar esta
abordagem significa transferir o controle da situação
para o fornecedor; algo indesejável para a maioria dos
clientes.
• Remunerar para corrigir funções. Esta abordagem é mais
pragmática. Consiste em identificar em quais funções o
defeito se manifestou (isso é algo fácil de o próprio
cliente verificar). Identificadas as funções “defeituosas”,
o cliente verifica se essas funções foram criadas ou
alteradas pelo fornecedor durante o contrato. Se sim, a
manutenção corretiva deve ser feita sem remuneração,
pois a ideia é de que todo pedaço de software que o
fornecedor mexa entre automaticamente em garantia.
Caso o fornecedor não tenha criado ou alterado as
funções durante o contrato, remunera-se pela
manutenção corretiva (por exemplo, da mesma forma
que uma alteração funcional) e daí em diante essas
funções passam a compor o conjunto das funções do
software que estão sob a sua garantia. E como o cliente
irá verificar quais funções foram criadas ou alteradas
pelo fornecedor durante o contrato para exigir a
garantia? Simples, mantendo a contagem de pontos de
função das suas aplicações. À medida que o fornecedor
executar os projetos no contrato, as medições finais
desses projetos devem atualizar a contagem das
aplicações, permitindo o controle fácil de quais funções
estão em garantia.
An Volume Preço
Organização Referência
o (PF/ano) (R$/PF)
2
0 Concorrência
ANCINE 5.000 552,08
0 1/2008
8
2
0
ANEEL Pregão 71/2008 10.000 297,50
0
9
2
0
ANTAQ Pregão 02/2009 4.180 421,05
0
9
2
0
ANTT Pregão 77/2009 9.300 359,81
0
9
2
0
CNJ Pregão 17/2009 18.000 400,00
0
9
2
0
Eletrobras Pregão 39/2009 12.000 542,29
0
9
2
0
INCRA Pregão 60/2009 10.000 348,00
0
9
INEP 2 Pregão 11/2010 20.000 349,23
0
0
9
2
0
IPLANRIO Pregão 63/2011 30.000 308,00
1
1
2
0
Ministério da Agricultura Pregão 15/2009 15.000 676,67
0
9
2
0
Ministério da Educação Pregão 26/2010 31.200 352,49
1
0
2
0
Ministério da Fazenda Pregão 28/2010 14.500 217,00
1
0
2
0
Mininistério da Justiça Pregão 005/2009 21.400 476,55
0
9
2
Mininistério das Relações 0
Pregão 001/2011 9.000 297,88
Exteriores 1
1
2
0
Ministério da Saúde Pregão 154/2010 30.000 609,83
1
0
2
0
Policia Federal Pregão 11/2009 10.000 415,00
1
0
2
0
Prodemge Pregão 8/2009 2.500 182,54
0
9
2
0
STF Pregão 167/2009 11.000 398,00
0
9
TRT 2 2 Pregão 114/2009 7.200 268,23
0
1
0
2
0
TST Pregão 124/2009 15.000 263,89
0
9
Acompanhamento do Contrato de
Serviços de Medição
Após a seleção do fornecedor, deve-se promover o acompanhamento da
execução dos seus serviços para que a contratação seja bem-sucedida. E a
forma mais objetiva de fazer isso é definir previamente Acordos de Nível de
Serviço (ANS) que vão balizar o desempenho esperado pelo fornecedor.
Esses ANSs devem envolver critérios para avaliação da qualidade do
serviço (por exemplo, as medições estão sendo feitas corretamente?) no
tempo adequado e no volume esperado.
Questões de Fixação
Bibliografia
Programa de Certificação
Uma das missões do IFPUG é normatizar e disseminar o uso da técnica da Análise
de Pontos de Função como a métrica funcional padrão para software. Além de manter o
Manual de Práticas de Contagem, o IFPUG, entre outras ações, possui o programa de
certificação CFPS ( Certified Function Point Specialist ) e CFPP ( Certified Function
Point Practioner ) cujo objetivo é reconhecer formalmente os profissionais capazes de
realizar contagens de pontos de função precisas e consistentes e que também conheçam
as práticas de contagem mais recentes. Esse programa de certificação existe desde 1993.
O IFPUG disponibiliza uma consulta pública dos especialistas certificados em seu
portal na Internet (www.ifpug.org/), na qual é possível pesquisar se alguém é
certificado, a versão do Manual de Práticas de Contagem na qual o profissional se
certificou e a data da expiração do certificado.
O prazo de validade da certificação é de três anos, após o qual o profissional deve
submeter-se novamente ao exame para renovar sua certificação ou participar do
programa de extensão de certificação. Esse programa permite que o profissional
prorrogue a validade da sua certificação com algumas atividades, como realizar
contagens de pontos de função, participar das conferências do IFPUG ou de um de seus
capítulos, ministrar cursos, escrever artigos ou livros, participar como voluntário de
algum dos comitês do IFPUG.
No Brasil a primeira realização do exame foi em São Paulo durante o Congresso
Internacional de FPA & VIII Encontro Nacional de Usuários de Pontos de Função
promovido pela UNISYS e o IBPI em 1996. Dos seis profissionais participantes, três
foram certificados.
A partir de 2001 o BFPUG ( Brazilian Function Point Users Group ) passou a
promover regularmente o exame no Brasil até 2008, quando ele passou a ser
automatizado (prova eletrônica). A partir de então o próprio candidato passou a escolher
o local (nas cidades com centros autorizados), idioma (além de inglês e português há
outras opções) e data para prestar o exame.
O Exame
A prova é dividida em três seções:
1. Definições (questões conceituais);
2. Aplicação de regras (questões práticas);
3. Estudos de caso.
As duas primeiras destas seções são compostas de 50 questões de múltipla escolha.
A seção 3 apresenta dez estudos de caso (aproximadamente com uma página de
enunciado), com uma média de 74 questões (há uma ligeira variação nesta quantidade a
cada exame).
Todas as questões são elaboradas de forma bem objetiva. Não haverá questão na
qual o participante tenha que interpretar a visão do usuário para poder responder. A
visão do usuário sempre estará bem explícita; diferente do que ocorre muitas vezes em
situações reais.
A taxa de acerto para aprovação como CFPS deve ser de pelo menos 90% de
aproveitamento geral com ao menos 80% em cada uma das seções. Ou seja,
considerando a seção 3 com 50 questões:
Dicas e Comentários
Para submeter-se à prova, é preciso boa preparação. Embora os critérios de
aprovação sejam elevados, não existe prova difícil para quem está bem preparado. Uma
das primeiras dúvidas do candidato à certificação é com relação ao tempo de preparação
ideal para a prova. Não há um prazo de preparação igual para todos; a variação é muito
grande de acordo com o conhecimento de cada um.
Se em seu dia a dia o profissional trabalha aplicando a técnica da APF, certamente
precisará de menos tempo que outro que o faz apenas de forma esporádica. Logo,
quanto mais contagens de pontos de função o candidato fizer, mais consolidados estarão
os conceitos da técnica. A experiência de contagem não é essencial para poder prestar o
exame com sucesso; basta que o participante estude adequadamente.
Para aqueles que utilizam softwares ou planilhas de apoio à contagem, atenção para
a memorização das fórmulas e tabelas de complexidade e contribuição. Embora os
softwares facilitem o trabalho no dia a dia, durante a prova o candidato deve realizar a
contagem manualmente.
O texto de referência mais importante de preparação para a prova é o próprio
Manual de Práticas de Contagem, no qual a prova está toda baseada. Não é preciso
chegar ao exagero de decorá-lo. Mesmo para aqueles que estejam utilizando outras
fontes de preparação, é importante que ele seja lido atentamente ao menos uma vez e
que não fiquem dúvidas. Algumas questões de prova são baseadas nos vários exemplos
do manual.
É fundamental que sejam praticados exercícios simulados da prova. Assim o
candidato possuirá uma noção exata de quanto tempo terá à sua disposição em cada
parte e questão da prova e também será capaz de aferir seu grau de preparação e pontos
fracos a reforçar.
Outra dica muito interessante (e gratuita) é aproveitar os fóruns de discussão do
assunto, como os do BFPUG (http://br.groups.yahoo.com/group/forum-bfpug) e o do
grupo de leitores deste livro (http://br.groups.yahoo.com/group/livro-apf/) para ouvir as
dicas e experiências de quem já se submeteu à prova para manter o assunto “vivo” no
seu dia a dia. Há também uma versão de demonstração (gratuita) do curso da Fatto de
Preparação para a Certificação CFPS com um microssimulado da prova. O link é
http://www.fattocs.com.br/demo_cfps.asp.
O tempo disponível para a prova é muito escasso, portanto não convém demorar
muito na análise para resposta das questões. Uma sugestão é usar meia hora na primeira
seção da prova, uma hora na segunda seção e o restante do tempo para estudo de caso e
revisão (se sobrar tempo). Embora o manual esteja disponível para consulta, convém
não perder tempo consultando-o. O ideal é usar durante a preparação para a prova um
cartão de referência com as definições mais importantes, as tabelas, as fórmulas e as
características gerais. A simples memorização das tabelas de complexidade e
contribuição economiza um tempo precioso. É possível obter gratuitamente um cartão
de referência, solicitando na página da Fatto Consultoria e Sistemas
(http://www.fattocs.com.br/cartao.asp).
Há possibilidade de ser aprovado sem conseguir terminar todas as questões; logo,
deve-se manter a calma e a concentração mesmo que o tempo da prova esteja
terminando. Deve-se evitar pular questões; o ideal é responder todas e deixar para voltar
depois àquelas em que houver dúvidas, se sobrar tempo para revisão.
Exame Simulado
Parte 1 - Definições
1. O Valor do Fator de Ajuste:
a) Reflete a dificuldade em dar manutenção a um sistema existente.
b) Ajusta em +/– 35% os pontos de função.
c) Sempre aumenta em até 35% a contagem dos pontos de função.
d) Possui uma faixa de valores que varia de 0 a 5.
2. Um processo elementar é definido como:
a) Toda atividade que o sistema deve realizar.
b) Um requisito do negócio do usuário.
c) A menor unidade de atividade significativa para o usuário.
d) Um agrupamento lógico de dados.
3. Qual dos seguintes passos não faz parte do procedimento de contagem de pontos de
função?
a) Identificar a fronteira da aplicação.
b) Determinar o tipo de contagem.
c) Calcular o valor do fator de ajuste.
d) Classificar as características gerais do sistema em simples, médias e complexas.
4. Um dos objetivos da Análise de Pontos de Função é:
a) Medir a funcionalidade que o usuário solicita e recebe.
b) Calcular quantas tabelas um sistema terá.
c) Estimar o tamanho de uma equipe de desenvolvimento.
d) Ajudar no processo de depuração de um software.
5. Quais os tipos de contagem de pontos de função?
a) Dados, transações e fator de ajuste.
b) Corretiva, adaptativa e evolutiva.
c) Projeto de desenvolvimento, projeto de melhoria e aplicação.
d) Contagem prévia, contagem não ajustada e contagem ajustada.
6. Um dos benefícios da Análise de Pontos de Função é:
a) Identificar os requisitos não funcionais do sistema.
b) Ser um meio de estimar custos e recursos para o desenvolvimento e manutenção de
software.
c) Ajudar o desenvolvedor na programação de um sistema.
d) Identificar as entidades que devem ser normalizadas em um modelo de dados.
7. As funções do tipo transação existentes são:
a) Saída externa, consulta externa e entrada externa.
b) Entrada externa, saída externa e arquivo de interface externa.
c) Fator de ajuste, escopo da contagem e fronteira da aplicação.
d) Projeto de desenvolvimento, projeto de melhoria e aplicação.
8. As funções do tipo dado existentes são:
a) Arquivos simples e complexos.
b) Entradas externas, saídas externas e consultas externas.
c) Todas as tabelas lidas e mantidas pelo sistema.
d) Arquivos lógicos internos e arquivos de interface externa.
9. Assinale o que melhor representa a visão do usuário:
a) Depende do seu nível de conhecimento sobre sistemas.
b) É implementada em um diagrama de classes.
c) É uma descrição das funções do negócio, que pode variar em sua forma física.
d) É somente aquilo que o usuário final entende.
10. Quantas são as características gerais do sistema?
a) 14.
b) 21.
c) 17.
d) Depende dos requisitos do negócio.
11. O propósito da contagem de pontos de função:
a) É garantir a qualidade do sistema que será comprado.
b) É fornecer uma resposta a um problema de negócio.
c) É identificar todos os requisitos do usuário para o sistema.
d) Nenhuma das alternativas anteriores está correta.
12. A fronteira da aplicação deve ser determinada com base:
a) Nas diferentes plataformas em que a aplicação é executada.
b) Nas diferentes equipes envolvidas.
c) No ponto de vista do usuário.
d) Nenhuma das alternativas anteriores está correta.
13. A fronteira da aplicação:
a) Define o que é externo à aplicação.
b) Age como uma membrana por meio da qual os dados processados pelas transações
entram e saem da aplicação.
c) Varia em função da tecnologia empregada.
d) Ambas A e B estão corretas.
14. O escopo da contagem:
a) Define um subconjunto do software medido e/ou pode incluir mais de uma
aplicação.
b) Deve abranger apenas uma aplicação.
c) Afeta a complexidade dos arquivos identificados.
d) Ambas A e C estão corretas.
15. As seguintes regras são aplicáveis à fronteira da aplicação:
a) A fronteira entre aplicações relacionadas deve ser baseada na separação funcional
das áreas conforme a visão do usuário, não em considerações técnicas.
b) Deve ser determinada com base na visão do usuário. O foco deve estar no que ele
pode entender e descrever.
c) A fronteira inicial estabelecida para a aplicação ou aplicações sendo modificadas
não é influenciada pelo escopo da contagem.
d) Todas as alternativas anteriores estão corretas.
16. Um arquivo é definido como:
a) Um requisito de persistência de dados.
b) Um grupo de dados logicamente relacionados.
c) Uma tabela do banco de dados do sistema.
d) Nenhuma das alternativas anteriores está correta.
17. A principal diferença entre um arquivo lógico interno e um arquivo de interface
externa é que:
a) Um AIE é lido, mas não é mantido pela aplicação sendo contada.
b) Um AIE envia dados para fora da fronteira da aplicação.
c) Um ALI possui tipos de registro enquanto o AIE não.
d) Os tipos de dados de um ALI são diferentes de um AIE.
18. Para classificar um arquivo lógico interno, deve-se:
a) Determinar os processos elementares que operam sobre o arquivo.
b) Contar seus tipos de dados e tipos de registro.
c) Contar seus tipos de dados e arquivos referenciados.
d) Contar seus tipos de registro e arquivos referenciados.
19. Para classificar um arquivo de interface externa, deve-se:
a) Determinar os processos elementares que operam sobre o arquivo.
b) Contar todos os campos do arquivo.
c) Contar apenas os campos usados pela aplicação sendo contada.
d) Contar seus tipos de dados e arquivos referenciados.
20. Um tipo de dado é:
a) Um campo único, não repetido e reconhecido pelo usuário.
b) Um subgrupo de dados dentro de um arquivo.
c) Qualquer elemento visual em um relatório ou tela de entrada de dados.
d) Um dado derivado de um processo elementar que não atravessa a fronteira da
aplicação.
21. Um tipo de registro:
a) É um subgrupo de dados dentro de um ALI ou AIE reconhecido pelo usuário.
b) Pode ser opcional ou obrigatório.
c) Depende do tipo da contagem.
d) Ambas A e B estão corretas.
22. Identifique qual das alternativas seguintes não é uma regra de contagem para tipos
de dados em um arquivo lógico.
a) Quando duas aplicações mantêm ou referenciam o mesmo ALI/AIE, mas mantêm
ou referenciam tipos de dados diferentes, conte somente os tipos de dados utilizados
por cada aplicação para determinar a complexidade do arquivo.
b) Conte um tipo de dado para cada campo não repetido e reconhecido pelo usuário
que seja lido ou mantido de um arquivo por meio de um processo elementar.
c) Conte um tipo de dado para cada campo não repetido e reconhecido pelo usuário
que seja necessário a um processo elementar, desde que ele não atravesse a fronteira
da aplicação.
d) Conte um tipo de dado para cada fração de dados solicitada pelo usuário para
estabelecer um relacionamento com outro arquivo.
23. Quantos tipos de dados um ALI ou AIE pode ter?
a) Indeterminado.
b) 0.
c) No máximo 50.
d) 1.
24. Qual a principal intenção de uma entrada externa?
a) Atualizar um arquivo lógico interno ou um arquivo de interface externa.
b) Atualizar um arquivo lógico interno.
c) Atualizar um arquivo de interface externa.
d) Nenhuma das alternativas anteriores está correta.
25. Qual das afirmativas seguintes está correta?
a) Um arquivo de interface externa de uma aplicação deve ser necessariamente um
arquivo lógico interno em uma outra aplicação.
b) Para cada entidade em um modelo de dados existe um arquivo lógico interno
associado.
c) Uma aplicação pode possuir arquivos que não possuem nenhum tipo de registro.
d) Todas as afirmativas anteriores estão incorretas.
26. Identifique qual das alternativas seguintes não é uma regra de contagem para
arquivos referenciados.
a) Conte apenas um arquivo referenciado para cada ALI que seja tanto lido quanto
mantido.
b) Conte um arquivo referenciado para cada ALI mantido.
c) Conte um arquivo referenciado para cada ALI ou AIE lido.
d) Conte um arquivo referenciado para cada alteração no comportamento do sistema.
27. Qual a principal intenção de uma consulta externa?
a) Alterar o comportamento do sistema.
b) Atualizar arquivos lógicos internos.
c) Enviar dados para fora da fronteira da aplicação por meio da simples recuperação
de dados de um arquivo.
d) Gerar dados derivados.
28. Qual a principal diferença entre uma saída externa e uma consulta externa?
a) A saída externa permite diferentes ordenações dos dados.
b) A consulta externa permite diferentes ordenações dos dados.
c) Quantidade de tipos de dados e arquivos referenciados.
d) Nenhuma das alternativas anteriores está correta.
29. Identifique a afirmativa que não se aplica a uma informação de controle:
a) Influencia um processo elementar da aplicação sendo contada.
b) É um subgrupo de dados reconhecido pelo usuário.
c) Especifica o que, quando ou como os dados devem ser processados.
d) Pode ser uma tecla de atalho ou um botão que afeta o processamento da transação.
30. Usuário, na definição do IFPUG, é:
a) Qualquer pessoa que usa ou opera o sistema.
b) Qualquer pessoa ou “coisa” que interage com o sistema a qualquer momento e/ou
que especifica requisitos funcionais.
c) Qualquer pessoa responsável pela contratação de sistemas na organização.
d) Nenhuma das alternativas anteriores está correta.
31. Uma saída externa pode:
a) Gerar dados derivados.
b) Alterar o comportamento do sistema.
c) Atualizar um arquivo lógico interno.
d) Todas as afirmativas anteriores estão corretas.
32. Uma consulta externa deve:
a) Referenciar pelo menos um arquivo.
b) Gerar dados derivados.
c) Alterar o comportamento do sistema.
d) Atualizar um arquivo lógico interno.
33. A complexidade de uma entrada externa é determinada:
a) Pelo número de arquivos referenciados.
b) Pelo número de arquivos referenciados e tipos de dados.
c) Pelo número de arquivos referenciados e tipos de registros.
d) Pelo número de tipos de dados e tipos de registros.
34. Identifique qual das alternativas não faz parte das regras de identificação de
entradas externas.
a) Dados são enviados para fora da fronteira da aplicação.
b) Dados ou informações de controle são recebidos de fora da fronteira da aplicação.
c) Um arquivo lógico interno é atualizado.
d) O comportamento do sistema é alterado.
35. Um arquivo referenciado:
a) São dados de referência mantidos pelo sistema e solicitados pelo usuário.
b) É um ALI lido ou mantido por um processo elementar ou um AIE lido por um
processo elementar.
c) É um AIE lido ou mantido por um processo elementar da aplicação sendo contada.
d) É uma tabela do sistema.
36. Qual o número mínimo de arquivos referenciados para uma consulta externa?
a) 0.
b) 1.
c) 2.
d) 3.
37. Qual o número mínimo de arquivos referenciados para uma saída externa?
a) 0.
b) 1.
c) 2.
d) 3.
38. Que faixa de valores pode assumir o nível de influência de uma característica geral
da aplicação?
a) –35% a +35%.
b) 1 a 14.
c) 0 a 5.
d) Baixa, média e alta.
39. Identifique a fórmula correta para determinação do valor do fator de ajuste:
a) VAF = (NI * 0,01) + 0,65.
b) VAF = (TDI * 0,01) + 0,35.
c) VAF = (TDI * 0,01) + 0,65.
d) VAF = (TDI * 0,01) – 0,65.
40. O valor do fator de ajuste:
a) Reflete a funcionalidade específica da aplicação.
b) Pode variar de 0 a 5.
c) Influencia na contagem dos pontos de função.
d) Nenhuma das alternativas anteriores está correta.
41. Qual característica geral contempla uma aplicação que deve rodar em ambientes de
hardware e de software similares?
a) Facilidade de instalação.
b) Múltiplos locais.
c) Configuração altamente utilizada.
d) Processamento distribuído.
42. No caso anterior, qual o nível de influência dessa característica geral?
a) 2.
b) 0.
c) 5.
d) 1.
43. O suporte a várias línguas é contemplado por qual característica geral?
a) Modificação facilitada.
b) Facilidade de operação.
c) Eficiência do usuário final.
d) Facilidade de instalação.
44. Qual é a fórmula correta para o cálculo dos pontos de função ajustados de um
projeto de desenvolvimento?
a) DFP = UFP + CFP + VAF.
b) DFP = UFP * CFP * VAF.
c) DFP = UFP + (CFP * VAF).
d) DFP = (UFP + CFP) * VAF.
45. Na fórmula para calcular a contagem inicial da aplicação, o que representam suas
variáveis?
a) AFP representa os pontos de função alterados, ADD representa o nível de
influência total.
b) AFP representa os pontos de função alterados, ADD representa os pontos de
função adicionados à instalação da aplicação.
c) AFP representa os pontos de função ajustados da aplicação, ADD representa os
pontos de função na instalação da aplicação.
d) Nenhuma das alternativas anteriores está correta.
46. Qual das afirmativas seguintes está correta?
a) Literais como variáveis de paginação devem ser consideradas na contagem dos
tipos de dado de uma saída externa.
b) As funcionalidades excluídas de um sistema não devem ser consideradas em um
projeto de melhoria.
c) Um arquivo com apenas um tipo de registro nunca poderá ser de complexidade
alta.
d) Para a determinação da complexidade de um arquivo deve-se determinar quantos
processos elementares o referenciam.
47. Para que uma saída externa seja de complexidade média, a seguinte situação deve
ocorrer:
a) Um processo elementar com mais de 20 tipos de dados.
b) Um processo elementar com menos de três arquivos referenciados.
c) Um processo elementar com três tipos de dados e quatro arquivos referenciados.
d) Um processo elementar com 19 tipos de dados e 0 arquivo referenciado.
48. Não é um exemplo de uma característica geral de sistema:
a) Portabilidade.
b) Atualização on-line.
c) Performance.
d) Volume de transações.
49. O projeto de melhoria:
a) Corrige defeitos na aplicação.
b) Reflete as funcionalidades adicionadas, alteradas e excluídas de um sistema, além
da conversão de dados.
c) Representa os pontos de função antes da instalação da aplicação.
d) Contempla o fator de ajuste da aplicação existente.
50. Um processo elementar emite três mensagens distintas para o usuário: “Deseja
excluir o registro (S/N)?”, “Não é permitida a exclusão do registro!” e “Registro
excluído com sucesso”. Como estas mensagens devem ser consideradas no contexto
da Análise de Pontos de Função?
a) Novas consultas ou saídas externas.
b) Três tipos de dados do processo elementar.
c) Um tipo de dados do processo elementar.
d) Não são relevantes para o processo de contagem.
Função EE SE CE N/A
1. Inclusão na agenda
2. Busca na agenda
3. Alteração na agenda
4. Exclusão de registro da agenda
5. Exclusão de todos os registros da agenda
6. Alteração de tipos de toque
7. Alteração de volume
8. Bloqueio/desbloqueio do teclado
9. Consulta caixa de mensagens
10. Leitura de mensagens
Tabela Campo
Sigla do Estado (PK)
Estado
Nome do Estado
Identificador da cidade (PK)
Nome da cidade
Cidade
Sigla do Estado (FK)
Isenta ISS? (S/N)
Identificador do cliente (PK)
Razão Social
Logradouro
Número
Bairro
CEP
Cliente
Identificador da cidade (FK)
Telefone
CNPJ
Inscrição Estadual
Inscrição Municipal
Observação
Identificador do cliente (PK, FK)
Identificador do contato (PK)
Nome
Sexo
Contato Cliente
Data de Nascimento
Cargo
Telefone
Observação
Tabela Campo
Identificador do imposto (PK)
Nome
Imposto
Descrição para impressão
Alíquota
Identificador da nota fiscal (PK)
Número da nota fiscal
Identificador do cliente (FK)
Data de emissão
Nota Fiscal
Data de vencimento
Valor
Situação
Motivo do cancelamento
Identificador da nota fiscal (PK, FK)
Identificador do item (PK)
Unidade
Item Nota Fiscal Quantidade
Descrição
Valor unitário
Valor total
Identificador da nota fiscal (PK,FK)
Identificador do imposto (PK, FK)
Imposto Incidente Nota Fiscal Valor incidente
Situação de impressão
Situação de dedução
Caso 6. Assinale o tipo das funções que farão parte do escopo da contagem do
projeto de melhoria do sistema apresentado em seguida. O banco ACME possui um
sistema para o fornecimento de vale-alimentação, que autoriza de forma on-line as
compras em supermercados (pagas agora com o cartão magnético em vez de tickets).
Antes da implantação desse sistema já existia um sistema responsável por gerenciar
toda a retaguarda do serviço de vale-alimentação, com o qual o sistema autorizador de
compras interage. Esse sistema autorizador de compras processa transações originadas
no sistema de retaguarda, nos PDVs dos estabelecimentos comerciais e na Internet. Não
há interação direta de um usuário final com o sistema. As funções que esse sistema
possui atualmente são:
Requisitos de Melhorias
• Será criada uma tabela chamada Controle Geral com um único
registro (uma ocorrência) que armazena os seguintes parâmetros:
valor limite de compras por dia, valor máximo de compra, número
máximo de tentativas incorretas de senha.
• À tabela Empregado Beneficiário serão acrescentados os seguintes
campos: número de tentativas incorretas de senha e valor de
compras no dia. A senha, que antes era armazenada de forma
natural, será armazenada criptografada.
• Todas as transações que validam senha continuarão recebendo a
senha no formato natural até que os sistemas com as quais
interagem também sejam alterados. A senha recebida deve ser
criptografada para comparação com a senha armazenada. Caso a
validação de senha falhe, o campo número de tentativas incorretas
de senha deve ser atualizado na tabela de Beneficiário. Se o
número de tentativas incorretas exceder o valor definido na tabela
Controle Geral, o cartão deve ser bloqueado e uma transação de
bloqueio deve ser gravada no log de transações. Caso a validação
de senha tenha sucesso, o campo número de tentativas incorretas
na tabela de Beneficiário deve ser zerado.
• Será criada uma transação para possibilitar a alteração de
parâmetros na tabela Controle Geral.
Dados de entrada Dados de saída
Código da transação - constante “PAR” Código da transação - constante “PAR”
Limite de compras por dia Código de resposta
Valor máximo de compra
Número máximo de tentativas incorretas de senha
Função EE SE CE N/A
1. Extrato
2. Saque
3. Crédito
4. Estorno de saque
5. Troca de senha
Função EE SE CE N/A
1. Consulta nome cliente
2. Autoriza contratação
3. Contratação - inclusão
4. Contratação - alteração
5. Ajusta valor da contratação
6. Contratação - consulta
7. Contratação - exclusão
8. Relatório mensal locações efetuadas
9. Lista veículos disponíveis
Função EE SE CE N/A
10. Verifica inspeção
Caso 10. Assinale o tipo das funções que farão parte do escopo da contagem do
projeto de melhoria do sistema seguinte.
Cadastro de Clientes: permite incluir, alterar, excluir, consultar e emitir um
arquivo mensal de aniversariantes. Para efetuar a inclusão de um cliente os seguintes
campos são preenchidos: Nome do Cliente, CPF, Endereço (Rua/Av., número,
complemento, bairro, cidade, estado e CEP), Data de Nascimento, e-mail. O campo
Código do Cliente é gerado automaticamente pelo sistema. Ao informar o CEP, o
sistema traz todas as informações de endereço das tabelas de CEPs dos correios para o
endereço do cliente, e o usuário pode alterar os dados se desejar. Ao alterar o CEP do
Cliente, o sistema pergunta se deseja sobrescrever os dados de endereço do cliente com
os dados dos correios. Os campos são os mesmos para a alteração, porém o Nome do
Cliente, a Data de Nascimento, o CPF e o Código do Cliente não podem ser alterados.
Para a exclusão é necessário informar o CPF ou o Código do Cliente. Na consulta, todos
os campos da inclusão são apresentados.
Mensalmente é gerado um arquivo para o sistema de mala direta que contém os
aniversariantes do mês. Os campos constantes no arquivo são Código do Cliente, Nome
do Cliente, Endereço, Data de Aniversário (somente o dia) e idade atual.
Requisitos da melhoria:
• Não permitir cadastrar um cliente com CPF duplicado.
• Incluir o e-mail na relação de aniversariantes.
• Montar um relatório de clientes inadimplentes, consultando no
sistema de contas a receber as contas em atraso a mais de 30 dias.
O relatório deve exibir nome do cliente, data do vencimento, valor
da conta, telefone de contato e o total a receber de todos os
clientes no rodapé.
Glossário
A seguir, são definidos os termos utilizados na técnica da Análise de
Pontos de Função. Alguns deles também estão em inglês por ser comum sua
utilização na versão original pela comunidade APF do Brasil.
A
AIE: Arquivo de Interface Externa.
ALI: Arquivo Lógico Interno.
ALR: Arquivos Lógicos Referenciados. Nomenclatura obsoleta para arquivos
referenciados.
Alteração do Comportamento do Sistema: Modificar o comportamento do sistema
significa alterar um parâmetro de negócio (através de alguma transação). O efeito causado
por essa mudança no parâmetro tem reflexo no comportamento de outras transações.
Exemplo: o sistema de compras dá autonomia para que cada comprador possa efetuar
compras de até R$ 10.000,00 no mês sem autorização da chefia. Este valor é um parâmetro
do sistema e quando for alterado, afetará as transações de compra, ou seja, vai alterar o
comportamento do sistema.
Análise de Pontos de Função: Método padrão para medir as funcionalidades de um
software sob a perspectiva do usuário. Objetivos da técnica: medir a funcionalidade que o
usuário solicita e recebe; medir o desenvolvimento e a manutenção de software de forma
independente da tecnologia utilizada para sua implementação.
Objetivos do Processo de Contagem: Ser simples o suficiente para minimizar o
esforço adicional envolvido no processo de medição; uma medida consistente entre vários
projetos e organizações.
Benefícios da APF: Determinar o tamanho de um pacote adquirido; ajudar usuários a
determinar os benefícios de um pacote para sua organização; suportar a análise de
produtividade e qualidade; estimar custos e recursos para desenvolvimento e manutenção
de software; fator de normalização para comparação de software.
APF: Análise de Pontos de Função.
Aplicação: Conjunto coeso e automatizado de funções, procedimentos e dados que
dão sustentação a um objetivo de negócio. Também chamado de sistema ou sistema de
informação.
AR: Arquivo Referenciado.
Arquivo: No contexto da APF este termo não significa arquivo no sentido tradicional
de processamento de dados. Nesse caso, arquivo refere-se a um grupo lógico de dados ou
informações de controle, e não à implementação física destes. É classificado em ALI ou
AIE.
Arquivo de Interface Externa: Grupo de dados ou informações de controle,
logicamente relacionados, referenciados pela aplicação, mas mantidos na fronteira de outra
aplicação. Sua principal intenção é armazenar dados referenciados através de um ou mais
processos elementares da aplicação sendo contada. Um AIE contado para uma aplicação
deve ser um ALI para outra aplicação.
Arquivo Lógico Interno: Grupo de dados ou informações de controle, logicamente
relacionados, mantidos na fronteira da aplicação. Sua principal intenção é armazenar dados
mantidos através de um ou mais processos elementares da aplicação sendo contada.
Arquivo Referenciado: É um ALI lido ou mantido pela função do tipo transação, ou
um AIE lido pela função do tipo transação. A complexidade funcional de cada EE, SE e
CE é atribuída com base no número de arquivos referenciados e tipos de dados.
B
Baseline : Base instalada; o mesmo que contagem de aplicação.
Benchmarking : É a busca das melhores práticas na indústria que conduzem ao
desempenho superior.
BFPUG: Brazilian Function Point Users Group . É a representação oficial do IFPUG
no Brasil.
Bug: Defeito de um software.
C
Caso de Uso: O caso de uso é um documento que representa uma unidade discreta de
interação entre o usuário e o sistema, ou seja, um conjunto de operações que produz um
resultado concreto. Ele descreve uma funcionalidade que o sistema possui do ponto de
vista da interação usuário (ou ator) e o sistema. Não deve conter termos técnicos da área de
desenvolvimento, apenas a linguagem do usuário. Também não deve descrever como o
sistema será construído. Tipicamente um sistema terá vários casos de uso, cada um
abordando uma parte do que o sistema irá fornecer ao seu usuário.
Características Gerais do Sistema: Refletem as funcionalidades gerais fornecidas
pela aplicação ao usuário. São elas: Comunicação de Dados, Processamento Distribuído,
Performance, Configuração Intensamente Utilizada, Volume de Transações, Entrada de
Dados On-Line, Eficiência do Usuário Final, Atualização On-Line, Processamento
Complexo, Reusabilidade, Facilidade de Instalação, Facilidade de Operação, Múltiplos
Locais e Facilidade de Mudança.
CE: Consulta Externa.
CFPS: Certified Function Point Specialist .
Chave Estrangeira: Campo em um arquivo, reconhecido e solicitado pelo usuário,
que existe para estabelecer um relacionamento com outro arquivo. A chave estrangeira
aponta para a chave primária do outro arquivo relacionado.
CPM: Counting Practices Manual.
COCOMO II: COnstructive COst MOdel é um modelo de estimativa paramétrico que
envolve o uso de equações matemáticas para fazer estimativas de esforço, prazo e tamanho
da equipe em projetos de software. Suas equações são baseadas em pesquisa e dados
históricos e utilizam como entrada a quantidade de linhas de código (ou pontos de função)
e a avaliação de outros aspectos relevantes para a estimativa chamados de cost drivers .
Complexidade Funcional: É a classificação de um tipo de função em particular.
Assume os seguintes valores: baixa, média e alta. Para as funções tipo dados, a
complexidade é determinada pelo número de tipos de registro (Registros Lógicos
Referenciados - RLR - ou Record Element Types - RET) e tipos de dado (Dados
Elementares Referenciados - DER - ou Data Element Types - DET). Para as funções de
tipo transacional, a complexidade é determinada pelo número de arquivos referenciados
(Arquivos Lógicos Referenciados - ALR - ou File Type Referenced - FTR) e tipos de
dados.
Contagem de Aplicação: Mede a aplicação instalada. Também chamada de baseline .
Reflete a funcionalidade atualmente fornecida pela aplicação. É inicializada ao término do
projeto de desenvolvimento e atualizada ao término de cada projeto de melhoria que altera
a funcionalidade da aplicação.
Contagem de Projeto de Desenvolvimento: Mede as funcionalidades fornecidas ao
usuário na primeira instalação da aplicação. Inclui também toda a funcionalidade
necessária à conversão de dados.
Contagem de Projeto de Melhoria: Mede modificações que incluem, excluem ou
alteram funcionalidades em aplicações existentes. Inclui também toda a funcionalidade
necessária à conversão de dados.
Contagem Estimativa: Técnica proposta pela NESMA para estimar o tamanho em
pontos de função de um sistema baseado apenas na identificação de todas as suas funções,
sem a necessidade de identificar a complexidade delas. Neste caso a complexidade para os
arquivos é tratada como baixa e para as transações, tratada como média.
Contagem Indicativa: Técnica proposta pela NESMA para estimar o tamanho em
pontos de função de um sistema baseado apenas na identificação de seus arquivos lógicos e
aplicação do peso de 35 PF para cada ALI e 15 PF para cada AIE.
Consulta Externa: Processo elementar que envia dados ou informações de controle
além da fronteira da aplicação. Sua principal intenção é apresentar informação ao usuário
através da recuperação de dados ou informações de controle de um ALI ou AIE. A lógica
de processamento não deve conter fórmula matemática ou cálculo, não deve criar dados
derivados, nem manter um ou mais ALI, nem alterar o comportamento do sistema.
Conversão de Dados: São funções construídas e entregues pelo projeto (de
desenvolvimento ou melhoria) para serem usadas no momento da instalação do projeto
para converter dados ou fornecer outros requisitos de conversão especificados pelo usuário,
como relatórios de verificação da conversão. A característica dessas funções é que elas são
descartadas após o seu uso, não fazendo parte das funções da aplicação após sua instalação.
Quando o sistema entra em operação, essas funções não são mais necessárias.
Counting Practices Manual : O mesmo que manual de práticas de contagem do
IFPUG.
Custo: Soma dos dispêndios em que se incorre no processo de produção de uma
mercadoria ou serviço.
D
Dados de Código: Também chamados de dados de lista ou dados de tradução. O
usuário nem sempre os especifica diretamente. Em outros casos, eles são identificados pelo
desenvolvedor em resposta a um ou mais requisitos técnicos do usuário. Eles proveem uma
lista de valores válidos que um atributo descritivo pode assumir. Tipicamente seus atributos
são código, descrição e/ou outros atributos “padrão” descrevendo o código; por exemplo,
abreviação padrão, datas de início e término de vigência, dados de auditoria etc.
Dados de Negócio: Esse tipo de dados reflete a informação cujo armazenamento e
recuperação pela área funcional que a aplicação atende são necessários. Geralmente
representam um percentual significativo das entidades identificadas. Também chamados de
core user data ou objetos de negócio.
Dados de Referência: Dados desse tipo são armazenados para suportar regras de
negócio para a manutenção de dados de negócio. Existem para suportar regras de negócio
para a manutenção de dados de negócio. Representam um pequeno percentual das
entidades identificadas. Possuem poucos atributos e são dados pouco dinâmicos. Devem
ser contados como ALIs ou AIEs. Por exemplo, em uma aplicação de folha de pagamento
ele seria o dado armazenado sobre as alíquotas de imposto do governo para cada faixa
salarial e a data em que vigoram. Geralmente representam um pequeno percentual das
entidades identificadas.
Dado Derivado: Informação criada a partir da transformação de dados existentes.
Requer outro proces- samento além da recuperação, conversão e edição direta de dados de
um arquivo lógico interno e/ou arquivo de interface externa. Ou seja, é um dado
apresentado pelo sistema, mas que não está armazenado em um arquivo lógico. Ele é
criado através de uma lógica de processamento (cálculo, por exemplo). Exemplos de dados
derivados podem ser todos os campos apresentados pela transação que sejam resultados de
cálculos: total de faturamento, tempo médio entre falhas, porcentagem de participação do
produto X nas vendas etc.
Data Element Type : Tipo de dado.
Data Function Type : Função do tipo dado.
Defeito: Um problema em uma aplicação que, se não corrigido, pode provocar sua
falha ou a geração de resultados incorretos. A ausência de funcionalidade que foi
especificada e solicitada também é considerada um defeito.
Desenvolvimento: Especificação, análise, projeto, construção, teste e implantação de
um novo sistema de informação.
DET: Data Element Type.
DER: Dado Elementar Referenciado. Nomenclatura obsoleta para tipo de dado.
Degree of Influence : É o mesmo que Nível de Influência.
DI: Degree of Influence .
Diagrama de Contexto: Representa todo o sistema como um único processo e é
composto por fluxos de dados que mostram as interfaces entre o sistema e as entidades
externas. O diagrama é uma forma de representar o objeto do estudo, o projeto e sua
relação com o ambiente. Permite identificar os limites dos processos, as áreas envolvidas
com o processo e os relacionamentos com outros processos e elementos externos à empresa
(por exemplo, clientes, fornecedores).
Documento de Visão: Contém a visão que os envolvidos têm do sistema a ser
desenvolvido, em termos das necessidades e características mais importantes. Por conter
uma descrição dos requisitos centrais pretendidos, ela proporciona a base para requisitos
mais detalhados. Também pode conter uma especificação de requisitos formal. O
documento de visão captura restrições de design e requisitos de alto nível para que o
usuário possa compreender o sistema que será desenvolvido.
E
EE: Entrada Externa.
EI: External Input.
EIF: External Interface File.
Elicitação: É a atividade de obtenção, pesquisa, descoberta ou e/ou identificação dos
requisitos que os usuários possuem para um projeto ou sistema.
Entidade: Uma coisa fundamental ou de relevância para o usuário, sobre a qual uma
coleção de fatos é mantida. Uma associação entre entidades que contenha atributos é, por si
só, uma entidade.
Entidade Associativa: É um tipo de entidade que contém atributos que completam a
descrição de um relacionamento de muitos-para-muitos entre duas outras entidades. É
usada para associar duas ou mais entidades como uma forma de definir o relacionamento
de muitos-para-muitos. Entidades desse tipo são geralmente criadas por quem modela os
dados para resolver algumas das regras de negócio necessárias à associação entre duas
entidades distintas.
Entidade Atributiva: É um tipo de entidade que descreve complementarmente uma
ou mais características de uma outra entidade. Por definição, é uma extensão lógica de uma
outra entidade. Normalmente os dados em entidades desse tipo são contados como um tipo
de registro da entidade que descreve.
Entidade Dependente: Uma entidade que não tem significado sem a presença de
outra entidade associada a ela por um relacionamento.
Entidade Independente: Uma entidade que é significativa por si própria, sem a
presença de outra entidade associada a ela por um relacionamento.
Entidade Subtipo: Uma subdivisão de uma entidade. Um subtipo herda todos os
atributos e relacionamentos de sua entidade pai e pode ter atributos e relacionamentos
únicos adicionais.
Entrada Externa: Processo elementar que processa dados ou informações de controle
vindos de fora da fronteira da aplicação. Os dados processados mantêm um ou mais ALI,
enquanto as informações de controle podem ou não manter um ALI. A principal intenção
de uma EE é manter um ou mais ALI e/ou alterar o comportamento do sistema.
Escopo da Contagem: Define a funcionalidade que será incluída em determinada
contagem de pontos de função.
Esforço: Mobilização de forças físicas, intelectuais ou morais, para vencer uma
resistência ou dificuldade, para atingir algum fim.
External Input : Entrada externa.
External Output : Saída externa.
External Interface File : Arquivo de interface externa.
F
Fator de Ajuste: Ou valor do fator de ajuste.
Fator de Crescimento: Indicador que representa o crescimento ou diminuição na
quantidade de pontos de função entre o início e término de uma fase do projeto de
desenvolvimento do sistema.
File Types Referenced : Arquivos referenciados.
FPA: Function Point Analysis.
FP: Function Point.
Fronteira: É a interface conceitual que delimita o software sendo medido e o usuário.
Pode haver mais de uma aplicação incluída no escopo da contagem. Nesse caso, múltiplas
fronteiras da aplicação deverão ser identificadas. Quando a fronteira não está bem definida
(como no início da análise), ela deverá ser posicionada da forma mais exata possível.
FTR: File Types Referenced.
Função: As características ou capacidades de uma aplicação como vistas pelo usuário.
Também chamada de funcionalidade. Unidade que representa as suas práticas e
procedimentos.
Funcionalidade de Conversão: São aquelas funções (do projeto de desenvolvimento
ou de melhoria) fornecidas para conversão de dados e/ou provimento de outros requisitos
específicos da conversão estabelecidos pelo usuário, como relatórios específicos para
conversão.
Funções Tipo Dado: Representam as funcionalidades fornecidas pelo sistema ao
usuário, para atender a suas necessidades de dados. Classificadas em ALI e AIE.
Funções Tipo Transação: Representam as funcionalidades de processamento de
dados fornecidas pelo sistema ao usuário. Classificadas em EE, CE e SE.
G
General System Characteristics : Características Gerais do Sistema.
GSC: General System Characteristics.
Guia de Contagem: É um documento de uso interno a uma organização que orienta as
medições feitas em pontos de função em projetos de software. Sua característica é ter um
enfoque bem específico das situações que uma organização vivencia nas suas contagens de
pontos de função. Seu papel é traduzir os conceitos gerais do manual de práticas de
contagem do IFPUG para as situações específicas de uma organização.
I
Identificável pelo Usuário: Requisitos definidos para processos e/ou grupos de dados
acordados e entendidos por ambos, usuário e desenvolvedor.
IEEE: É uma organização sem fins lucrativos de profissionais interessados no avanço
da tecnologia. Originalmente o seu nome vem do acrônimo de Institute of Electrical and
Electronics Engineers (www.ieee.org), porém o seu escopo de interesse e atuação se
expandiu para muito além da área original.
IFPUG: International Function Point Users Group . É uma entidade sem fins
lucrativos, composta por pessoas e empresas de diversos países, cuja finalidade é promover
um melhor gerenciamento dos processos de desenvolvimento e manutenção de software
através do uso da APF.
ILF: Internal Logical File .
Imagem: Conjunto de registros afins tratados como uma unidade. Uma réplica exata
de um outro objeto, arquivo ou tabela geralmente criada pelo uso de um utilitário. Por
exemplo, um arquivo poderia consistir de um conjunto de registros de faturamento.
Informações de Controle: Dados que influenciam um processo elementar. Comandos
de ação, parâmetros de consulta, enfim, informação que especifica o que, quando, ou como
os dados devem ser processados. Em resumo, parâmetros.
Exemplos:
“O que” - determinado campo especifica que o cálculo da parcela deve contemplar
somente o valor vencido ou o valor corrigido com juros e multa.
“Quando” - uma enquete pode ter um fechamento automático (votações finalizadas)
definido pela data de seu encerramento.
“Como” - durante a compra de uma passagem aérea, o cliente informa em um campo
como deseja receber a confirmação da compra: por e-mail, torpedo (SMS) ou fax.
Internal Logical File: Arquivo lógico interno.
Intenção Primária : Intenção que é a primeira em importância.
ISBSG: International Software Benchmarking Standards Group (www.isbsg.org) é
uma organização sem fins lucrativos responsável por criar e manter um repositório de
dados históricos de projetos de TI com o intuito de ajudar a melhorar a gestão de TI no
mundo.
L
LOC: Linhas de código-fonte (SLOC (em inglês)) é uma medida de software usada
para medir o tamanho de um programa de software, através da contagem do número de
linhas em texto do código-fonte do programa.
Lógica de Processamento: Qualquer um dos seguintes requisitos solicitados pelo
usuário para completar um processo elementar: realização de validações, realização de
cálculos matemáticos, conversão de equivalência, filtragem e seleção de dados, análise de
condições, atualização de ALIs, referência a ALIs/AIEs, recuperação de dados, criação de
dados derivados, alteração no comportamento do sistema, apresentação de dados além da
fronteira da aplicação, aceitação de dados que entram pela fronteira da aplicação,
ordenação de dados.
M
Manter: O termo manter 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.
Manual de Práticas de Contagem: Documento editado pelo comitê de práticas de
contagem do IFPUG que tem como objetivos: fornecer uma descrição clara e detalhada de
como contar pontos de função; promover a consistência nas contagens realizadas pelos
membros do IFPUG; fornecer orientação de como realizar contagens de pontos de função
baseadas em artefatos das técnicas e metodologias mais populares de desenvolvimento de
software e prover um entendimento comum que permita o desenvolvimento de ferramentas
que forneçam suporte automático à contagem de pontos de função.
Manutenção: Esforço para manter uma aplicação executando conforme suas
especificações, geralmente sem modificar sua funcionalidade (ou contagem de pontos de
função). Inclui reparo, melhorias menores, conversão, atividade de suporte ao usuário e
manutenção preventiva. Atividades incluem remoção de defeitos (veja reparo), atualização
de hardware ou software (veja conversão), otimização ou melhoria de qualidade (veja
manutenção preventiva) e suporte ao usuário.
Manutenção Adaptativa: Inclui modificações para atender novos requisitos de
negócio, requisitos de negócio em processo de mudança, ou para adicionar funcionalidade
não presente em uma versão anterior. Pode também incluir modificações necessárias ao
atendimento de requisitos técnicos. É iniciada por solicitações de negócio para adicionar,
modificar e/ou excluir funcionalidades de negócio. É sinônimo do conceito de uma
“melhoria” como definido pelo IFPUG.
Manutenção Corretiva: Modificação reativa de um produto de software executada
depois da entrega para corrigir problemas identificados. A modificação corrige os produtos
de software para satisfazer os requisitos. (ISO/IEC 14764:2006)
Manutenção Perfectiva (ou preventiva): Modificação de um produto de software
depois da entrega para detectar e corrigir falhas latentes no produto de software antes que
ele manifeste essas falhas. Manutenção perfectiva fornece melhorias para usuários,
melhorias de documentação de programas e recodificação para melhorar a performance do
software, manutenibilidade e outros atributos do software. Contrastar com: manutenção
adaptativa e manutenção corretiva. (ISO/IEC 14764:2006).
Medição: Uso de uma métrica para atribuir um valor (o qual pode ser um número ou
categoria), obtido a partir de uma escala, a um atributo de uma entidade [ISO/IEC 9126-1].
Geralmente, no processo de melhoria, medidas obtidas nessa atividade são combinadas
para gerar métricas.
Modelos de Dados: É um subconjunto do modelo de implementação que descreve a
representação lógica e física dos dados persistentes no sistema.
N
NESMA: Netherland Software Metrics Association . Associação de métricas de
software da Holanda. Mantém um manual próprio para a contagem de pontos de função,
com os mesmos conceitos e definições que o manual do IFPUG. Para a contagem de
projetos de desenvolvimento e aplicação, as diferenças são pequenas entre a NESMA e o
IFPUG. Para a contagem de projetos de melhoria, a abordagem das duas organizações é
bem diferente.
Nível de Influência: Peso que cada uma das características gerais do sistema possui
(variando de 0 a 5) na determinação do valor do fator de ajuste da aplicação.
Nível Total de Influência: Somatório dos níveis de influência das 14 características
gerais do sistema.
Normalização: O processo pelo qual qualquer estrutura de dados pode ser
transformada por um projetista de banco de dados em um conjunto de relações
normalizadas que não têm grupos repetidos.
P
PE: Processo Elementar.
PF: Pontos de Função.
Processo Elementar: Menor unidade de atividade significativa para o usuário. Deve
ser completo e deixar o negócio da aplicação sendo contada em estado consistente. Pode
ser classificado em entrada externa, saída externa ou consulta externa.
Produtividade: Indicador que mede a razão de bens ou serviços produzidos por
unidades de trabalho e custo.
Propósito da Contagem: Fornece uma resposta a um problema do negócio.
Determina o tipo da contagem e seu escopo. Influencia o posicionamento da fronteira da
aplicação.
Protótipo: É um produto que ainda não foi comercializado, mas está em fase de testes
ou de planejamento. Para a engenharia de software, protótipo é um sistema/modelo sem as
funcionalidades inteligentes (acesso a banco de dados, sistemas legados, regras de negócio
etc.), apenas com as funcionalidades gráficas, e algumas funcionalidades básicas para o
funcionamento do próprio protótipo. Utilizado geralmente para obter aprovação de quem
solicita o sistema.
R
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 pelo(s) 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.
Requisito: Um requisito é algo (ou a especificação de algo) que um produto deve
fazer, ou uma qualidade que deve ter.
Requisito Funcional: Representa as práticas e os procedimentos que o software deve
executar para atender às necessidades do usuário. Ele exclui requisitos de qualidade ou
qualquer requisito técnico.
Requisitos Funcionais Finais: São os requisitos originados de sessões conjuntas entre
usuários e desenvolvedores. São a versão final dos requisitos e apresentam as seguintes
características: linguagem comum aos usuários e desenvolvedores, completos, consistentes,
viáveis e aprovados pelo usuário.
Requisitos Iniciais do Usuário: Representam os requisitos dos usuários antes das
sessões entre os usuários e os desenvolvedores. Eles podem ter as seguintes características:
incompletos, inviáveis de implementar, muito genéricos, expressos na linguagem familiar
ao negócio do usuário.
Requisitos não Funcionais: Os requisitos não funcionais lidam com aspectos não
ligados diretamente ao negócio do usuário ao qual o sistema deve atender. Alguns
requisitos não funcionais estão ligados diretamente à implementação do software. E a APF
independe da implementação. Logo, tudo aquilo num projeto de software que demanda
esforço ou custo e que não é medido diretamente em PFs acaba afetando o preço do PF
(R$/PF).
Requisitos Técnicos Iniciais: Representam a visão dos desenvolvedores de software
dos requisitos criados a partir do estudo de viabilidade. Um trabalho dos desenvolvedores
de software, dentre outros, é organizar os requisitos dentro das aplicações existentes, se
existirem. Os requisitos técnicos iniciais podem incluir elementos necessários para a
implementação, mas não são utilizados na contagem de pontos de função. Por isso podem
ter as seguintes características: dependência tecnológica, linguagem não familiar ao
usuário, nem sempre aderente às necessidades do usuário.
RET: Record Element Type .
RLR: Registro Lógico Referenciado. Nomenclatura obsoleta para tipo de registro.
S
Saída Externa: É um processo elementar cuja principal intenção é enviar dados ou
informação de controle além da fronteira da aplicação. Sua lógica de proces- samento deve
conter pelo menos uma fórmula matemática ou cálculo ou criar dado derivado. Pode
também manter um ou mais arquivos lógicos internos (ALI) e/ou alterar o comportamento
do sistema.
Scope Creep: Aumento do escopo de um projeto de desenvolvimento de software pelo
acréscimo de funcionalidades não especificadas no documento original de requisitos.
Significativo: Reconhecido pelo usuário e satisfazendo um requisito funcional do
usuário.
Subgrupo Obrigatório: Um dos dois tipos de subgrupos para um tipo de registro
(Registro Lógico Referenciado - RLR - ou Record Element Type - RET). Subgrupo
obrigatório significa que o usuário deve usar um dos subgrupos durante um processo
elementar que crie uma instância dos dados.
Subgrupo Opcional: É aquele que o usuário tem a opção de não usar durante um
processo elementar que inclui ou cria uma instância dos dados.
T
Tamanho Funcional: É a medida das funcionalidades de uma aplicação que o usuário
solicita recebe, tendo como base a visão do usuário.
TD: Tipo de Dado.
Tipo de Contagem: São três os tipos de contagem de pontos de função: projeto de
desenvolvimento, projeto de melhoria e aplicação.
Tipo de Dado: Campo único, reconhecido pelo usuário, não repetido.
Tipo de Registro: Um tipo de registro elementar é um subgrupo de dados reconhecido
pelo usuário dentro de uma função de dados. Pode ser um subgrupo opcional ou subgrupo
obrigatório. A complexidade funcional de cada arquivo lógico é definida com base no
número de tipos de dado (DET) e tipos de registro (RET) associados a ele.
Total Degree of Influence: Nível total de influência.
TR: Tipo de Registro.
Transactional Function Type : Função do tipo transação.
U
UML: A Unified Modeling Language (UML) é uma linguagem de modelagem aberta
que permite que desenvolvedores visualizem os produtos de seu trabalho em diagramas
padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto
é, semântica. É uma notação independente de processos, embora o RUP ( Rational Unified
Process ) tenha sido especificamente desenvolvido utilizando a UML. A UML não é uma
metodologia de desenvolvimento, o que significa que ela não diz o que fazer primeiro e em
seguida ou como projetar um sistema, mas ela auxilia a visualizar seu desenho e a
comunicação entre objetos.
Usuário: Qualquer pessoa que especifica requisitos funcionais e/ou pessoa ou “coisa”
que interage ou comunica com o sistema a qualquer momento.
V
VAF: Value Adjustment Factor ou valor do fator de ajuste.
Valor do Fator de Ajuste: Indica a funcionalidade geral fornecida pela aplicação ao
usuário. É um valor percentual calculado a partir do nível de influência de cada uma das 14
características gerais do sistema. Pode produzir uma variação de + / - 35% no tamanho do
sistema.
Visão do Usuário: Representa uma descrição formal das necessidades de negócio do
usuário em sua própria linguagem. Desenvolvedores traduzem a informação do usuário em
linguagem de tecnologia da informação para fornecer uma solução.
W
WBS: Work Breakdown Structure .
1 http:// www.pmi.org
2 http://www.sei.cmu.edu
3 http://www.ifpug.org
4 http://www.sqi.gu.edu.au/spice/
5 http://www.tickit.org/
6 http://www.ifpug.org
7 http://www.bfpug.com.br
8 http://br.groups.yahoo.com/group/forum-bfpug
9 http://www.nesma.nl
10 http://www.uksma.co.uk
11 http://www.cosmicon.com
12 http://www.jtc1-sc7.org
13 http://www.isbsg.org
14 4 Na disciplina de Engenharia de Requisitos, deve estar previsto um
mecanismo para validar a necessidade de haver mais de um caso de uso
ou mesmo casos de uso de inclusão ou extensão em situação como a
descrita neste item.