Artigo

Engenharia de Software em Destaque: Pontos de Função.

Introdução

Hoje iniciaremos uma série especial de temas sobre Engenharia de Software, disciplina de Tecnologia da Informação que é muito cobrada em provas específicas da área e em concursos fiscais. A fim de abrir a série em grande estilo, vamos falar de pontos de função.

Nas próximas seções, você perceberá que o tópico é bastante utilizado pelas carreiras que lidam com desenvolvimento de sistemas, independentemente se as atividades são terceirizadas ou não. Assim, cada vez mais é essencial que os servidores possuam conhecimento no assunto.

No entanto, apesar de relativamente antigo, os pontos de função ainda despertam muitas dúvidas no âmbito do serviço público. Esta foi a razão principal que motivou a elaboração deste artigo, já que os concurseiros de hoje serão os servidores de amanhã. Dessa forma, veja como as seções estão organizadas:

  • Objetivo e Características
  • Tipos de Funções
  • Tipos de Contagem
  • Processo de Contagem
  • Exemplo Prático

Embora o artigo seja indicado a todos os concurseiros de TI e da área Fiscal, sempre recomendamos que você confirme a cobrança no conteúdo programático do seu edital, a fim de evitar surpresas ou perder tempo desnecessariamente.

Por fim, a sugestão é que a leitura seja feita de uma única vez, dado que existe uma dependência de conceitos entre as seções. Assim, caso você não disponha de tempo suficiente para concluir, então é melhor deixar para ler o conteúdo em um outro momento. Está pronto? Vamos começar então?

Tempo de leitura aproximada: 15 a 20 minutos

Objetivo e Características

Primeiramente, os pontos de função (PFs) são métricas utilizadas para estimar o tamanho do software. Antes de desenvolver o sistema, você precisará saber qual o esforço que as atividades irão demandar, a fim de fazer um planejamento eficaz dos recursos. É nesse momento que os pontos de função irão apoiá-lo.

Os pontos de função possuem este nome porque consideram os requisitos funcionais do software. Em outras palavras, não importa muito se o código é grande ou pequeno, mas sim o que o programa faz. Além disso, as funcionalidades são consideradas sob o ponto de vista do usuário.

Em outras palavras, a técnica analisa o software de acordo com a visão de que o utiliza. Ademais, não há dependência com tecnologia, linguagem de programação ou ambiente de desenvolvimento. Ou seja, não importa se o sistema foi desenvolvido em Java ou PHP para calcular os PFs.  

Fiquem atentos, pois essas características dos pontos de função despencam em prova, tanto em questões objetivas quanto em questões discursivas. As bancas adoram cobrar isso. Veja um mapa mental com o que vimos até agora para ajudar.

Figura 1 - Mapa mental dos objetivos e características.
Figura 1 – Mapa mental dos objetivos e características dos pontos de função.

Tipos de Funções

Como você pode imaginar, as funcionalidades de um sistema não são todas iguais. Antes de mais nada, elas são divididas em 2 grandes categorias: funções de dados e funções de transação. Vamos falar um pouco sobre cada uma delas então:

Funções de Dados

São grupos de dados ou informações de controle, reconhecidos pelo usuário. Se estiver com dificuldade, pense em estruturas para armazenamento, pois ficará mais fácil de entender. Subdividem-se em:

Arquivo Lógico Interno (ALI): mantido dentro da fronteira da aplicação sob medição. Armazena dados mantidos por um ou mais processos elementares da aplicação sob medição.

Arquivo de Interface Externa (AIE): referenciado pela aplicação sob medição, mas mantido dentro da fronteira de outra aplicação (em outras palavras, é um ALI em outra aplicação). Armazena dados referenciados por um ou mais processos elementares da aplicação sob medição.

De forma bem simples, ALI são estruturas de armazenamento dentro da aplicação e AIE são estruturas de armazenamento fora da aplicação, que se originam de outros sistemas. Além disso, há também a figura dos tipos elementares dentro dos arquivos. Eles subdividem-se em:

Tipos de Dados (TD): atributo único, não recursivo e reconhecido pelo usuário.

Tipos de Registros (TR): subgrupo de dados reconhecido pelo usuário.

Em outras palavras, tipos de dados seriam os campos e os tipos de registros seriam as tabelas.

Funções de Transação

São os processos elementares, ou seja, as funções que serão responsáveis por desempenhar as ações. Subdividem-se em:

Consulta Externa (CE): envia dados ou informações de controle para fora da fronteira da aplicação. Apresenta dados ao usuário por meio de recuperação de dados ou informações de controle.

Entrada Externa (EE): processa dados ou informações de controle recebidos de fora da fronteira da aplicação. Diferentemente da CE, é responsável por alterar o comportamento do sistema.

Saída Externa (SE): envia dados ou informações de controle para fora da fronteira da aplicação, com processamento adicional. Apresenta dados ao usuário por meio de lógica de processamento que não seja apenas recuperação de dados ou informações de controle.

Simplificando, a EE irá processar tudo que vem de fora da aplicação, enquanto a CE e a SE processarão e enviarão os dados para fora da aplicação. A diferença entre a CE e a SE é que a primeira não realiza alteração nos dados, enquanto a segunda pode alterar. Veja:

Figura 2 - Funções de transação na aplicação.
Figura 2 – Funções de transação na aplicação.

As bancas adoram cobrar os tipos de função, sobretudo em provas discursivas. Assim, se você tem dificuldade para decorar, utilize o mapa mental abaixo para ajudar:

Figura 3 - Mapa mental dos tipos de função.
Figura 3 – Mapa mental dos tipos de função no contexto dos pontos de função.

Para o momento da prova, é importante que você tenha decorado as definições que marcamos. Dessa forma, memorize os textos, pois dificilmente as bancas vão “aliviar” (principalmente se a sua prova tiver nível de concorrência e/ou salário altos).

Tipos de Contagem

Existem 2 instituições que adotam metodologias difundidas para cálculos de pontos de função: Netherlands Software Metrics Association (NESMA) e International Function Points Users Group (IFPUG).

As bancas baseiam-se na metodologia dessas 2 instituições para a elaboração das questões. No entanto, a NESMA e o IFPUG adotam tipos de contagem diferentes. Vamos apresentar as duas para você, pois isso será relevante para os próximos passos deste artigo.  

Complexidade

Antes de entrar nos tipos de contagem propriamente ditos, é importante falar um pouco sobre complexidade. Nos próximos tópicos, você verá que o tipo de contagem adotado pode levar em consideração a complexidade da funcionalidade para o cálculo de pontos de função.

Quando isso ocorre, a complexidade geralmente é definida pela seguinte tabela. Cuidado concurseiro, pois talvez este seja o ponto mais importante de todo o artigo. Não vamos dizer que a tabela despenca em prova, porque as bancas não costumam colocá-la no enunciado.

No entanto, elas exigem que você simplesmente decore os valores para conseguir fazer determinado tipo de questão. Estamos cientes de que você não tem só isso para memorizar, mas faça um esforço e leve essa tabela tatuada na sua mente.

Tipo de Função / ComplexidadeSimples ou BaixaMédiaComplexa ou Alta
Consulta Externa (CE)346
Entrada Externa (EE)346
Saída Externa (SE)457
Arquivo de Interface Externa (AIE)5710
Arquivo Lógico Interno (ALI)71015
Tabela 1 – Complexidade dos tipos de função.

Uma outra forma de calcular a complexidade leva em consideração tipos de dados e tipos de registros. Nesse formato, as bancas não te dirão se o ALI ou AIE tem complexidade baixa, média ou alta.

Em contrapartida, elas informarão a quantidade de TDs e TRs. Com estes dados, você irá identificar a complexidade do arquivo, de acordo com a tabela abaixo:

TRs / TDs< 2020 – 50> 50
1BaixaBaixaMédia
2 – 5BaixaMédiaAlta
> 5MédiaAltaAlta
Tabela 2 – Complexidade dos arquivos de acordo com os tipos elementares.

Mais uma vez, recomendamos fortemente que você decore esta tabela. Honestamente, ela não é tão exigida quanto a anterior, mas eventualmente costuma ser cobrada também.

Contagem da IFPUG

Agora que você está craque em complexidade, vamos falar das contagens propriamente ditas. O IFPUG admite 3 tipos:

Contagem de Projetos de Desenvolvimento: todas as funcionalidades desenvolvidas são incluídas no escopo, juntamente com funcionalidades de conversão dos dados. Muito utilizada para sistemas desenvolvidos do zero.

Contagem de Projetos de Melhoria: apenas são consideradas as funcionalidades novas, alteradas ou excluídas do escopo, juntamente com funcionalidades de conversão dos dados. Muito utilizada para manutenções em sistemas. 

Contagem de Aplicação: considera as funcionalidades em Produção na aplicação, mas exclui as funcionalidades de conversão dos dados. Aplicada em sistemas que já estão em funcionamento.

Contagem da NESMA

Por outro lado, a NESMA também admite 3 tipos de contagem, mas classifica-os de uma forma diferente:

Contagem Indicativa: considera apenas as funções de dados (ALI e AIE) no escopo da contagem (ou seja, ignora funções de transação).

Assim, o total de pontos de função será calculado pela fórmula fixa:

Total = 35 * ALI + 15 * AIE

Contagem Estimativa: considera todas as funções no escopo da contagem (dados e transação), mas aplica uma ponderação com a complexidade para o cálculo da fórmula. A complexidade é sempre fixa de acordo com o tipo da função.

As funções de dados serão sempre avaliadas com baixa complexidade, enquanto as funções de transação serão sempre avaliadas com média complexidade. Assim, o total de pontos de função será calculado pela fórmula:

Total = 7 * ALI + 5 * AIE + 4 * CE + 4 * EE + 5* SE

Contagem Detalhada: considera todas as funções no escopo da contagem (dados e transação), aplicando uma ponderação com a complexidade real das funções para o cálculo da fórmula (ou seja, a complexidade não é fixa).

Assim, o total de pontos de função será calculado pela fórmula:

Total = Complexidade * ALI + Complexidade * AIE + Complexidade * CE + Complexidade * EE + Complexidade * SE

Sem dúvida, a contagem detalhada é o tipo que as provas mais cobram. Por fim, preparamos um mapa mental para auxiliar na memorização.

Figura 4 - Mapa mental dos tipos de contagem.
Figura 4 – Mapa mental dos tipos de contagem dos pontos de função.

Processo de Contagem

De forma breve, vamos esquematizar o processo de contagem. Na prática, é assim que a contabilização de pontos de função é feita.

Figura 5 - Processo de contagem de pontos de função.
Figura 5 – Processo de contagem de pontos de função.

Antes de mais nada, veja que o esquema fala em pontos de função não ajustados e pontos de função ajustados. Os pontos de função não ajustados seguem as fórmulas que explicamos na seção anterior. É o padrão: sempre que pedirem para calcular PFs, você calcula os não ajustados.

O fator de ajuste tem caráter opcional, sendo calculado pela análise de 14 características gerais quanto ao grau de influência no sistema. Não vamos aprofundar as características neste artigo porque as bancas não costumam explorar muito essa parte.

Caso aplicado, o fator de ajuste pode variar 35% para mais ou para menos. Como você já deve imaginar, o total de pontos de função ajustados leva em consideração o fator de ajuste, dessa forma:

PFs ajustados = PFs não ajustados * fator de ajuste

Observe que, caso você queira desconsiderar o fator de ajuste, basta substituir a variável por 1.

Exemplo Prático

Depois de toda essa teoria, vamos ver um exemplo bem rapidinho, pois nosso artigo já está quase terminando. Suponha que a banca pediu para você calcular os pontos de função não ajustados de um sistema hipotético, com as seguintes características:

TipoComplexidadeQuantidade
EEMédia3
SEAlta2
Tabela 3 – Enunciado do exemplo.

Além disso, a banca informou que o sistema também contaria com um único ALI, contendo 3 tipos de dados e 1 tipo de registro (não informou diretamente a complexidade).

Em primeiro lugar, vamos identificar a complexidade do ALI. Conforme a segunda tabela do nosso artigo, quando o tipo de registro é 1 e o tipo de dados é inferior a 20, a complexidade é classificada como baixa.

TRs / TDs< 2020 – 50> 50
1BaixaBaixaMédia
2 – 5BaixaMédiaAlta
> 5MédiaAltaAlta
Tabela 4 – Complexidade dos arquivos de acordo com os tipos elementares (marcada pela resolução da questão).

Em seguida, teremos que consultar na primeira tabela do nosso artigo os pesos das funções, conforme a complexidade fornecida.  

Tipo de Função / ComplexidadeSimples ou BaixaMédiaComplexa ou Alta
Consulta Externa (CE)346
Entrada Externa (EE)346
Saída Externa (SE)457
Arquivo de Interface Externa (AIE)5710
Arquivo Lógico Interno (ALI)71015
Tabela 5 – Complexidade dos tipos de função (marcada pela resolução da questão).

Agora vamos montar a fórmula do tipo de contagem detalhada:

Total = Complexidade * ALI + Complexidade * CE + Complexidade * SE

        = 7 * 1 + 4 * 3 + 7 * 2

        = 7 + 12 + 14

Total = 33

Conclusão

Em suma, apresentamos no artigo de hoje um resumo de pontos de função, um dos principais assuntos abordados na disciplina de Engenharia de Software. Assim, se você leu o artigo na íntegra e entendeu bem os conceitos, o próximo passo agora será realizar muitas questões para treinar.

Alunos aprovados realizam centenas ou até milhares de questões para atingir seu objetivo. O acesso ao Sistema de Questões do Estratégia é feito pelo link: https://concursos.estrategia.com/.

Não esqueça também de retornar ao tópico periodicamente para fazer revisões. Elas são fundamentais para promover a fixação do conteúdo aprendido. A fim de agilizar o processo, utilize também os mapas mentais disponibilizados como seus aliados. 

Por fim, se você quiser aprofundar o conteúdo ou tirar dúvidas específicas da linguagem, busque o material do Estratégia Concursos. Nós oferecemos diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser. Saiba mais por meio do link https://www.estrategiaconcursos.com.br/cursos/.

Bons estudos e até a próxima!

Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022) e TCE-RJ (2022). Atualmente exerce o cargo efetivo de Especialista em Previdência Social – Ciência da Computação no Rioprevidência, além de ser colaboradora do Blog do Estratégia Concursos.

Concursos Abertos

Quer Saber Tudo de Concursos Previstos?

Confira Nossos Artigos

Concursos 2023

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja os comentários
  • Nenhum comentário enviado.