fbpx
Você está visualizando atualmente Estimativa da duração da tarefa: uma solução simples

Estimativa da duração da tarefa: uma solução simples

Este artigo e o template que o acompanha descrevem como usar uma planilha simples para fazer uma estimativa razoável da duração provável de uma determinada tarefa. Você faria isso se não tiver muita experiência com uma tarefa em particular, mas tiver uma ideia aproximada de quanto tempo ela deve levar – e quer ter certeza de fornecer tempo suficiente na programação para que a tarefa tenha uma chance razoável de ocorrer no prazo sem afetar negativamente o resto do projeto.

Os gerentes de projeto podem fazer isso com um software especializado, mas qualquer um pode fazer a mesma coisa apenas com uma planilha. A planilha faz sua estimativa substituindo uma simulação de Monte Carlo no lugar da experiência real do projeto. Ele simula 5.000 projetos semelhantes que variam aleatoriamente dentro de determinados limites de duração, encontrando assim vários graus de desempenho (duração mais curta e mais longa do que o esperado).

As durações simuladas do projeto variam de acordo com uma distribuição de probabilidade muito simples, conhecida como “distribuição triangular”, que consiste em três pontos:

  1. O primeiro ponto (baixo) é o melhor resultado possível, o tempo mais rápido possível em que a tarefa poderia ser realizada.
  2. O segundo ponto é a estimativa mais provável que a tarefa levaria. Este é o melhor palpite que você usaria se não estivesse conduzindo uma simulação.
  3. O terceiro ponto (alto) é o pior resultado possível, o tempo mais lento possível que a tarefa pode levar.

Por exemplo, digamos que descobrimos que a tarefa provavelmente levaria 21 dias para ser concluída, mas se tudo correr perfeitamente, poderia levar apenas 14 dias. Na pior das hipóteses, nunca deve demorar mais de 35 dias. Esses pontos combinados fornecem a distribuição de probabilidade do triângulo resultante.

A probabilidade (o eixo vertical) diminui a zero na primeira e na terceira estimativas e atinge um máximo na segunda estimativa, a “mais provável”. Entre os pontos, presume-se que a probabilidade segue um caminho linear, formando assim a distribuição de probabilidade em forma de triângulo. Nota: A altura do pico central é calculada automaticamente como uma função da largura do triângulo, uma vez que a área sob o triângulo deve ser igual a 1. O valor Y real é imaterial; apenas garante que a área total encerrada seja 100%.

Resultado Baseado em P Aleatório P = [0…1]


Até agora, é simples. Mas como você garante que o computador escolha números aleatórios de acordo com a distribuição em forma de triângulo? Como a função de planilha só é capaz de gerar números aleatórios uniformemente em um intervalo de 0,0 a 1,0, os cálculos são feitos para converter essa distribuição uniforme para a distribuição triangular. Isso é mostrado no gráfico, “Resultado com base em P aleatório = [0 … 1]” para todos os valores de P entre 0,0 e 1,0. O valor P = 0,0 é consistente com uma duração baixa de 14 dias, o valor P = 1,0 é consistente com uma duração alta de 35 dias e todos os valores intermediários estão em conformidade com a distribuição triangular.

Uma amostra de distribuição de triângulo de uma única tarefa simulada é mostrada. Dada uma escolha aleatória de P entre 0,0 e 1,0, a duração da tarefa resultante é calculada. Por exemplo, a escolha aleatória P = 0,59 é consistente com uma duração de tarefa simulada de 24,00 dias, que vemos confirmada no gráfico acima.

Isso culmina na simulação de Monte Carlo. Uma série de tarefas de amostra a serem simuladas é inserida, normalmente 5.000 (no entanto, a planilha está programada para aceitar qualquer número até 20.000). Com isso, todas as simulações são realizadas e calculados a média, o desvio padrão e o cronograma.

  • O campo “Probabilidade desejada” nos permite solicitar um cronograma para o qual aquela porcentagem de tarefas simuladas foram concluídas com sucesso.
  • A média é a duração média de todas as tarefas simuladas. Neste exemplo, a média é 23,39 dias (compare com a duração “mais provável”, que foi estimada em 21 dias).
  • O desvio padrão é uma medida de quão variáveis as simulações eram; neste exemplo, foram 4,31 dias. De acordo com as estatísticas, 68% de todas as tarefas simuladas teriam durações de um desvio padrão a mais ou a menos que a média (ou seja, 68% das tarefas simuladas seriam concluídas no intervalo de 19,08 a 27,70 dias).

Como especificamos 80% de probabilidade desejada e o “Cronograma em 80%” foi calculada em 27,02 dias, sabemos que 27,02 dias é a duração mais curta para a qual 80% de todas as tarefas simuladas foram concluídas com sucesso.

Observe que, devido à natureza da distribuição, se tivéssemos especificado 50% de probabilidade desejada, o resultado calculado será igual à média. Isso ocorre porque espera-se que metade das tarefas conclua mais rápido do que a média e a outra metade mais lenta do que a média.

Se especificarmos a probabilidade desejada menor que 50%, o cronograma calculado será menor que a média. Esta é a consequência de “travar o cronograma”. O cronograma apertado se torna mais difícil de manter e os estouros de cronograma se tornam mais prováveis.

Por último, “Amostra em 80%” classifica todas as tarefas simuladas de Monte Carlo e encontra a duração da tarefa do 80º percentil para comparação com o cálculo probabilístico que foi conduzido acima. Geralmente, quanto menor o número de simulações, maior a discrepância entre as duas.

Um teste de distribuição é mostrado. Isso testa a uniformidade com que o computador escolhe números aleatórios. Se pedirmos à planilha para escolher 1.000 amostras aleatórias dentro do intervalo de um a 10, então podemos ver quão uniformemente elas foram escolhidas. O gerador de números aleatórios do computador deve ser distribuído de maneira bastante uniforme para que possamos ter certeza de que os cálculos de Monte Carlo estão convertendo os números aleatórios em uma distribuição triangular real. Estamos procurando ver se todas as 10 possibilidades são escolhidas aproximadamente na mesma taxa (todas elas estão perto de 100).

Em termos de risco de cronograma, aprendemos com nosso projeto de amostra que, dada a gama de durações de tarefa possíveis (de tão baixo quanto 14 dias a tão alto quanto 35 dias), a incerteza exige que reservemos até 27 dias para a tarefa, embora possamos ter estimado que a duração mais provável seria de 21 dias. Se tivéssemos seguido nossa estimativa original de 21 dias, havia de fato 70% de chance de que o cronograma do projeto tivesse ultrapassado. Mitigar esse risco de cronograma é o benefício de executar simulações de Monte Carlo.

A planilha usa Visual Basic para definir funções. As funções utilizadas são:

  • TRIANGLE (calcula a distribuição de probabilidade do triângulo com base em 3 pontos “a”, “b” e “c” e o número aleatório “P”)
  • MONTE (realiza uma simulação de Monte Carlo com base em 3 pontos “a”, “b” e “c”, de simulações de número “n”)
  • TEST (testa a distribuição uniforme do gerador de números aleatórios, de “n” números aleatórios)
  • INDEXLIST (isola o valor “i” de uma lista de valores separados por vírgulas na variável de string “List”)

Aqui está uma rápida passada nas funções reais:

Função TRIANGLE(a As Double, b As Double, c As Double, P As Double) As Double
 If P <= (b – a) / (c – a) Then
 TRIANGLE = a + (P * (b – a) * (c – a)) ^ 0.5
 Else
 TRIANGLE = c – ((1 – P) * (c – b) * (c – a)) ^ 0.5
 End If
 End Function

Função MONTE(a As Double, b As Double, c As Double, n As Long) As String
 Dim i As Long
 Dim samples(20000), mean, std As Double
 mean = 0
 For i = 1 To n
 samples(i) = TRIANGLE(a, b, c, Application.WorksheetFunction.RandBetween(0, 1000000#) / 1000000#)
 mean = mean + samples(i)
 Next i
 mean = mean / n
 std = 0
 For i = 1 To n
 std = std + (samples(i) – mean) ^ 2
 Next i
 std = (std / n) ^ 0.5
 MONTE = mean & “,” & std
End Function

Function TEST(n As Long) As String
Dim i, j, sum(10) As Long
For i = 1 To n
j = Application.WorksheetFunction.RandBetween(1, 10)
sum(j) = sum(j) + 1
Next i
TEST = sum(1)
For i = 2 To 10
TEST = TEST & “,” & sum(i)
Next i
End Function

Function INDEXLIST(list As String, i As Long) As String
Dim ListArray() As String
ListArray() = Split(list, “,”)
INDEXLIST = ListArray(i – 1)
End Function

Kevin é engenheiro é Calgary, Alberta.

Tradução: Ricardo Coutinho

Fonte: https://www.projectmanagement.com/articles/698367/Task-Duration-Estimation–A-Simple-Solution

Dulce Machdo Souza
Author: Dulce Machdo Souza

Bio