Mudanças durante o desenvolvimento de software são inevitáveis; o ambiente no qual o sistema opera muda, o entendimento dos usuários e desenvolvedores sobre o sistema muda, os requisitos mudam. Com tantas mudanças, faz-se necessário a Gerência de Configuração.
Gerência de Configuração de Software (GCS) é um conjunto de atividades de apoio que permite a absorção ordenada das mudanças inerentes ao desenvolvimento de software, mantendo a integridade e a estabilidade durante a evolução do projeto.
As atividades da GCS e as respectivas ferramentas de apoio são:
Controlar e acompanhar mudanças (Controle de Mudança)
Registrar a evolução do projeto (Controle de Versão)
Estabelecer a integridade do sistema (Integração Contínua)
Controle e Acompanhamento de Mudanças
Mudanças aparecem durante todo o desenvolvimento e devem ser registradas, avaliadas e agrupadas de acordo com sua prioridade. Com base nessas informações, é possível planejar melhor o escopo, prazo e o custo de cada iteração. Em seguida, à medida que o desenvolvimento acontece, pode-se acompanhar o estado da solicitação da mudança até sua implementação e até o lançamento de uma versão em produção.
Existem várias ferramentas disponíveis que executam essas ações. Alguns exemplos (em ordem alfabética) são:
BitBucket
Bugzilla
GitHub
GitLab
Jira
Phabricator
Redmine
Trac
Registro da Evolução do Projeto
Cada vez que uma solicitação de mudança é implementada, acontece um incremento na evolução do projeto que deve ser registrado no histórico. Este incremento na evolução corresponde a uma configuração:
Configuração é o estado do conjunto de itens que formam o sistema em um determinado momento.
O controle de versão é a parte principal da GCS. É o elo comum entre o controle de mudança e a integração do projeto.
Exemplos de ferramentas de controle de versão:
Git
Mercurial
Subversion
Verificação da Integridade do Sistema
O objetivo da integração é verificar se a construção do sistema a partir dos itens registrados em uma configuração é bem sucedida.
Integrar o sistema consiste em construir o sistema a partir dos itens registrados em uma configuração.
Em termos práticos, a integração é feita através de scripts que automatizam a construção, testes e e também a coleta de métricas de qualidade. As ferramentas de integração contínua acompanham o controle de versão e disparam os scripts cada vez que uma nova configuração é registrada.
Exemplos de ferramentas de integração contínua:
BuildBot
CircleCI
CodeClimate
CodeShip
Concourse
Drone.io
Jenkins
Travis CI
Fluxo de Trabalho
As solicitações de mudança ficam registradas no controle de mudança. Em seguida, um desenvolvedor se torna o responsável pela implementação de uma solicitação e registra a configuração resultante no controle de versão, o que dispara a integração contínua para execução da construção e testes automatizados, além da coleta de métricas da qualidade do código. Os resultados são apresentados imediatamente a toda equipe, que podem tomar as providências necessárias em caso de qualquer problema.
Fonte: https://blog.pronus.io/posts/o-que-eh-gerencia-de-configuracao-de-software/