Estimativa de custo de software [fechada]

10

Eu já vi no meu local de trabalho (uma universidade) a maioria dos estudantes fazendo o custo da estimativa de software de seu diploma final usando o COCOMO . Meu palpite é que essa maneira de estimar custos é um pouco antiga (datas da COCOMO de 1981), daí a minha pergunta:

How do you estimate costs in your software?

Eu já vi coisas como:

Custo = (HoursOfWork + EstimatedIddle) * HourlyRate

Não é isso que eu quero, estou procurando um modelo de custo definido cientificamente

EDIT Encontrei algumas perguntas relacionadas ao SO:

David Conde
fonte
30
"Como você estima custos no seu software?" Mal, como todo mundo.
Rein Henrichs
11
Na verdade, são duas perguntas. Sugiro que você a reescreva como uma questão principal que não depende de software esotérico. Eu duvido que você vai ter muitas respostas se o requisito é o conhecimento com Cocomo
Eran Galperin
@Eran, vou seguir o seu conselho e reescrever a pergunta ...
David Conde
4
Steve McConnell é considerado um líder de pensamento neste espaço por muitas pessoas em TI. Você deveria dar uma olhada no livro dele. stevemcconnell.com/est.htm
Jeff
5
Estou votando para encerrar esta questão como fora de tópico, porque não se trata de um problema de programação conceitual dentro do escopo definido na Central de Ajuda .
durron597

Respostas:

16

Caso você esteja preso no Modo Cachoeira, o único método bastante preciso que eu usei é:

  1. Criar uma estrutura de detalhamento do trabalho
  2. Certifique-se de que seja detalhado o suficiente para poder relacionar a magnitude de cada tarefa com algo que você (ou alguém com quem possa conversar) tenha feito antes.
  3. Para cada tarefa, crie um número de melhor, provável e pior caso com base na experiência. Na melhor das hipóteses, se tudo correu perfeitamente, na pior das hipóteses, se você tivesse que refazê-la (talvez duas vezes) e provavelmente há algum lugar.
  4. Use alguma fórmula de ponderação como (1 * melhor + 4 * provável + 1 * pior) / 6 para elaborar uma estimativa para cada tarefa que leva em consideração o intervalo.
  5. Também vi variantes nas quais você pode adicionar um componente "risco" a cada tarefa. Os três níveis de risco são 0, 1 e 2. Um risco de 0 significa que você já fez isso antes (ou algo muito próximo), 1 significa que você nunca fez isso antes, mas é feito regularmente em seu setor, 2 significa que provavelmente nunca foi feito antes na indústria. Você pega o número do risco e multiplica-o por uma aproximação do "desvio padrão" da sua estimativa. Adicione isso à sua estimativa ponderada. Portanto, o risco de 0 não o move, mas o risco de 2 o aproxima bastante do seu número de pior caso.
  6. Adicione todas as tarefas.
  7. Adicione uma contingência (alguns%) para "incógnitas desconhecidas".

Você terminará com um número muito preciso. Não estou dizendo que seja preciso, mas será preciso.

A precisão depende inteiramente da capacidade de chegar a um número para cada tarefa com base em experiências passadas ou de encontrar alguém que já tenha feito isso antes. Quanto mais experiência você tiver, melhores serão as suas estimativas.

Ao executar o projeto, acompanhe seu tempo em cada tarefa e anote as que você perdeu, para poder comparar. Isso fará com que você melhore ao longo do tempo.

Scott Whitlock
fonte
Graças @ Scott, I será recomendar algo como a sua ideia ..
David Conde
11
Faça sua estimativa dessa maneira e faça uma estimativa independente de uma segunda maneira (e / ou uma segunda pessoa faz as estimativas). Compare os resultados. Qualquer coisa distante ou significativamente diferente do "pressentimento" precisa ser revisada. Minha experiência (25 anos ou mais) é que o "pressentimento" geralmente é mais preciso do que qualquer fórmula sofisticada; ignore-o por sua conta e risco.
mattnz
@mattnz - a intuição tem a mesma ressalva: só funciona se você tiver muita experiência. Todo cliente tem um "pressentimento" de que vai custar muito menos do que custa, porque não entende a quantidade de trabalho envolvido nos casos de canto.
Scott Whitlock
3
Outra dica: "Não negocio estimativas. <Longa pausa>" é uma frase muito útil em reuniões com chefes / clientes. Afinal, seu mecânico ou cirurgião faz isso? Ele pode negociar o preço, ele pode negociar o que é feito ou como é feito, mas nunca vi um comerciante profissional em outro campo além do software negociar quanto tempo levaria um trabalho.
mattnz
@mattnz - negociei com um mecânico de automóveis na semana passada sobre quanto tempo levaria para consertar a porta do meu carro, dependendo de como foi feito.
Sixtyfootersdude
3

A estimativa de software é extremamente difícil. Uma abordagem que usei é quebrar os requisitos da melhor maneira possível e estimar cada peça separadamente. Em seguida, adicione um "fator de correção" que pode ser um multiplicador (o dobro) ou um valor fixo (x horas para trabalhos imprevistos). Se você não possui bons requisitos, a estimativa é impossível para fins práticos.

Mark B
fonte
11
As estimativas mais bem-sucedidas que eu já vi (sem incluir as que usam métodos sofisticados) são aquelas que praticamente dobraram a estimativa original.
Bernard Dy
11
Sim, duplo. Um dos gerentes politicamente mais bem-sucedidos em quem trabalhei tirou estimativas dos desenvolvedores, triplicou -as e depois negociou com os usuários para dobrar. Mais frequentemente, as datas de entrega negociadas foram atingidas.
Davee
0

A indústria aprendeu muito nos 30 anos desde 1981. Estimar assim nunca funcionou. Com a mania do Agile basicamente reescrevendo a paisagem, usamos "pontos da história" representando alguma "dificuldade comparativa" nebulosa. Em seguida, ganhamos "velocidade" para que os imundos possam fazer suas estimativas $$ com alguma quantidade de dados empíricos.

Edward Strange
fonte
0

Aprendi algumas abordagens "rigorosas", como estimativas de pontos de função e algumas variações projetadas para aplicativos modernos. Eu acho que a parte dessas abordagens que é valiosa é que ela força uma análise mais detalhada dos requisitos conhecidos do que eu poderia fornecer.

É muito difícil obter um bom conjunto de dados para trabalhar, mesmo se você tiver um bom modelo. Medir a produtividade é difícil. As pessoas jogam quase qualquer métrica.

Eu parei de usá-lo porque minha organização é muito disfuncional para se beneficiar das estimativas de software, mas tenho alguma consideração pelo grupo Cost Xpert e suas ferramentas; mas é muito caro e provavelmente não vale o custo e a curva de aprendizado para a grande maioria das organizações.

Jeremy
fonte
0

É muito difícil estimar esforços e custos, mas se você quiser algo mais preciso, então:

  • divida o HoursOfWork em 3 componentes:

    1. melhor estimativa,
    2. estimativa mais provável,
    3. pior estimativa.
  • remova EstimatedIddle.

Tome nota de que qualquer coisa que leve mais de 8 horas apresentará um erro enorme.

BЈовић
fonte
0

O que normalmente fazemos é dividir o escopo completo do trabalho em grandes módulos / elementos que podem ser considerados como subprojeto. Em outras palavras, são aquelas partes de trabalho que o cliente considera partes separadas do projeto e que o cliente deseja obter estimativas separadamente.

Feito isso, dividimos cada módulo em tarefas, subtarefas e sub-subtarefas ainda menores, para que cada um possa ser estimado com bastante facilidade e a estimativa demorar de uma a dez horas-homem. Dessa forma, obtemos uma análise detalhada do escopo de trabalho do projeto.

O último passo é distribuir tarefas entre marcos. Fazemos isso da maneira que, após cada cliente de marco, obtenha resultados visíveis. Isso ajuda a passar um marco e passar para outro. Então, finalmente, temos algo como:

Módulo 1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

Inicialmente, fizemos isso usando apenas a planilha do Excel. Mas há mais de dois anos, começamos a usar a ferramenta de software para isso. Existem poucos produtos similares que ajudam com isso www.evenflow.com , www.swproposal.com e alguns outros. Não me lembro de toda a lista. Pesquisamos há muito tempo. Espero que possa ajudar.

Boa pergunta é como estimar com precisão. Não existe uma estimativa 100% correta como acreditamos. A única maneira é dividir o escopo completo do trabalho em tarefas tão pequenas quanto possível. Quanto menores as tarefas, maior a revisão e a análise detalhadas do projeto que você realiza. De qualquer maneira, aumenta a precisão.

Nick Rogozhnikov
fonte