Engenharia de Software

Planejamento e Gerência de Projetos de Software

Professor: Gabriel Soares Baptista

Por que planejar?

Planejar não é adivinhar o futuro. É reduzir a incerteza o suficiente para tomar decisões responsáveis.

Esta aula reúne dois blocos do Capítulo 23 de Sommerville:

  1. Conceitos, preço, custos e estimativas
  1. Cronograma, programação, prazos e alocação de pessoas
Um plano de projeto é uma hipótese organizada que deve ser revisada conforme a equipe aprende.

O que um bom plano organiza?

Aspecto Pergunta
Escopo O que será feito?
Esforço Quanto trabalho humano?
Cronograma Quando cada parte?
Recursos Pessoas, ferramentas, infraestrutura?
Riscos O que pode dar errado e como reagir?
Sem plano, cada pessoa tem expectativa diferente. O plano torna o conflito visível cedo.

Exemplo: dependências escondidas

Sistema acadêmico com matrícula, boletos, histórico e autenticação institucional.

Sem planejamento, a equipe começa pelas telas mais fáceis. Parece produtivo nas primeiras semanas.

Mas a autenticação, deixada para o final, muda permissões, sessões, perfis e auditoria. Falsa sensação de progresso.
Com planejamento, a autenticação é identificada como dependência inicial. A equipe reserva tempo para prova de conceito e ajusta o cronograma.

Os três momentos do planejamento

Momento Informação Objetivo
Proposta Descrição geral Viabilidade e preço
Iniciação Requisitos, equipe Orçamento, marcos, riscos
Acompanhamento Progresso real Atualizar e replanejar
Estimativa da proposta não tem a mesma confiabilidade de uma feita após a arquitetura definida.

O problema não é mudar o plano. É mudar o projeto sem atualizar o plano.

Custo não é a mesma coisa que preço

Conceito Definição
Custo Gasto para executar o projeto
Preço Valor negociado com o cliente

Componentes de custo: esforço (salários), hardware/software (licenças, servidores), viagens/treinamentos.

Fatores que alteram o preço: oportunidade de mercado, incerteza da estimativa, condições contratuais, volatilidade de requisitos, saúde financeira.

Preço para ganhar

Estratégia em que a empresa estima o valor que o cliente espera pagar e adapta a proposta.

Legítimo: quando escopo, prazo e qualidade cabem no orçamento acordado.

Problemático: prometer funcionalidade irrealista e depender de cobranças por mudanças depois.

Desenvolvimento dirigido a planos

Trabalho planejado em detalhes. Comum em projetos grandes, contratos formais, sistemas críticos e ambientes regulados.

Seções do plano: introdução, organização, análise de riscos, recursos, divisão de trabalho, cronograma, monitoramento.

Planos complementares: qualidade, validação, configuração, manutenção, desenvolvimento de pessoal.

Sommerville defende equilíbrio. Projetos diferentes pedem combinações diferentes de dirigido a planos e ágil.

Plano monitorável e o ciclo iterativo

Resultados observáveis: "relatório de vendas com exportação CSV até semana 4" em vez de "trabalhar no módulo de relatórios".

Pequenos desvios são normais. Problemas graves (tecnologia não funciona, integração bloqueada) exigem mitigação e renegociação.

Programação de projeto

Decide como o trabalho é dividido, quando executado e por quem.

Envolve: duração, esforço, dependências, alocação de pessoas, datas, marcos e entregáveis.

Atividades → dependências → recursos → pessoas → gráficos. A seta de retorno indica revisão quando há conflito.

Tarefa: duração × esforço

Elemento Significado
Duração Tempo de calendário
Esforço Trabalho humano (pessoas-dia ou mês)
Deadline Data limite
Resultado Evidência de término

Duração e esforço não são a mesma coisa. Tarefa de 10 dias com esforço de 5 → meio período. Com esforço de 20 → duas pessoas em paralelo.

Dependências entre tarefas

Tarefa Duração Dependências
T1: modelo de dados 5d
T2: API de alunos 8d T1
T3: tela de cadastro 6d T2
T4: massa de testes 4d T1
T5: testar cadastro 5d T3, T4

Se T3 atrasar, T5 atrasa. Se T5 é contratual, o atraso se propaga.

Marcos e entregáveis

Conceito Exemplo
Milestone (controle interno) Arquitetura revisada
Entregável (produto ao cliente) Versão executável, relatório
Todo entregável importante pode ser um milestone, mas nem todo milestone é entregue ao cliente.

Representando cronogramas

Tabela, gráfico de barras (Gantt) ou rede de atividades.

2026-05-20T18:16:17.572426 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 1 2 3 4 5 6 Semana T1 T2 T3 T4 T5 T1 requisitos T2 modelo T3 API T4 interface T5 testes

T3 e T4 em paralelo. T5 no final porque depende das duas.

Gráfico de Gantt do livro

Atividades, paralelismo e milestones marcados no calendário.

Alocação de pessoas

O cronograma precisa considerar quem executa. Uma pessoa pode estar em vários projetos, de férias ou ser especialista em parte crítica.

O mesmo cronograma fica inviável quando um especialista está concentrado em uma tarefa ou quando há alocações parciais.

Contingência e prazos realistas

Cronogramas tendem ao otimismo. A equipe imagina o caminho perfeito.

Sommerville recomenda contingência de 30% a 50% conforme incerteza e experiência.

Planejar no limite cria fragilidade: tarefa crítica sem folga, especialista único sem substituto, ambiente externo sem plano B.

Planejamento ágil

Métodos ágeis também planejam, mas evitam detalhar tudo cedo demais.

Nível Horizonte Foco
Release Vários meses Funcionalidades da versão
Iteração 2-4 semanas Histórias do próximo incremento
No XP, o jogo de planejamento envolve toda a equipe e representantes do cliente.

Fluxo do planejamento ágil

PlanejamentoXPhistoriasIdentificarhistóriasestimarEstimarpontoshistorias->estimarreleasePlanejarreleaseestimar->releaseiteracaoPlanejariteraçãorelease->iteracaotarefasPlanejartarefasiteracao->tarefasentregaIncrementoentreguetarefas->entregaentrega->iteracaovelocidade real

Histórias, pontos e velocidade

Conceito Significado
História Funcionalidade valiosa para o usuário
Pontos Estimativa relativa (esforço, complexidade, incerteza)
Velocidade Pontos concluídos por iteração

O ponto não é uma hora. É relativo. Uma história de 8 pontos é maior/mais incerta que uma de 2.

Prazo fixo, escopo variável: se a equipe não conclui todas as histórias, remove as menos prioritárias em vez de estender a iteração.

Limitações do planejamento ágil

Depende de envolvimento real do cliente, equipe estável e coordenação informal.

Projetos grandes frequentemente combinam dirigido a planos (coordenação entre organizações) e ágil (dentro de equipes menores).

Técnicas de estimativa

Estimar é difícil: software é invisível, flexível e dependente de conhecimento humano.

Técnica Força Fragilidade
Experiência Contexto prático Falha em projetos muito novos
Algorítmica Estrutura e repetibilidade Depende de dados difíceis de estimar
Nenhuma técnica elimina julgamento.

Incerteza das estimativas iniciais

Se a estimativa inicial é $x$, o esforço real pode estar entre $0{,}25x$ e $4x$.

Estágio Incerteza
Viabilidade Muito alta
Requisitos Alta
Projeto Moderada
Código Menor
Entrega Esforço real

Quanto mais cedo, maior a faixa de erro. Estimativa inicial não é verdade final.

Estimativa baseada em experiência

Usa conhecimento de projetos anteriores. Melhora quando várias pessoas participam.

Passos: listar entregáveis → decompor → estimar cada parte → discutir divergências → somar + contingência → revisar com o projeto.

Exemplo: módulo de relatórios estimado em 16 dias. O grupo percebe dados inconsistentes → +5 dias para saneamento = 21 dias antes da contingência.

Modelagem algorítmica: COCOMO II

$$ \text{Esforço} = A \times \text{Tamanho}^{B} \times M $$

  • $A$: práticas locais e tipo de software
  • $\text{Tamanho}$: código, pontos de função ou aplicação
  • $B$: expoente (crescimento não linear)
  • $M$: multiplicador (produto, processo, plataforma, equipe)

Projetos maiores não crescem apenas em código. Aumentam comunicação, coordenação, integração e risco.

Submodelos do COCOMO II

Submodelo Uso Medida
Composição de aplicações Protótipos, componentes Pontos de aplicação
Projeto preliminar Após requisitos Pontos de função → código
Reúso Integrar código reusado Código equivalente
Pós-arquitetura Após arquitetura Código + 17 drivers de custo

O submodelo depende da informação disponível no momento.

Pontos de aplicação (modelo de composição)

Fórmula para estimar esforço em pessoas-mês ($PM$):

$$ PM = \frac{NAP \; \times \; \bigl(1 - \frac{\%reúso}{100}\bigr)}{PROD} $$

Variável Significado
$PM$ Esforço estimado (pessoas-mês)
$NAP$ Número de pontos de aplicação (telas, relatórios, módulos, scripts)
$\%reúso$ Porcentagem do sistema que será reaproveitada
$PROD$ Produtividade da equipe (pontos de aplicação por pessoa-mês)

A produtividade depende de experiência, capacidade e ferramentas (ICASE).

Exemplo passo a passo

Protótipo com 80 pontos de aplicação. A equipe estima 25% de reúso. Produtividade: 10 pontos/mês.

Passo 1 — substituir os valores na fórmula:

$$ PM = \frac{80 \; \times \; \bigl(1 - \frac{25}{100}\bigr)}{10} $$

Passo 2 — resolver a porcentagem:

$$ PM = \frac{80 \times 0{,}75}{10} $$

Passo 3 — multiplicar e dividir:

$$ PM = \frac{60}{10} = 6 $$

Resultado: esforço aproximado de 6 pessoas-mês.

A conta não encerra o planejamento. Ela abre conversa sobre premissas, reúso real e riscos.

Drivers de custo (multiplicadores)

Os drivers de custo ajustam a estimativa para cima ou para baixo conforme características do projeto:

Driver Exemplo de impacto
Confiabilidade exigida Sistema crítico exige mais teste e validação
Complexidade do produto Algoritmos complexos exigem mais análise
Restrições de plataforma Memória ou CPU limitada dificulta
Capacidade da equipe Equipe experiente reduz esforço
Maturidade do processo Processo maduro reduz retrabalho
Ferramentas Boas ferramentas aumentam produtividade
Compressão do cronograma Prazo apertado aumenta esforço
Mesmo tamanho de código → esforço diferente. Sistema médico crítico ≠ painel interno simples.

Duração nominal do projeto (TDEV)

Não basta dividir esforço por prazo. 60 pessoas-mês ≠ 60 pessoas em 1 mês.

A fórmula COCOMO para duração nominal em meses de calendário:

$$ TDEV = 3 \times PM^{\,0{,}33 \;+\; 0{,}2 \times (B - 1{,}01)} $$

Variável Significado
$TDEV$ Duração nominal do projeto (meses)
$PM$ Esforço total estimado (pessoas-mês)
$B$ Expoente ligado à complexidade e fatores de escala

O expoente $B$ reflete o overhead de projetos maiores: comunicação, coordenação, integração.

Exemplo: cálculo do TDEV

Projeto com esforço $PM = 60$ e expoente $B = 1{,}17$.

Passo 1 — calcular o expoente da potência:

$$ 0{,}33 + 0{,}2 \times (1{,}17 - 1{,}01) = 0{,}33 + 0{,}2 \times 0{,}16 $$

Passo 2:

$$ 0{,}33 + 0{,}032 = 0{,}362 $$

Passo 3 — aplicar a fórmula:

$$ TDEV = 3 \times 60^{\,0{,}362} $$

$$ TDEV \approx 3 \times 4{,}37 \approx 13 \text{ meses} $$

Com 60 pessoas-mês de esforço, a duração nominal é de aproximadamente 13 meses com uma equipe média de 4 a 5 pessoas.

Compressão de prazo aumenta esforço

Se o cliente exige 11 meses em vez dos 13 nominais (≈25% de compressão).

Situação Prazo Esforço
Nominal 13 meses ~52 pessoas-mês
Comprimido 11 meses ~66 pessoas-mês

Por que o esforço sobe com prazo menor?

  • mais pessoas → mais comunicação
  • mais coordenação entre tarefas paralelas
  • mais integração e controle
Prazo menor pode custar mais, não menos.

Atraso de projeto raramente se resolve só adicionando pessoas. Adicionar tarde demais aumenta comunicação e retrabalho, piorando o atraso.

Próximos passos

Gerenciamento de Qualidade (Capítulo 24).

Padrões, revisões, medições e práticas para aumentar a qualidade do produto e do processo.