Aula 01 — Gerência de configuração por inteiro: conceitos, as quatro atividades e os papéis
Gerência de Configuração
Curso
Engenharia de Software
Carga Horária
40 horas
Encontros
Terças, quinzenais
Local
Lab 3.52
1. Uma história antes da definição
Uma equipe de quatro pessoas entrega um sistema. Duas semanas depois, o cliente relata um bug que “não existia antes”. Ninguém sabe ao certo qual versão está no servidor do cliente. Duas pessoas juram não ter mexido naquele arquivo. E não há como voltar à versão que funcionava.
Antes de qualquer definição, vale parar nessa cena e listar o que deu errado. Não é uma coisa só — são quatro ou cinco problemas diferentes acontecendo juntos, e cada um tem nome técnico.
A disciplina inteira cabe nessa história. No último encontro do semestre, vale voltar a ela: a essa altura, você vai conseguir nomear cada peça e dizer o que teria evitado.
2. Isso não é problema de equipe grande
A reação comum é achar que gerência de configuração é coisa de empresa com centenas de desenvolvedores. Dois cenários mostram que não.
Sozinho
Em equipe
O primeiro caso é o mais importante dos dois, porque contraria a intuição. Você não precisa de outra pessoa para perder o controle do que fez. Basta o tempo passar.
Se você não controlar as mudanças, elas acabarão controlando você.
3. O que é gestão de configuração de software
Ao desenvolver software, mudanças são inevitáveis — e é por isso que a disciplina existe. A gestão de configuração de software (SCM, de Software Configuration Management) é o conjunto de atividades destinadas a gerenciar essas mudanças.
Ela envolve cinco coisas:
Identificar os artefatos que mudam
Estabelecer relações entre eles
Definir mecanismos de versionamento
Controlar as alterações
Auditar e relatar
Gerência de configuração não é Git
Como saber que está sendo feito direito
Três critérios objetivos:
- Cada artefato pode ser identificado, rastreado e controlado.
- Toda alteração pode ser rastreada e analisada.
- Todos os que precisam saber de uma mudança foram informados.
4. Item de configuração
Qualquer elemento associado a um projeto de software que tenha sido colocado sob controle de configuração é um item de configuração — SCI, de software configuration item. Frequentemente há várias versões do mesmo item, cada uma com identificação própria.
| Categoria | Exemplos |
|---|---|
| Programas de computador | código-fonte, executável |
| Produtos que descrevem os programas | guias, manuais, documentação técnica, diagramas |
| Dados ou conteúdo | bancos de dados gerados, arquivos de configuração, dados de sensores, entradas do usuário |
A parte difícil é decidir
Saber a lista é fácil. O que rende discussão é o que entra e o que fica de fora num projeto concreto — e errar para mais é tão ruim quanto errar para menos. Colocar coisa demais sob controle produz burocracia que ninguém segue.
Um critério que costuma resolver:
Isto precisa ser reproduzido depois, exatamente como está?
A pasta de dependências baixadas não entra — ela se reconstrói a partir do arquivo que lista as dependências, e esse, sim, entra. A senha do servidor não entra; o arquivo de exemplo que documenta quais variáveis de ambiente existem, entra.
5. Baseline
Uma baseline é uma configuração aprovada e congelada num ponto do tempo, que passa a servir de referência. Antes dela, o artefato muda livremente. Depois, muda por processo formal.
A analogia que ajuda: a baseline é a foto oficial. Você só consegue discutir o que mudou porque existe a foto. Sem ela, “o sistema mudou” é uma frase sem conteúdo — mudou em relação a quê?
Baseline não é a primeira versão
Este é o conceito que menos gente entende de primeira e o que mais aparece em prova. Vale voltar a ele quando falarmos de tags, no Encontro 3.
6. As quatro atividades
Sommerville organiza a gerência de configuração em quatro atividades relacionadas. As quatro são apresentadas hoje, e cada uma volta mais adiante com nome de ferramenta: o que aqui é conceito, no laboratório é comando.
Gerenciamento de mudanças
Rastrear as solicitações de mudança feitas por clientes e desenvolvedores, avaliar os custos e os impactos de cada uma, e decidir se e quando implementá-la.
Vira issue e revisão de pull request no Encontro 4
Gerenciamento de versões
Controlar as várias versões dos componentes do sistema e garantir que alterações feitas por desenvolvedores diferentes não causem conflito entre si.
Vira branch, merge e tag nos Encontros 2 e 3
Construção de sistema
Montar componentes, dados e bibliotecas, compilar e ligar tudo para produzir um sistema executável — de forma reproduzível.
Vira GitHub Actions e imagem Docker nos Encontros 5 e 6
Gerenciamento de releases
Preparar o software para liberação externa e rastrear quais versões foram entregues a quais clientes.
Vira tag anotada e changelog no Encontro 3
A mesma coisa, dita de outro jeito
Pressman descreve a gerência de configuração em quatro passos, e à primeira vista parece outra teoria:
- Identificar a alteração
- Controlar a alteração
- Assegurar que ela esteja sendo implementada corretamente
- Relatar as alterações aos demais interessados
Não é. As duas descrevem o mesmo processo com recortes diferentes: as atividades de Sommerville dizem o que a equipe faz — são operacionais, distribuídas ao longo do projeto. Os passos de Pressman descrevem o ciclo de uma alteração, do pedido ao aviso. Uma é o mapa; a outra é o percurso.
Ideia central
7. Atividade 1: gerenciamento de mudanças
Toda mudança em um sistema em produção percorre um caminho. Quando esse caminho não está definido, ele acontece assim mesmo, só que de forma improvisada: alguém pede no corredor, outro alguém implementa no fim da tarde, e ninguém registra por quê.
O material da disciplina descreve o percurso em seis etapas.
Solicitação de mudança
Alguém pede: correção de um defeito, funcionalidade nova ou melhoria de algo que já existe. O pedido precisa estar registrado em algum lugar que não seja a memória de quem ouviu.
Verificação e análise inicial
Esse pedido já foi feito antes? O problema descrito realmente existe? Ele é pertinente ao sistema? Boa parte das solicitações morre aqui, e isso é saudável.
Avaliação de impacto e estimativa
Que itens de configuração são afetados, quanto custa implementar e qual o risco de mexer ali. É a etapa que separa decisão de palpite.
Aprovação
O CCB decide se a mudança entra e quando. Em equipe pequena não há comitê formal, mas o papel continua existindo: alguém aprova.
Implementação
Só agora se mexe no código. Implementar antes de aprovar é o atalho mais comum e o que mais gera retrabalho.
Validação e documentação
A mudança fez o que prometeu? O registro está completo o bastante para alguém entender daqui a um ano por que aquilo mudou?
Quem forma o CCB numa equipe de cinco pessoas?
O CCB, ou Change Control Board, é a instância que aprova a mudança. Em uma fábrica de software com trezentas pessoas, é um comitê que se reúne. Na sua equipe de estágio, é o desenvolvedor mais experiente decidindo em cinco minutos se vale a pena mexer naquilo antes da entrega.
Reconhecer que o papel existe mesmo sem comitê formal é metade do aprendizado desta atividade. A outra metade é perceber que, quando ninguém ocupa o papel, quem decide o que entra no sistema é quem tem mais pressa.
Onde isso reaparece
8. Atividade 2: gerenciamento de versões
Esta é a atividade que a turma já conhece de vista, porque é a que tem ferramenta popular. O risco é justamente esse: aprender os comandos e pular o critério.
Quando abrir uma linha separada
Por que revisar antes de juntar
Versões antigas continuam vivas
Conflito não é acidente
Versionamento semântico
A pergunta prática de toda equipe é qual número escrever na próxima versão. O padrão que o mercado adota responde isso com três campos:
MAJOR . MINOR . PATCH
- PATCH sobe na correção que não muda o comportamento de quem usa o sistema. De 1.4.2 para 1.4.3.
- MINOR sobe na funcionalidade nova que não quebra nada do que já existia. De 1.4.3 para 1.5.0.
- MAJOR sobe quando algo que funcionava para de funcionar: um endpoint removido, um campo que mudou de nome, um contrato alterado. De 1.5.0 para 2.0.0.
Repare que o número não mede esforço. Uma correção de uma linha que quebra a compatibilidade sobe o MAJOR; três meses de trabalho compatível sobem o MINOR. O que o número comunica é o risco de atualizar, e é por isso que quem consome a sua biblioteca lê essa informação antes de instalar.
9. Atividade 3: construção de sistema
Construir um sistema não é apenas compilar. É reunir componentes, bibliotecas, dados e configuração e produzir algo que executa, de forma que outra pessoa consiga repetir o processo e obter exatamente o mesmo resultado.
Os três ambientes
Desenvolvimento
Servidor de construção
Ambiente-alvo
“Funciona na minha máquina”
Duas consequências práticas. A primeira: o build parte da baseline, do que está registrado e aprovado, nunca do diretório de trabalho de um desenvolvedor. A segunda: se construir exige uma sequência de passos manuais que só uma pessoa conhece, a atividade não está sob controle. Automatizar é um comando, recompilação mínima e testes junto.
Como saber se um componente mudou
Duas assinaturas são usadas para isso. O timestamp registra quando o arquivo foi gravado; o checksum resume o conteúdo em um valor calculado a partir dele.
O segundo é mais confiável, e o caso que mostra a diferença é banal: abrir o arquivo, salvar sem alterar nada. O timestamp muda, o checksum não. Quem confia no relógio reconstrói o que não precisava.
10. Atividade 4: gerenciamento de releases
Uma frase resolve a confusão mais comum desta parte da disciplina: nem toda versão construída é liberada. Uma equipe ativa constrói o sistema várias vezes por dia. Libera talvez uma vez por mês.
Release é a versão que atravessa a fronteira da equipe e chega a quem usa. Por isso ela carrega compromissos que a construção não tem.
- O pacote em si, construído a partir de uma baseline identificada.
- A documentação atualizada para a versão que está saindo, e não para a anterior.
- A comunicação da mudança: o que entrou, o que saiu e o que exige atenção de quem atualiza.
- O registro de qual versão foi entregue a qual cliente, que é o que permite suporte.
Changelog
O changelog é a comunicação da mudança em forma de arquivo. Ele não é o histórico de commits despejado num texto: aquele registro é para a equipe, escrito na linguagem de quem alterou o código. O changelog é para quem usa o sistema, e responde a uma pergunta diferente: o que mudou para mim, e preciso fazer alguma coisa por causa disso?
O critério que resolve na prova
11. Auditoria, verificação e normas
As quatro atividades produzem registros. Auditar é conferir se esses registros correspondem à realidade.
Auditoria da configuração
Verificação
Modelos de melhoria de processo como o CMMI e o MPS.BR tratam gerência de configuração como área de processo obrigatória. Não é formalidade: em domínios certificados, como dispositivo médico e aviônica, é preciso demonstrar que cada requisito foi rastreado até a versão que o implementa e o teste que o verifica. Sem gerência de configuração, essa demonstração é impossível.
Para quem vai prestar concurso ou trabalhar com setor público
12. Quatro pessoas olhando para a mesma coisa
Um cenário concreto, para fechar: um produto de cerca de 15 mil linhas, seis engenheiros de software, várias tarefas com prazo. Quatro papéis envolvidos — e cada um enxerga a gerência de configuração de um jeito diferente.
Gerente de projeto
Garante o prazo, monitora o processo e conduz as revisões do sistema.
Enxerga a CM como: Mecanismo de auditoria
Gerente de configuração
Garante os procedimentos e a política, controla as mudanças e distribui atividades.
Enxerga a CM como: Mecanismo de controle, rastreamento e política
Engenheiro de software
Desenvolve os artefatos e coordena a mesclagem do trabalho da equipe.
Enxerga a CM como: Mecanismo de alteração, criação e controle de acesso
Cliente
Usa o produto, sugere melhorias e relata defeitos.
Enxerga a CM como: Mecanismo de garantia de qualidade
A conclusão que importa: um sistema de gerência de configuração precisa atender aos quatro ao mesmo tempo. É por isso que a melhor ferramenta não é a que tem mais recursos — é a que serve a papéis diferentes sem atrapalhar nenhum deles.
13. Como a disciplina funciona
São oito encontros, quinzenais, mais a prova final. Esta aula de hoje é a única expositiva do semestre: toda a teoria está aqui. Da próxima em diante, o encontro acontece no laboratório, com você digitando comando e entregando resultado antes de sair da sala.
Encontro 1 — o processo
Encontros 2 a 8 — laboratório
O semestre inteiro
| Data | Encontro | O que você entrega |
|---|---|---|
| 11/08 | Gerência de configuração por inteiro | Quiz de fechamento |
| 25/08 | Git na prática: repositório, commits, histórico | Repositório versionado com README de regras |
| 08/09 | Branches, merge, conflito, tag e changelog | Conflito resolvido, tag v1.0.0 e changelog |
| 22/09 | P1 · GitHub: issue, pull request e revisão | Issue levada até o merge, com revisão de um colega |
| 06/10 | Equipe: fluxo completo, proteção de branch, Actions | Workflow rodando a cada push |
| 20/10 | Docker: imagem, container e Dockerfile | Sua aplicação rodando em container |
| 03/11 | Docker Compose: API, banco e front-end | Stack que sobe com um comando |
| 17/11 | Orquestração em panorama · entrega final | Repositório documentado e apresentação de 5 min |
| 01/12 | P2 | Prova |
A atividade é feita e entregue dentro da aula
O repositório criado em 25/08 é o mesmo até dezembro. A cada encontro ele ganha uma camada: histórico, ramificações, colaboração, automação, container, stack completa. No fim do semestre você tem uma coisa só, inteira, que dá para mostrar em entrevista.
Avaliação
MB1 = P1 × 0,7 + MT1 × 0,3
MB2 = P2 × 0,5 + MT2 × 0,5
MF = (MB1 + MB2) ÷ 2
Frequência mínima de 75%. A menor das duas provas pode ser substituída pela substitutiva. Os quizzes de fechamento não valem nota, mas contam na pontuação de participação.
Repare no peso do segundo bimestre
Os encontros são quinzenais
14. Síntese
- Gestão de configuração é o conjunto de atividades para gerenciar as mudanças inevitáveis do desenvolvimento de software.
- O problema aparece no projeto individual e no coletivo — não é questão de tamanho de equipe.
- Item de configuração é qualquer elemento colocado sob controle. O critério de decisão é se aquilo precisa ser reproduzido depois.
- Baseline é uma configuração aprovada e congelada, que serve de referência para medir mudança.
- As quatro atividades de Sommerville: gerenciamento de mudanças, de versões, construção de sistema e gerenciamento de releases.
- Uma solicitação de mudança percorre seis etapas, e a aprovação vem antes da implementação. Quem aprova é o CCB, exista ou não um comitê formal.
- No versionamento semântico, o número comunica risco de atualizar, não esforço gasto.
- Construção monta o executável a partir da baseline; release é a versão que chega ao cliente. Nem toda versão construída é liberada.
- Auditoria compara o que está na baseline com o que foi aprovado, e é o que sustenta exigência de norma como CMMI e MPS.BR.
- Os quatro passos de Pressman descrevem o mesmo processo por outro recorte — não são teorias concorrentes.
- Gerente de projeto, gerente de configuração, engenheiro de software e cliente esperam coisas diferentes do mesmo sistema.
15. Perguntas para fixação e estudo
A avaliação desta aula foi feita em sala
As quinze perguntas abaixo são o roteiro de estudo deste encontro. Elas não valem nota e não têm entrega: servem para você conferir sozinho se o vocabulário ficou, e são a melhor preparação para a P1, que cobra exatamente isto.
Responda por escrito, para você mesmo, em até cinco linhas cada. As perguntas 2, 5 e 9 pedem posicionamento e não têm resposta única — nelas o que importa é a consistência do argumento.
- Explique, com suas palavras, o que é gestão de configuração de software.
- Descreva uma situação da sua própria experiência em que a falta de controle de mudanças custou tempo.
- Por que o exemplo do desenvolvedor sozinho é relevante numa disciplina sobre configuração?
- O que é um item de configuração? Dê três exemplos de categorias diferentes.
- Um arquivo de senhas do servidor deve ser um item de configuração? Justifique pelos dois lados.
- O que é uma baseline e por que ela é necessária para se falar em mudança?
- Nomeie e descreva as quatro atividades de gerenciamento de configuração segundo Sommerville.
- Uma equipe implementa a mudança e depois pede aprovação. Que etapas do processo foram invertidas, e o que se perde com isso?
- Sua equipe tem cinco pessoas e nenhum comitê formal. Quem exerce o papel do CCB, e o que acontece quando ninguém o exerce?
- Uma correção de uma linha remove um campo que outros sistemas usavam. Qual número da versão sobe, e por quê?
- Por que o build deve partir da baseline, e não do diretório de trabalho de um desenvolvedor?
- Qual a diferença entre construção de sistema e gerenciamento de releases?
- O que uma auditoria de configuração verifica, e por que ela não se confunde com teste?
- Em que sentido os quatro passos de Pressman e as quatro atividades de Sommerville descrevem a mesma coisa?
- Por que um gerente de projeto e um engenheiro de software esperam coisas diferentes de uma mesma ferramenta de configuração?
16. Para a próxima aula
- Instale o Git e crie uma conta no GitHub. Não precisa aprender nada ainda, mas quem chegar sem o ambiente pronto não consegue fazer a atividade avaliativa do dia.
- Leitura: capítulo de gestão de configuração em Pressman, e a especificação do versionamento semântico em semver.org, que tem tradução para o português.
- Escolha um projeto seu, de qualquer disciplina, e liste no papel tudo o que ele produz: arquivos, documentos, dados. Esse projeto vira o repositório que você vai usar até dezembro.
17. Referências
📚 Estudo desta aula
- PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. Capítulo sobre gestão de configuração de software.
- SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Addison Wesley, 2014. Capítulo 25 — Gerenciamento de configuração.
- FERREIRA, Arthur G. Design patterns e gerência de configuração: do projeto ao controle de versões. São Paulo: Saraiva, 2021.
📖 Leitura complementar
- GONÇALVEZ, Priscila de F.; BARRETO, Jeanine dos S.; ZENKER, Aline M. Testes de software e gerência de configuração. Porto Alegre: Grupo A, 2019.
- FREEMAN, Emily. DevOps Para Leigos. Rio de Janeiro: Alta Books, 2021.
- MONTEIRO, Eduarda R.; CERQUEIRA, Marcos V. B.; SERPA, Matheus da S. DevOps. Porto Alegre: Grupo A, 2021.
O conteúdo desta página é paráfrase das obras indicadas. A seção sobre baseline é síntese a partir da terminologia de Sommerville (cap. 25) — ao estudar, confira a redação da edição adotada.