Gerenciamento de Configuração
de Software (GCS)
Profa. Juliana Wolf
Objetivos da Aula
● Compreender o conceito e a importância do Gerenciamento de
Configuração de Software (GCS).
● Conhecer os processos e atividades fundamentais do GCS.
● Identificar ferramentas utilizadas no controle de versões e
mudanças.
● Analisar como o GCS contribui para a qualidade do produto de
software.
Introdução ao GCS
● O que é Gerenciamento de Configuração de Software?
○ Gerenciamento de Configuração de Software é uma disciplina
da engenharia de software que visa controlar e rastrear as
modificações feitas nos artefatos de software ao longo do ciclo
de vida do projeto.
Introdução ao GCS
Segundo Pressman:
“O GCS é um conjunto de atividades de suporte que
tem como objetivo gerenciar mudanças de forma
sistemática e garantir a integridade do produto de
software ao longo de seu desenvolvimento e
manutenção.”
Introdução ao GCS
● Os softwares mudam frequentemente, os sistemas podem ser
pensados como um conjunto de versões, que precisa ser mantido e
gerenciado.
● Versões implementam propostas de mudanças, correções de
defeitos, e adaptações de hardware e sistemas operacionais
diferentes.
● O GCS se interessa pelas políticas, processos e ferramentas para
o gerenciamento de sistemas de software que sofrem mudanças.
○ Você precisa de GCS porque é fácil perder a noção de quais
mudanças e versões de componentes foram incorporadas em
cada versão do sistema.
Introdução ao GCS
● GCS no Ciclo de Vida do Software
○ Aplicável desde a especificação até a manutenção.
○ Fortemente conectado com qualidade de software
○ Suporta práticas ágeis e tradicionais.
Introdução ao GCS
● Importância
○ Previne perda de dados e inconsistência de versões.
■ Evita perda de código ou documentos
○ Garante integridade e rastreabilidade.
○ Suporte a equipes distribuídas e projetos ágeis.
■ Facilita trabalho em equipe
○ É essencial para auditorias e garantia da qualidade.
■ Suporta auditorias e reuso
○ Melhora a qualidade e a manutenção do software
Introdução ao GCS
● Riscos da ausência de GCS
○ Sobrescrita de arquivos
○ Falta de controle de versões
○ Problemas de entrega
○ Dificuldade de manutenção
○ Dificuldade de cumprir com requisitos de qualidade e normas
(ex: ISO 9001, CMMI)
Termos do GCS
Itens de Configuração (ICs)
Definição: Qualquer artefato de software que deve ser gerenciado.
Exemplos:
● Código-fonte
● Documentação de requisitos
● Especificações
● Diagramas UML
● Scripts de banco de dados
● Casos de teste
Fluxo de trabalho do GCS
Atividades do GCS
Identificação de Configuração
● Estabelece quais artefatos serão controlados.
● Criação da Estrutura de Configuração de Itens.
Controle de Versão
● Gerencia múltiplas versões de ICs.
● Ferramentas: Git, Subversion (SVN), Mercurial.
● Branches e merges.
Controle de Mudança
● Processo formal para aprovar ou rejeitar modificações.
● Envolvimento de um Comitê de Controle de Mudanças.
● Registro de solicitações de mudança (RFC).
Atividades do GCS
Auditoria de Configuração
● Verificação da conformidade dos ICs.
● Garantia de integridade e rastreabilidade.
● Verifica se:
○ As mudanças aprovadas foram implementadas
○ Os documentos estão atualizados
○ As versões estão corretas
Relato de Status da Configuração
● Relatórios sobre o estado atual dos ICs.
● Traz histórico de mudanças, autores, datas, status.
Gerenciamento de mudanças
● Sistemas de software estão sujeitos a solicitações contínuas de
mudanças:
• De usuários;
• De desenvolvedores;
• De forças de mercado.
● O gerenciamento de mudanças está relacionado à manutenção da
rastreabilidade dessas mudanças, de modo que:
• Reparos realmente corrijam falhas
• Novas falhas introduzidas por reparos possam ser identificadas rapidamente
• Seja fácil descobrir quais mudanças foram implementadas e quando
O processo de gerenciamento de mudanças
1. É realizada uma solicitação de mudança em um item de configuração.
2. A solicitação é avaliada (considerando modificações nos itens relacionados).
3. Se aprovada, é realizado o check-out do item de configuração e ninguém
mais pode acessá-lo, exceto quem está executando as alterações.
4. As alterações são avaliadas.
5. Se aprovadas, é realizado o check-in (a nova versão do item de
configuração é disponibilizada e uma nova baseline é estabelecida).
O processo de gerenciamento de mudanças
Acompanhamento de mudanças
● O maior problema no gerenciamento de mudanças é o
acompanhamento do status da mudança.
● Ferramentas de gerenciamento de mudanças fornecem meios para se
acompanhar a situação de cada solicitação de mudança
○ Automaticamente enviam solicitações de mudança para as
pessoas certas no tempo certo.
Comitê de controle de mudanças
● As mudanças podem ser revisadas por um grupo externo, que
○ decide se elas são ou não adequadas em termos de custo, tempo
e risco
○ ponto de vista estratégico ou organizacional ao invés de um ponto
de vista técnico.
● O grupo deve ser independente do responsável de projeto pelo
sistema. Esse grupo é, algumas vezes, chamado de comitê de controle
de mudanças (CCB).
● O CCB pode conter representantes do cliente e do pessoal fornecedor.
Ferramentas de GCS
Ferramenta Tipo Características
Git Distribuído Rápido, com
ramificação
SVN Centralizado Simples, usado em
legados
Mercurial Distribuído Similar ao Git
Gerenciamento de versões e releases
● Elaborar um esquema de identificação para versões de sistema.
● Planejar quando uma nova versão de sistema será produzida.
● Assegurar que procedimentos e ferramentas de gerenciamento das
versões sejam adequadamente aplicados.
● Planejar e distribuir releases da nova versão do sistema.
Versões/variantes/releases
● Versão
○ É uma instância de um sistema que é funcionalmente distinta, de
alguma maneira, de outras instâncias de um sistema.
● Variante
○ Uma versão de um sistema que tem apenas pequenas diferenças
com relação a outras instâncias (normalmente devido a diferenças
no hardware/software alvo)
■ Ex.: O Office para MacOS é uma variante do Office para
Windows
● Release
○ É uma instância de um sistema distribuída para os usuários fora
da equipe de desenvolvimento.
■ Ex. Office 2019
Identificação de versões
● Os procedimentos para identificação do versionamento devem definir
uma maneira não ambígua de identificar versões
● Existem técnicas básicas para identificação de componentes:
○ Numeração de versões;
■ V1, V1.1, V1.2, V2.1, V2.2…
○ Identificação baseada em atributos;
■ Data, Criador, Linguagem de Programação, Cliente, Status,
entre outros.
Codelines e baselines
● Um codeline é uma sequência de versões de código que evolui ao
longo do tempo.
○ Normalmente se aplicam a componentes de sistemas de modo que
existem diferentes versões de cada componente.
● Um baseline é uma versão aprovada e registrada de um conjunto de
artefatos (código, requisitos, documentos, etc.) que serve como
referência estável.
○ Especifica as versões dos componentes que estão incluídos no
sistema além de uma especificação das bibliotecas usadas, arquivos
de configuração, etc.
Codelines e baselines
Branching e Merging
● Um elemento fundamental do gerenciamento de configuração
● Compromisso entre produtividade e risco
● Branching: Consiste em usar diferentes “ramos” de desenvolvimento
para aumentar o paralelismo
○ Cada ramo é chamado de branch
○ Código não é compartilhado entre branches
● Merging: a combinação de um desses ramos com o ramo principal
○ Processo de unir as mudanças de um branch ao outro
○ Diferenças entre os branches combinados precisam ser resolvidas
Algumas Razões para se Criar um Branch
● Implementar uma solicitação de mudança
● Implementar uma funcionalidade pontual
● Paralelizar o desenvolvimento dos componentes do sistema
○ Aplicável ao desenvolvimento paralelo de diferentes versões do sistema
○ Atribuição de tarefas a diferentes partes da equipe de desenvolvimento
○ Trabalhar em novas funcionalidades sem afetar o código principal
○ Corrigir bugs de forma isolada
○ Testar ideias sem comprometer a versão estável
Branching e Merging
Gerenciamento de mudanças e métodos ágeis
● Em alguns métodos ágeis, os clientes estão diretamente envolvidos
no gerenciamento de mudanças.
● Propor uma mudança nos requisitos e trabalhar com a equipe para
avaliar o seu impacto e decidir se a mudança deve ter prioridade
sobre os recursos planejados para o próximo incremento do sistema.
● As mudanças para melhorar o software são decididas pelos
programadores que trabalham no sistema.
● A refatoração, em que o software é melhorado continuamente, não é
vista como uma sobrecarga, mas como uma parte necessária do
processo de desenvolvimento.
GCS e Qualidade de Software
O GCS é um processo de suporte essencial:
● Rastreabilidade melhora a verificação de requisitos.
● Menor risco de regressões e bugs não controlados.
● Facilita auditorias e certificações (ex: ISO 9001, CMMI).
● Suporte essencial à Integração Contínua e Entrega Contínua.
Está relacionado aos requisitos da norma ISO 9001:2015 (controle de
mudanças, documentação, rastreabilidade).
Conclusão
● Gerenciamento de configuração é o gerenciamento de um sistema de
software em evolução.
● Durante a manutenção de um sistema, uma equipe é responsável para
garantir que as mudanças sejam incorporadas ao sistema de uma forma
controlada e que os registros são mantidos com os detalhes das mudanças
que foram implementadas.
● Gerenciamento de mudanças envolve avaliar propostas de mudanças do
sistema de clientes e outros stakeholders e decidir se é efetivo
implementá-las em um novo release de um sistema.
● Gerenciamento de versões envolve manter o acompanhamento das
diferentes versões de componentes de software.