Buscar

Tema 5 - Técnicas de estimativas com base estatística

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Técnicas de estimativas com base estatística
Bruno Freitas Braga
false
Descrição
A definição e a aplicação de técnicas de estimativas com base estatística para o gerenciamento de projetos
de software.
Propósito
O entendimento das técnicas de estimativas com base estatística é essencial para os profissionais de
Tecnologia da Informação (TI) escolherem a abordagem mais adequada ao gerenciamento de seus projetos
de software, pois a aplicação dessas técnicas ajuda a equipe a prever cada vez mais cedo os problemas e
propor soluções, minimizando assim os seus efeitos.
Objetivos
Módulo 1
Métodos de interpolação de medidas
Analisar os principais métodos de interpolação de medidas
Módulo 2
Cálculo de custo com base no esforço
Calcular custo estimado com base no esforço
AVISO:
Em nosso material, unidades de medida e números são escritos juntos (ex.: 25km) por questões de
tecnologia e didáticas. No entanto, o Inmetro estabelece que deve existir um espaço entre o número e a
unidade (ex.: 25 km). Logo, os relatórios técnicos e demais materiais escritos por você devem seguir o
padrão internacional de separação dos números e das unidades.
Neste conteúdo, aprenderemos as técnicas de estimativas com base estatística que são importantes
para fazer o planejamento e o acompanhamento de projetos de software.
Apresentaremos os principais métodos de interpolação de medidas, as equações matemáticas
derivadas, formas de cálculos, aproximações e erros. Faremos a visualização das medidas através de
gráficos, como de dispersão, a fim de facilitar a compreensão do assunto.
Por fim, apresentaremos um estudo de caso, baseado em exemplos práticos presentes no cotidiano
dos profissionais de Tecnologia da Informação (TI), no qual iremos aplicar esses métodos
estatísticos e analisar os resultados.
AVISO: orientações sobre unidades de medida.
Introdução
1 - Métodos de interpolação de medidas
Analisar os principais métodos de interpolação de medidas.
Contextualização
Motivação
Imagine a situação hipotética em que você deseja construir uma casa. Agora, vamos aos seguintes
questionamentos: Você contrataria a obra de uma casa sem saber quanto ela vai custar? Você compraria
uma casa sem saber em quanto tempo ela será construída? Sendo os recursos financeiros e o tempo de
vida das pessoas limitados, essas perguntas se tornam pertinentes antes de comprarmos o imóvel, e obter
essas respostas é essencial para a tomada da decisão de fazer a contratação.
No contexto da Engenharia de Software, fazendo uma analogia com a situação anterior, quando uma
empresa procura por um serviço de desenvolvimento de software no mercado, ela, normalmente, solicita
uma apresentação do software às empresas candidatas e, posteriormente, um orçamento, sendo aí que
entram as estimativas.
Atenção
Determinar com exatidão o custo final de um software e o seu prazo de conclusão é uma tarefa que só pode
ser realizada quando ele já está finalizado. Tudo o que pode ser feito antes disso, até mesmo os cálculos
mais rigorosos, são estimativas.
Ao longo das últimas décadas, diversas técnicas de estimativa foram propostas e as áreas de Matemática e
Estatística contribuíram definitivamente para a criação e maturação delas. O Modelo Construtivo de Custos
ou COCOMO (COnstructive COst MOdel), por exemplo, é um modelo empírico de custos, apresentado em
1981 por Barry Boehm, que se baseou no estudo de sessenta e três projetos de software e, a partir da
análise das suas linhas de código, derivaram-se equações matemáticas para estimar o esforço e o custo
dos projetos de software, utilizando como métrica padrão as linhas de código ou LOC (Line of Codes).
Barry Boehm
Engenheiro e professor de Ciência da Computação estadunidense, nascido em 1935, reconhecido por suas
contribuições na área de custos em Engenharia de Software.
Apesar de modelos como COCOMO, não existe uma fórmula mágica para fazer estimativas em projetos de
software, ainda mais que os requisitos do software, por sua própria natureza, tendem à expansão em quase
todos os projetos. Portanto, para se obter estimativas precisas de projeto, usa-se pelo menos de duas a três
técnicas diferentes para comparar os resultados e harmonizar as divergências encontradas.
Exemplo
Podemos usar a técnica de decomposição conhecida como WBS (Work Breakdown Structure ou Estrutura
Analítica do Projeto), proposta pelo PMI no seu guia PMBOK (Project Management Body of Knowledge ou
Conjunto de Conhecimentos em Gerenciamento de Projetos). O WBS divide o projeto em partes tangíveis e
verificáveis, conhecidas como entregáveis (do inglês deliverables), a partir dos quais se fazem as
estimativas, e permite comparar os resultados obtidos com aqueles derivados das técnicas empíricas, as
quais derivam equações matemáticas baseadas em dados históricos de projetos e propõem um modelo no
qual podemos fazer as estimativas.
É nesse ponto que passamos a conhecer o primeiro objetivo do nosso conteúdo, que é aprender e aplicar
essas técnicas empíricas com base em dados históricos. Porém, antes de irmos direto ao ponto, vamos
conhecer alguns conceitos importantes nos tópicos a seguir.
Inferência estatística
A inferência estatística é uma das áreas da Estatística que tem por objetivo, a partir de dados
representativos de uma população, ou seja, de uma amostra, fazer previsões e criar um modelo que possa
ser aplicado para a população inteira. Essa técnica nos permite extrapolar os resultados, verificar as
tendências do nosso projeto e nos auxilia na tomada de decisões. Entenda o conceito de população e
amostra, segundo Bussab e Morettin (2017):
População
é o conjunto de todos os elementos ou resultados sob investigação.
Amostra
é qualquer subconjunto da população.
Por exemplo, imagine que queiramos saber quantos projetos de desenvolvimento de software foram
contratados pelo governo federal nos últimos 5 anos, que utilizaram Pontos de Função, e quantos utilizaram
outras métricas, tendo em vista que, após a publicação da Portaria nº 4, de 6 de março de 2017, a
mensuração de software utilizando Pontos de Função deixou de ser obrigatória no Brasil.
Se consultarmos o site do Portal da Transparência do Governo Federal, podemos ter acesso a essa
informação facilmente, porém não é possível analisarmos todos os projetos dos últimos 5 anos, sem o
auxílio de um sistema, para obter essa resposta. Sendo assim, podemos selecionar uma amostra
proveniente dos diversos órgãos do governo, com 200 projetos, por exemplo, e estimar quantos utilizaram
Pontos de Função e quantos não utilizaram e, por fim, inferir esse resultado para a população inteira, ou seja,
todos os projetos dos últimos 5 anos. Observe a imagem a seguir, a inferência estatística que ilustra a
técnica:
Inferência estatística.
O modelo obtido através dessa técnica busca alguma forma de regularidade ou padrão que esteja presente
nas observações, após a análise dos dados, e a diferença entre os dados e o modelo constitui os resíduos.
Uma ferramenta utilizada para analisarmos os dados do modelo são os gráficos de dispersão, que
abordaremos a seguir.
Grá�cos de dispersão
O gráfico de dispersão representa os dados de uma amostra utilizando pontos que são distribuídos em um
plano cartesiano. Esses pontos são fixados em coordenadas cartesianas (eixo X e eixo Y) e indicam qual o
tipo de relação que existe entre as variáveis analisadas, levando em consideração a forma em que os pontos
estão organizados.
Vamos a um exemplo para entendermos melhor como utilizar gráficos de dispersão.
A Nesma (Netherlands Software Metrics Association ou Associação de Métricas de Software da Holanda),
organização mundial bastante reconhecida na área de Pontos de Função, em seu trabalho conhecido como
Early Function Point Counting (ou Contagem Antecipada de Pontos de Função), usou uma base de dados
com mais de 100 projetos para comparar diferentes técnicas de estimativa com Pontos de Função, e
apresentou os resultados nos dois gráficosa seguir.
Gráfico: Contagem Estimativa x Contagem Detalhada
Extraído de: Nesma, 2015.
Gráfico: Contagem Indicativa x Contagem Detalhada
Extraído de: Nesma, 2015.
Conforme podemos observar em ambos os gráficos, existe uma relação linear entre as técnicas que foram
comparadas, porém a contagem indicativa apresenta uma maior dispersão de resultados com relação à
contagem detalhada, se comparada à contagem estimativa, fato que podemos observar analisando o
gráfico de Contagem Indicativa x Contagem Detalhada, onde encontramos os pontos mais afastados da
reta.
Comentário
Com base nesses dados, é possível o gerente de projetos tomar uma decisão sobre qual técnica de
estimativa utilizando Pontos de Função irá adotar, conforme os objetivos definidos em seu projeto.
Interpolação de medidas
A interpolação consiste em um método de estimativa que permite construir um novo conjunto de dados a
partir de um conjunto discreto de dados pontuais previamente conhecidos. Os valores conhecidos são
relacionados em sequência com o valor desconhecido.
A interpolação é, na raiz, um conceito matemático simples. Se houver uma
tendência geralmente consistente em um conjunto de pontos de dados, é possível
estimar razoavelmente o valor do conjunto em pontos que não foram calculados.
Essa técnica é útil para preencher dados ausentes, como aumentar a escala de imagens ou criar modelos
estatísticos. Por exemplo, suponhamos que um censo é realizado de cinco em cinco anos pelo IBGE
(Instituto Brasileiro de Geografia e Estatística) e que o último tenha sido realizado entre 2015 e 2020, e
queiramos saber alguma informação em um período dentro deste intervalo, como a quantidade de
nascimentos no Brasil no ano de 2018. Como fazemos para responder esta questão? Utilizando
interpolação.
É importante ressaltar que a interpolação pode ser contrastada com a extrapolação:
Interpolação
O que se busca ao aplicar interpolação é descobrir um padrão em um conjunto de pontos de dados
para estimar um valor entre dois pontos.
Extrapolação
É usada para estimar valores fora de um conjunto de pontos em vez de entre eles.
Os gráficos de dispersão são uma ótima ferramenta para identificar um padrão nos pontos de dados. Veja:
Gráfico: Modelo estatístico baseado em interpolação linear.
Elaborado por: Bruno Freitas Braga.
Pudemos observar que, a partir de uma amostragem pontual, ligamos os pontos de dados na tentativa de
identificar um padrão. Uma vez feito isso, é possível criar um modelo que nos servirá de referência para ser
aplicado em vários projetos.
Os pontos de dados podem ser derivados dos dados históricos de uma empresa. Por exemplo, podemos
criar gráficos de dispersão para preencher esses pontos e fazer análises com base nesses dados, como:
O esforço dispendido na realização dos 10 últimos projetos.
A produtividade da equipe durante a realização dos 5 primeiros sprints dado um conjunto com os últimos
projetos da empresa.
O custo total dos projetos desenvolvidos pela empresa para o segmento de comércio exterior.

O resultado de cada uma das análises, como a que vimos no exemplo anterior, irá auxiliar os gerentes de
projetos no planejamento de seus projetos futuros.
Os modelos resultantes das técnicas de interpolação são expressos utilizando polinômios que, na prática,
representam funções derivadas de um gráfico de dispersão XY típico, no qual o eixo X, geralmente,
representa uma variável independente, como tempo ou espaço, enquanto o eixo Y representa uma variável
dependente, como população.
Para entendermos melhor o conceito de interpolação, vamos a um exemplo bem simples. Observe a
sequência abaixo contendo 5 números (n = 5), que podemos também chamar de termos.
2, ___, ___, ___, 10
Podemos assumir que o a1 é o primeiro termo correspondendo ao número 2, e o a5 é o quinto termo, ou
seja, o número 10. Desejamos agora preencher os três espaços em branco, que são os valores
intermediários, entre os dois pontos conhecidos, de modo que estejam em sequência e em uma progressão
aritmética. Com essas informações, vamos agora interpolar esses três meios aritméticos desconhecidos
utilizando um polinômio, a fim de determinarmos qual é a razão existente nessa sequência.
$$ a_{5}=a_{1}+4^{*} r $$
Sendo o r igual à razão e já conhecendo os valores do primeiro e do quinto termo, basta substituirmos os
valores na equação.
$$ 10=2+4 * r=>8=4 * r=>r=2 $$
Somando-se cada um dos termos pela razão que descobrimos, cujo valor é igual a 2, obtemos os valores
dos termos a2, a3 e a4 que são 4, 6 e 8 respectivamente.
O polinômio do exemplo que acabamos de ver pode ser utilizado para resolver qualquer problema
envolvendo progressão aritmética com razão igual a 2, e mesmo se mudarmos a quantidade de termos,
basta ajustarmos o polinômio para obtermos a nova razão, e assim, o resultado da progressão aritmética. A
ideia das técnicas de interpolação é exatamente essa.
Agora que já entendemos o conceito de interpolação, vamos conhecer e analisar as principais técnicas
utilizadas, que são: interpolação linear, interpolação exponencial e interpolação logarítmica.
Interpolação linear
A interpolação linear, uma forma muito simples de interpolação, é basicamente a renderização de uma linha
reta entre dois ou mais pontos. É uma das maneiras mais simples de interpolar – uma linha conectando
dois pontos é usada para estimar valores intermediários.
Comentário
Na interpolação linear, supõe-se que a variável dependente (população) seja alterada a uma taxa constante
para alcançar o próximo ponto de dados, sendo tipicamente óbvio que a variável real não muda linearmente
entre os pontos de dados, mas essa simplificação, geralmente, é suficientemente precisa.
O método de interpolação linear se utiliza de uma função linear p(x) (um polinômio de primeiro grau) para
representar, por aproximação, uma suposta função f(x) que originalmente representaria as imagens de um
intervalo descontínuo (ou degenerado) no domínio de f(x).
A interpolação linear entre dois pontos conhecidos que são dados pelas coordenadas (x0 , y0) e (x1, y1) pode
ser deduzida usando-se proporcionalidade. O interpolante linear é a linha reta entre esses dois pontos. Para
um valor x no intervalo, o valor y ao longo da linha reta é dado a partir da equação das inclinações, conforme
fórmula a seguir:
$$ \frac{y-y_{0}}{x-x_{0}}=\frac{y_{1}-y_{0}}{x_{1}-x_{0}} $$
Resolver essa equação para y, que é o valor desconhecido em x, é igual a:
$$ y=y_{0}+\left(x-x_{0}\right) * \frac{y_{1}-y_{0}}{x_{1}-x_{0}} $$
Vamos agora a um exemplo prático para entendermos como aplicar a interpolação linear em dado cenário.
A tabela a seguir relaciona a quantidade de pontos de função produzidos e o esforço para entregá-los.
Observe:
Pontos de Função (PF) Esforço em Pessoas.Horas (PH)
1,10 184,09
1,20 187,99
Tabela: Exemplo interpolação linear.
Elaborado por: Bruno Freitas Braga.
Suponha que seja fundamental saber qual o esforço necessário para entregar 1,18PF. Antes de tudo, vamos
inserir esse valor na tabela, a seguir, a partir da qual faremos o passo a passo.
Pontos de Função (PF) Esforço em Pessoas.Horas (PH)
1,10 184,09
1,18 y
1,20 187,99
Tabela: Exemplo interpolação linear.
Elaborado por: Bruno Freitas Braga.
Observando os dados da tabela, podemos montar o seguinte sistema:
$$ \begin{gathered} x_{0}=1,10 \rightarrow y_{0}=184,09 \\ x_{1}=1,20 \rightarrow
y_{1}=187,99 \\ x=1,18 \rightarrow y=? \end{gathered} $$
Então, podemos agora aplicar a equação de interpolação linear para descobrirmos o valor de Y. Aplicando a
proporcionalidade, temos que:
$$ \frac{y-184,09}{1,18-1,10}=\frac{187,99-184,09}{1,20-1,10} $$
Logo:
$$ y=184,09+0,08 * \frac{3,9}{0,1} $$
Assim:
$$ y=187,21 $$
Aplicando interpolação linear, tomando como base os dados históricos fornecidos por uma empresa,
disponíveis nas tabelas anteriores, conseguimos chegar ao resultado aproximado de 187,21PH
(Pessoas.Horas) de esforço necessário para entregar 1,18PF.
O gráficode dispersão resultante da interpolação realizada no exemplo seria algo parecido com o do gráfico
a seguir, sendo os pontos em vermelho os pontos conhecidos, e o ponto em azul o ponto que acabamos de
calcular.
Gráfico: Interpolação linear.
Elaborado por: Bruno Freitas Braga.
O gráfico anterior pode ser representado por um polinômio de grau um, conforme a seguir:
$$ f(x)=a x+b $$
Sendo “a” igual ao coeficiente angular ou taxa de variação, que está ligado à inclinação da reta em relação
ao eixo X, e “b” o coeficiente linear, que é uma constante representada pela ordenada do ponto em que a reta
corta o eixo Y. Nos próximos tópicos, aplicaremos esse polinômio para solucionarmos problemas não
lineares.
A interpolação linear, às vezes, introduz erros em suas estimativas, dependendo do cenário que esteja sendo
analisado, por exemplo, quanto maior uma população, maior é a quantidade de nascimentos, e esse
crescimento exponencial é mostrado em um gráfico de dispersão com uma tendência “curvada para cima”.
Um método mais preciso de interpolação, como veremos nos próximos tópicos, é mais apropriado para
esse tipo de estudo. Veja o gráfico a seguir para entender os erros de análise que poderíamos gerar
utilizando interpolação linear.
Gráfico: Erros de interpolação linear.
Extraído de: respondeai.com.br - acessado em 19/09/2021
Observando o gráfico, compreendemos que a interpolação linear nem sempre é a melhor técnica para ser
aplicada em todos os cenários, pois há casos em que não existe uma relação linear entre os pontos. Pode-
se utilizar interpolação polinomial para se chegar a uma solução do cenário apresentado no gráfico de erros
de interpolação linear.
Atenção
É importante ressaltar que existem softwares que fazem os cálculos de interpolação automaticamente,
como o Excel, os pacotes do Repositório livre R, Matlab, Minitab, dentre outros, sem contar linguagens como
Python, que servem para elaborar programas que criam os gráficos de dispersão com os valores fornecidos,
o que auxilia bastante os gerentes de projetos na análise dos dados.
Interpolação exponencial
Suponhamos que você esteja analisando determinado conjunto de pontos de dados em que a relação
existente entre eles não seja linear, e uma reta em um gráfico de dispersão não ofereça a melhor
representação desse cenário. Suponhamos também que você tenha notado que há uma tendência
ligeiramente curvada para cima, o que indica um crescimento exponencial na relação existente entre esses
pontos. Veja o gráfico a seguir para compreender melhor este cenário.
Gráfico: Crescimento linear x crescimento exponencial.
Extraído do site pmean.com / CC BY 3.0 US.
Pudemos observar, no gráfico anterior, que a reta em negrito indica uma relação linear, porém o cenário que
estamos analisando é exatamente o representado pelos pequenos quadrados que se distribuem ao longo de
uma curva. Para esse caso, existe uma relação exponencial entre esses pequenos quadrados, e vamos
agora aprender como fazer uma interpolação exponencial, ou seja, como descobrir o valor de algum ponto
desconhecido nessa curva, dados alguns pontos conhecidos.
Para fazermos a aproximação das funções, isto é, ajustes não lineares, utilizaremos o método dos mínimos
quadrados (MMQ). Tal método é muito usado para ajustar pontos e aproximar melhor uma função, porém
essa aproximação pode ser polinomial, exponencial, logarítmica, trigonométrica etc.
O método dos mínimos quadrados procura aproximar uma função y = f(x) (real e de variável real) de uma
função F(x) que seja combinação linear de funções conhecidas, de tal modo que a distância entre f(x) e F(x)
seja a menor possível.
Segundo Bertoldi (2016), a substituição de f(x) por uma função F(x) é indicada quando o uso da função dada
oferece alguns inconvenientes, tais como:
a) f(x) é definida através de processos não finitos como integrais, soma de séries etc.
b) f(x) é conhecida através de pares de pontos, obtidos em experimentos, e desejamos substituí-la por uma
função cujo gráfico se ajuste aos pontos observados, que podem ser afastados através de uma escolha
apropriada da função F(x).
Para entendermos melhor esses conceitos acerca da interpolação exponencial e o método dos mínimos
quadrados, vamos a um exemplo prático.
Observe a função exponencial a seguir:
$$ g_{3}(x)=b * e^{a x} $$
Queremos deixar a função exponencial no mesmo formato da função linear:
$$ y=a x+b $$
Então, vamos agora fazer um passo a passo para reescrever a função exponencial:
$$ y=b * e^{a x} $$
Primeiramente, aplicaremos logaritmos dos dois lados:
$$ \ln (y)=\ln \left(b * e^{a x}\right) $$
O produto dos logs de dois termos em um logaritmo é a soma dos logaritmos, assim, teremos:
$$ \ln (y)=\ln (b)+\ln \left(e^{a x}\right) $$
O logaritmo é o inverso da exponencial, portanto reescreveremos a função anterior, conforme abaixo:
$$ \ln (y)=a x+\ln (b) $$
Como podemos notar, agora a nossa função exponencial está em um formato muito similar ao da função
linear que vimos inicialmente:
$$ y=a x+b \rightarrow \ln (y)=a x+\ln (b) $$
Observe o seguinte: Quando você terminar o ajuste, vai achar o valor de a e também o valor do ln(b). Para
ficar no formato da função original, será preciso calcular o exponencial de b, porque você está achando o
logaritmo de b, ou seja, ln(b). Logo, você calcula eb para que o valor fique correto.
Para o ajuste dos mínimos quadrados, usaremos o valor de x, que neste caso é o mesmo da função original,
e de y, que neste caso é o valor do ln(y).
Agora vamos fazer as operações com base na tabela correspondente à função linear.
X Y XY X2
1 3 3 1
2 5 10 4
3 6 18 9
4 8 32 16
10 22 63 30
Tabela com os dados da função linear.
Elaborado por: Bruno Freitas Braga.
Conforme já dito, preencheremos agora outra tabela substituindo os valores originais pelos valores
correspondentes na função exponencial. Assim, o valor de x continua o mesmo e o valor de y será o ln(y).
Por exemplo, quando o y = 3, calcularemos ln(3). Veja:
X Y XY X2
1 1,0986 1,0986 1
2 1,6094 3,2188 4
3 1,7917 5,3752 9
4 2,0794 8,3177 16
X Y XY X2
10 6,5792 18,0105 30
Tabela com os dados da função exponencial.
Elaborado por: Bruno Freitas Braga.
Com os valores devidamente preenchidos na tabela, agora, aplicaremos a seguinte equação do método dos
mínimos quadrados para descobrir o valor de a, contido em nossa função exponencial. Note que a variável n
da equação representa a quantidade de pontos da nossa tabela, que nesse caso são 4 pontos, sendo que a
última linha corresponde ao somatório dos pontos.
$$ a=\frac{n * \sum x y-\sum x * \sum y}{n * \sum x^{2}-\left(\sum x\right)^{2}} $$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ a=\frac{4 * 18,0105-10 * 6,5792}{4 * 30-10^{2}} $$
Resolvendo a equação anterior, teremos o valor de a = 0,3125.
Agora, utilizaremos uma outra equação do método dos mínimos quadrados para descobrir o valor de b:
$$ b=\frac{\sum x * \sum y-\sum y * \sum x^{2}}{\left(\sum x\right)^{2}-n * \sum x^{2}}
$$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ b=\frac{10 * 18,0105-6,5792 * 30}{10^{2}-4 * 30} $$
Resolvendo a equação anterior, teremos o valor de b = 0,86355.
Porém, na verdade, esse é o valor do logaritmo de b, ou seja, o ln(b) da nossa função exponencial. Então,
conforme já dito, precisamos calcular o exponencial desse valor para chegarmos ao valor correto da nossa
função de ajuste, isto é, precisamos calcular eb. Como e é uma constante matemática, conhecida como
número neperiano, ou número exponencial que tem o valor aproximadamente igual a 2,71828, então basta
efetuarmos o cálculo para chegarmos ao valor da nossa função:
$$ e^{b}=2,371564823 \rightarrow b=2,371564823 $$
Agora que já sabemos os valores de a e de b, vamos substituí-los em nossa função exponencial:
$$ g_{3}(x)=b * e^{a x} $$
Abaixo, temos a nossa função ajustada:
$$ y=2,37156 * e^{0,3125 * x} $$
Dessa forma, nós fizemos um ajuste não linear paraa função e, para testar qualquer valor de x, basta
substituir o valor de x na equação para obter a estimativa. O resultado no gráfico será uma curva
ligeiramente curvada para cima, como vimos no início deste tópico.
Interpolação logarítmica
Para fazermos uma interpolação logarítmica, utilizaremos o mesmo método já visto para ajustar uma
função exponencial, ou seja, o método dos mínimos quadrados.
Diferentemente da função exponencial, a função logarítmica possui uma curva ligeiramente acentuada para
baixo, no sentido inverso da função exponencial. Observe:
Gráfico: Comparação entre as funções exponencial, linear e logarítmica
Extraído do site alfaconnection.pro.br
A curva em negrito representa uma função logarítmica, enquanto a curva em cinza representa uma função
exponencial e a curva pontilhada, uma função linear. Então, por exemplo, se estivéssemos analisando
determinado conjunto de pontos de dados, disponibilizados em um gráfico de dispersão, que
apresentassem uma curva com uma tendência semelhante à da função logarítmica, poderíamos interpolar
qualquer outro valor desconhecido entre esses pontos de dados.
Os pontos de dados representados no gráfico de dispersão poderiam ser dados de
produtividade, de esforço, de tempo, dentre outros dados importantes para o
gerenciamento de projetos.
Vamos a um exemplo prático para entendermos como fazer a aproximação de uma função logarítmica,
utilizando o método dos mínimos quadrados (MMQ).
Observe a função logarítmica a seguir:
$$ g_{2}(x)=a * \ln (x)+b $$
Veja que essa função é muito parecida com uma função linear que é dada por:
$$ y=a * x+b $$
O que temos de diferente, nesse caso, é que, no lugar de x, nós temos o ln(x). Então, fazendo essa troca, já
teríamos a função linearizada. Dado o tabelamento a seguir do caso linear, vamos descobrir a equação da
nossa função logarítmica.
X Y XY X2
1 3 3 1
2 5 10 4
3 6 18 9
4 8 32 16
10 22 63 30
Tabela: Dados da função linear.
Elaborado por: Bruno Freitas Braga.
Preencheremos, agora, outra tabela substituindo os valores originais pelos valores correspondentes na
função logarítmica e, como o nosso y é igual nas duas funções, preencheremos, então, a tabela com os
mesmos valores da tabela anterior. No entanto, o valor de x corresponde na função logarítmica ao valor do
ln(x), assim preencheremos o valor da coluna do x com esse valor calculado. Por exemplo, quando o x = 3,
calcularemos ln(3). Veja:
X Y XY X2X Y XY X2
0 3 0 0
0,6931 5 3,4655 0,4804
1,0986 6 6,5916 1,2069
1,3863 8 11,0904 1,9219
3,178 22 21,1475 3,6092
Tabela: Dados da função logarítmica.
Elaborado por: Bruno Freitas Braga.
Com os valores devidamente preenchidos na tabela, aplicaremos a seguinte equação do método dos
mínimos quadrados para descobrir o valor de a, contido em nossa função logarítmica. Notem que a variável
n da equação representa a quantidade de pontos da nossa tabela, que, nesse caso, são 4 pontos, sendo que
a última linha corresponde ao somatório dos pontos.
$$ a=\frac{n * \sum x y-\sum x * \sum y}{n * \sum x^{2}-\left(\sum x\right)^{2}} $$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ a=\frac{4 * 21,1475-3,178 * 22}{4 * 3,6092-3,178^{2}} $$
Resolvendo a equação, teremos o valor de a = 3,3833.
Agora, vamos utilizar uma outra equação do método dos mínimos quadrados para descobrir o valor de b:
$$ b=\frac{\sum x * \sum y-\sum y * \sum x^{2}}{\left(\sum x\right)^{2}-n * \sum x^{2}}
$$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ b=\frac{3,178 * 21,1475-22 * 3,6092}{3,178^{2}-4 * 3,6092} $$
Resolvendo a equação anterior, teremos o valor de b = 2,8119.
Com os valores de a e b calculados, já resolvemos o ajuste com os mínimos quadrados para o caso
logarítmico. Logo, a função que se ajusta melhor aos pontos no formato logarítmico será:
$$ y=3,3833 * \ln (x)+2,8119 $$
Desse modo, fizemos um ajuste não linear para a função, e para testar qualquer valor de x, basta substituir x
na equação para obter a estimativa. O resultado no gráfico será uma curva ligeiramente curvada para baixo,
como vimos no início deste tópico.
Erro de interpolação
Quando estudamos os polinômios interpoladores, vimos que eles são aproximações de uma função real, e
essas aproximações podem ser tão próximas quanto quisermos. Porém, como toda aproximação, nossa
função terá um erro, e o objetivo deste tópico é exatamente aprendermos como calcular tal erro de
interpolação.
Para descobrirmos como quantificar o erro de interpolação, vamos a um exemplo.
Observe primeiro o tabelamento a seguir, utilizado nos tópicos anteriores.
X Y XY X2
1 3 3 1
2 5 10 4
3 6 18 9
4 8 32 16
10 22 63 30
Tabela: Dados da função linear.
Elaborado por: Bruno Freitas Braga.
Agora, veja o gráfico de dispersão com os pontos de dados da tabela:
Gráfico: Dispersão dos dados da tabela.
Elaborado por: Bruno Freitas Braga.
Observe que nem todos os pontos passam exatamente em cima da reta, o que indica que há um erro no
polinômio interpolador dessa função linear. Esse erro é calculado pela distância entre o ponto e a reta.
Utilizando o método dos mínimos quadrados (MMQ), visto nos tópicos anteriores, chegamos ao polinômio
que representa a aproximação dos pontos de dados da tabela à função linear. Não necessariamente a
equação da reta vai passar pelos pontos, porém nós determinamos a reta que melhor se ajusta aos pontos,
e a equação que melhor se ajusta aos pontos terá o menor erro possível. Para efeitos didáticos, não vamos
repetir todos os passos do MMQ, apenas exibir a equação do polinômio.
$$ g(x)=1,6 x+1,5 $$
Quando existe um erro entre o polinômio e a função, a diferença entre os dois é chamada de Erro Exato.
Tendo uma função y e a sua função interpoladora g(x), calculamos o erro como:
$$ \text { Erro }=\left|y_{i}-g\left(x_{i}\right)\right| $$
Observando a equação, verificamos que o erro é dado pela diferença entre o valor tabelado e o valor
estimado, sendo o i determinado ponto de dado selecionado.
Vamos estimar o valor da função g(x) no ponto 3:
$$ g(3)=1,6 * 3+1,5 $$
Teremos como resultado g(3) = 6,3.
Agora, vamos calcular o erro utilizando a equação vista anteriormente. Primeiro, vamos identificar o valor de
yi no ponto 3 da tabela, ou seja, y(3) = 6, e substituiremos o g(xi) pelo valor do g(3) obtido utilizando o
polinômio interpolador, que, neste caso, é igual a 6,3. Logo:
$$ \text { Erro }=|y(3)-g(3)| \rightarrow|6-6,3|=\mathbf{0}, \mathbf{3} $$
O erro da nossa função g(x) no ponto 3 é igual a 0,3.
O erro total é dado pela soma de todos os erros em módulo, conforme a fórmula abaixo:
$$ \text { Erro }=\sum_{i=1}^{n}\left|y_{i}-g\left(x_{i}\right)\right| $$
Sendo o valor de n, a quantidade de pontos.
Utilizando a equação a seguir, podemos calcular o mínimo erro, dado pelo ponto mínimo da função erro, que
é o ponto em que as derivadas parciais são nulas.
$$ \text { Min Erro }=\sum_{i=1}^{n}\left(y_{i}-g\left(x_{i}\right)\right)^{2} $$
Métodos de interpolação de medidas aplicados à
Engenharia de Software
Neste bate-papo, apresentamos uma visão geral das técnicas estatísticas para estimativas de medidas de
software, como a interpolação linear, exponencial e logarítmica, assim como a análise de erros. Vamos lá!
Vem que eu te explico!
Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar.


Módulo 1 - Vem que eu te explico!
Interpolação linear
Módulo 1 - Vem que eu te explico!
Interpolação exponencial
Módulo 1 - Vem que eu te explico!
Interpolação logarítmica
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Sobre os métodos de interpolação de medidas, analise as seguintes alternativas e marque a opção correta:
A
Os métodos de interpolação de medidas se baseiam nas opiniões dos especialistas,
sendo esta uma forma de avaliação subjetiva que pode variar de um especialista para
outro.
B
Os modelos empíricos derivados desses métodos se baseiam nosdados históricos de
projetos para fazer estimativas e planejar melhor os futuros projetos.
C
Os métodos de interpolação consistem em derivar valores fora do conjunto dos pontos de
dados conhecidos.
D
Utilizar somente os métodos estatísticos não nos habilita a fazer estimativas de
produtividade, esforço e custo.
E
Os gráficos de dispersão são uma ferramenta ineficiente para detectarmos as tendências
sobre os rumos de nossos projetos e, consequentemente, fazermos interpolação.
Parabéns! A alternativa B está correta.
Os modelos empíricos são utilizados para fazermos previsões e estimativas em nossos projetos.
Eles baseiam-se em dados históricos de projetos e, dentre esses dados, podemos destacar
aqueles relacionados à produtividade da equipe, esforço dispendido no projeto, custo etc. A partir
dos dados conhecidos, utilizamos a técnica de interpolação para obtermos os valores dos dados
desconhecidos, o que nos auxilia a fazer estimativas mais precisas.
Questão 2
Sobre as funções não lineares, analise as seguintes alternativas e marque a opção correta:
A
As funções não lineares, como a função exponencial e a função logarítmica, utilizam um
método conhecido como método dos mínimos quadrados (MMQ) para fazer a
aproximação.
B
No gráfico de dispersão, os pontos de dados de uma função exponencial são ligeiramente
curvados para baixo, o que indica um crescimento semelhante ao de uma progressão
geométrica.
C
No gráfico de dispersão, a representação que mais se aproxima de uma função
exponencial é uma reta que liga os pontos de dados, indicando um crescimento
semelhante ao de uma progressão aritmética.
D
O método dos mínimos quadrados procura aproximar uma função y = f(x) de uma função
F(x) de modo que a distância entre as duas funções seja a maior possível.
E
Os métodos de interpolação para funções não lineares têm por objetivo identificar pontos
de dados conhecidos e criar uma função que melhor se ajuste a esses pontos, de modo a
extrapolar valores desconhecidos utilizando esta função.
Parabéns! A alternativa A está correta.
Utiliza-se o método dos mínimos quadrados (MMQ) para se fazer aproximações de funções não
lineares, de modo que a distância seja a menor possível com relação a uma função linear. Dessa
forma, pode-se derivar uma equação que represente a tendência dos pontos de dados no gráfico
de dispersão e interpolar outros pontos dentro desse conjunto de dados, a fim de ser fazer as
estimativas em nossos projetos.

2 - Cálculo de custo com base no esforço
Calcular custo estimado com base no esforço.
Contextualização
O processo de estimativa
Segundo Vazquez (2013), o processo de estimativa de um projeto de software envolve basicamente quatro
atividades:
Estimar o tamanho do produto a ser gerado.
Estimar o esforço empregado na execução do projeto.
Estimar a duração do projeto.
Estimar o custo do projeto.
Veja o processo a seguir para entender a sequência e a interação entre essas atividades.
Processo de estimativa de projeto de software.
Extraído de: Hazan, 2008, p. 26.
Observando o processo de estimativa de projeto de software anterior, percebemos que começa com a
coleta e a análise dos requisitos iniciais do projeto. Como necessitamos fazer estimativas desde o início do
projeto e ainda não temos um conhecimento detalhado sobre os seus requisitos, o artefato utilizado
frequentemente é um documento inicial de requisitos, como o documento de visão, ou um documento do
cliente, como o modelo de processos de negócio. O profissional responsável deve analisar os requisitos e,
posteriormente, estimar o tamanho do software.
Para estimarmos o tamanho do produto a ser gerado, primeiramente, devemos decidir qual unidade de
medida utilizaremos e, na área de Engenharia de Software, são duas as unidades de medida mais comuns:
linhas de código (LOC – Lines of Code) e pontos de função (PF). Essas duas unidades servem como
unidade básica de definição de custo dos projetos. Por exemplo, se nós fizermos uma estimativa de
tamanho de um software de processamento de vendas, muito utilizado em caixas de supermercado, e
chegarmos ao tamanho de 1.000 pontos de função, com essa informação poderemos derivar o esforço, a
duração e o custo do projeto.
Comentário
Existem inúmeras técnicas para estimarmos o tamanho de um software, como: a técnica da analogia
simples, em que comparamos o projeto atual com projetos passados, utilizando como base dados
históricos; a da contagem indicativa, estimativa e detalhada para estimativas utilizando pontos de função; a
do modelo COCOMO para estimativas de tamanho baseada em linhas de código, dentre outras técnicas.
Porém, o foco em nosso estudo é utilizar técnicas estatísticas de estimativas com base em dados
históricos de projetos.
Utilizaremos técnicas estatísticas a fim de definir o melhor modelo matemático para representar os dados
apurados. Esses dados, normalmente, são extraídos de bancos de dados históricos de projetos da
organização, conforme podemos ver na imagem anterior, e as estimativas de tamanho, esforço, duração e
custo do projeto serão derivadas desses dados.
Vamos supor, neste momento, que a sua empresa não possua dados históricos de projetos já realizados.
Como começar, então, a fazer estimativas? Esse é um assunto que iremos responder no próximo tópico.
Dados históricos de projetos
Os dados históricos de projetos são um dos ativos de processos organizacionais mais importantes no
gerenciamento de projetos. Na maioria das áreas de conhecimento descritas no Guia PMBOK do PMI, como
as áreas de Gerenciamento de Escopo, Cronograma e Custos, eles servem como entrada para a definição
das linhas de base dos planos de projeto, e esses planos guiam e orientam o trabalho do projeto.
Quando o projeto é concluído, devemos documentar o tamanho, o prazo, o custo, o
esforço e os recursos utilizados no projeto, visando à coleta de dados para a
melhoria do processo de estimativas.
As lições aprendidas também devem ser documentadas a fim de não repetirmos os mesmos erros
ocorridos nos projetos realizados em projetos futuros. Todos esses dados devem ser registrados no banco
de dados que contém o histórico dos projetos da organização.
No entanto, nem todas as empresas possuem um banco de dados com o histórico de seus projetos.
Então, como começar a fazer estimativas sem esses dados?
É recomendável, neste caso, utilizar repositórios de dados do mercado e, para isso, existem inúmeras
organizações que os disponibilizam, entre as quais destacam-se o ISBSG (International Software
Benchmarking Standards Group ou Grupo Internacional de Padrões de Benchmarking de Software) e o
PROMISE Software Engineering Repository (Repositório de Engenharia de Software do PROMISE), da
Universidade de Ottawa. Ambos os repositórios são referências para a indústria de Tecnologia da
Informação e são publicados há mais de 15 anos.
PROMISE
O PROMISE disponibiliza gratuitamente vários DataSets (conjunto de dados), dentre os quais
podemos destacar o DataSet no qual Barry Boehm desenvolveu o modelo COCOMO, assim
como DataSets de projetos de softwares desenvolvidos pela NASA.
ISBSG
O ISBSG possui um repositório com mais de 10.600 projetos de desenvolvimento e 1.177
projetos de manutenção, e é considerado a maior referência de dados de projetos de TI no
mundo. Anualmente, o ISBSG publica uma planilha em Excel com dados e análises dos
projetos de seu repositório, porém, para ter acesso completo a essa planilha é necessário
comprar uma licença no valor de $3.000,00 (três mil dólares).
Ambas as organizações citadas aqui disponibilizam dados relevantes de seus projetos, como: tamanho em
linhas de código e pontos de função, esforço em PH (Pessoas.Horas), custos, produtividade, dentre outros.
Utilizaremos dados desses repositórios para demonstrar como fazer estimativas utilizando técnicas
estatísticas.
Estudo de caso
Para demonstrarmos a aplicação das técnicas estatísticas, como interpolação, regressão linear,
aproximaçãoe erros, utilizaremos um HDR (Historical Data Repository ou Repositório de Dados Históricos)
disponibilizado gratuitamente pela página PROMISE Software Engineering Repository.
Os arquivos disponibilizados pelo PROMISE possuem extensão ARFF (Attribute Relationship File Format ou
Formato de Arquivo de Relacionamento de Atributo) e consistem em um arquivo de texto ASCII que inclui
um cabeçalho com uma lista de atributos e uma seção de dados. Podemos acessar os dados do arquivo
utilizando um editor de texto simples, como o Bloco de Notas do Windows, porém esse formato foi
desenvolvido pelo Projeto de Machine Learning (Aprendizado de Máquina) do Departamento de Ciência da
Computação da Universidade de Waikato da Nova Zelândia.
No site desse projeto, é disponibilizado um software denominado Weka (Waikato Environment for
Knowledge Analisais ou Ambiente Waikato para Análise do Conhecimento), que possui diversos algoritmos
de Machine Learning, e faz simulações e análises estatísticas rapidamente nos arquivos, disponibilizando
resultados em formato gráfico e planilhado.
Dica
É recomendável acessar esses arquivos utilizando o software Weka.
Para o nosso estudo, selecionamos um DataSet denominado Desharnais Software Cost Estimation ou
Estimativa de custo do software Desharnais. Jean-Marc Desharnais, autor desse repositório, coletou dados
históricos de projetos desenvolvidos por 10 organizações do Canadá. Foram coletados dados de um total de
81 projetos, que foram realizados entre os anos de 1983 e 1988, dos quais foram apurados 12 atributos
como esforço, tamanho em pontos de função e duração.
Dentre os 81 projetos, 4 possuíam dados incompletos, porque faltaram valores de alguns atributos, e 77
eram casos completos que são frequentemente usados para estudos. Em sua tese de mestrado
denominada Analyse statistique de la productivitie des projets informatique a partie de la technique des point
des fonction (Análise estatística de produtividade de projetos de informática a partir da técnica de pontos de
função), Desharnais propôs um modelo empírico de estimativa de custos utilizando pontos de função a
partir desses dados históricos.
Em sua obra, o professor Desharnais classificou os projetos em 3 categorias de acordo com o ambiente de
programação:
Categoria 1
Projetos com uso de linguagens tradicionais voltados para o ambiente mainframe que utilizavam a
linguagem COBOL ou equivalente.
Categoria 2
Projetos com o uso de linguagens de alto nível como ADSO, CAPEX etc.
Categoria 3
Projetos com linguagens de quarta geração desenvolvidos para PC com um banco de dados como o dBase.
Neste estudo, a versão que usaremos para fazer a análise estatística será reduzida a 4 projetos de categoria
3, pelo fato de os projetos dessa categoria possuírem uma realidade mais próxima aos projetos comerciais
da atualidade. Apesar de apresentarmos todos os atributos contidos no DataSet original, vamos considerar
os atributos mais relevantes para fazermos as estimativas de tamanho, esforço, duração e custo.
Sendo assim, observe a tabela a seguir com os atributos e projetos que foram selecionados.
Tabela: Dados históricos de 4 projetos selecionados do DataSet Desharnais.
Extraído de: Repositório de Engenharia de Software do PROMISE - traduzido.
Para efeito de análise, consideraremos como tamanho funcional do projeto os pontos de função não
ajustados (atributo 11), devido ao fator de ajuste ainda não possuir um padrão ISO (International Standards
Organization), não sendo, dessa forma, reconhecido internacionalmente como um padrão a ser seguido. Já
os pontos de função não ajustados estão em conformidade com as exigências e padrões da ISO -
International Standards Organization, sendo reconhecidos através de uma norma ISO/IEC 14143-1:2007.
Análise de dados
Primeiramente, verificaremos se existe uma relação linear entre o tamanho dos projetos em pontos de
função não ajustados (variável dependente – eixo Y) e a duração deles (variável independente – eixo X).
Neste experimento, partiremos da hipótese de que quanto maior for o projeto mais tempo ele durará. Agora,
vamos verificar se essa hipótese é verdadeira e, para comprová-la, criaremos um gráfico de dispersão, que é
uma ótima ferramenta de análise para confirmar se essa tendência de crescimento existe. Veja o gráfico:
Gráfico: Relação entre o tamanho e a duração dos projetos.
Elaborado por: Bruno Freitas Braga.
Estimativa de custo baseada em interpolação linear
Imagine que um cliente em potencial solicitou à sua empresa um orçamento para o desenvolvimento de um
novo software, com as mesmas características dos projetos selecionados em nossa amostra, sendo que
uma das restrições desse projeto é que tenha duração de 24 meses.
Quando estudamos o processo de estimativas, vimos que, para fazermos o orçamento de um projeto, é
necessário primeiramente sabermos qual é o seu tamanho. Porém, nós não temos em nossa amostra um
projeto realizado em um período de 24 meses, então, como faremos esta estimativa de tamanho?
A resposta ao questionamento anterior é simples: Podemos fazer essa estimativa utilizando interpolação
linear, pois, como já temos 4 pontos de dados conhecidos, podemos estimar um valor intermediário e
desconhecido entre esses pontos.
Para fazer a interpolação linear, iremos, primeiramente, criar uma tabelinha com os valores conhecidos e
mais próximos da duração desejada de 24 meses, e, em seguida, aplicar a equação de interpolação linear.
Veja:
Duração Pontos de Função (PF)
12 414
24 y
34 698
Tabela: Cálculo da interpolação linear.
Elaborado por: Bruno Freitas Braga.
O que queremos determinar é o valor da variável Y da tabela anterior. Logo, aplicaremos a equação da
interpolação linear:
$$ \frac{y-y_{0}}{x-x_{0}}=\frac{y_{1}-y_{0}}{x_{1}-x_{0}} $$
Vamos montar o sistema abaixo e aplicar na equação anterior.
$$ \begin{gathered} x_{0}=12 \rightarrow y_{0}=414 \\ x_{1}=34 \rightarrow y_{1}=698 \\
x=24 \rightarrow y=? \end{gathered} $$
Logo:
$$ \frac{y-414}{24-12}=\frac{698-414}{34-12} $$
Resolvendo essa equação, chegaremos aproximadamente ao resultado de y = 568,91.
Dessa forma, para um projeto com duração de 24 meses, a estimativa de seu tamanho funcional é de 598,61
pontos de função não ajustados.
Após efetuar uma análise em 57 licitações realizadas por órgãos públicos federais, cujo objeto trata de
desenvolvimento de sistemas, pôde-se verificar que o preço médio do ponto de função é de R$488,00/PF,
assim, para estimarmos o custo deste projeto, podemos utilizar esse valor de referência e multiplicá-lo pelo
tamanho do projeto em pontos de função. Logo, o preço estimado do projeto é de R$277.481,68.
Determinação do melhor ajuste por regressão linear
Na imagem do gráfico de dispersão, notamos que os pontos de dados não passam exatamente em cima da
reta, o que nos indica que há um erro na relação linear entre as duas variáveis analisadas. Esse erro é dado
pela distância entre o ponto e a reta, ou seja, quanto maior a distância entre os pontos de dados e a reta,
maior será o erro em nossa estimativa.
Nós podemos ajustar os pontos de dados analisados utilizando o método dos mínimos quadrados (MMQ),
de modo a obter a reta que melhor se ajuste aos pontos e que possua o menor erro possível. Essa técnica
de interpolação linear, conhecida também como regressão linear, tem por objetivo determinar o polinômio
que melhor se ajusta à reta. Como resultado, vamos derivar um polinômio no formato a seguir:
$$ y=a x+b $$
Utilizando o método dos mínimos quadrados, determinaremos o valor do coeficiente angular da reta, que
está ligado à inclinação da reta em relação ao eixo X, que, neste caso, é representado pela variável a.
Definiremos também o valor do coeficiente linear da reta, que é a ordenada do ponto em que a reta corta o
eixo Y, representado pelo valor da constante b.
Modelo empírico para estimativa de duração
Podemos criar um modelo empírico de duração com base no tamanho do projeto e utilizá-lo posteriormenteno planejamento de projetos futuros. Para isso, vamos primeiro preencher a tabelinha a seguir, que
utilizaremos para aplicar nas equações do método dos mínimos quadrados, cujo objetivo é calcular o valor
da variável a e da constante b. Considere que X representa a duração do projeto em meses e Y o tamanho
do projeto em pontos de função não ajustados.
X Y XY X2
3 180 540 9
9 267 2403 81
12 414 4.968 144
34 698 23.732 1.156
58 1.559 31.643 1.390
Tabela: Dados da função linear.
Elaborado por: Bruno Freitas Braga.
Com os valores devidamente preenchidos na tabela, agora, aplicaremos a equação a seguir para descobrir o
valor de a. A variável n da equação representa a quantidade de pontos da nossa tabela, que nesse caso são
4 pontos. Note também que a última linha da tabela anterior corresponde ao somatório dos pontos.
$$ a=\frac{n * \sum x y-\sum x * \sum y}{n * \sum x^{2}-\left(\sum x\right)^{2}} $$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ a=\frac{4 * 31643-58 * 1559}{4 * 1390-58^{2}} $$
Resolvendo a equação, teremos aproximadamente o valor de a = 16,462.
Agora, utilizaremos outra equação para calcular o valor da constante b:
$$ b=\frac{\sum y-a * \sum x}{n} $$
Substituindo os valores das variáveis na equação anterior, teremos:
$$ b=\frac{1559-16,462 * 58}{4} $$
Resolvendo a equação, teremos o valor de b = 151,05.
Com os valores de a e b calculados, derivamos o polinômio de melhor ajuste para as duas variáveis
analisadas. Então, a função linear que representa isso é determinada por:
$$ y=16,462 x+151,05 $$
Portanto, nós fizemos o melhor ajuste a partir dos pontos de dados conhecidos e determinamos uma
função linear que nos permite testar qualquer valor de x, sendo necessário apenas substituir o valor de x na
equação, para obter a estimativa de tamanho do projeto em pontos de função não ajustados. Podemos
preencher agora a tabela anterior utilizando esse polinômio.
X Y
3 200,436
X Y
9 299,208
12 348,594
34 710,758
Tabela: Tabela com o melhor ajuste.
Elaborado por: Bruno Freitas Braga.
Como resultado, teremos um gráfico de dispersão com os pontos de dados passando exatamente em cima
da reta, conforme ilustrado a seguir:
Gráfico: Melhor ajuste por regressão linear.
Elaborado por: Bruno Freitas Braga.
Dessa forma, criamos um modelo empírico para o cálculo da duração de projetos futuros com base em seu
tamanho em pontos de função não ajustados.
Modelo empírico para estimativa de esforço
Podemos criar um modelo empírico de esforço com base no tamanho do projeto e utilizar posteriormente
esse modelo para calcular os custos do projeto. Observe a tabela:
X Y XY X2
180 651 117.180 32.400
267 2.429 648.543 71.289
414 1.400 579.600 171.396
X Y XY X2
698 2.352 1.641.696 487.204
1559 6.832 2.987.019 762.289
Tabela: Dados da função linear.
Elaborado por: Bruno Freitas Braga.
Considere que X representa o tamanho em pontos de função e Y, o esforço.
Vamos observar, agora, o gráfico de dispersão dos 4 projetos selecionados:
Gráfico: Dispersão do esforço.
Elaborado por: Bruno Freitas Braga.
Note que há uma relação linear entre 3 pontos de dados, porém, um deles está muito fora da reta, o que
indica que haverá um erro maior em nosso modelo. Nesse caso, é recomendável aumentarmos a
quantidade de projetos da nossa amostra para verificar se a relação linear entre esforço e tamanho dos
projetos se confirma. Porém, podemos suavizar essa diferença através da técnica de regressão linear. Para
efeitos didáticos, não faremos os cálculos já realizados e a equação para essa relação é dada por:
$$ y=2,0964 x+890,93 $$
Com o polinômio definido, podemos preencher a tabela com os dados linearizados e depois a utilizarmos
para fazer a análise de erros do nosso modelo.
X Y
180 1.268,282
267 1.450,6688
X Y
414 1.758,8396
698 2.354,2172
Tabela: Tabela com o melhor ajuste.
Elaborado por: Bruno Freitas Braga.
Dessa maneira, criamos um modelo empírico para o cálculo do esforço de projetos futuros com base em
seu tamanho em pontos de função não ajustados.
Comentário
Observe que fizemos duas análises na tentativa de estabelecer uma correlação entre as variáveis duração e
tamanho, e esforço e tamanho, porém, podemos fazer outros estudos utilizando os mesmos métodos
estatísticos, a fim de se obter o melhor modelo empírico para fazer as estimativas.
Com os dados obtidos neste tópico, podemos agora fazer uma análise de erros, o que veremos no próximo
tópico.
Análise de erros
Conforme vimos no Gráfico “Relação entre o tamanho e a duração dos projetos” do tópico Análise de Dados,
os pontos de dados reais não passam exatamente em cima da reta e, por esse motivo, criamos um modelo
empírico com a reta que possui o menor erro possível utilizando a técnica de regressão linear. No entanto,
precisamos quantificar o erro fazendo uma correlação entre o nosso modelo empírico e os dados reais, de
modo a fazermos estimativas com melhor precisão.
Para calcularmos a diferença entre o modelo empírico e os dados reais, utilizaremos a equação a seguir.
Tendo uma função y e a sua função interpoladora g(x), calculamos o erro como:
$$ \text { Erro }=\left|y_{i}-g\left(x_{i}\right)\right| $$
Sendo g(xi) o polinômio obtido usando a técnica de regressão linear e xi o valor de determinado ponto de
dado do eixo X.
Já calculamos o resultado desse polinômio na Tabela 4, bastando observar os valores da coluna Y da
mesma tabela. Obtemos o valor de yi utilizando a tabela derivada dos dados reais, que neste caso
corresponde à Tabela 3 do nosso estudo de caso, e basta observar os valores da coluna Y da mesma tabela.
O erro total é dado pela soma de todos os erros em módulo, conforme a fórmula abaixo:
$$ \text { Erro }=\sum_{i=1}^{n}\left|y_{i}-g\left(x_{i}\right)\right| $$
Sendo o valor de n a quantidade de pontos.
Observe a tabela a seguir com a aplicação dessa equação:
Projeto Yi g(xi) Erro
35 180 200,436 -20,436
33 267 299,208 -32,208
77 414 348,594 65,406
42 698 710,758 -12,758
1559 1558,996 0,004
Tabela: Tabela de erros.
Elaborado por: Bruno Freitas Braga.
Portanto, o erro total para os quatro projetos analisados é dado pelo valor 0,004 da função erro.
Atenção
É importante ressaltar que, para efeitos de aprendizado, demonstramos várias equações e aplicamos
cálculos utilizados para obtermos os resultados e os analisarmos, porém, ferramentas computacionais
como o Excel, o MathLab e os pacotes R fazem todos os cálculos demonstrados na aula.
No Excel, por exemplo, basta entrarmos com os dados históricos dos projetos e inserirmos um gráfico de
dispersão que automaticamente o programa faz uma regressão linear e determina o polinômio interpolador
com o seu grau de precisão.
Cálculo do custo baseado no esforço
Neste tópico, aplicaremos as equações definidas anteriormente para calcularmos as estimativas de custos
de um projeto com 1.000 pontos de função não ajustados. Dado o tamanho do projeto, estimaremos a sua
duração utilizando o modelo empírico que criamos antes.
$$ y=16,462 x+151,05 \rightarrow x=\frac{y-151,05}{16,462} $$
Sendo X a duração do projeto e Y o seu tamanho, substituindo os valores na equação, chegaremos a uma
duração estimada de 51,57 meses.
Faremos agora uma estimativa de esforço utilizando o modelo empírico já criado. Veja o polinômio a seguir:
$$ y=2,0964 x+890,93 $$
Sendo X o tamanho do projeto em pontos de função e Y o esforço, substituindo os valores na equação,
chegaremos a um esforço estimado de 2.987,33 pessoas.horas.
Para fazermos uma estimativa de custos, é necessário converter o esforço para a unidade de medida
pessoa.mês. Considerando que uma pessoa leva em média 6 horas produtivas de trabalho diário, teremos
em 1 mês, 120 horas úteis trabalhadas, então, dividindo o esforço pelas horas úteis, teremos um esforço de
24,90 pessoas.mês. Agora, já podemos calcular o custo do projeto aplicando a equação dada:
$$ \text { Custo da equipe }=\text { Esforço } * C P $$
Sendo que a constante CPcorresponde ao custo da pessoa por mês.
Considerando que o salário médio de um desenvolvedor de software, no Brasil, gira em torno de R$3.500,00,
aplicando a equação anterior teremos um custo da equipe do projeto de R$87.150,00.
Atenção
É importante salientar que o custo da pessoa por mês pode variar conforme a especialidade e a experiência
do profissional, porém, para efeitos didáticos, utilizamos um valor médio. Estamos aqui calculando somente
o custo do desenvolvimento do software, desconsiderando outros custos envolvidos, como o custo do
investimento em marketing, o da compra de computadores e insumos, dentre outros.
Cálculo de custo de software com base no esforço de
desenvolvimento.
Neste bate-papo, vamos abordar as técnicas de estimativa de esforço, duração e custo de desenvolvimento
de software através de um estudo de caso.

Vem que eu te explico!
Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar.
Módulo 2 - Vem que eu te explico!
Modelo empírico para estimativa de duração
Módulo 2 - Vem que eu te explico!
Modelo empírico para estimativa de esforço
Módulo 2 - Vem que eu te explico!
Cálculo do Custo baseado no Esforço

Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Sobre o processo de estimativa, analise as seguintes alternativas e marque a opção correta:
A
As bases de dados dos históricos de projetos consistem em um ativo organizacional
importante para o planejamento dos projetos futuros.
B
Se a empresa não possuir uma base de dados com o histórico dos projetos não é possível
fazer estimativas iniciais.
C
Não é necessário estimar o tamanho de um projeto para determinar em quanto tempo o
projeto será realizado.
D
Para se fazer estimativas de esforço é necessário antes determinar o orçamento do
projeto.
E
Quando uma empresa começa a trabalhar com métricas de software e não possui uma
base de dados com o histórico de seus projetos não é possível fazer estimativas.
Parabéns! A alternativa A está correta.
As bases de dados dos históricos de projetos são fundamentais para planejar os projetos futuros
de uma organização. Utilizando essas bases, é possível aplicar técnicas estatísticas e criar um
modelo empírico de estimativas que pode ser aplicado em todos os projetos da organização.
Quando a empresa não possuir tais bases, é recomendável procurar bases disponíveis no
mercado, como as disponibilizadas pelo ISBSG e PROMISE. Estimar o tamanho do projeto é um
dos passos principais no processo de estimativas, pois é a partir do tamanho que se derivam
outras estimativas, tais como esforço, duração e custo.
Questão 2
Sobre o método de regressão linear, analise as alternativas abaixo e assinale a opção correta:
A
Utiliza-se um gráfico de dispersão para analisar os pontos de dados reais e verificar se
todos passam em cima da reta. Caso não passem, não é possível criar um modelo
estatístico utilizando este método.
B
Consiste em fazer uma aproximação dos dados reais com a reta do gráfico de dispersão
de modo que crie um modelo empírico com o menor erro possível.
C
O polinômio derivado desta técnica só pode ser aplicado aos pontos de dados
conhecidos.
D
Para fazer análise de erros e quantificar a precisão da estimativa, não se utiliza o
polinômio derivado desta técnica.
E
O método da analogia simples é mais eficiente para fazer estimativas, pois se baseia na
opinião dos especialistas e oferecem uma maior acurácia como resultado.
Parabéns! A alternativa B está correta.
A técnica de regressão linear se baseia em dados obtidos através das bases históricas de
projetos para criar um modelo empírico de estimativas. Ela consiste em aproximar os dados reais
à reta linear de modo a criar um modelo com o menor erro possível. É uma técnica mais eficiente
do que a técnica da analogia simples, pois a última se baseia na opinião de especialistas e
depende do nível de experiência deles em projetos. Para fazer a análise de erros, é necessário
obter o polinômio derivado desta técnica.

Considerações �nais
As técnicas apresentadas para fazer estimativas com base estatística auxiliam os gerentes de projetos a
estimar métricas com maior precisão e a obter um entendimento mais claro sobre como fazer o
planejamento do seu projeto.
Apresentamos os métodos de interpolação de medidas e vimos como calcular as estimativas a partir de
bases estatísticas. Aprendemos a analisar os gráficos de dispersão, que são uma ferramenta importante
para indicar as tendências ocorridas em projetos passados, além de oferecer maior previsibilidade dos
processos durante o planejamento de projetos futuros.
Vimos como fazer estimativas com técnicas estatísticas utilizando dados históricos de projetos a partir de
um estudo de caso, no qual derivamos um modelo empírico, utilizando a técnica de regressão linear e
analisamos os erros, a fim de fazer uma avaliação sobre a acurácia destas estimativas.
Podcast
Agora é hora de abordarmos as técnicas de estimativas com base estatística na Engenharia de Software.

Referências
BUSSAB, W. O.; MORETTIN, P. A. Estatística Básica. 9. ed. São Paulo, SP: Saraiva, 2017.
FRANCO, N. M. B. Cálculo Numérico. São Paulo, SP: Pearson Prentice Hall, 2006.
HAZAN, C. Análise de Pontos de Função: Uma aplicação nas estimativas de tamanho de Projetos de
Software. Revista Engenharia de Software n. 2, p. 25-31, 2008.
NESMA. Early Function Point Counting. Netherlands Software Metrics Users Association. Consultado na
internet em: 5 de out. 2021.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de Software: Uma Abordagem Profissional. 8. ed. Porto Alegre,
RS: AMGH, 2016.
PROJECT MANAGEMENT INSTITUTE. PMI. Guia PMBOK: Um Guia para o Conjunto de Conhecimentos em
Gerenciamento de Projetos. 6. ed. Pennsylvania: PMI, 2017.
VAZQUEZ, C. E.; SIMÕES, G. S.; ALBERT, R. M. Análise de Pontos de Função: Medição, Estimativas e
Gerenciamento de Projetos de Software. 13. ed. São Paulo, SP: Érica, 2013.
Explore +
Para saber mais sobre os assuntos aqui tratados:
Conheça os DataSets gratuitos disponibilizados na página PROMISE Software Engineering Repository.
Pesquise a página da Waikato University, na qual é disponibilizado o software Weka (Waikato Environment
for Knowledge Analysis ou Ambiente Waikato para Análise do Conhecimento), que processa os DataSets
disponibilizados pelo PROMISE.
Pesquise o artigo denominado Historical Data Repositories in Software Engineering: Status and Possible
Improvements (Repositórios de dados históricos em engenharia de software: Status e possíveis melhorias),
publicado por Luigi Lavazza e Luca Santillo.
Pesquise a tese de mestrado denominada Statistical Analysis on the Productivity of Data Processing with
Development Projects using the Function Point Technique (Análise Estatística da Produtividade do
Processamento de Dados com Projetos de Desenvolvimento utilizando a Técnica de Ponto de Função),
publicada por Jean-Marc Desharnais pela Universidade de Quebec, pois utilizamos o DataSet deste estudo
em nosso estudo de caso.
 Baixar conteúdo
javascript:CriaPDF()

Continue navegando