Diretriz: Estimando Esforços Utilizando a Técnica Delphi de Banda Larga
Esta diretriz descreve como utilizar a Técnica Delphi de Banda Larga para estimar o esforço de desenvolvimento de software.
Relacionamentos
Descrição Principal

Colaboração de Karl Wiegers (www.processimpact.com) para o RUP, com permissão da Software Development Magazine. Editado adicionalmente pela Rational Software Corporation.

Introdução

Esta diretriz descreve uma técnica que pode ser utilizada para fazer estimativa do esforço de desenvolvimento de software. O método de estimativa Delphi de Banda Larga pode ser resumido da seguinte forma:

  • Selecione uma equipe de especialistas e forneça a cada um deles uma descrição do problema a ser estimado.
  • Solicite a cada especialista para fornecer uma estimativa (geralmente anonimamente) do esforço, incluindo uma divisão do problema em uma lista de tarefas, e uma estimativa de esforço para cada tarefa.
  • Os especialistas colaboram, revisando suas estimativas iterativamente, até que cheguem a um consenso.

A utilização do método Delphi de Banda Larga tem várias vantagens sobre a obtenção de uma estimativa a partir de uma única pessoa. Em primeiro lugar, isso ajuda a construir uma lista completa de tarefas ou estrutura de divisão de trabalho para as principais tarefas, porque cada participante opinará sobre as tarefas. A abordagem de consenso ajuda a eliminar desvios nas estimativas produzidos por especialistas auto-proclamados, avaliadores inexperientes ou indivíduos influentes com agendas ocultas ou objetivos divergentes. Geralmente, as pessoas estão mais comprometidas com as estimativas que elas ajudam a produzir do que com aquelas geradas por outras pessoas. Nenhum participante em uma tarefa de estimativa conhece a resposta "certa" e a criação de várias estimativas confirma essa incerteza. Por último, os usuários da abordagem Delphi reconhecem o valor da iteração em qualquer tarefa complexa.

Aplicando Delphi de Banda Larga

O Delphi de Banda Larga pode ser utilizado para fazer a estimativa de qualquer coisa virtualmente, o número de meses necessários para implementar um subsistema específico, as linhas de código ou o número de classes em um produto inteiro, os galões de pintura necessários para redecorar a casa de Bill Gates ou o esforço que seria necessário para uma determinada organização alcançar o segundo nível do Modelo de Maturidade de Recurso.

O método Delphi ajuda a desenvolver uma estrutura detalhada de divisão de trabalho, que fornece a base para o esforço ascendente e a estimativa de planejamento ou tamanho. O ponto de partida para uma sessão do Delphi poderia ser um documento de Visão, uma especificação mais detalhada de Requisitos do problema que esteja sendo estimada, uma descrição inicial de arquitetura de alto nível ou um planejamento de projeto. As saídas são uma lista mais detalhada de tarefas do projeto; uma lista de tarefas associadas relacionadas a qualidade, processo e código extra; suposições de estimativa; um conjunto de tarefas e estimativas gerais do projeto, uma de cada participante.

A Figura 1 ilustra o fluxo do processo para uma sessão de Delphi de Banda Larga. O problema que está sendo estimado é definido e os participantes selecionados durante o planejamento. A reunião inicial inclui todos os avaliadores com foco no problema. Cada participante prepara individualmente suas listas de tarefas e estimativas iniciais. Eles trazem esses itens para a reunião de estimativas, durante a qual vários ciclos de estimativa resultam em uma lista de tarefas mais abrangente e um conjunto revisado de estimativas. O mediador ou coordenador de projeto consolida as informações de estimativa classificadas off-line e a equipe revisa os resultados das estimativas. Quando alguns critérios de saída predeterminados forem satisfeitos, a sessão estará concluída. O intervalo resultante de estimativas é provavelmente uma previsão mais realista do futuro do que qualquer estimativa isolada. Vamos examinar cada uma das etapas do processo, sucessivamente.

Diagrama mostrando o fluxo do processo Delphi de banda larga.
Ao planejar uma sessão Delphi de Banda Larga, o problema é definido e os participantes selecionados. A reunião inicial inclui todos os avaliadores com foco no problema. Cada participante prepara individualmente suas listas de tarefas e estimativas iniciais. Durante a reunião de estimativas, vários ciclos resultam em uma lista de tarefas mais abrangente e um conjunto revisado de estimativas. As informações são consolidadas off-line e a equipe revisa os resultados das estimativas. Quando os critérios de saída forem satisfeitos, a sessão estará concluída.

Planejamento

Uma sessão Delphi de Banda Larga começa com definição e escopo do problema: visão, modelo de caso de uso, sistema existente e arquitetura preliminar. Problemas maiores são divididos em partes gerenciáveis que podem ser estimadas com mais exatidão, talvez por equipes diferentes. A pessoa que iniciou a tarefa de estimativa monta uma especificação do problema que fornecerá aos participantes informações suficientes para produzir informações de estimativas confiáveis.

Os participantes das estimativas incluem um moderador, que planeja e coordena a tarefa, o coordenador de projeto e dois a quatro avaliadores. O mediador deve receber informações suficientes para participar como um avaliador, mas agir como um facilitador imparcial que não se desviará dos resultados com suas próprias tendências ou percepções. Os participantes são selecionados porque entendem do problema ou do projeto e dos problemas de estimativa associados.

A Reunião Inicial

A reunião inicial com duração de uma hora expõe rapidamente a todos os participantes o problema de estimativa. O moderador explica o Delphi de Banda Larga para os membros da equipe que não estejam familiarizados com ele e fornece aos outros avaliadores a especificação do problema e quaisquer premissas ou restrições do projeto. O mediador se empenha em fornecer aos avaliadores informações suficientes para a execução de uma boa tarefa sem influenciar indevidamente suas estimativas.

A equipe revisa os objetivos das estimativas e discute o problema e quaisquer assuntos sobre as estimativas. Os participantes chegam a um acordo sobre as unidades que serão utilizadas para as estimativas, como semanas, horas de trabalho, valores ou linhas de código. Se o moderador concluir que todos os membros da equipe possuem conhecimento suficiente para colaborar com a tarefa de estimativa, o grupo está pronto para prosseguir. Caso contrário, os participantes podem precisar receber esclarecimentos mais completos sobre o problema que está sendo estimado ou possivelmente substituídos por outros participantes que possam gerar estimativas mais exatas.

Para determinar se você está pronto para continuar com a sessão Delphi de Banda Larga, verifique os critérios de entrada, ou seja, os pré-requisitos que devem ser atendidos para que seja possível continuar com as etapas subseqüentes do processo. Antes de mergulhar no exercício de estimativas, assegure-se de que as condições a seguir sejam atendidas:

  • Membros apropriados da equipe foram selecionados.
  • A reunião inicial foi realizada.
  • Os participantes chegaram a um acordo com as metas e as unidades das estimativas.
  • O coordenador de projeto pode participar da sessão.
  • Os avaliadores possuem as informações necessárias para participarem efetivamente.

Preparação Individual

Vamos supor que você deseje fazer a estimativa da quantidade total de esforço de trabalho (geralmente expressa em horas de trabalho) necessário para concluir um determinado projeto. O processo de estimativa começa com cada participante desenvolvendo independentemente uma lista inicial das tarefas que precisarão ser concluídas para alcançar a meta determinada do projeto, utilizando um formulário como aquele mostrado na Figura 2. Cada participante estima o esforço que será consumido para cada tarefa. Divida cada tarefa em tarefas que sejam pequenas o suficiente para obter uma estimativa com mais exatidão. Exponha as tarefas de modo bem claro, porque alguém terá que mesclar todas as listas de tarefas dos participantes em uma única lista composta. Some as estimativas produzidas para cada tarefa do projeto, nas unidades combinadas, para gerar uma estimativa geral inicial.

Gráfico mostrando o formulário de estimativa Delphi de amostra
O processo de estimativa começa com cada participante utilizando independentemente este formulário para desenvolver uma lista inicial das tarefas que precisarão ser concluídas para alcançar a meta determinada do projeto.

Sua estimativa não deverá estar ligada à resposta que você acha que o coordenador de projeto ou outros investidores desejam ouvir. Existe uma grande chance da estimativa ficar fora dos limites aceitáveis do projeto em relação ao planejamento, esforço ou custo, uma situação que demanda negociação e pode resultar em redução de escopo, extensão de planejamento ou ajustes de recursos. Mas não deixe que a pressão externa influencie sua melhor projeção de como o projeto terminará.

Além de identificar as tarefas do projeto, registre separadamente quaisquer tarefas para tarefas relacionadas ou de suporte. Não se esqueça de listar as tarefas que tratam de gerenciamento, gerenciamento de configuração tarefas relacionadas ao processo no primeiro ciclo. Certifique-se de incluir tarefas de retrabalho após as tarefas de teste ou de inspeção. O retrabalho para correção de defeitos é um fato real, portanto planeje-se para isso. Se você estiver estimando um planejamento, considere também as tarefas de código extra não específicas do projeto que talvez precisem ser incorporadas ao planejamento. Essas atividades incluem reuniões, férias, treinamento, outras designações do projeto e inúmeras outras coisas que consomem seu tempo diário.

Como suposições radicalmente diferentes podem levar a amplas variações de estimativas, registre quaisquer suposições feitas durante a preparação das estimativas. Por exemplo, se você assumiu que comprará uma biblioteca de componente específica ou reutilizará alguma de um projeto anterior, anote isso. Um outro avaliador poderá assumir que o projeto desenvolverá essa biblioteca, resultando em uma incompatibilidade entre as duas estimativas gerais.

Tenha em mente as diretrizes de estimativas a seguir:

  • Considere que uma pessoa (você) executará todas as tarefas.
  • Considere que todas as tarefas serão executadas seqüencialmente; não se preocupe sobre tarefas seqüenciais e predecessoras no momento.
  • Considere que você possa dedicar esforço ininterrupto para cada tarefa (isso pode parecer absurdamente otimista, mas simplifica o processo de estimativa).
  • Em unidades de tempo do calendário, liste quaisquer tempos de espera que você espera encontrar entre as tarefas. Isso ajudará a converter as estimativas de esforço em estimativas de planejamento posteriormente.

Reunião de Estimativas

O moderador começa a reunião de estimativas, coletando as estimativas individuais dos participantes e criando um gráfico, como a Figura 3. A estimativa total do projeto de cada participante é mostrada como um X na linha "Ciclo 1". Cada avaliador pode ver onde seu valor inicial se ajusta ao longo do espectro. As estimativas iniciais provavelmente abrangerão um intervalo espantosamente grande. Apenas imagine as diferentes conclusões que você poderia ter coletado se perguntasse a apenas um dos participantes por sua estimativa e utilizado isso para planejar o projeto.

Gráfico mostrando a estimativa inicial de uma sessão Delphi de Banda Larga.
O moderador começa a reunião de estimativas, coletando e criando gráficos das estimativas individuais dos participantes. A estimativa total do projeto de cada participante é mostrada como um X na linha "Ciclo 1". As estimativas iniciais provavelmente abrangerão um intervalo espantosamente grande.  

Em algumas organizações, o mediador não identifica quem criou cada estimativa; considera-se que esse anonimato seja um importante aspecto da técnica Delphi. O anonimato evita que um colega sugira, de modo franco e sem rodeios, que os outros participantes vejam as coisas à sua maneira. Também significa que é menos provável que os membros da equipe submetam-se à opinião do participante mais respeitado quando suas próprias análises levarem a conclusões diferentes. Mas isso não é obrigatório.

Cada avaliador lê sua lista de tarefas inicial, identificando quaisquer suposições feitas e levantando quaisquer dúvidas ou problemas, sem revelar qual é a sua estimativa. Cada participante terá listado diferentes tarefas que precisam ser executadas. A combinação dessas listas de tarefas individuais resulta em uma lista mais completa do que qualquer avaliador individual produziria. Essa abordagem funcionará para dúzias de tarefas individuais. Se houver mais tarefas que isso, é provável que elas sejam muito detalhadas. Você poderá dividir o problema em vários subproblemas e estimá-los individualmente.

Durante essa discussão inicial, os membros da equipe também conversam sobre suas suposições, problemas de estimativas e dúvidas sobre o problema. Como resultado, a equipe começará a convergir em um conjunto compartilhado de suposições e uma lista de tarefas comum. Guarde essa lista de tarefas final para ser utilizada como um ponto de partida na próxima vez em que for necessário fazer a estimativa de um projeto semelhante.

Após essa discussão inicial, todos os participantes modificam suas estimativas simultaneamente (e silenciosamente) na sala de reunião. Eles podem revisar suas listas de tarefas com base nas informações compartilhadas durante a discussão e ajustar as estimativas de tarefas individuais com base em seu novo entendimento do escopo da tarefa ou de suposições alteradas. Todos os avaliadores podem incluir novas tarefas em seus formulários e anotar quaisquer mudanças que desejarem fazer em suas estimativas das tarefas iniciais. A alteração livre de todas as tarefas equivale à alteração da estimativa geral do projeto desse participante.

O moderador coleta as estimativas gerais revisadas e as representa no mesmo gráfico, na linha "Ciclo 2". Isso foi feito em um quadro branco para facilitar a visibilidade. Conforme ilustrado na Figura 4, o segundo ciclo pode levar a uma distribuição mais reduzida de estimativas centralizadas em torno de uma média mais alta que a média dos valores do Ciclo 1. Os ciclos adicionais devem reduzir ainda mais a distribuição. O ciclo de revisão da lista de tarefas, de discussão de problemas e premissas e de preparação de novas estimativas continuará até que o seguinte tenha sido atendido:

  • você tenha concluído quatro ciclos;
  • as estimativas tenham convergido para um intervalo aceitavelmente reduzido (definido antecipadamente);
  • o tempo designado para a reunião tenha sido atendido (geralmente duas horas);
  • todos os participantes estejam pouco dispostos a alterar suas estimativas mais recentes.
Gráfico de estimativas mostrando três ciclos de uma sessão Delphi de Banda Larga.
Após a discussão das estimativas iniciais, todos os participantes modificam suas estimativas. O moderador coleta as estimativas gerais revisadas e as representa no mesmo gráfico, na linha "Ciclo 2". Os ciclos posteriores podem levar a uma distribuição mais reduzida de estimativas centralizadas em torno de uma média mais alta que a média dos valores do Ciclo 1. 

O mediador monitora o grupo, delimitando o tempo das discussões em 15 ou 20 minutos para evitar uma divagação sem fim. O mediador deve seguir as práticas efetivas de facilitação da reunião, como iniciar e encerrar na hora, sugerir que todos os participantes colaborem e mantenham um ambiente imparcial e sem julgamento. Embora a preservação do anomimato de estimativas individuais seja importante para os primeiros ciclos, os membros da equipe podem combinar de, em algum ponto, colocar todas as cartas na mesma e chegar a uma conclusão por meio de uma discussão aberta. Com isso, eles têm a oportunidade de discutir as tarefas para as quais suas estimativas variam substancialmente. Contudo, em contrapartida, o mediador não deverá identificar a pessoa que produziu cada estimativa final até que a sessão seja concluída.

Montando Tarefas

O trabalho não é concluído após o término da reunião de estimativas. O mediador ou o coordenador de projeto monta as tarefas do projeto e suas estimativas individuais em uma única lista de tarefas principais. Essa pessoa também mescla as listas individuais de premissas, as tarefas relacionadas à qualidade e ao processo, as tarefas de código extra e os tempos de espera.

O processo de mesclagem envolve remover as tarefas duplicadas e chegar a alguma resolução aceitável de diferentes estimativas para tarefas individuais. "Aceitável" não significa substituir as estimativas da equipe pelos valores preferidos pelo coordenador de projeto. Grandes diferenças de estimativas para tarefas aparentemente semelhantes podem indicar que os avaliadores tiverem interpretações diferentes dessa tarefa. Por exemplo, duas pessoas poderiam ter uma tarefa "implementar uma classe". No entanto, um avaliador pode ter incluído teste unitário e revisão de código na tarefa, enquanto o outro referiu-se apenas ao esforço de codificação. Todos os avaliadores devem definir suas tarefas de modo claro para minimizar a confusão durante esta etapa de mesclagem. A etapa de mesclagem deve fixar a variação da estimativa para cada tarefa, mas se a estimativa da tarefa do avaliador foi muito diferente daquelas dos outros avaliadores, tente entender isso e, talvez, descartá-la e modificá-la.

Revisar Resultados

Na etapa final, a equipe de estimativa revisa os resultados resumidos e chega a um acordo sobre o resultado final. O coordenador de projeto fornece aos outros avaliadores a lista de tarefas gerais, estimativas individuais, estimativas cumulativas, lista de suposições e quaisquer outras informações. Reúna a equipe para uma reunião de revisão de 30 a 60 minutos para apresentar uma conclusão para a tarefa de estimativa. Esta reunião também fornece uma oportunidade para a equipe contemplar esta execução do processo Delphi de Banda Larga e sugerir maneiras de aprimorá-lo para aplicações futuras.

Os participantes devem certificar-se de que a lista final de tarefas seja o mais completa possível. Eles podem ter idéias de tarefas adicionais desde a reunião de estimativas, que poderiam ser incluídas na lista de tarefas agora. Verifique se as tarefas que tiverem estimativas individuais muito diferentes foram mescladas de um modo perceptível. O objetivo final é produzir um intervalo de estimativas que permita que o coordenador de projeto e outros principais investidores continuem com o planejamento e a execução do projeto em um nível de confiança aceitável.

Concluindo a Estimativa

O processo de estimativa é concluído quando os critérios de saída especificados são atendidos, neste ponto, você pode declarar vitória e continuar com sua vida. Os critérios de saída do Delphi de Banda Larga são:

A lista de tarefas gerais foi montada.

Você possui uma lista resumida de suposições de estimativas.

Os avaliadores chegaram a um consenso sobre como suas estimativas individuais foram sintetizadas em um único conjunto com intervalo aceitável.

Agora você deve decidir o que fazer com os dados. Você poderia simplesmente calcular a média das estimativas finais para apresentar uma estimativa de ponto único, que é o que a pessoa que solicitou a estimativa provavelmente deseja ouvir. No entanto, uma média simples é provavelmente muito pouco e há vantagem em manter o intervalo estimado. As estimativas são previsões do futuro e o intervalo reflete a incerteza inerente de olhar fixamente a bola de cristal. Você poderia apresentar três números: a média das estimativas como o caso planejado, o valor mínimo como o melhor caso e o máximo como o pior caso. Ou poderia apresentar o valor médio como o resultado nominal esperado, mais o valor máximo menos o média e menos o valor médio menos o mínimo.

Cada estimativa tem uma certa probabilidade de tornar-se verdadeira, portanto um conjunto de estimativas forma uma distribuição de probabilidade. No Capítulo 6 de A Discipline for Software Engineering (Addison-Wesley, 1995), Watts Humphrey descreve uma forma matematicamente exata de combinar várias estimativas e suas incertezas para gerar uma estimativa geral com intervalos de previsão superior e inferior. Uma outra abordagem sofisticada é executar uma simulação de Monte Carlo para gerar uma distribuição de probabilidade de possíveis resultados de estimativas com base nos valores finais de estimativas.

Embora os resultados da sessão Delphi possam não ser o que os proponentes desejam ouvir, eles podem decidir se desejam planejar seus projetos em um nível de confiança de 10 por cento, em um nível de confiança de 90 por cento ou algo aproximado. Certifique-se de comprar os resultados reais do projeto com suas estimativas para aprimorar a exatidão da estimativa futura.

Refazendo (Iterando)

Um bom aspecto deste método é que após uma estimativa inicial e aproximada feita, por exemplo, durante a iniciação, as estimativas podem ser refinadas em cada fase (ou mesmo em cada iteração). O processo poderá ser mais rápido se os mesmos avaliadores estiverem disponíveis, iniciando onde pararam no ciclo de estimativas anterior. Informações adicionais sobre o problema estão disponíveis, alguns suposições foram modificadas, uma arquitetura está no lugar para ajudar a dividir o esforço.

A nova estimativa pode ter um intervalo mais reduzido, mas ela não está necessariamente dentro do intervalo da anterior: pode ser maior ou menor. Se maior, haverá um claro sinal de risco para o coordenador de projeto; o risco deve ser detido imediatamente.

Delphi de Banda Larga Avaliado

Nenhum método de estimativa é perfeito; se fosse, seria chamado de previsão, não estimativa. No entanto, a técnica Delphi de Banda Larga incorpora alguns princípios sólidos de estimativa. A abordagem de equipe confirma o valor de combinar várias perspectivas de especialistas. O intervalo de estimativas produzidas reflete a variabilidade intrínseca para o processo de estimativa.

Embora isso consuma tempo e exija um quadro de avaliadores experientes, o Delphi de Banda Larga remove algumas opiniões políticas da estimativa e filtra os valores iniciais extremos.