Transcript
Page 1: Desenvolvimento de Um Sistema Completo

VB.NET - Estimativa de preço com Análise de Pontos deFunção - APF

Este é uma série de artigos onde você vai acompanhar todo o ciclo de desenvolvimento de umsistema completo em VB.NET.

Iremos acompanhar o ciclo de vida do projeto para Manutenção de clientes que será desenvolvidoem VB.NET com acesso a uma base de dados Access.

Como você já deve saber, o desenvolvimento de um projeto de software não é uma tarefa trivial, e, esta bemdistante de sentar na frente de um terminal de vídeo e sair codificando a esmo. Se você não acredita no que euestou falando talvez acredite em dados estatísticos; O CHAOS Report de 2003 apresentou as seguintesestatísticas:

• Somente 34% dos projetos de software são bem sucedidos;• 15% dos projetos foram cancelados;• 43% é o erro médio em relação ao orçamento do projeto daqueles que foram completados;• 52% das características (requisitos não funcionais) e funcionalidades são entregues no produto.

Na verdade se você quiser desenvolver software com qualidade deverá adotar um processo de desenvolvimentode software.

Um processo de software pode ser entendido como um conjunto estruturado de atividades exigidas paradesenvolver um sistema de software. Assim Sommerville[1] trás a seguinte definição:

"[O processo é] um conjunto de atividades e resultados associados que produzem um produto de software".

Jalote[7] conclui que um processo de software é :

"é um conjunto de atividades, ligadas por padrões de relacionamento entre ela, pelas quais se asatividades operarem corretamente e de acordo com os padrões requeridos, o resultado desejado éproduzido. O resultado desejado é um software de alta qualidade e baixo custo. Obviamente , umprocesso que não aumenta a produção (não suporta projetos de software grandes) ou não podeproduzir software com boa qualidade não é um processo adequado."

A partir destas definições podemos considerar que de forma geral um processo de software padrão pode ser vistocomo um conjunto de atividades, métodos, ferramentas e práticas que são utilizadas para construir um produtode software. Na definição de um processo de software devem ser consideradas as seguintes informações:atividades a serem realizadas, recursos necessários, artefatos requeridos e produzidos, procedimentos adotadose o modelo de ciclo de vida utilizado [3].

Sucintamente podemos definir o processo de software (defini-lo(o processo) como um conjunto de atividadesuniformizadas a serem aplicadas sistematicamente que se encontram agrupadas em fases, cada uma das quaiscom os seus intervenientes com responsabilidades, que possui diversas entradas e produz diversas saídas. Istoé, define quem faz o quê, quando e como para atingir um certo objetivo.

Humphrey[4] define as seguintes razões para a definição de um processo padrão:

Redução dos problemas relacionados a treinamento, revisões e suporte à ferramentas;As experiências adquiridas nos projetos são incorporadas ao processo padrão e contribuem para melhoriasem todos os processos definidos;Economia de tempo e esforço na definição de novos processos adequados a projetos.

Fases de um processo de Software

Para Schwartz[5] as principais fases de um processo de software são :

Especificação de Requisitos: tradução da necessidade ou requisito operacional para uma descrição dafuncionalidade a ser executada.

1.

Projeto de Sistema: tradução destes requisitos em uma descrição de todos os componentes necessáriospara codificar o sistema.

2.

Programação (Codificação): produção do código que controla o sistema e realiza a computação e lógicaenvolvida.

3.

Verificação e Integração (Verificação): verificação da satisfação dos requisitos iniciais pelo produtoproduzido.

4.

Ao contrário do que possa parecer não existe uma sequência obrigatória de fases, sendo que diversos autoresapontam a natureza não-simultânea das fases como uma realidade na aplicação de processos de software, etambém defendem que o processo de software é muito mais iterativo e cíclico do que a idéia de fases simplespode sugerir.[6]

Atividades do Processo de Software

Em cada fase de um processo de software definido são executadas as atividades básicas para que sejamatingidos os objetivos propostos. Segundo Pressman[2] estas atividades constituem um conjunto mínimo para seobter um produto de software.

Realizando uma combinação de classificações dadas por Schwartz[5] , Pressman[2] e Sommerville[1] podemosidentificar as seguintes atividades[6]:

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

1 de 8 27/01/2013 01:54

Page 2: Desenvolvimento de Um Sistema Completo

extra-software. 2. Análise de Requisitos: levantamento das necessidades do software a ser implementado. A Análise temcomo objetivo produzir uma especificação de requisitos, que convencionalmente é um documento. 3. Especificação de Sistema: descrição funcional do sistema. Pode incluir um plano de testes para verificaradequação.2. Projeto 1. Projeto Arquitetural: onde é desenvolvido um modelo conceitual para o sistema, composto de módulosmais ou menos independentes. 2. Projeto de Interface: onde cada módulo tem sua interface de comunicação estudada e definida. 3. Projeto Detalhado: onde os módulos em si são definidos, e possivelmente traduzidos para pseudo-código.3. Implementação 1. Codificação: a implementação em si do sistema em uma linguagem de computador.4. Validação 1. Teste de Unidade e Módulo: a realização de testes para verificar a presença de erros e comportamentoadequado a nível das funções e módulos básicos do sistema. 2. Integração: a reunião dos diferentes módulos em um produto de software homogêneo, e a verificação dainteração entre estes quando operando em conjunto.5. Manutenção e Evolução 1. Nesta fase, o software em geral entra em um ciclo iterativo que abrange todas as fases anteriores.

Desta forma as atividades relacionadas a um processo de software estão diretamente vinculadas com a produçãodo software como produto final . Afim de especificar quais atividades devem ser executadas e em qual ordemtemos diversos modelos de desenvolvimento de software.

Sistema de Manutenção de Clientes

Descrição do sistema:

- Em um sistema de manutenção de clientes um usuário (funcionário de empresa) registra as entradas,alterações, exclusões e saídas(relatório) dos dados relativos a um cliente da empresa no sistema. Qualquerusuário da empresa poderá acessar o sistema e efetuar o cadastramento.(Não haverá controle de acesso nosistema). Será emitido um relatório de todos os clientes cadastrados e dos dados de um determinado cliente.

Características do sistema:- O sistema irá permitir o acesso sem restrições para qualquer usuário da empresa , não havendo portantocontrole de acesso.- Não existe qualquer interface com outros sistemas existentes- Deverão ser cadastrados os seguintes dados de um cliente: Nome , endereço, Cidade , Cep , Telefone ,Email e Observações.- O nome do cliente , endereço , cidade , cep e email são obrigatórios e deverão ser sempre informados

Lista de ator(es):

Usuário (funcionário da empresa)

Casos de uso identificados

Exibir Clientes Cadastrados1.

Efetuar Manutenção de clientes2.

Diagrama de caso de uso simplificado:

Para sobreviver no mercado você deve produzir um produto de qualidade com um preço competitivo. Nãoadiante trabalhar de graça e nem superestimar o preço do seu produto. Você tem que ser ágil para poder saberquanto cobrar a partir do tamanho do sistema que você vai desenvolver. Para saber o tamanho do sistema vocêdeve realizar medições de tamanho do software a ser desenvolvido.

Uma das formas de alcançar este objetivo é realizar estimativas de tamanho, custo, esforço e qualidade desoftware. Geralmente esta estimativa é feita com base em um histórico de informações de experiências passadasque são usadas para embassar as tomadas de decisões feitas durante o ciclo de desenvolvimento do projeto.Para tornar tal procedimento confiável é necessário estabelecer um processo sistemático que pode ser repetido eser usado para realizar comparações. O roteiro obtido com a sistematização destes passos se configura em umamétrica.

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

2 de 8 27/01/2013 01:54

Page 3: Desenvolvimento de Um Sistema Completo

padrão está descrito pelo IFPUG em seu Manual de Práticas de Contagem.

Empiricamente as principais técnicas de estimativa de projetos de desenvolvimento de software assumem que o tamanho de um software é um vetorimportante para a determinação do esforço para sua construção. Logo, saber o seu tamanho é um dos primeiros passos do processo de estimativa deesforço, prazo e custo.

Daí é importante destacar que pontos de função não medem diretamente esforço, produtividade ou custo. É exclusivamente uma medida de tamanhofuncional do software. Este tamanho em conjunto com outras variáveis é que poderá ser usado para derivar produtividade, estimar esforço e custo."www.fattocs.com.br/faq.htm

Vamos então utilizar a técnica de análise de pontos de função para estimar o preço que você deverá cobrar doseu cliente para desenvolver o sistema para manutenção de clientes.

Encare a situação da seguinte forma : você foi solicitado a dar um orçamento para desenvolver o sistema e nãopode demorar ou vai perder o serviço.

Você resolveu usar APF- Análise de Pontos de Função, como uma ferramenta de apoio para determinar otamanho funcional da aplicação adotando os seguintes procedimentos:

definição do escopo do sistema manutenção de clientes1.

estimativa do tamanho funcional da aplicação2.

estimativa do custo e esforço para desenvolvimento3.

Determinar o tamanho funcional do sistema a ser desenvolvido usando APF

Entidades e funções do processo de manutenção de clientes

1- Usuário (funcionário) - Gestão do cadastro de clientes 2- Cadastros - Clientes

A tecnologia usada no sistema para manutenção de cliente será a plataforma desktop usando a linguagem VisualBasic .NET envolvendo 3 camadas : camada de dados , camada de aplicação e camada de apresentação.

O propósito da contagem é verificar se é viável o desenvolvimento do sistema. Com a estimativa de tamanho dosistema pretende-se estimar o custo de desenvolvimento com objetivo de fornecer uma estimativa de orçamentoao cliente que solicitou o seu desenvolvimento.

Para alcançar o objetivo de estimativa de tamanho será feita uma contagem estimativa segundo o modeloproposto pelo IFPUG.

Vamos usar o processo de contagem conforme preconiza o manual do IFPUG para determinar o número depontos por função de um projeto de software. Como não é objetivo deste artigo entrar nos detalhes do processode contagem vou apenas descrever as etapas do processo.

Etapas do processo de contagem da APF:

A figura 2 apresenta uma visão geral dos tipos de função que são considerados na contagem da APF.(gráficoretirado de http://www.inf.ufes.br/~falbo/download/aulas/es-g/2005-1/APF.pdf )

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

3 de 8 27/01/2013 01:54

Page 4: Desenvolvimento de Um Sistema Completo

1- Determinar o tipo de Contagem

Para o nosso caso estamos efetuando a medida de um projeto de desenvolvimento.

2- Identificar as fronteiras da aplicação

A fronteira separa o que é interno e externo a uma aplicação sendo contada. Confina os dados lógicos que sãomantidos pela aplicação e ajuda na identificação dos dados lógicos que são referenciados, mas não mantidos porela;

No nosso exemplo a aplicação manutenção de clientes é muito simples, e, portanto podemos representar afronteira da aplicação da seguinte forma:

A fronteira da aplicaçãomanutenção de clientes.

Nota: A aplicação não acessanem é acessada por programasexternos.

3- Determinar Funções do tipo dado

O sistema usa o banco de dados Cadastro.mdb e a tabela Clientes que possui a seguinte estrutura:

Para determinar se a tabela Clientes é um ALI devemos fazer duasperguntas :

É um grupo lógico de dados identificável pelo usuário ? Sim.

É mantido por um processo elementar dentro da fronteira daaplicação ? Sim.

A aplicação possui somente um ALI.

Após identificar os ALI e AIE devemos classificar a função de acordo com sua complexidade funcional . Paraalcançar este objetivo devemos determinar :

Número de Tipos de Dados (TD) - é um campo único , reconhecido pelo usuário , não repetido1.

Número de Tipos de Registros (TR) - é um subgrupo de tipo de dados , reconhecido pelo usuário,componente de um ALI ou AIE.

2.

Após determinar as quantidades de tipos de dados e tipos de registros, devemos classificar a complexidade deacordo com a seguinte tabela:

Tipos de DadosTipos deRegistros

< 20 20 - 50 > 50

1 Baixa Baixa Média 2 - 5 Baixa Média Alta > 5 Média Alta Alta

Após determinar a complexidade dos arquivos , devemos calcular sua contribuição conforme a seguinte tabela:

Tipo de Função Baixa Média AltaArquivo Lógico Interno -ALI

7 PF 10 PF 15 PF

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

4 de 8 27/01/2013 01:54

Page 5: Desenvolvimento de Um Sistema Completo

Determinação dos AIE

AIE - Arquivo de interface externa - é um grupo de dados logicamente relacionados que é usado pelaaplicação mas sofre manutenção a partir de outra aplicação.

A aplicação não tem nenhum AIE. Com contribuição de 0 PF.

4- Determinar as funções do tipo Transação

As funções do tipo transação representam a funcionalidade fornecida ao usuário para atender os requisitos daaplicação. São classificadas como :

Entradas Externas - EE - Processa as informações e/ou dados recebidos de fora da fronteira da aplicação1.

Saidas Externas - SE - Envia dados ou informações para fora da fronteira da aplicação2.

Consultas Externas - CE - Envia dados ou informações de controle para fora da fronteira da aplicação.3.

Cada função do tipo transação deve ser classificada com relação a sua complexidade funcional em :

Número de Arquivos Referenciados - AR - Um ALI lido ou mantido pela função do tipo transação ouum AIE lido pela função do tipo transação.

1.

Número de Tipos de Dado - TD - Um campo único , reconhecido pelo usuário, não repetido.2.

Após determinar a quantidade de AR e TD da aplicação podemos definir a sua complexidade de acordo com asseguintes tabelas:

Tabela de complexidade para Entradas Externas:

Tipos de DadosArquivosReferenciados

< 5 5 - 15 > 15

< 2 Baixa Baixa Média 2 Baixa Média Alta > 2 Média Alta Alta

Tabela de complexidade para Saídas Externas e Consultas Externas:

Tipos de DadosArquivosReferenciados

< 6 6 - 19 > 19

< 2 Baixa Baixa Média 2 - 3 Baixa Média Alta > 3 Média Alta Alta

Determinando a quantidade de AR e TD da aplicação

Vamos criar uma tabela para indicar quais as funções do tipo transação identificada e para cada uma delas aquantidade de AR e TD.

Função Tipo AR TDCadastro deClientes

- Incluir EE 1 7 - Alterar EE 1 7 - Excluir EE 1 7

- Listar SE 1 10(*)

- Consultar CE 1 8

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

5 de 8 27/01/2013 01:54

Page 6: Desenvolvimento de Um Sistema Completo

Total dos Pontos de função para as funções de tipo transação da aplicação : 16 PF

O total geral dos pontos de função não ajustados para a aplicação é de 23 PF ( 16 + 7 )

Cálculo do fator de ajuste

O valor do fator de ajuste (VFA) é baseado em 14 características gerais de sistema listadas abaixo:

COMUNICAÇÃO DE DADOS: Quando são utilizados recursos de Comunicação de Dados para o envio ourecebimento de dados e informações de controle utilizados pela aplicação;

1.

PROCESSAMENTO DISTRIBUÍDO: Quando a aplicação prevê a distribuição de dados ou deprocessamento entre várias CPUs da instalação;

2.

PERFORMANCE: Esta característica identifica os objetivos de performance da aplicação, estabelecidos eaprovados pelo usuário, que influenciaram (ou irão influenciar) o desenho, desenvolvimento, implantaçãoe suporte da aplicação;

3.

UTILIZAÇÃO DO EQUIPAMENTO: Representa a necessidade de se fazer considerações especiais nodesenho dos sistemas para que a configuração do equipamento não sofra degradação;

4.

VOLUME DE TRANSAÇÕES: Avalia o impacto no desenho da aplicação do volume de transações previstopara ela;

5.

ENTRADA DE DADOS "ON-LINE": Avalia o volume de transações que são entradas de dadosinterativas;

6.

EFICIÊNCIA DO USUÁRIO FINAL: Analisa as funções "on-line" desenhadas e disponibilizadas voltadaspara a eficiência do usuário final;

7.

ATUALIZAÇÃO "ON-LINE": Verifica o volume de arquivos lógicos internos que sofrem manutenção"on-line" e o impacto do processo de recuperação de seus dados;

8.

PROCESSAMENTO COMPLEXO: Considera o impacto, sobre o desenho da aplicação, causado pelo tipo decomplexidade do processamento;

9.

REUTILIZAÇÃO DE CÓDIGO: Avalia se a aplicação e seu código foram especificamente projetados edesenvolvidos para serem reutilizados em outras aplicações;

10.

FACILIDADES DE IMPLANTAÇÃO: Considera o esforço gasto para o atendimento dos requerimentos deconversão de dados para a implantação da aplicação;

11.

FACILIDADE OPERACIONAL: Avalia o desenho da aplicação quanto aos requisitos estabelecidos parainicialização, "backup" e recuperação voltados à minimização da intervenção manual do operador;

12.

MÚLTIPLOS LOCAIS: Quando a aplicação for especificamente projetada e desenvolvida para serinstalada em múltiplos locais ou para múltiplas organizações;

13.

FACILIDADES DE MUDANÇAS: Quando os requisitos da aplicação prevêem o projeto e desenvolvimentode mecanismos que facilitem mudanças operacionais, tais como: capacidade de emissão de relatóriosgenéricos, de consultas flexíveis ou de alterações nos dados de controle do negócio (parametrização).

14.

Cada uma destas características possui um nível de influência sobre a aplicação que pode variar em umintervalo de zero a cinco( 0 a 5):

0 - Nenhum Influência1 - Influência Mínima2 - Influência Moderada3 - Influência Média4 - Influência Significativa5 - Grande Influência

Após determinar os níveis de influência das 14 características gerais o fator de ajuste é calculado com a

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

6 de 8 27/01/2013 01:54

Page 7: Desenvolvimento de Um Sistema Completo

1 4 8 0

2 0 9 2

3 0 10 0

4 3 11 4

5 0 12 3

6 0 13 0

7 0 14 4

Valor Total => 20

Chegamos portanto a um nível de influência igual a 20.

Calculando o fator de ajuste pela fórmula VFA = ( ΣNI x 0,01) + 0,65 temos:

VFA = (20 x 00,1 ) + 0,65 = 0,85 O valor do fator de ajuste é igual a 0,85.

Portanto o número de pontos de função para o projeto é obtido da seguinte forma:

NPF = PFNA * VFA onde temos NPF = 27 * 0,85 = 22,95

Onde : NPF - número de pontos de função PFNA - No de pontos de função Não ajustados VFA -valor do fator de ajuste

Finalmente conseguimos obter uma medida para o tamanho da nossa aplicação. O seu tamanho é igual a

22,95 PF.

Lembre-se que é apenas uma estimativa pois estamos na fase inicial de desenvolvimento do projeto.

E agora o que eu faço com isto ??? Qual o preço de um ponto de Função ?

Os Pontos de Função (PF) são apenas uma unidade de medida , assim como eu digo que um projeto tem 100 PF, eu também digo que um imóvel tem 100 m2 de área construída.

Quanto tempo vai demorar para construir e quanto vai custar um imóvel com 100 m2 de áreaconstruída ?

Depende. Existem diversos fatores que podem afetar uma estimativa de prazo e custo.

Da mesma forma eu posso dizer : Quanto tempo vai demorar para construir e quanto vai custar oprojeto "Cadastro de Clientes" com 100 PF ?

A resposta é a mesma. Percebeu o significado dos Pontos de Função ?

Se um construtor fosse estimar o prazo e o preço do imóvel com 100 m2 de área a construir , ele poderia basearsua estimativa na sua experiência passada. Fazendo uma comparação do imóvel atual com algum imóvel similarjá construído. Diversos fatores teriam que ser levando em conta : se é um imóvel térreo ou sobrado , quantosquartos , banheiros , janelas , portas , tipo de telhado , tipo de acabamento , tipo de material hidráulico ,elétrico , se há a necessidade de aterro , etc..

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

7 de 8 27/01/2013 01:54

Page 8: Desenvolvimento de Um Sistema Completo

Quanto mais cedo você começar a medir e a formar uma base histórica de medidas baseada em um métricareconhecida e de fácil utilização (A APF é amparada pelo IFPUG e partir de 2002 passou a condição de padrãointernacional através da norma ISSO/IEC 20926) , mais cedo você vai poder realizar estimativas com maiorprecisão.

Referências:

[CMMI02] CMMI Product Team. CMMI for Software Engineering, Version 1.1, Staged Representation (CMMI-SW,V1.1, Staged). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2002. Available fromWorld Wide Web: http://www.sei.cmu.edu/publications/documents/02.reports/02tr029.html

[IFPUG99] THE INTERNATIONAL FUNCTION POINT USERS GROUP, Princeton Junction. Function Point CountingPractices Manual release 4.1. [s.l.], 1999.

[ISO01] THE INTERNATIONAL ORGANIZATION FOR STANDARDIZATION. ISO/IEC 15939; Software Engineering– Software Measurement Process. [s.l.], 2001.

[PAULK93] PAULK, Mark C. et al. Key Practices of the Capability Maturity Model SM , Version 1.1. (CMU/SEI-93-TR-025). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 1993. Available fromWorld Wide Web: http://www.sei.cmu.edu/publications/documents/93.reports/93.tr.025.html

GQM - http://sel.gsfc.nasa.gov/website/exp-factory/gqm.htm – acessado em 21 de setembro de 2005-09-21

HAZAN - Implatanção de um Processo de medições de software - http://www.bfpug.com.br/Artigos/Palestra%20_Medicoes%20Claudia%20Hazan.pdf

VB.NET - Desenvolvimento de um sistema completo http://www.macoratti.net/vbn_essc1.htm

8 de 8 27/01/2013 01:54


Top Related