Introdução ao Processo de Gerência de Configuração de Software

Por giuliano souza | 04/11/2008 | Tecnologia

1 - Introdução

A configuração de software engloba todos os artefatos que são confeccionados para se produzir um sistema computacional que deverão ser controlados, incluindo desde a documentação do escopo inicial até a fase de manutenção. Como todo software deve evoluir para atender as necessidades mutáveis do cliente, é certo que toda essa documentação deverá sofrer muitas alterações no decorrer do ciclo de vida. Se essas mudanças não forem bem gerenciadas, a equipe terá grandes problemas e poderá até perder o controle sobre o sistema.

Neste estudo, pretende-se estabelecer os fundamentos da gerência de configuração de software, seus benefícios e as ferramentas automatizadas que podem contribuir para sua implementação.

2 – O Problema da Manutenção de Software

Para compreender o aspecto de configuração de sistemas, é preciso entender como eles são originados. A rotina de trabalho diária de milhares de pessoas em todo o mundo está condicionada à execução de tarefas que demandam tempo e atenção para serem realizadas. É o caso, por exemplo, de um auxiliar de escritório que precisa fechar o movimento de caixa de uma loja no final do dia. Utilizando o formulário de papel próprio e que não pode ser rasurado, ele começa o trabalho. Lá pelas tantas, comete um erro e é obrigado a começar tudo de novo. Não é raro essas pessoas terem que refazer o preenchimento uma dezena de vezes até que esteja tudo correto e sem rasuras. Problemas como o descrito acima, levaram à busca de soluções que culminaram na informatização de processos, pois os computadores poderiam auxiliar em muito as pessoas, uma vez que facilitam a execução de tarefas repetitivas. Agora, com um clique de botão é possível gerar todo o movimento de caixa.

Da mesma forma, centenas de milhares de rotinas foram racionalizadas de forma que pudessem ter suas tarefas executadas ou auxiliadas por sistemas computacionais. Esse fato leva a muitas vantagens, destacando a economia de mão-de-obra, de tempo e de dinheiro. Entretanto, no intuito de informatizar as tarefas, os sistemas tornaram-se extremamente dependentes delas, ou seja, se a regra de negócio de uma rotina de trabalho sofrer modificações, sua contraparte informatizada também deverá ser alterada.

Modificações nas rotinas de trabalho podem acontecer a qualquer época e por vários motivos. O que deve ser compreendido é que elas são um fato normal no desenvolvimento do programa. Clientes querem modificar requisitos, desenvolvedores querem modificar a abordagem técnica e gerentes querem modificar a estratégia do projeto.Com o passar do tempo, as partes envolvidas ficam sabendo mais sobre o que necessitam. Esse conhecimento adicional é a origem da maioria das modificações.

Reunindo as causas mais comuns de alterações pode-se destacar:

·Novas condições do negócio ou do mercado alteram os requisitos da tarefa. Exemplo: um plano de saúde passar a aceitar um número limitado de dependentes quando antes era ilimitado;

·Mudanças nas leis que regulamentam o processo. Um novo dispositivo em uma lei que regulamenta um processo gera um novo requisito que deve ser implementado no sistema;

·Novas necessidades do cliente exigem modificações nos dados produzidos;

·Reorganização, aumento ou diminuição dos negócios causam modificações nas prioridades do projeto;

3 – Gerenciamento de Configuração de Software

Como visto no capítulo anterior, alterações em sistemas são inevitáveis no decorrer do seu ciclo de vida. O problema é que elas aumentam o grau de confusão entre os analistas que estão trabalhando em um projeto quando as modificações não são analisadas antes de serem feitas; quando as modificações não são registradas antes de serem implementadas; não são relatadas para aqueles que têm necessidade de saber delas e não são controladas para melhorar a qualidade e reduzir os erros.

Gerência de Configuração de Software, ou simplesmente GCS, é um conjunto de atividades desenvolvidas para administrar modificações ao longo do ciclo de vida do sistema computacional. As principais atividades da GCS são:

·Identificar os produtos de trabalho que podem ser modificados, estabelecendo relacionamento entre eles;

·Definir mecanismos para administrar as diferentes versões desses produtos de trabalho;

·Controlar as modificações impostas e fazendo auditoria e preparando relatórios sobre as modificações realizadas.

·Garantir que os procedimentos e políticas para criar, modificar e testar o código estão sendo seguidos;

·Tornar acessível as informações sobre o projeto.

A GCS pode ser vista como uma atividade de garantia de qualidade de software aplicada ao longo de todo seu processo de desenvolvimento.

Um dos principais mecanismos para permitir o controle sobre as modificações de código é fazer com que o usuário preencha uma solicitação oficial de manutenção. Esta deverá ser avaliada por uma comissão de controle de modificação que será responsável por aprovar e autorizar as modificações. Um histórico da evolução dos componentes do sistema deverá ser mantido junto com um registro das razões para sua modificação

Gerência de Configuração de Software também é conhecida pelo seu acrônimo em língua inglesa SCM (Software Configuration Menagement).

3.1 – Itens de Configuração de Software

Itens de configuração de software são todos os artefatos confeccionados durante o projeto de um software que serão controlados pela gerência de configuração. Segundo Pressman, há três categorias principais de itens de configuração:

·Programas de computador, tanto na forma de código fonte quanto de arquivos executáveis;

·Aplicativos que auxiliam tanto técnicos quanto usuários;

·Os dados manipulados e/ou gerados por sistemas computacionais;

3.2 - Processo de Gerência de Configuração

Para se alcançar os benefícios da tecnologia da gerência de configuração, há que se conhecer seu processo que é dividido em uma série de tarefas que têm quatro objetivos principais: [PRESSMAN, 2006, p.606] identificar os itens que definem coletivamente a configuração do software; gerir modificações em um ou mais desses itens; facilitar a construção de diferentes versões de uma aplicação e garantir que a qualidade do software seja mantida à medida que a configuração evolui ao longo do tempo.

Podem-se estabelecer quatro tarefas básicas para a gerência de configuração: identificação, controle de versão, controle de modificação e auditoria de configuração. Isso significa que após a criação de cada elemento de software, chamado também de item de configuração, este deverá ser identificado, ter suas solicitações de modificações registradas, ter suas versões controladas, possibilitar consultas (relatórios) e conferências. Cada uma dessas tarefas será vista com mais detalhes a seguir.

3.2.1 – Identificação dos Itens de Configuração

Quando um novo item de configuração é criado, deve-se identificá-lo unicamente no contexto dando-lhe um nome, uma descrição e uma lista de recursos. É importante ainda considerar os relacionamentos existentes com outros objetos.

3.2.2 – Controle de Versão

É uma operação que combina procedimentos e ferramentas para gerenciar versões diferentes de objetos de configuração criados durante o processo. Um sistema de controle de versões precisa de:

·Um banco de dados de projeto: um repositórioque armazena todos os itens de configuração relevantes;

·Um gerenciador de versionamento que deve permitir o registro histórico de cada item de configuração e fornecer informações de diferenças entre versões;

3.2.3 – Controle de Modificações

Como visto anteriormente, modificações são inevitáveis e precisam ser realizadas. Mas modificações feitas sem controle podem levar a uma série de erros. Para evitar a confusão, as modificações solicitadas precisam ser analisadas (quanto aos impactos causados), relatada, autorizadas, revisadas e auditadas. Um controle de modificações formal que utilize tanto processos manuais como ferramentas automatizadas de controle de versão é de vital importância para que o processo de gerência de configuração seja implantado.

3.2.4 – Auditoria de Configuração

Mesmo fazendo uso de mecanismos de controle bem-sucedidos, os gerentes podem acompanhar as modificações somente até determinado ponto, esquecendo de verificar se as mesmas serão realmente implementadas. Para garantir que as modificações sejam adequadamente implementadas, pode-se utilizar duas técnicas:

a) Revisão técnica formal: enfoca a correção técnica do item de configuração que foi modificado determinado sua consistência em relação a outros itens, omissões e efeitos colaterais em potencial;

b) auditoria de configuração de software: complementa a revisão técnica formal avaliando também se alguma modificação adicional foi incorporada, se o processo de software foi seguido, se os documentos formais foram preenchidos corretamente e se todos os itens relacionados foram adequadamente atualizados.

4 – Ferramentas de Auxílio na Gerência de Configuração

Embora não esteja disponível no mercado uma ferramenta que possibilite automatizar todas as tarefas da gerência de configuração, pode-se elencar algumas que possuem recursos para gerenciar as principais atividades da GCS como gerenciamento dos itens de configuração, disponibilidade de informação para a equipe e controle de versões. Nesses quesitos, destacaremos três ferramentas bastante conhecidas: o Visual SourceSafe da Microsoft, o StarTeam da Borland e o Subversion. Apenas o último possui código aberto e é gratuito para uso comercial.

De uma forma simplista, pode-se dizer que o objetivo principal desse tipo de ferramenta é o armazenamento dos itens de configuração e o posterior controle da versão dos mesmos durante o processo de desenvolvimento. É possível armazenar vários tipos de itens de configuração como códigos-fonte de programas, formulários, scripts de banco de dados, tabelas, consultas, planilhas, entre outros, em suas diversas versões . Isto permite uma comparação  de qualquer objeto para cada versão, ou seja, é possível comparar o código de uma classe da versão 1.0 com o código da mesma classe já na versão 2.0. Pode-se recuperar um objeto de uma versão anterior ou bloquear um objeto que esta sendo usado por um dos integrantes da equipe de forma que os demais não tenham acesso a ele.

Um resumo dos principais recursos disponíveis nas ferramentas gerenciadoras de configuração pode ser visto na tabela abaixo:


Recurso

Descrição

Get Latest Version

Copia a última versão do item de configuração presente nobanco de dados da ferramenta para a máquina local

Check-out

Copia a última versão do item de configuração presente nobanco de dados da ferramenta para a máquina local e bloqueia o mesmo para que ninguém mais possa alterá-lo

Check-in

Grava as alterações feitas no item de configuração no banco de dados

Undo Check-out

Desfaz o comando check-out

Label

Permite a criação de rótulos para versões (linhas de base)

History

Permite comparar versões diferentes de itens de configuração ou de versões inteiras de programas.


A seguir estão listados os passos mais comuns para montar uma estrutura de gerência de configuração de software automatizada:

a) criação de uma estrutura de diretórios

O primeiro passo é a criação da uma estrutura de diretórios que servirá de repositório para os itens de configuração do projeto. Não há padronização para a criação dessa estrutura, mas é comum as equipes trabalharem com pastas diferentes para versões de desenvolvimento e produção e outra para armazenar versões fechadas do software. A estrutura é criada tanto na máquina local dos membros da equipe quanto no banco de dados da ferramenta de configuração. O Esquema abaixo ilustra uma proposta para criação de uma estrutura de configuração:

-nome_do_projeto
   -doc
   -gcs
      -desenv
         -prj
         -scr
      -producao
         -scr
      -release

Diretório

Descrição

nome_projeto

Diretório raiz do projeto

doc

Diretório para documentos que não estão sob gerenciamento de configuração

gcs

Diretório raiz para itens de configuração que estão sob gerenciamento de configuração

gcs/desenv

Diretório principal para desenvolvimento

gcs/desenv /prj

Diretório para documentos relativos à disciplina projeto como por exemplo termos de abertura de projeto, declarações de escopo, cronogramas, documentos de especificação de requisitos, diagramas, dicionário de dados e outros

gcs/desenv /src

Diretório para os códigos fontes utilizados em ambiente de desenvolvimento

gcs/producao

Diretório principal para produção

gcs/producao/src

Diretório para os códigos fontes utilizados em ambiente de produção

gcs/release

Diretório para manter as versões fechadas que já estão em produção


b) inserção dos itens de configuração na estrutura

Os responsáveis produzem os artefatos e os adicionam no banco de dados da ferramenta de configuração onde os outros membros possam copiá-los para suas respectivas estações através dos recursos da ferramenta.

c) manutenção das alterações nos itens de configuração

Significa utilizar o recurso de check-out quando for necessário alterar um objeto e após a modificação e aplicar o recurso check-in para gravá-la no banco de dados de configuração.

d) criação de rótulos de versão (linhas de base)

Quando o projeto do software atingir um marco, que pode ser desde a entrega de um artefato importante até a liberação de uma versão estável do software para o cliente, é recomendada a criação de uma linha de base, ou seja, um rótulo para aquela versão do projeto. Depois que o recurso Label é aplicado, é possível comparar as diferenças entre duas versões e até mesmo retornar uma versão anterior completa.

5 – Conclusão

A gerência de configuração de software é um processo crítico que pode definir o sucesso ou não de um projeto de sistema de informação. Ao mesmo tempo em que ela permite acesso aos artefatos produzidos aos membros da equipe, ela garante que todas as alterações que venham a ser feitas possam ser analisadas, controladas e submetidas a um gerenciamento de versão.

Justamente por oferecer mecanismos inteligentes que podem contribuir para a qualidade do projeto, a gerência de configuração também é vista como uma atividade de garantia de qualidade de software. Tanto é que um dos modelos de maturidade de processo de desenvolvimento de software mais difundidos no mundo, o CMMI-SW, insere a gerência de configuração como uma das sete áreas-chave para alcançar seu nível dois de maturidade (nível gerenciado), que é o primeiro degrau de maturidade que uma empresa almeja subir.

A implantação de um processo de gerência de configuração sempre traz grandes vantagens para as equipes de desenvolvimento. Mas o que a um custo muito baixo. Se o grupo optar pela utilização de uma ferramenta open source, o custo pode ser praticamente zero. Mas o que é imprescindível para que o processoContudo, Mas praticamente a adoção de uma ferramenta de versionamento é imprescindível para o sucesso , o custo está associado à aquisição da ferramenta que permita o controle eficaz dos itens de configuração do projeto, proporcionando acesso, controle de alterações e versionamento. A utilização desse tipo de ferramenta dessas ferramentae que facilitam sobremaneira de controle está associada implantar é praticamente Viu-se ainda que para implcomo uma ferramenta automatizada pode contribuir para ,

Referências Bibliográficas

BORGES JÚNIOR, Maurício P. Série Visual SouceSafe. Disponível na internet em http://www.juliobattisti.com.br/tutoriais/mauricioborges/vss001.asp. Acesso em 03/08/2008.

DIAS, André F.Gerência de Configuração. Disponível na internet em http://www.pronus.eng.br/artigos_tutoriais. Acesso em 25/04/2008.

MACORATTI,José C. Usando o Visual Source Safe. Disponível na internet em http://www.macoratti.net/vss_vb.htm . Acesso em 05/08/2008.

MOLINARI, Leonardo. Gerência de Configuração - Técnicas e Práticas no Desenvolvimento do Software. Florianópolis: Visual Books, 2007.

PRESSMAN, Roger. Engenharia de Software. 6ª edição. São Paulo: McGraw-Hill, 2006.

SCOTT, John A; NISSE, David. Software Configuration Management. In: Guide to Software Engineering Body of Knowledge. Disponível na internet em http://www.swebok.org/ stoneman/version_1.00/SWEBOK_w_ correct_copyright_web_site_ version.pdf. Acesso em 04/07/2008.

SOMMERVILLE, Ian. Engenharia de Software. 8ª edição. São Paulo: Pearson, 2006.

WINGERD Laura, SEIWALD Christopher. High-level Best Practices in Software Configuration Management. Disponível na internet em http://www.perforce.com/perforce/ bestpractices.html. Acesso em 16/08/2008

ZABEU, Ana Cecília P; JOMORI, Sérgio M.; VOLPE, Renato L. D. CMM x CMMI, principais diferenças e correlações. Disponível na internet em www.asrconsultoria.com.br/docs/SPIN_BH_CMMI.pdf. Acesso em 03/04/2008