Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Gerenciamento de configuração e mudanças – Aula 01

Gerência de Configuração e Mudanças (GCM)

Introdução

A disciplina Gerenciamento de Configuração e Mudanças tem como finalidade introduzir o estudante do ensino técnico de nível médio aos fundamentos, conceitos e práticas essenciais para o controle e a organização de artefatos em projetos de software. Em ambientes computacionais reais, sistemas estão em constante evolução: arquivos são modificados, versões são atualizadas, correções são aplicadas e novas funcionalidades são incorporadas. Nesse contexto, a ausência de métodos formais para controlar essas mudanças pode resultar em perda de informações, inconsistências, retrabalho e falhas graves de qualidade. A gerência de configuração surge, portanto, como um conjunto estruturado de atividades que garante rastreabilidade, organização e confiabilidade ao processo de desenvolvimento de software, conforme amplamente discutido por Pressman (2011) e Sommerville (2011).

Ao longo da disciplina, o estudante será conduzido a compreender a atividade de gerência de configuração como parte integrante da engenharia de software, envolvendo a identificação de itens de configuração, o registro de seus atributos, o armazenamento controlado, o controle sistemático de mudanças, o acompanhamento por meio de relatórios de status e o gerenciamento de versões e linhas de base (baselines). Esses conceitos, embora formalizados na literatura clássica da área, são apresentados de maneira progressiva e contextualizada, respeitando o nível técnico do curso e enfatizando a aplicação prática, conforme defendido por Molinari (2007), ao tratar da gerência de configuração como uma prática operacional indispensável, e não apenas como um procedimento documental.

A carga horária total de 120 horas-aula, distribuída entre atividades teóricas (40 h/a) e atividades práticas (80 h/a), reflete a natureza eminentemente aplicada da disciplina. O planejamento prioriza o aprendizado ativo em laboratório, permitindo que o estudante vivencie situações reais de controle de versões, organização de repositórios e gestão de mudanças, ao mesmo tempo em que constrói uma base conceitual sólida. Além disso, a disciplina estabelece uma ponte direta com práticas contemporâneas de DevOps e integração contínua, evidenciando como a gerência de configuração sustenta a automação, a colaboração em equipe e a entrega confiável de software, aspectos centrais no cenário atual da tecnologia da informação (SATO, 2013; HUMBLE; FARLEY, 2014).

Por fim, esta disciplina busca desenvolver no estudante não apenas competências técnicas, mas também uma postura profissional baseada em disciplina, organização e responsabilidade sobre o próprio trabalho, características essenciais para sua atuação futura no mercado de tecnologia. Ao compreender e aplicar os princípios da gerência de configuração e mudanças, o aluno estará mais preparado para integrar equipes de desenvolvimento, compreender processos industriais de software e lidar de forma consciente com a complexidade inerente à evolução de sistemas computacionais.

1. Conceito de Configuração em Sistemas de Software

A configuração de software refere-se às características físicas e funcionais de um software, conforme especificadas na documentação técnica ou encontradas no produto final. Essencialmente, é o conjunto de todos os documentos, programas, itens de dados e componentes de suporte que compõem o software.

Em termos práticos, a configuração de software é toda a informação gerada durante o processo de desenvolvimento, incluindo:

  • Programas de computador (código-fonte e executáveis).
  • Documentos que descrevem os programas, procedimentos ou regras de negócio (documentação técnica e do usuário final).
  • Estruturas de dados, sejam internas aos programas ou externas a eles.

A disciplina de Gerência de Configuração e mudanças (GCM) é o processo de padronizar essas configurações de recursos e manter a consistência dos componentes do aplicativo e do servidor ao longo do tempo.

2. Problemas Clássicos Sem Controle de Configuração

Quando um software é desenvolvido sem o devido controle de configuração, a evolução do projeto pode levar rapidamente ao caos.

A Primeira Lei da Engenharia de Sistemas afirma que, independentemente do estágio do ciclo de vida, o sistema sempre se modificará, e o desejo de modificá-lo persistirá. Sem controle adequado, ocorrem problemas graves:

  • Aumento de Risco e Erros: Introduzir defeitos torna-se mais provável quando as alterações são feitas sem análise prévia, registro formal ou comunicação à equipe.
  • Atrasos e Custos: A falta de controle pode levar a atrasos nas entregas, aumento de custos e retrabalho.
  • Inconsistência no Ambiente (“Configuration Drift”): Alterações manuais na configuração dos ambientes (como digitar diretamente em um servidor) podem levar a erros de digitação ou documentação desatualizada. Ambientes diferentes podem começar a divergir em suas configurações, tornando a depuração complexa.

Exemplos de Falhas Clássicas:

  • Problemas de Integração por Documentação Obsoleta: Um projeto que envolvia subsistemas separados falhou na integração final porque uma das equipes estava usando um documento de especificação funcional desatualizado há seis meses.
  • Falha de Produção por Configuração Manual: Um engenheiro de deploy se esqueceu de atualizar um arquivo de configuração com a URL correta do banco de dados ao implantar em produção. O erro só foi detectado pelos usuários no dia seguinte, quando o sistema utilizava o banco de dados errado.

3. Terminologia Fundamental

A Gerência de Configuração possui conceitos essenciais para garantir que o desenvolvimento do software seja previsível e controlável:

Termo Descrição
Gerência de Configuração de Software (GCS) Disciplina que garante a integridade do software, gerenciando sua evolução e controlando as mudanças através do ciclo de vida.
Item de Configuração (IC/ICS) Qualquer elemento do produto de software (código, documento, dados, etc.) que é identificado, único e gerenciado como uma unidade.
Baseline (Configuração-Base) Um conjunto de ICs que foi formalmente revisado e aprovado, marcando um estágio de desenvolvimento. Após o estabelecimento de uma baseline, quaisquer alterações só podem ser feitas por meio de um processo formal de controle.
Repositório Local (base de dados) onde os ICs são armazenados e controlados, mantendo-se o histórico de versões e metadados (quem alterou, quando e por quê).
Controle de Versão Procedimentos e ferramentas para gerenciar as diferentes versões dos ICs criados, registrando o histórico de todas as alterações.
Controle de Mudança Processo formal que combina procedimentos humanos e ferramentas para controlar todas as alterações propostas, desde a solicitação inicial até a implementação e aprovação.
Check-in / Check-out Processo de cópia e aprovação de ICs do repositório para a área de trabalho do desenvolvedor (check-out) e vice-versa (check-in).

4. Evolução Histórica da Gerência de Configuração

A Gerência de Configuração de Software (GCS) evoluiu de uma disciplina estritamente militar para uma prática essencial em todas as indústrias de software:

  • Anos 50: A Gerência de Configuração (GC) nasce nos Estados Unidos, impulsionada pelo Departamento de Defesa para gerenciar projetos complexos, como a produção de aviões de guerra e naves espaciais.
  • Anos 60 e 70: Surge a Gerência de Configuração de Software (GCS), mas o foco principal permanece em aplicações militares e aeroespaciais.
  • Anos 80 e 90: O foco muda do setor militar para organizações civis. Surgem as primeiras normas e padrões internacionais de qualidade de software, como a ISO e o IEEE, que assimilam as práticas de GCS.
  • Sistemas de Versão Precursores: Surgem ferramentas de controle de versão, como o CVS (Concurrent Versions System), que foi amplamente utilizado por ser um dos primeiros sistemas abertos e facilitar a colaboração.
  • Anos 2000 em diante: Surgem os Sistemas de Controle de Versão Distribuídos (DVCS), como Git e Mercurial, que são mais rápidos e oferecem novas topologias de trabalho (como o trabalho offline e branching facilitado).

5. Importância no Contexto Industrial

A GCS é crucial para o sucesso de qualquer projeto de software por vários motivos, sendo um elemento central na garantia da qualidade e na eficiência operacional:

  • Qualidade e Conformidade: A GCS é um requisito indispensável para obter certificações de qualidade de processo reconhecidas internacionalmente, como o CMM/CMMI Nível 2 e o MPS-BR Nível F.
  • Integridade e Rastreabilidade: A GCS mantém a integridade dos produtos de trabalho ao longo do ciclo de vida. Ela garante que as modificações sejam rastreadas e controladas de forma sistemática.
  • Eficiência Operacional: Permite que as empresas padronizem as configurações de recursos, o que leva à escalabilidade, eliminando a necessidade de configurar manualmente cada servidor e reduzindo erros. Isso minimiza o esforço humano necessário para manter e evoluir o sistema.
  • Suporte a Mudanças: Em vez de impedir alterações (o que é inevitável), a GCS fornece subsídios para gerenciá-las de forma eficaz, garantindo que as modificações ocorram de maneira controlada.

 

Click to listen highlighted text!