Pular para o conteúdo principal

O que é Gerência de Configuração de Software?

Mudanças durante o desenvolvimento são inevitáveis; o entendimento dos usuários sobre suas necessidades muda, o ambiente no qual o sistema vai operar muda, a legislação muda, os requisitos mudam. Com tantas mudanças assim, é necessária alguma forma de gerenciamento para que o desenvolvimento não fique caótico.

Gerência de Configuração de Software (GCS) é um conjunto de atividades de apoio que permite a absorção controlada das mudanças inerentes ao desenvolvimento de software, mantendo a estabilidade na evolução do projeto.

A GCS responde às seguintes questões básicas, que depois são desmembradas em outras questões mais específicas:

  1. Quais mudanças aconteceram no sistema?
  2. Por que essas mudanças aconteceram?
  3. O sistema continua íntegro mesmo depois das mudanças?

Definições

Para entender melhor a forma como a GCS funciona, são necessárias algumas definições. A primeira delas é a respeito do que é uma configuração:

Configuração de um sistema é uma coleção de versões específicas de itens de configuração (hardware, firmware ou software) que são combinados de acordo com procedimentos específicos de construção para servir a uma finalidade particular.

Então, o que seria exatamente "gerenciar" a configuração?

GCS é a disciplina de identificar a configuração de um sistema em diferentes pontos no tempo com a finalidade de controlar sistematicamente as mudanças realizadas, mantendo a integridade e rastreabilidade da configuração através do ciclo de vida do sistema.

Em outras palavras, a configuração é o estado do conjunto de itens que formam o sistema em um determinado momento; e a GCS é o controle da evolução dessas configurações durante o ciclo de vida do projeto.

A GCS é extremamente útil e importante. Por isso, faz parte de modelos importantes de maturidade de processo de desenvolvimento tais como o CMMi, MPS-Br e o SPICE.

Segundo o CMMi, as atividades relacionadas à GCS são:

  • Identificação da configuração dos produtos de trabalho selecionados que compõem as baselines em um determinado ponto no tempo;
  • Controle das mudanças nos itens de configuração;
  • Construção ou fornecimento de especificações para construir produtos de trabalho a partir do sistema de gerenciamento de configuração;
  • Manutenção da integridade das baselines;
  • Fornecimento de dados precisos de status e configuração corrente a desenvolvedores, usuários finais e clientes.

    Baseline é uma configuração formalmente aprovada para servir de referência para o desenvolvimento posterior do sistema.

GCS do Ponto de Vista das Ferramentas de Apoio

Do ponto de vista das ferramentas existentes, a GCS é formada pelas seguintes atividades:

Gerência de Configuração

Controle de Versão

É a espinha dorsal de toda a gerência de configuração, apoiando as atividades de controle de mudança e integração contínua. Fornece os seguintes serviços:

  • Identificação, armazenamento e gerenciamento dos itens de configuração e de suas versões durante todo o ciclo de vida do software;
  • Histórico de todas as alterações efetuadas nos itens de configuração;
  • Criação de rótulos e ramificações no projeto;
  • Recuperação de uma configuração em um determinado momento desejado do tempo.

Controle de Mudança

Fornece um serviço complementar ao oferecido pelo sistema de controle de versão. O foco desse tipo de ferramenta é nos procedimentos pelos quais as mudanças de um ou mais itens de configuração são propostas, avaliadas, aceitas e aplicadas.

Oferece serviços para identificar, rastrear, analisar e controlar as mudanças nos itens de configuração.

Integração Contínua

Para as necessidades da GCS, bastaria um controle de construção de software que cuidasse da identificação, empacotamento e preparação de uma baseline para a entrega a um cliente externo ou interno, tornando-a uma release ou uma build respectivamente.

A idéia de utilizar uma integração contínua, entretanto, vai um pouco mais além. O objetivo é garantir que as mudanças no projeto são construídas, testadas e relatadas tão logo quanto possível depois de serem introduzidas.

Em projetos de software, a construção do software é feita pela recuperação da configuração correta no sistema de controle de versão e a construção dos arquivos executáveis e de instalação do produto. Este processo é executado geralmente após cada mudança publicada no sistema de controle de versão ou em intervalos de tempo pré-definidos.

Geralmente, são combinadas duas ferramentas separadas: uma que faz a construção do software e outra que monitora alterações no controle de versão e dispara a primeira para a construção.

Ferramentas de Apoio

Existem diversas ferramentas disponíveis para apoiar atividades de GCS. De acordo com a classificação utilizada neste artigo, alguns exemplos são:

Controle de Versão
Controle de Mudança
Integração Contínua

Considerações Finais

A preocupação com a melhoria do processo de desenvolvimento vem sendo impulsionada por exigências do mercado por mais qualidade e da produtividade do desenvolvimento. Muitas empresas têm revisto seus processos e procurado se capacitar no mercado cada vez mais competitivo.

A Gerência de Configuração é essencial para manter o desenvolvimento de software controlável. Contudo, ainda é grande o número de empresas que ainda não utilizam nenhum tipo de GCS ou que utilizam apenas o controle de versão nos seus projetos. As causas para essa situação são o desconhecimento da amplitude e importância da GCS e o desconhecimento das ferramentas de apoio existentes.

Gerência de Configuração é uma atividade que deve ser usada em todos os projetos de desenvolvimento de software. A existência de várias opções de ferramentas open source torna a implantação da GCS mais fácil. Porém, é necessário algum esforço para a adequação ao processo e treinamento específicos.

Referências

  • [SWEBOK] Software Engineering Body of Knowledge, 2004.
  • [CMMi] CMMI for Systems Engineering/Software Engineering/Integrated Product and Process Development/Supplier Sourcing, Version 1.1, Continuous Representation (CMMI-SE/SW/IPPD/SS, V1.1, Continuous). Technical Report CMU/SEI-2002-TR-011.

Comentários

Comments powered by Disqus