Gerenciamento de Projetos

Gráficos de Gantt, Ciclo de vida e e Gerenciamento de Projetos

1. Introdução

Gerenciamento de projetos de software é a disciplina que aplica conhecimentos, habilidades, técnicas e ferramentas para planejar, executar, controlar e finalizar projetos cuja entrega principal é software. Envolve coordenação entre pessoas, processos e tecnologias para transformar requisitos e ideias em produtos de software úteis e com qualidade.

Aspectos centrais:

  • Tríplice restrição: escopo, prazo e custo (e muitas vezes qualidade).
  • Stakeholders: cliente, usuários, patrocinador, desenvolvedores, QA, operações.
  • Artefatos: requisitos, cronogramas, orçamentos, planos de teste, documentação.
  • Objetivo: entregar valor ao usuário/negócio de forma previsível, minimizando riscos e custos.

2. Por que aprender a disciplina de gerenciamento de projetos de software

Motivações principais:

  • Reduz incerteza e risco: técnicas de planejamento e controle minimizam surpresas (atrasos, estouro de custo).
  • Melhora comunicação: artefatos e cerimônias padronizam expectativas entre times e clientes.
  • Aumenta previsibilidade: estimativas, cronogramas e métricas ajudam decisões.
  • Foco em valor: priorização evita trabalho em funcionalidades de pouco impacto.
  • Escalabilidade profissional: habilidade valorizada em todo nível (devs, líderes, PMs).
  • Qualidade e conformidade: processos e QA preservam integridade do produto e reduzem retrabalho.

3. Gráficos de Gantt

Um diagrama de Gantt é um gráfico de barras que representa visualmente o cronograma do projeto: tarefas no eixo vertical, tempo no eixo horizontal. Cada barra mostra a duração da tarefa; dependências podem ser desenhadas com setas; marcos (milestones) são pontos.

Componentes:

  • Tarefas / sub-tarefas (WBS)
  • Duração (datas de início/fim)
  • Dependências (finish-to-start, start-to-start etc.)
  • Milestones
  • Linha de base (baseline) para comparação
  • Recursos atribuídos (opcional)

Como usar: comece pela WBS, estime durações, defina dependências, identifique o caminho crítico e atualize periodicamente.

Vantagens/limitações: bom para visualização temporal e stakeholders; pode ser pesado para projetos iterativos — use Gantt de alto nível em Agile.

4. O que é um projeto e um projeto de software?

Projeto (geral): esforço temporário para criar um produto, serviço ou resultado único. Tem início e fim definidos, recursos limitados e objetivos claros.

Projeto de software: projeto cujo produto é software — com peculiaridades: produto intangível, requisitos mutáveis, importância de testes e integração, dependência de infraestrutura e sistemas legados.

5. Qual é o ciclo de vida do processo de desenvolvimento de software?

Fases típicas (muitas vezes iteradas):

  1. Definição de requisitos: levantamento (entrevistas, user stories), saída: especificações, backlog, critérios de aceitação.
  2. Desenho (design/arquitetura): arquitetura de alto nível, protótipos, interfaces.
  3. Construção (implementação/codificação): programação, revisões de código, builds.
  4. Integração: integração entre módulos, CI.
  5. Teste e depuração (verificação): testes unitários, integração, sistema, aceitação.
  6. Instalação (deploy): entrega em produção, migração de dados.
  7. Suporte / manutenção: correções e evolução contínua.

Em modelos iterativos/agile, essas fases se repetem por iterações (sprints), entregando incrementos.

6. O que é gerenciamento de projetos?

Conjunto de práticas para coordenar pessoas, recursos e atividades para atingir objetivos do projeto dentro das restrições (escopo, tempo, custo, qualidade).

Áreas de conhecimento (resumido):

  • Integração
  • Escopo
  • Tempo
  • Custo
  • Qualidade
  • Recursos humanos
  • Comunicações
  • Riscos
  • Aquisições
  • Stakeholders

Técnicas comuns: WBS, estimativas (analogous, parametric, bottom-up), cronogramas (Gantt, CPM/PERT), matriz RACI, gestão de riscos.

7. O que é desenvolvimento único?

Interpretação: desenvolvimento individual/solo (um único desenvolvedor responsável pelo projeto).

Características: decisões rápidas, menos overhead, alto grau de autonomia, risco de dependência única.

Desafios: escalabilidade limitada, falta de revisão contínua, dificuldade em testes extensivos.

Boas práticas: versionamento (git), CI, testes automatizados, documentação, timeboxing e revisão externa.

8. O que é desenvolvimento de equipe?

Colaboração de múltiplas pessoas com papéis distintos (devs, QA, PO, devops).

Características: distribuição de responsabilidades, necessidade de comunicação e coordenação, possibilidade de paralelizar trabalho.

Boas práticas: definição clara de papéis, CI/CD, convenções de código, revisões por pares, ferramentas de colaboração.

9. Análise de problemas de desenvolvimento de software único e em equipe

Problemas típicos em desenvolvimento solo

  • Risco de conhecimento (bus factor = 1)
  • Sobrecarga e burnout
  • Falta de revisão → bugs e más decisões arquiteturais
  • Dificuldade em testar em larga escala

Mitigações solo: documentação mínima, testes automatizados, uso de bibliotecas maduras, revisão pontual.

Problemas típicos em equipe

  • Comunicação ineficiente → requisitos mal interpretados
  • Integração tardia → conflitos
  • Divergência técnica → padrões inconsistentes
  • Gerenciamento de dependências de recursos

Mitigações equipe: daily standups, CI, padrão de código, revisões de arquitetura, RACI.

10. Análise de termos de domínio

Processo

Conjunto estruturado de atividades que transforma entradas em saídas (ex.: requisitos → design → desenvolvimento → teste). Processos podem ser definidos, medidos e melhorados.

Projeto

Esforço temporário com objetivos e entregas. Diferente de processo (que pode ser repetitivo), o projeto busca um resultado único.

Equipe

Conjunto de pessoas com papéis e responsabilidades. Eficácia depende de skills, liderança e ferramentas.

Produto

O software em si — funcionalidades, documentação e artefatos. Produto tem ciclo de vida além do projeto (manutenção, evolução).

Qualidade

Grau em que o produto atende requisitos e expectativas do usuário: confiabilidade, desempenho, usabilidade, segurança, manutenibilidade.

Relação: processos governam projetos; equipes aplicam processos; produto é resultado; qualidade é objetivo.

11. Recursos do projeto

Tipo de projeto

Novo produto, migração, integração, manutenção, POC, R&D.

Objetivo do projeto

Entregáveis mensuráveis e impacto de negócio (ex.: reduzir churn em X%).

Requisitos de qualidade

Requisitos não-funcionais: performance, segurança, disponibilidade, escalabilidade, conformidade; critérios de aceitação e SLA.

Requisitos de orçamento

Limite total, alocação por fase, reservas para riscos, custo de pessoas, infraestrutura, licenças.

Requisitos de prazo

Data fixa vs. prazo flexível; marcos (milestones); identificar caminho crítico e float.

Como levantar: workshops com stakeholders e definição SMART.

12. Custos do projeto

Custos Diretos

  • Salários da equipe alocada
  • Licenças de software específicas
  • Hardware e infraestrutura dedicada
  • Serviços de terceiros
  • Custos de viagem específicos

Custos Indiretos

  • Aluguel, utilidades
  • Administração e gestão
  • Ferramentas corporativas
  • Overhead (treinamento, seguro)

Gestão de custos: orçamento base + reservas; monitoramento por variação (Cost Variance, CPI).

13. Visão geral dos modelos e metodologias de processos de desenvolvimento

Fases do processo (detalhadas)

  • Definição de requisitos: elicitação, documentação, priorização.
  • Desenho: arquitetura, componentes, decisões técnicas.
  • Construção: codificação, revisão de código.
  • Integração: CI, builds integrados.
  • Teste e depuração: automação, testes de regressão.
  • Instalação: deploy, rollback.
  • Suporte: manutenção corretiva e evolutiva.

Modelo em cascata (Waterfall)

Sequencial; bom para requisitos estáveis e ambientes regulados; rígido para mudanças.

Modelo espiral

Iterativo e orientado a risco; cada ciclo contempla planejamento, análise de risco, engenharia e avaliação. Adequado para projetos grandes/complexos.

Modelo iterativo / incremental

Entrega em incrementos funcionais; feedback rápido; pode corrigir rumo rapidamente.

Agile (paradigma)

Princípios: envolvimento do cliente, entregas frequentes, adaptação a mudanças.

Scrum

Papéis: Product Owner, Scrum Master, Time; eventos: Sprint, Planning, Daily, Review, Retro; artefatos: Backlogs e Increment.

XP (Extreme Programming)

Práticas: TDD, pair programming, CI, refactoring; foco em qualidade e redução da dívida técnica.

RUP (Rational Unified Process)

Framework iterativo com fases: Inception, Elaboration, Construction, Transition. Boa rastreabilidade, pode ficar pesado se mal aplicado.

MSF (Microsoft Solutions Framework)

Conjunto de princípios e papéis orientado a ciclos iterativos; frequentemente usado em ambientes Microsoft.

Análise de modelos e métodos

Critérios de escolha: tamanho, estabilidade dos requisitos, regulação, cultura da organização, risco técnico e experiência da equipe. Estratégia prática: adotar híbridos quando necessário.

14. Gestão da qualidade

Conceitos:

  • Quality Assurance (QA): práticas preventivas — processos, revisões, auditorias.
  • Quality Control (QC): atividades de detecção — testes e inspeções.
  • Qualidade do produto: aderência a requisitos e satisfação do usuário.

Práticas essenciais: estratégia de testes (unit, integração, sistema, aceitação), automação, revisões de código, métricas (defeitos/KLOC, cobertura), gates de qualidade e ferramentas de segurança (SAST/DAST).

Plano de qualidade deve ter objetivos mensuráveis, papéis, critérios de aceitação, métricas e relatórios.

15. Documentação

Tipos:

  • Requisitos: SRS, user stories, critérios de aceitação.
  • Arquitetura & Design: ADRs, visão geral.
  • Código / API: README, OpenAPI/Swagger.
  • Operação: runbooks, scripts de deploy.
  • Testes: planos e resultados.
  • Usuário/treinamento: manuais, release notes.
  • Gestão do projeto: cronogramas, atas, riscos.

Boas práticas: docs vivos no repositório, templates, automatizar geração de docs, rastreabilidade, simplicidade e revisões periódicas.

Dicas práticas finais (resumo executivo)

  • Comece pelo MVP e valide cedo.
  • Use versionamento, CI/CD e testes automatizados desde o início.
  • Priorize comunicação e responsabilidades claras (RACI).
  • Escolha o modelo pelo contexto, não por moda.
  • Mantenha documentação mínima viável atualizada no repositório.
  • Meça: estabilidade do build, lead time, cycle time e defeitos.
  • Para solo: automatize e busque revisões externas. Para equipes: invista em integração e normas de código.