O que são itens de configuração de software?

Gerência de configuração de software, gerência de configuração ou ainda gestão de configuração de software é uma área da engenharia de software responsável por fornecer o apoio para o desenvolvimento de software. Suas principais atribuições são o controle de versão, o controle de mudança e a auditoria das configurações. Roger Pressman, em seu livro Software Engineering: A Practitioner's Approach, especifica que a gerência de configuração de software (GCS) é o:

conjunto de atividades projetadas para controlar as mudanças pela identificação dos produtos do trabalho que serão alterados, estabelecendo um relacionamento entre eles, definindo o mecanismo para o gerenciamento de diferentes versões destes produtos, controlando as mudanças impostas, e auditando e relatando as mudanças realizadas.

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 assim, como evitar que o desenvolvimento fique caótico?

A área da Engenharia de Software que trata esse assunto é a Gerência de Configuração de Software:

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
  • 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 corresponde a uma configuração:

Configuração é o estado do conjunto de itens que formam o sistema em um determinado momento.

As funcionalidades oferecidas pelo controle de versão vão além do simples registro do histórico das configurações. O controle de versão tem outras responsabilidades importantes: possibilitar a edição concorrente sobre os arquivos e a criação de variações no projeto.

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

GCS na Engenharia de Software

A Gerência de Configuração de Software é a base para as demais áreas de Engenharia de Software: Por isso, aparece como requisito de implementação já no nível inicial de diversos modelos de maturidade de processo de desenvolvimento tais como o CMMI-DEV, SPICE e o MPS-Br.

O que são itens de configuração de software?

Do ponto de vista das ferramentas, a divisão entre as áreas não é muito nítida. As ferramentas de controle de mudança e integração contínua oferecem mais funcionalidades do que as exigidas pela GCS e avançam sobre áreas de Gerência de Projeto e Teste & Qualidade.

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.

O que são itens de configuração de software?

Considerações Finais

A Gerência de Configuração de Software é essencial para produzir software de qualidade. Existem diversas ferramentas open source de GCS disponíveis. Por isso, não há desculpa para não usar alguma. E sim, é preciso um esforço inicial para entender os conceitos, definir alguns processos, integrar e aprender a usar as ferramentas, mas é um investimento baixo pelo retorno que oferece.

O que significa item de configuração de software?

O termo item de configuração ou IC é a qualquer componente que necessita ser configurado com o objetivo de se entregar um serviço de TI. Refere-se à unidade estrutural fundamental de um sistema de gerenciamento de configuração.

São ferramentas de Gerência de Configuração de Software?

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).
BitBucket..
Bugzilla..
GitHub..
Phabricator..
Redmine..

Quais as 3 atividades principais no processo de gerenciamento de configurações?

Sob a perspectiva de desenvolvimento, a Gerência de Configuração é dividida em três sistemas principais: controle de modificações, controle de versões e gerenciamento de construção.

Para que serve a gerência de configuração?

Gerenciamento de configuração é o processo usado para manter sistemas computacionais, servidores e softwares em um estado desejado, consistentemente. É uma forma de se certificar de que o sistema funciona como o esperado ainda que alterações sejam são feitas com o passar do tempo.