Veja nossos cursos relacionados à Gerência de Configuração

Curso de Gerência de Configuração com Trac e Subversion


Início > Artigos & Tutoriais > O que é gerência de configuração?

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

Autor: André Felipe Dias. Última atualização em 20/09/2011

1. Introdução

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?

2. 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.

3. 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.
Para uma visão mais detalhada do assunto, consulte o tutorial sobre controle de versão.

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.

4. 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:

Tipo de Ferramenta Open Source Comercial
Controle de Versão
Controle de Mudança
Integração Contínua

A quantidade de funcionalidades, a maturidade, a documentação e o suporte disponíveis, e a popularidade de cada ferramenta variam bastante. Embora as ferramentas comerciais geralmente apresentem mais funcionalidades e um maior grau de integração, o custo de licenciamento muitas vezes torna o seu uso proibitivo principalmente para micro e pequenas empresas de software.

As ferramentas open source, por outro lado, possuem diversas vantagens além do custo mais baixo de aquisição tais como qualidade, segurança, independência de fornecedor, possibilidade de adequação a necessidades específicas, estabilidade e suporte técnico. Estas características tornam a escolha por ferramentas open source uma solução extremamente interessante não só para micro e pequenas empresas.

A análise comparativa das diversas ferramentas listadas está fora do escopo deste artigo. Mas para não ficar no ar a questão de qual uma boa alternativa, deixamos aqui a nossa recomendação:

Escolha da Pronus
Controle de Versão Subversion é uma ferramenta open source de controle de versão centralizado que foi construída para substituir o CVS, mas seguindo o mesmo modelo de funcionamento.

O Mercurial representa a mais nova geração de ferramentas de controle de versão distribuído e possui uma interface de comandos que é uma evolução dos comandos do Subversion.
Controle de Mudança Trac é uma ferramenta open source de controle de mudanças em projetos de software além de oferecer serviços adicionais de integração com o Subversion, documentação e acompanhamento do projeto, e relatórios informativos.

Veja o artigo sobre o Trac para mais informações sobre a ferramenta.
Integração Contínua Jenkins|Jenkins é uma ferramenta para integração contínua que gerencia os passos de construção, teste automatizados.

As ferramentas sugeridas formam uma solução integrada que atende plenamente às necessidades GCS.

5. 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 principalmente para micro e pequenas empresas. 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.

A Pronus oferece serviços de consultoria e treinamento em Gerência de Configuração e em ferramentas open source de apoio. Consulte o calendário das próximas turmas ou fale conosco para saber sobre a realização de turmas fechadas para sua empresa.

< voltar

Outros artigos & tutoriais

Quais seus horários disponíveis para treinamento?
Horário comercial
À noite
Sábados
Fim de semana inteiro