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):
- Definição de requisitos: levantamento (entrevistas, user stories), saída: especificações, backlog, critérios de aceitação.
- Desenho (design/arquitetura): arquitetura de alto nível, protótipos, interfaces.
- Construção (implementação/codificação): programação, revisões de código, builds.
- Integração: integração entre módulos, CI.
- Teste e depuração (verificação): testes unitários, integração, sistema, aceitação.
- Instalação (deploy): entrega em produção, migração de dados.
- 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.