Universidade Federal de Ouro Preto – UFOP Instituto de Ciências Exatas e Aplicadas – ICEA Departamento de Computação e Sistemas – DECSI
Disciplina: Gerência de Configurações e Engenharia de Software – CSI478 Professor: Bruno Hott ([email protected])
Alunos: ______________________________________________
______________________________________________
______________________________________________
______________________________________________
______________________________________________
Exercício 01: Pontos de Função Introdução
Para demonstrar como um processo de contagem de Pontos de Função ocorre, vamos utilizar uma aplicação de exemplo. A aplicação é chamada FPTracker e, como o nome sugere, é uma ferramenta que é utilizada para o auxílio de contagem de Pontos de Função de outras aplicações. Por exemplo, se um profissional for até a sua empresa para realizar a contagem de Pontos de Função em alguma das suas aplicações, então ele armazenará os dados sobre as funções da sua aplicação utilizando esta ferramenta. Como saída, a aplicação provê alguns relatórios úteis e uma análise dos dados ajudará o profissional com sua tarefa de análise da aplicação.
O FPTracker consiste dos seguintes processos principais:
1. Gerenciamento de projeto, incluindo criação, edição e remoção de projetos.
2. Gerenciamento de entidades, incluindo criação, edição e remoção de ILFs e EIFs.
3. Gerenciamento de processos, incluindo criação, edição e remoção de EIs, EOs e EQs.
4. Gerenciamento de grupos de processos, que é um mecanismo para agrupar processos.
5. Gerar relatórios, que inclui diversos relatórios úteis.
O processo de contagem
Como uma revisão rápida, os cinco passos do processo de contagem de Pontos de Função são:
1. Determinar o tipo de contagem.
2. Identificar o escopo e os limites da contagem.
3. Determinar a contagem não-ajustada.
4. Determinar o valor do fator de ajuste.
5. Calcular a contagem ajustada.
Passo 1: O tipo de contagem
O primeiro passo do processo de contagem de Pontos de Função é determinar o tipo da aplicação, que podem ser de três diferentes tipos:
Nome Definição
Contagem de projeto de desenvolvimento
Mede as funções que serão providas aos usuários a partir da primeira instalação do software que será desenvolvido.
Contagem de projeto de melhoria (manutenção)
Mede as modificações de uma aplicação existente.
Contagem de aplicação Mede as funcionalidades providas aos usuários por uma aplicação existente.
Tabela 1: Tipos de contagens de Pontos de Função.
Como a aplicação FPTracker já existe e está em produção, o tipo da contagem será "Contagem de aplicação.
Isso é tudo o que devemos fazer no passo 1. Note que isto não tem nada com o assinalamento de pontos. Nós simplesmente registramos o tipo do projeto que estamos contando.
Passo 2: Escopo e os limites da contagem
O escopo da aplicação será definido pelos dados, janelas e relatórios que serão mostrados a você. Você não deverá realizar nenhuma suposição acerca de nenhum comportamento que pode parecer faltar.
Com relação aos limites desta aplicação, para os propósitos deste exercício, FPTracker deverá ser imaginada como uma aplicação simples e standalone. FPTracker não está amarrada a nenhuma outra aplicação.
Passo 3: Contagem de Pontos de Função não-ajustada
Apesar de os dois primeiros passos serem super importantes na definição da base da sua contagem, e em especificar o escopo da sua contagem, eles são usualmente realizados rapidamente. Sendo o terceiro passo que utiliza a maior parte do tempo de uma Análise de Pontos de Função, além de ser o cerne da contagem.
Começaremos a contagem das funções de dados e transacionais que produzem a contagem de Pontos de Função não-ajustada. Até este ponto não lidamos com nenhum número, mas agora estamos prontos para adicioná-los.
Passo 3a: Determinar a contagem resultantes dos ILFs
No FPTracker, os dados são armazenados em uma série de tabelas banco de dados relacionais, então nos a utilizaremos como base de nossa análise. A seguir temos a lista de nomes de tabelas utilizadas no FPTracker:
1. Project 2. Entity
3. Process Group 4. Process 5. ProcessDETs 6. ProcessEntities
Os campos armazenados em cada uma das tabelas é mostrado nas seguintes tabelas:
Campo Descrição Observações
project_id Id sequencial, atribuído pelo sistema
Este é um artefato técnico. Ele não é reconhecível pelo usuário e então não contado
project_name O nome do usuário atribuído a um projeto
project_type O tipo do projeto
description Uma descrição do projeto
Tabela 2: Tabela de banco de dados “Project”
Campo Descrição Observações
entity_id Id sequencial, atribuído pelo sistema
Número de sequência gerado pelo sistema. Não é reconhecível pelo usuário
project_id Chave estrangeira É contado DET para campos de dados que são necessários para estabelecer um relacionamento entre outro ILF ou EIF.
Chaves estrangeiras normalmente se encaixam nesta definição
name Nome da entidade
type Tipo da entidade (ILF ou (EIF) no. RETs Número de RETs na entidade no. DETs Número de RETs na entidade complexity Complexidade calculada (Low,
Average ou High)
Tabela 3: Tabela de banco de dados “Entity”
Campo Descrição Observações
process_id Id sequencial, atribuído pelo sistema
Número de sequência gerado pelo sistema. Não é reconhecível pelo usuário.
pg_id Chave estrangeira
name Nome do processo
type Tipo do processo (EI, EO ou EQ) sort_order Ordem para visualização
Campo Descrição Observações no. FTRs Número de FTRs
no. DETs Número de DETs complexity Low, Average ou High description Descrição do processo
Tabela 4: Tabela de banco de dados “Process”
Campo Descrição Observações
process group id
Id sequencial, atribuído pelo sistema
Número de sequência gerado pelo sistema. Não é reconhecível pelo usuário
project id Chave estrangeira
name Nome do grupo de processo
Tabela 5: Tabela de banco de dados “Process Group”
Campo Descrição Observações
id Id sequencial, atribuído pelo sistema
Número de sequencia gerado pelo sistema. Não é reconhecível pelo usuário
process_id Chave estrangeira sequence Ordem para visualização
description Descrição fornecida pelo usuário
Tabela 6: Tabela de banco de dados “ProcessDETs”
Campo Descrição Observações
id Id sequencial, atribuído pelo sistema
Número de sequência gerado pelo sistema. Não é reconhecível pelo usuário
process_id Chave estrangeira entity_id Chave estrangeira sequence Ordem para visualização
Tabela 7: Tabela de banco de dados “ProcessEntities”
Os dados representados por estas tabelas são todos ILFs (e não EIFs) porque eles são mantidos dentro da fronteira da aplicação FPTracker.
Nessa aplicação em particular não existe um relacionamento um-pra-um entre a tabela de banco de dados e a maneira com que o usuário visualiza os dados sendo armazenados. Como um contador de Pontos de Função, e também conhecedor da aplicação, posso dizer que os dados são logicamente armazenados da seguinte maneira:
1 Project 2 Entity
3 Process Group 4 Process
4.1 ProcessDETs 4.2 ProcessEntities
Por esse motivo, para o cálculo de Ponto de Função, considere os seguintes ILFs: (1) Project, (2) Entity, (3) Process Group, (4) Process.
Questão 1: Calcule Pontos de Função para os ILFs da aplicação FPTracker baseado nas tabelas do banco de dados apresentadas.
Step 3b: Determinar a contagem resultante dos EIFs
Nesta aplicação em particular não existem EIFs, logo os EIFs contribuem com zero Pontos de Função para a contagem.
Como exemplo, suponha que esta aplicação necessite do uso de um arquivo chamado Users que é mantido por outra aplicação mas acessado pela nossa. Neste caso o arquivo deve ser contado como um EIF, utilizando as regras de EIF.
Terminamos a contagem para as funções de dados, e passaremos para as funções transacionais.
Step 3c: Contagem resultante dos EIs
Para começar a contagem das funções transacionais, primeiramente precisamos dar uma olhada nas telas da interface com o usuário da aplicação.
Figura 1: Tela “New Project” permite que os usuários criem um novo projeto.
Figura 2: Esta tela apresenta a “Entities tab”. Por aqui os usuários podem visualizar, adicionar, editar e deletar entidades.
Figura 3: Tela “Add Entity” permite que usuários adicionem novas entidades (ILFs e EIFs) ao projeto
Figura 4: Tela “Edit Entity” permite que o usuário edite entidades do projeto
Figura 5: Tela “Delete Entity” pede que os usuários confirmem sua tentativa de deletar uma entidade da aplicação
Figura 6: Esta tela mostra a “Process Groups tab”. Por essa tela os usuários podem adicionar, editar e deletar grupos de processos.
Figura 7: Tela “Add Process Group” permite que o usuário adicione novos grupos de processos da aplicação
Figura 8: Tela “Edit Process Group” permite que o usuário atribua um novo nome para um grupo de processos
Figura 9: Esta tela permite que o usuário delete um grupo de processos selecionado
Figura 10: Essa figura apresenta a aba Process. Por aqui os usuários podem adicionar, clonar, editar e deletar processos.
Figura 11: Essa tela permite que o usuário defina um novo processo.
Figura 12: Essa tela mostra os detalhes da aba Comments/Description. Usuários podem adicionar tal informação quando cria um novo processo
Figura 13: Usuários podem utilizar essa tela para clonar um processo na aplicação. Ele simplesmente seleciona um projeto existente, então seleciona a opção Clone que leva a essa tela.
Figura 14: Essa tela mostra um relatório básico de Contagem de Ponto de Função
Figura 15: Essa figura mostra um relatório provido pela aplicação chamado de "ILF/EIF Report".
Agora podemos determinar quais dessas telas correspondem a EIs, quais são EOs e quais são EQs. Antes porém, uma descrição breve dos processos da aplicação serão apresentados:
Nome do Processo Descrição do Processo
Create a Project Esta tela é mostrada na figura 1. Ela permite que o usuário crie um novo projeto.
Display Entity List A lista é mostrada na figura 2. Esta é a lista de toda entidade que o usuário identificou para a aplicação.
Add Entity Mostrada na figura 3, este diálogo permite adicionar uma nova entidade.
Edit Entity Mostrada na figura 4, este diálogo permite editar uma entidade existente.
Delete Entity Mostrada na figura 5, esse diálogo de confirmação é mostrado quando um usuário seleciona uma linha, então pressiona o botão delete.
Display Process Group List
Esta lista é mostrada na figura 6. Essa é a lista de todos os grupos de processos identificados pelo usuário.
Add Process Group Mostrada na figura 7, esse diálogo permite definir um novo grupo de processos.
Edit Process Group Mostrada na figura 8, este diálogo permite editar um grupo de processos.
Delete Process Group Mostrado na figura 9, esse diálogo de confirmação é mostrado quando um usuário seleciona uma linha na tabela de grupos de processos e então seleciona o botão Delete.
Display Process List Esta lista é mostrada na figura 10. Essa é uma lista de todos os processos que o usuário tenha identificado para a aplicação.
Nome do Processo Descrição do Processo
Add Process Mostrada nas figuras 11 e 12, este diálogo permite que o usuário defina um novo processo.
Edit Process Não foi mostrado, porém este diálogo é idêntico às telas mostradas nas telas 11 e 12.
Essas telas permitem que o usuário edite um processo existente.
Delete Process Não foi mostrado, este diálogo de confirmação é mostrado quando um usuário seleciona um processo e então pressiona o botão Delete. Para a nossa contagem, assuma que este é um diálogo simples de confirmação, similar ao diálogo para deletar um grupo de processos.
Clone Process Mostrado na figura 13, este diálogo permite que o usuário crie uma cópia de um processo.
Display UFPC Report Mostrado na figura 14, este é um relatório típico que soma o número de FPs da aplicação que está sendo armazenada.
Display ILF/EIF Report
Mostrada na figura 15, esse relatório mostra os ILFs e EIFs (i.e., todos os FTRs) da aplicação, junto com o número de DETs e RETs associados, assim como seu nível de complexidade.
Tabela 8: Processos da aplicação FPTracker.
Para nossa contagem, também assumiremos que cada tela de entrada de dados pode resultar em uma ou mais telas de erros. Por exemplo, quando um usuário está criando um novo projeto, o sistema disparará um diálogo de erro se ele não inseriu um nome para o projeto, porque esse campo é indispensável.
Questão 2: Calcule Pontos de Função para os EIs da aplicação FPTracker baseado nas telas e descrições dos métodos apresentados.
Passo 3d: Contagem dos EOs
A contagem dos EOs é similar àquela realizada para os EIs.
Questão 3: Calcule Pontos de Função para os EOs da aplicação FPTracker baseado nas telas e descrições dos métodos apresentados.
Passo 3e: Contagem dos EQs
Também, a contagem para os EQs é similar àquelas realizadas para os EIs e EOs. Tome cuidado para não se confundir com os EQs e EOs. Relembre a diferença entre eles.
Questão 4: Calcule Pontos de Função para os EQs da aplicação FPTracker baseado nas telas e descrições dos métodos apresentados.
Questão 5: Calcule Pontos de Função para a aplicação FPTracker como um todo baseado nas contagens que você realiza ou anteriormente.
Passo 4: Valor do Fator de Ajuste (VAF)
Antes de apresentar o que é VAF, deixe-me alertá-lo: Pelo meu conhecimento, a maioria dos usuários não utilizam isto. E isso tem duas razões principais:
1. A maioria dos usuários calculam pontos de função para chegar a um valor que então será utilizado em outra aplicação para então determinarem uma estimativa de custo. Estas aplicações normalmente possuem seus VAF equivalentes e instruem os usuários a inserirem a “contagem de Pontos de Função crua”. Pois neste caso, o VAF compete com a ferramenta de estimativa.
2. Também, os GSCs não são flexíveis o bastante. Quando você vê os cálculos para VAF, você observa que para duas aplicações em consideração, se as duas começam com a mesma contagem de Pontos de Função – digamos 1,000 FPs –, depois dos ajustes, a aplicação mais difícil de implementar do mundo poderá ser classificada como tendo 1,350FPs e a aplicação mais fácil de implementar será classificada como tendo 650 FPS quando ajustada. Digamos que a aplicação mais difícil tem de executar em 10 SOs diferentes, seja distribuída em 15 línguas e distribuída para 1 milhão de usuários. Já a aplicação mais fácil será escrita em Microsoft Access, executada em Windows e usada por 1 usuário somente. Podemos realmente pensar que a primeira aplicação é somente duas vezes mais difícil de ser desenvolvida do que a primeira? Não, certamente não e é por esse motivo que diversos usuários não utilizam VAF.
Dito isso, vamos ao VAF. Primeiramente alguns fatos e definições:
• O Valor do Fator de Ajuste (VAF) consiste de 14 “Características Gerais de Sistemas” ou GSCs.
• Estes GSCs representam características da aplicação em consideração. Cada uma delas ponderadas em uma escala que vai de 0 (low) à 5 (high).
• Quando os valores destas 14 GSCs são somados é gerado um valor denominado “Total Degree of Influence” ou TDI. Você pode observar então que o TDI pode variar entre 0 (quando todos os GSCs são classificados como low) até 35 (quando todos os GSCs são classificados como high).
Antes de apresentar a fórmula de cálculo do VAF, segue a lista dos 14 GSCs:
1. Data Communication 2. Distributed data processing 3. Performance
4. Heavily used configuration 5. Transaction rate
6. Online data entry 7. End user efficiency
8. Online update 9. Complex processing 10. Reusability
11. Installation ease 12. Operational ease 13. Multiple sites 14. Facilitate change E a fórmula para cálculo do VAF é a seguinte:
VAF=(TDI
×0.01)+0.65Passo 5: Cálculo do Ponto de Função Ajustado
O passo final do processo de cinco passos é determinar a contagem de Ponto de Função Ajustado. Para uma contagem inicial de uma aplicação como a desse exemplo, esse passo pode ser realizado com a seguinte equação:
Adjusted FPCount=Unadjusted FP Count×VAF
Como foi falado na seção anterior, o VAF pode variar de 0.65 à 1.35, então o VAF exerce uma influência de +/-
35% na contagem de Pontos de Função Ajustada final. Porém, não efetuaremos este cálculo no escopo deste exercício.
Anexo I: Tabelas para Cálculo de Pontos de Função
RETs Data Element Type (DETs)
1-19 20-50 51+
1 L L A
2-5 L A H
6+ A H H
Table 1: Matriz de complexidade ILF
Complexity Points
Low 7
Average 10
High 15
Table 2: Pesos ILF
RETs Data Element Type (DETs)
1-19 20-50 51+
1 L L A
2-5 L A H
6+ A H H
Table 3: Matriz de complexidade EIF
Complexity Points
Low 5
Average 7
High 10
Table 4: Pesos EIF
FTRs Data Element Type (DETs)
1-4 5-15 16+
0-1 L L A
2 L A H
3+ A H H
Table 5: Matriz de complexidade EI
Complexity Points
Low 3
Average 4
High 6
Table 6: Pesos EI
FTRs Data Element Type (DETs)
1-5 6-19 20+
0-1 L L A
2-3 L A H
4+ A H H
Table 7: Matriz de complexidade EO
Complexity Points
Low 4
Average 5
High 7
Table 8: Pesos EO
FTRs Data Element Type (DETs)
1-5 6-19 20+
0-1 L L A
2-3 L A H
4+ A H H
Table 9: Matriz de complexidade EQ
Complexity Points
Low 3
Average 4
High 6
Table 10: Pesos EQ