Gerência de Configuração e Mudanças

Veja neste artigo uma introdução à Gerência de Configuração e Mudanças que está presente nos mais importantes modelos de ciclo de vida de desenvolvimento de software e é adotado por diversas organizações.

As mudanças são constantes e inevitáveis no que tange o desenvolvimento de software. Isso ocorre porque o entendimento dos usuários mudam conforme as suas necessidades, o ambiente muda constantemente, a legislação está em constante mudança e os requisitos também sempre mudam. Com tantas mudanças necessitamos de alguma forma de gerenciamentos para que o desenvolvimento não siga em direção ao caos.

Dessa forma, surgiu a Gerência de Configuração de Software (GCS), ou em inglês Software Configuration Management (SCM), que é um conjunto de atividades de apoio que permitem controlar as mudanças que ocorrem no desenvolvimento de software, mantendo a estabilidade na evolução do projeto.

Entre outras coisas a Gerência de Configuração de Software responde a algumas questões como: Quais mudanças aconteceram no sistema? Por que essas mudanças aconteceram? O sistema continua íntegro mesmo após as mudanças?

Para entendermos um pouco mais o que vem a ser a Gerência de Configuração de Software é interessante definirmos o que vem a ser configuração. Configuração de um sistema é uma coleção de versões específicas de itens de configuração como hardware ou software que são combinados de acordo com procedimentos específicos de construção para servir a uma finalidade particular. A Gerência de Configuração de Software por sua vez é uma disciplina que identifica 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.

Alguns dos produtos que podemos colocar sobre o gerenciamento de configuração incluem: Hardware e equipamentos, desenhos ou modelos, especificação de produtos, ferramentas, códigos e bibliotecas, compiladores, ferramentas de testes e scripts de testes, log de instalação, publicações técnicas de produtos, planos, histórias de usuários, backlog das iterações, descrições dos processos, requisitos, documentação de arquitetura, processos, etc.

Portanto, a configuração é o estado do conjunto de itens que formam o sistema em um determinado momento e a Gerência de Configuração de Software é quem controla a evolução dessas configurações durante o ciclo de vida do projeto.

Quer se aprofundar mais na Engenharia de Software? Não deixe de conferir nossos cursos online de Engenharia de Software.

A importância da Gerência de Configuração de Software é comprovada quando analisamos os diversos modelos de maturidade de desenvolvimento. Alguns modelos como o CMMi, MPS-Br e o SPICE incluem a disciplina de Gerência de Configuração de Software. Se observarmos o RUP podemos notar que a Gerência de Configuração e Mudanças é uma disciplina dentro do processo de desenvolvimento. Esta disciplina explica como controlar e sincronizar a evolução do conjunto de Produtos de Trabalho que compõem o sistema de software. Entre as tarefas realizadas dentro da disciplina de Gerência de Configuração e Mudanças temos a atividade Gerenciar Solicitações de Mudanças em que é dada uma consideração adequada ao impacto de mudanças no projeto e é onde as mudanças aprovadas são feitas de maneira consistente em um projeto. A tarefa Planejar Controle de Mudança e Configuração do Projeto estabelece um plano adequado para gerenciar e controlar mudanças para os artefatos desenvolvidos como produtos de trabalho do processo de desenvolvimento do software. A tarefa Criar Ambientes para CM do Projeto estabelece um ambiente, no qual o produto geral possa ser desenvolvido, construído e disponibilizado aos envolvidos. A tarefa Monitorar e Relatar o Status de Configuração fornece visibilidade para a atividade de alteração de configuração pelo monitoramento e relatório contínuos. A tarefa Alterar e Liberar Itens de Configuração gerencia os artefatos do projeto e o trabalho envolvido a partir da criação inicial como artefatos particulares por meio da entrega e da disponibilidade geral para a equipe do projeto e dos envolvidos. A tarefa Gerenciar Baselines e Releases garante que conjuntos consistentes de artefatos dependentes ou relacionados possam ser identificados como parte de uma "baseline" para várias partes de uma "baseline" para várias finalidades, como a identificação de release, versões do produto, maturidade do artefato ou integralidade.

No modelo CMMi, o nível dois trás o “Configuration Management (CM) (CMMI-DEV)” que é responsável por estabelecer e manter a integridade dos produtos de trabalho usando a identificação da configuração, controle de configuração, status da configuração e auditoria da configuração. Entre as atividades envolvidas temos a identificação da configuração de um produto de trabalho selecionado que compõe a baseline em um dado ponto do tempo, o controle de mudanças, a construção ou especificação para construir produtos de trabalho do sistema de gerenciamento de configuração, manter a integridade da baseline e prover status e informação da configuração atual para desenvolvedores, usuários e clientes.

Nas próximas seções veremos as atividades e ferramentas de gerência de configuração de software.

Atividades e Ferramentas de Gerência de Configuração de Software

A Gerência de Configuração de Software é formada pelas atividades de Controle de Versão, Controle de Mudanças e Integração Contínua. Nas próximas seções detalharemos mais cada uma dessas atividades bem como as ferramentas envolvidas em cada uma delas.

Controle de Versão

Esta atividade é responsável por apoiar as atividades de controle de mudanças e integração contínua. Basicamente o Controle de Versão fornece os seguintes serviços:

Entre os aplicativos Open Source disponíveis para o controle de versão temos o Mercurial, Git, Subversion e o CVS. Os aplicativos comerciais disponíveis temos o Team Foundation Server da Microsoft, Team Concert da IBM/Rational, StarTeam, entre outros.

As ferramentas mais utilizadas na indústria de software atualmente têm sido o SVN e o Mercurial que tem crescido bastante. O CVS já foi bastante utilizado, mas há anos tem sido substituído pelo SVN.

Controle de Mudanças

Esta atividade é responsável por fornecer um serviço complementar ao serviço oferecido pelo sistema de controle de versão onde o foco desse tipo de ferramenta está nos procedimentos pelos quais as mudanças de um ou mais itens de configuração são propostas, avaliadas, aceitas e aplicadas. O Controle de Mudanças fornece os seguintes serviços:

Entre os aplicativos Open Source disponíveis para o controle de mudanças temos o Trac, Redmine, Mantis e o Bugzilla. Os aplicativos comerciais disponíveis temos o JIRA, FogBUGZ, CaliberRM, Perforce.

As ferramentas mais utilizadas na indústria de software atualmente têm sido o Mantis, Redmine e o Bugzilla. Todas essas ferramentas tem uma excelente aceitação sendo consideradas bastante robustas, mas ao mesmo tempo objetivas e com uma interface limpa.

Integração Contínua

Esta atividade é responsável por garantir que as mudanças no projeto são construídas, testadas e relatadas tão logo quanto possível depois de serem introduzidas. Todo esse processo é executado geralmente após cada mudança publicada no sistema de controle de versão ou em intervalos de tempo pré-definidos.

A integração contínua é realizada através da combinação de duas ferramentas separadas onde uma faz a construção do software e a outra monitora alterações no controle de versão e dispara a primeira para a construção.

Entre os aplicativos Open Source disponíveis para a integração contínua temos o Bitten, SCons, Ant, Maven, CruiseControl, Gump, TinderBox, entre outros. Os aplicativos comerciais disponíveis temos o AntHill Pro, FinalBuilder, e o BuildForge.

As ferramentas mais utilizadas na indústria de software atualmente têm sido o Ant, mas que tem sido substituído cada vez mais pelo Maven. O CruiseControl e o Jenkins tem sido bem utilizado também, mas ainda estão em crescimento.

Escolhendo a ferramenta

Cada uma das ferramentas tem uma quantidade de funcionalidades, maturidade, documentação e suporte, além da sua própria popularidade. Embora as ferramentas comerciais normalmente possuam mais funcionalidades e um suporte diferenciado, nem sempre isso é uma verdade determinante em relação às ferramentas Open Source no caso das ferramentas para a gerência de configuração e mudanças. Isso porque as ferramentas Open Source disponíveis atualmente possuem alta qualidade, muitas funcionalidades integradas e um suporte grande da comunidade ou suporte de uma empresa especializada em casos que esse suporte seja necessário, o que torna uma opção muito viável e utilizada por grandes organizações atualmente.

No restante do artigo veremos na prática como funciona uma das ferramentas para o controle de mudanças mais utilizados e conhecidos nas organizações, o Bugzilla. Veremos como podemos criar um novo usuário, criar novos bugs, buscar por um bug através de pesquisas simples e complexas, entre outras funcionalidades e aspectos da sua interface.

Ferramenta de Controle de Mudanças Bugzilla

O Bugzilla é uma ferramenta de controle de mudanças baseada na Web que dá suporte ao desenvolvimento de software. O Bugzilla é utilizado em diversas empresas, entre elas o projeto Mozilla. De forma geral tem-se que o Bugzilla é utilizado por mais de 1268 projetos, organizações e empresa ao redor do planeta. O Bugzilla rastreia defeitos e serve como uma plataforma de solicitação de recursos. Em algumas empresas, por exemplo, os clientes tem acesso ao Bugzilla e podem solicitar mudanças, funcionalidades, reportar bugs, etc.

Além disso, o Bugzilla é um projeto de software livre mantido por diversos voluntários e organizações internacionais como a NASA, NBC, entre outros.

O Bugzilla está licenciado sob a MPL (Mozilla Public License) e foi desenvolvida na linguagem Perl com uso dos bancos de dados MySQL, Oracle, PostgreSQL e SQLite.

Nas próximas seções veremos como podemos navegar pelo Bugzilla criando usuários que terão acesso ao sistema, realizando pesquisas simples e avançadas, e por fim como cadastrar bugs no sistema. A versão utilizada na próxima seção não necessita de instalação, podendo ser utilizada apenas para testar as funcionalidades do Bugzilla.

Para instalar a ferramenta numa máquina podemos visitar o site oficial,onde se encontra todo o passo a passo para realizar a instalação do Bugzilla versão 4.4.5.

Existem também demos para outras ferramentas de controle de mudanças, como o DEMO para o Mantis, e o DEMO para o JIRA.

Navegando no Bugzilla

Para testar a ferramenta Bugzilla podemos visitar o seu site oficialque contém um demo para que possamos testar a ferramenta. Segue na Figura 1 a tela inicial do Bugzilla.

Figura 1. Tela inicial do Bugzilla

O primeiro passo para utilizar o Bugzilla é criarmos um novo usuário. Para isso devemos selecionar a opção “Open New Account”. Após isso deveremos informar nosso endereço de e-mail, pois receberemos uma confirmação se realmente queremos abrir uma conta no Bugzilla e uma URL para finalizar o cadastro. Segue na Figura 2 a tela de solicitação de e-mail para criar a conta na ferramenta.

Figura 2. Preenchendo os dados do endereço eletrônico para acessar a ferramenta

Agora devemos ir até o nosso e-mail e verificar o e-mail recebido. Na descrição do e-mail clique na URL indicada para continuar o processo de criação da conta. Segue nas Figuras 3 e 4 o e-mail recebido.

Figura 3. E-mail recebido pelo Bugzilla
Figura 4. Descrição do e-mail para criação da conta

Após clicar na primeira URL acima seremos encaminhados para a tela de prosseguimento do cadastro. Basta colocarmos o nome e uma senha de seis caracteres. Após isso basta clicar em “Create”. Segue na Figura 5 a tela.

Figura 5. Tela de cadastramentos de dados

Após isso receberemos uma tela de confirmação que a conta foi corretamente criada conforme indica a Figura 6 abaixo.

Figura 6. Tela de confirmação

Agora que a nossa conta foi criada corretamente podemos começar a cadastrar bugs, pesquisa-los, etc. Para cadastrar um bug clique em “New” no canto inferior esquerdo da tela conforme ilustra a Figura 7 abaixo.

Figura 7. Selecionando a opção para criação de um bug no Bugzilla

Agora devemos selecionar o produto onde o bug foi encontrado. A titulo de exemplo selecionamos o produto “WorldControl”, conforme mostra a tela da Figura 8.

Figura 8. Selecionando o produto para cadastrar o bug

Com isso já podemos cadastrar um bug no Bugzilla conforme ilustra a tela da Figura 9.

Figura 9. Cadastrando um bug no Bugzilla

Na tela de cadastramento de bugs temos as opções “Component” que é um segundo nível de categoria que pertence a um produto em particular (Bugs são categorizados em Produtos e Componentes), “Version” que se refere à versão do sistema na qual o bug foi encontrado, “Severity” que é o nível de severidade do bug sendo cadastrado (ou se é uma melhoria), “Hardware” que é o hardware em que o bug foi encontrado, “OS” que se refere ao sistema operacional em que se manifestou o problema, “Summary” é uma pequena sentença que sucintamente descreve o que é o bug, “Description” que é uma descrição completa do bug e "Attachment"na qual podemos adicionar documentos, imagens capturadas, ou qualquer outra informação que ajude na identificação e resolução do bug. Por fim clicamos em "Submit Bug" para submeter o bug ao Bugzilla.

O interessante é que quando começamos a digitar qualquer coisa em “Summary” o Bugzilla nos apresenta possíveis duplicatas, o que ajuda a não inserirmos bugs repetidos na ferramenta. Segue na Figura 10 o Bugzilla apresentando algumas opções conforme vamos digitando os caracteres no campo Summary.

Figura 10. Opções de possíveis bugs duplicados são exibidos abaixo de “Summary” conforme vamos digitando

Após submeter o bug ainda podemos configurar diversas outras opções conforme ilustra a Figura 11 abaixo.

Figura 11. Outras configurações referentes ao bug sendo cadastrados

Entre as opções adicionais temos o "Assigned To" em que se define alguém para consertar o bug, "URL" onde o bug pode ser encontrado, "Keywords" para definir palavras chaves de forma a facilitar encontrarmos o bug no sistema de busca, entre outros.

Para mais informações sobre o significado dos campos disponíveis basta visitarmos o site do Bugzilla https://landfill.bugzilla.org/bugzilla-4.0-branch/page.cgi?id=fields.html, que contém diversas informações referente as opções disponíveis no Bugzilla.

Para fazer uma pesquisa aos bugs cadastrados podemos utilizar o menu principal clicando no ícone de pesquisa em “Search” ou então podemos utilizar o campo “Search” no canto superior conforme mostra a Figura 12.

Figura 12. Realizando uma busca no Bugzilla

Na tela de pesquisa procuramos pelo bug “controle de temperatura”, conforme ilustra a Figura 13 abaixo.

Figura 13. Pesquisando por bugs no sistema

Após a pesquisa temos como resultado o nosso bug encontrado conforme ilustra a Figura 14.

Figura 14. Resultado da pesquisa realizada

Podemos melhorar a pesquisa clicando em “Advanced search” conforme mostra a imagem abaixo:

Figura 15. Selecionando a pesquisa avançada

Na tela de pesquisa avançada podemos definir melhor a pesquisa de um bug conforme ilustra a Figura 16 abaixo.

Figura 16. Definindo opções para a busca avançada
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados