Vous êtes sur la page 1sur 17

Engenharia

Nesta seção você encontra artigos voltados para testes, processo,


modelos, documentação, entre outros

Gerência de Configuração
Definições Iniciais, Ferramentas e Processo

De que se trata o artigo?


Neste artigo serão mostrados inicialmente aspectos
relevantes da gerência de configuração. Na segun-
Alberto Boller Filho Marcelo Nascimento Costa da parte do artigo, será apresentada a aplicação da
alberto.boller@gmail.com mnc@kalisoftware.com
Formado em Tecnólogo Análise de Sistemas pelo
gerência de configuração dentro dos principais mo-
Mestre em Engenharia de Sistemas e Computação
Centro Universitário Instituto Metodista Bennet. pela COPPE/UFRJ (avaliada como a melhor pós- delos de maturidade e as vantagens de se utilizar
Possui mais de 30 anos de experiência em infor- graduação em computação do país). Bacharel em tais ferramentas, através de um estudo de caso de
mática. Possui especialização em administração Ciência da Computação pela UFPA. Professor dos implementação em uma empresa hipotética.
de redes Linux Conectiva, segurança de redes cursos de graduação em computação e adminis-
Linux Conectiva, administração de redes Windo- tração do Instituto Metodista Bennett. Autor de
ws NT e Windows Server 2003, programação de diversos artigos científicos sobre Engenharia de Para que serve?
aplicações cliente servidor avançada em Delphi, Software publicados em revistas e conferências Este trabalho tem como intuito servir como um mate-
programação RPGII, programação COBOL, System renomadas, dentro e fora do país. rial de apoio para aqueles que desejam implementar
Administrator NOTES, Application Development gerência de configuração em uma organização de-
NOTES. Atualmente é Gerente de informática na Marcos Kalinowski
clínica de diagnóstico por imagens “CEPEM “ Cen-
senvolvedora de software, usando como ferramen-
mk@kalisoftware.com
tro de Estudos e Pesquisa da Mulher”. Doutorando e Mestre em Engenharia de Software tas de controle de mudanças e controle de versões, o
pela COPPE/UFRJ (avaliada como a melhor pós- Mantis e o Subversion respectivamente.
Rodrigo Oliveira Spínola graduação em computação do país), com ênfase
rodrigo@sqlmagazine.com.br em Validação, Verificação e Testes de Software e Em que situação o tema é útil?
Doutorando e Mestre em Engenharia de Software Melhoria de Processos. Bacharel em Ciência da Para qualquer empresa de desenvolvimento de
pela COPPE/UFRJ (avaliada como a melhor pós- Computação pela UFRJ. Professor do curso de pós-
software que tenham interesse em aumentar o
graduação em computação do país). Criador do graduação e-IS Expert da UFRJ e Coordenador do
projeto e editor chefe da revista Engenharia de curso de Engenharia da Computação da UVA RJ. controle e confiabilidade nos artefatos gerados
Software Magazine. Autor de diversos artigos pela equipe de desenvolvimento ao longo de

C
científicos sobre Engenharia de Software publica- om um mercado cada vez mais um processo de desenvolvimento de software.
dos em revistas e conferências renomadas, dentro exigente, as empresas que fabri-
e fora do país. Experiência de participação em
cam software tem revisto seus
diversos projetos de consultoria para diferentes
empresas tendo atuado com gerência de projetos, processos de construção com o intuito de software voltadas para o controle tem
requisitos e testes de software. Implementador aumentar a qualidade de seus produtos sido elaboradas uma vez que um pro-
certificado do MPS.BR, tendo também experiência e também sua produtividade. Diversas jeto de software, ao longo do seu ciclo
atuando junto a empresas certificadas CMMI. metodologias de desenvolvimento de de vida, tem uma grande quantidade

14 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

de itens de informação tais como documentos, código-fonte, A primeira lei da engenharia de sistemas diz:
dados, manuais e outros, produzidos e até modificados, pelos „Independente de onde você está no ciclo de vida de um sistema, o
mais diversos motivos. sistema vai se modificar e o desejo de modificá-lo vai persistir ao longo de
Para que a qualidade do software seja garantida, em fun- todo o ciclo de vida‰. Bersoff (1980 apud Pressman, 2006, p. 600)
ção destas modificações, é necessário que se faça uso da
Gerência de Configuração de Software (GCS). A Gerência Produtos de software normalmente envolvem quantidades
de Configuração de Software tem como objetivo gerenciar significativas de artefatos que são manuseados por diversas
e controlar a evolução de um software através do controle pessoas envolvidas em seu projeto.
formal de versão e solicitação de mudanças. É uma forma Assim sendo, a possibilidade de introdução de defeitos au-
sistemática e organizada de controlar as modificações de menta à medida que alterações são efetuadas sem uma analise
um software tornando possível manter sua integridade ao antes da sua execução, sem o registro formal antes da sua imple-
longo do tempo. A quantidade de itens que podem estar mentação, sem a comunicação às pessoas que necessitam saber
sob controle da GCS e os níveis de controle exigidos sobre delas ou ainda sem um controle que vise melhorar a qualidade
estes itens irá variar de empresa para empresa ou mesmo e reduzir os erros.
de projeto para projeto. Sendo assim, o uso desta prática em Existem quatro fontes fundamentais de modificações de
conformidade com modelos de maturidade mantidos por en- software:
tidades que possuam credibilidade nacional e internacional, Novas condições de negócio e/ou mercado, modificam regras
e também o uso de ferramentas adequadas que garantam de negócio;
a qualidade deste processo, é fundamental para que uma  Novas necessidades do cliente exigem modificações de
empresa obtenha êxito e reconhecimento. funcionalidades;
Para empresas de grande porte, isto não chega a ser um Reorganização e/ou crescimento/diminuição do negócio;
grande problema pois normalmente se dispõem de capital Restrições de orçamento ou cronograma, causando redefinição
e pessoal qualificado para manter tais práticas. Entretanto, do sistema;
quando voltamos a olhar para as pequenas empresas, o
cenário é exatamente o oposto. As dificuldades e o custo Conceitos e Terminologias
envolvidos para se adotar um modelo de gestão, treinar pes- A Gerência de Configuração de Software (GCS) ou Software
soal, adquirir ferramentas que apóiem a pratica de GCS, e Configuration Management (SCM) é uma atividade abrangente
ainda obter certificação em um determinado nível de modelo que ocorre ao longo de todo o ciclo de vida de um software e
de maturidade, de uma entidade reconhecida, pode levar que gerencia e controla sua evolução, através do controle de
uma pequena empresa a desistir rapidamente da adoção de versões e solicitações de mudanças, permitindo que os diver-
um processo de GCS com qualidade, e como conseqüência, sos envolvidos na sua criação e manutenção tenham acesso ao
perder em competitividade para outras empresas. Este artigo histórico destas modificações, fornecendo-lhes subsídios para
foi feito com o foco voltado para estas empresas. o entendimento do sistema na sua forma atual, e também nas
Neste contexto, o objetivo deste artigo é mostrar uma solu- suas formas anteriores.
ção especifica, de boa qualidade e baixo custo, que atenda As atividades de GCS incluem:
as exigências dos modelos de maturidade e que possa ser Identificar modificações;
utilizada para implementar a Gerência de Configuração de Controlar modificações;
Software em pequenas empresas. Garantir a implementação adequada das modificações;
Sob esta perspectiva, será apresentada uma revisão bi- Relatar as modificações a outros que possam ter interesse.
bliográfica sobre GCS, sua aplicação dentro dos modelos
de maturidade CMMI e MPS e uma solução especifica uti- Segundo Pressman (2006, p. 599), diferentemente da ativida-
lizando as ferramentas Mantis e Subversion, através de um de de suporte de software, que ocorre depois que o software
estudo de caso de uma empresa fictícia de pequeno porte foi entregue ao cliente, a GCS é um conjunto de atividades de
que atenda as exigências do modelo de maturidade MPS, e acompanhamento e controle que começam quando o projeto
que possa servir como alternativa para empresas reais que de engenharia de software tem início e só terminam quando o
estejam buscando a implementação do processo de GCS. software é retirado de operação.
Serão apresentados também os aspectos de instalação e A Gerência de Configuração de Software tem especial impor-
configuração das ferramentas, a fim de facilitar àqueles tância na garantia da qualidade do software e no apoio a gestão
que forem utilizá-las. de projetos, sendo imprescindível sua aplicação nas empresas que
desejam obter a certificação do Capability Maturity Model Integra-
Gerência de Configuração tion (CMMI) nível 2 ou na obtenção da certificação do modelo para
Ao longo do ciclo de vida de um software, diversas modifi- Melhoria de Processo do Software Brasileiro (MPS-BR) nível F.
cações podem ocorrer em seu projeto original. Os motivos Segundo Pressman (2006 p. 606), o processo de gestão de
e origens destas modificações podem ser os mais variados configuração de software define uma série de tarefas que têm
possíveis e podem ocorrer em qualquer época. quatro objetivos principais:

Edição 24 - Engenharia de Software Magazine 15


Identificar todos os itens de configuração; efetivo. Fornece as funções óbvias de um sistema de gestão
Gerir modificações em um ou mais destes itens; de banco de dados, mas, além disso executa ou propicia as
Facilitar a construção de diferentes versões de um mesmo seguintes funções:
produto;  Integridade de dados ă Valida entradas no repositório,
Garantir que a qualidade do software seja mantida a medida garante consistência entre os ICS’s relacionados, executa mo-
que a configuração evolui ao longo do tempo. dificações em cascata quando uma modificação em um objeto
exige modificações em objetos a ele relacionados;
Para podermos entender como estas tarefas são executadas, Compartilhamento de informações ă Fornece mecanismo
devemos conhecer alguns conceitos que são fundamentais para compartilhar a informação entre vários desenvolvedores e
para a aplicação de GCS. ferramentas, controla o acesso aos ICS’s por diferentes usuários
através de política de bloqueio e desbloqueio de modo que as
Configuração de Software modificações não sejam sobrepostas umas as outras;
Diversos elementos são gerados como produto de um pro- Integração de ferramenta ă Provê uma estrutura de dados
cesso de software. Estes elementos podem ser: que permite acesso à várias ferramentas de engenharia de
Programas de computador (tanto na forma de código fonte software;
como executável); Integração de dados ă Fornece funções de banco de dados
 Documentos que podem descrever programas, procedi- que permitem que várias tarefas de GCS sejam executadas em
mentos regras de negócio etc. (Documentação técnica e de um ou mais ICS’s;
usuário final); Imposição de metodologia ă Define um modelo entidade
Estrutura de dados que podem estar contidos em programas relacionamento que implica um modelo de processo especifico
ou externos a ele; de engenharia de software. O relacionamento entre objetos
definem um conjunto de passos a ser seguido para construir
A este conjunto de elementos, que compreende toda a in- o conteúdo do repositório;
formação produzida no processo de software, chamamos de  Padronização de documentação ă Normalização para a
“Configuração de Software”. criação de documentos de engenharia de software.

Itens de Configuração de Software ă ICS


Segundo Molinari (2007 p. 44), um item de configuração é o
menor item de controle num processo de GCS.
Um item de configuração de Software (ICS) ou Software Con-
figuration Item (SCI) é cada elemento criado durante o processo
de engenharia de software, ou que para este processo seja
necessário. Pode ser um arquivo, uma aplicação corporativa,
uma parte de um documento, uma seqüência de casos de teste,
um hardware ou um componente de programa. Além dos Figura 1. Classes e instâncias de um item de configuração
ICS´s gerados no processo de engenharia de software, também
poderão ser considerados como ICS’s ferramentas de software Um repositório tem que ser capaz de manter ICS’s relaciona-
como editores, compiladores, navegadores e outras ferramentas dos a diversas versões do software e ainda fornecer mecanis-
que forem necessárias à correta geração do software. mos para montar esses ICS’s em uma configuração especifica
Os ICS’s são identificados de maneira única e podem estar da versão, garantindo assim a gestão efetiva das entregas do
relacionados a outros ICS’s e sua evolução é passível de ras- produto e permitindo aos desenvolvedores voltar a versões
treamento. O controle da Gerência de Configuração será feito anteriores. Precisa ser capaz de controlar variados tipos de
sobre estes itens e serão mantidas todas as informações a seu ICS’s incluindo textos, gráficos, mapas de bits e outros mais
respeito. Diversas versões de um mesmo ICS podem existir complexos.
como produto das modificações efetuadas no dia-a-dia. Além disso, o repositório deve ser capaz de guardar informa-
Molinari (2007 p. 44) faz uma analogia interessante ao con- ções sobre baselines e pistas de auditoria com informações sobre
ceito de classes em orientação a objetos (OO) quando diz que quando, por que, e por quem as modificações foram feitas.
o item está para uma “classe” em OO assim como as versões Estas informações são chamadas de metadados, e são definidas
deste item estão para as “instâncias” da classe em questão em um metamodelo que determina como as informações são
conforme mostrado na Figura 1. armazenadas no repositório, como ter acesso a elas, como podem
ser vistas pelos engenheiros de software, e como manter a sua
Repositório integridade e segurança.
Segundo Forte (1989 apud Pressman, 2006, p. 604), o repo- Além de manter as informações sobre os ICS’s, o repositório
sitório é o conjunto de mecanismos e estruturas que per- deve ser capaz de armazená-los fisicamente em um esquema
mite a uma equipe de software gerir modificação de modo de bibliotecas.

16 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

Os ICS’s são retirados e inseridos nos repositórios, através Durante cada fase, a modificação de uma configuração-base
das seguintes operações: somente pode ser feita de forma controlada, mediante um
LOCK: Garante que apenas um usuário detém o acesso para processo bem definido;
alterar um determinado ICS. Apesar de resolver o problema Ao ser estabelecida, cada baseline incorpora integralmente
de atualização simultânea, o lock serializa o trabalho dos a anterior.
desenvolvedores.  O estabelecimento de cada baseline somente é realizado
 CHECK-OUT: Recupera a última versão de um item de após ser aprovada por procedimentos de consistência interna,
configuração guardado no repositório, copiando-o para a área verificação e validação;
de trabalho do desenvolvedor.
 CHECK-IN: Insere ou atualiza um item de configuração Na Figura 2 vemos uma representação de baselines adaptada
no repositório, incrementando a versão do ICS, e fazendo o de Molinari (2007, p 56).
registro das informações de mudança.

Identificação de ICSÊs
A identificação dos ICs é uma área de extrema importância
dentro da Gerência de Configuração de Software. Sem uma
identificação correta de um item, é impossível gerenciar este
processo.
Cada ICS deve ser identificado através de características
Figura 2. Entendendo um baseline
distintas que o caracterizam unicamente. Estas características
podem ser um nome, uma descrição, uma lista de recursos etc. Controle de Versão
É necessário que cada organização defina suas convenções de Segundo Pressman (2006, p. 608), controle de versões
identificação. combina procedimentos e ferramentas para gerir diferentes
versões de objetos de configuração que são criados durante
Baseline o processo de software. Um sistema de controle de versão
Um baseline pode ser descrito como a situação de uma cole- implementa ou está diretamente integrado com quatro ca-
ção de ICS’s similares em um momento especifico do ciclo de pacidades principais:
vida de um software que foram aprovados e armazenados em  Um banco de dados de projeto (repositório) que guarda
uma biblioteca controlada. Pode ser descrito também como a todos os objetos de configuração relevantes;
conexão de um item de configuração com um determinado Uma capacidade de gestão de versão que guarda todas as
marco no projeto (milestone). Um baseline pode ser visto como versões de um objeto de configuração;
um conjunto de itens de configuração identificados e liberados Uma facilidade de construir que permite ao engenheiro de
para uso, independente de suas versões. software coletar todos os objetos de configuração relevantes
É importante identificar e agrupar estes ICS’s dentro dos e construir uma versão especifica do software;
baselines apropriados pois desta forma, cria-se uma estrutura Capacidade de acompanhamento de tópicos (também cha-
que facilita o rastreamento de mudanças à estes ICS’s. mado de acompanhamento de bugs).
Em cada fase do processo de desenvolvimento, um conjunto
bem definido de itens de configuração deve ser estabelecido. Segundo Molinari (2007, p. 168), alguns colocam que a prin-
Tal conjunto representa um estágio do desenvolvimento, o qual cipal missão de um sistema de controle de versões é permitir
é passível de modificações apenas mediante um mecanismo a edição colaborativa e o compartilhamento de dados, outros
formal de alterações. A este conjunto é dado o nome de base- dizem que o sistema de controle de versões rastreia e controla
lines, ou configurações base do sistema. todos os artefatos do projeto e desse modo consegue coorde-
Em princípio, baselines poderiam ser estabelecidas em qual- nar o trabalho paralelo de desenvolvedores.
quer ponto do desenvolvimento. Entretanto, a grande vanta- Ainda segundo Molinari (2007, p.168), independente do que
gem do conceito está em se fazer coincidir o estabelecimento de cada um pensa sobre controle de versões, algumas das suas
baselines com os finais de fase do ciclo de vida do produto. características perceptíveis são:
O desenvolvimento com configurações base pode, então, ser Mantém e disponibiliza cada versão já produzida de cada
resumido nos seguintes pontos: item do projeto;
 Caracterização do ciclo de vida, identificando-se as fases  Possui mecanismos para gerenciar diferentes ramos de
pelas quais o desenvolvimento do software irá passar; desenvolvimento possibilitando a existência de diferentes
Definição do conjunto de baselines, estabelecendo-se quais versões de maneira simultânea;
serão os ICS’s que a irão compor; Estabelece uma política de sincronização de mudanças que
Estabelecer o marco o qual a baseline irá representar. Uma evita a sobreposição de mudanças;
nova baseline é estabelecida no final de cada fase do ciclo de  Fornece um histórico completo de alterações sobre cada
vida do software; item do projeto.

Edição 24 - Engenharia de Software Magazine 17


O sistema de controle de versões é o responsável por manter
as diversas versões dos ICS’s e faz isso através de um esquema
de arquivos e diretórios presentes no repositório, registrando
não só as alterações realizadas em cada arquivo mas também
na estrutura do diretório em si.
O repositório evolui, junto com o projeto guardando as múlti-
plas versões que o compõe organizadas em forma de revisões.
As revisões são as situações estáticas de todos os arquivos do
projeto em um determinado instante de tempo.
Em empresas de grande porte, onde existem vários profissio-
Figura 3. Branch de desenvolvimento
nais trabalhando concorrentemente nos mesmos arquivos, faz-se
necessário uma política para ordenar e integrar estas alterações, Merge
a fim de evitar a perda de um trabalho ocasionada quando uma Em projetos onde existe um grande número de pessoas en-
pessoa sobrescreve o trabalho de outra. volvidas, é comum que elas possuam uma cópia de trabalho da
Os sistemas de controle de versão implementam esta política, linha principal de desenvolvimento. Neste contexto, o conceito
assegurando que os desenvolvedores não trabalhem diretamen- de merge é também uma parte fundamental do controle de
te nos arquivos do repositório, mas sim em cópias de trabalho versões. O Merge faz a fusão de dois arquivos que estão sendo
destes arquivos em suas próprias máquinas. Isto permite que alterados simultaneamente por desenvolvedores diferentes
um desenvolvedor faça seu trabalho de forma independente e garantindo que a versão final contenha todas as alterações.
sem interferir no trabalho de outro. Após terminado o trabalho, Quando isso não é possível, mantém apenas a última versão
o arquivo deve ser colocado novamente no repositório e para que guardada e emite uma mensagem de “arquivo fora de data”
alterações não sejam inadvertidamente sobrepostas, o sistema para que as diferenças sejam resolvidas com intervenção
de controle de versões pode fazer uso das seguintes políticas humana. Em alterações demoradas, onde normalmente é
de versionamento: utilizada a técnica de branch, é recomendável que se façam
Trava-Modifica-Destrava: Apenas uma pessoa por vez detém merges, periodicamente entre a linha principal e a ramificação,
o direito de alterar um determinado arquivo. O sistema trava o para que no final não fique inviável fazer o merge devido ao
arquivo quando uma pessoa retira uma cópia para manutenção grande número de conflitos gerados entre as diferenças das
e só libera a cópia para edição à outra pessoa, quando a primeira diversas versões.
publica sua nova versão. Esta política é limitada e pode causar
problemas administrativos e forçar a serialização do trabalho, Tags
entretanto, é a solução indicada para organizações que neces- Um outro tipo de controle de versão são as tags. Tags são
sitam de um alto grau de formalização. como fotografias de um projeto, em um determinado instante
Copia-Modifica-Resolve: Não utiliza travamento de arquivos. do tempo. São rótulos associados a um conjunto de arquivos
Nesta política, cada desenvolvedor trabalha de forma indepen- usados para denominar um projeto ou uma nova versão, e que
dente em sua cópia de trabalho, e ao final, as alterações são rotulam estes arquivos. As tags nas versões de um conjunto
mescladas no repositório, formando a versão final. Esta política de itens de configuração, existente em diversos sistemas de
pode parecer caótica, mas na prática funciona bem, devido ao controle de versões, pode ser utilizado para implementar o
baixo índice de conflitos. Os conflitos são causados na maioria conceito de baseline.
das vezes, por falta de comunicação entre os desenvolvedores.
Controle de Modificação
Branch Mudanças são inevitáveis. Todo produto de software sofre
Branching (ou ramificação em português) é uma parte funda- mudanças durante o seu ciclo de vida, seja por erro de cons-
mental do controle de versões. O conceito de branching reside trução, ou por necessidade de mudanças solicitadas pelos
em se iniciar uma nova linha de desenvolvimento em paralelo clientes. Em projetos de grande porte, fazer modificações sem
à uma principal já existente. um esquema formal de controle pode levar ao caos. Alguns
Esta técnica é extremamente útil em situações onde temos dos problemas que podem ser causados em projetos devido a
que fazer grandes alterações em objetos de configuração e que mudanças não controladas são:
provavelmente levarão muito tempo, sem contudo afetar a linha Aumento do custo do projeto;
principal de manutenção do sistema. Nesta situação, cria-se uma Atrasos em entregas planejadas;
segunda cópia do objeto em questão e trabalha-se em paralelo Impacto em outros objetos de configuração;
à linha principal. Ao longo do tempo, as manutenções feitas na Degradação da qualidade do software;
linha principal poderão ser incorporadas na ramificação para Retrabalho.
que defeitos encontrados na cópia original possam ser conser-
tados também na ramificação. A Figura 3 demonstra como é a Controle de modificações podem incluir procedimentos
técnica de branching ao longo do tempo. humanos e também o uso de ferramentas automatizadas, e

18 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

seu objetivo é controlar estas mudanças e manter informações Revisões técnicas formais;
sobre os pedidos de mudança, nos produtos e as implementa- Auditoria de configuração de software.
ções realizadas em função destas mudanças.
Informações do tipo quem, quando, por que e o que foi mu- A revisão técnica tem como foco a correção técnica do ICS
dado, em um item de configuração, são guardadas para que que foi modificado a partir de uma requisição. Revisores
seja possível haver uma rastreabilidade entre suas versões avaliam o ICS para determinar se o mesmo é consistente.
anteriores e posteriores. Revisões técnicas formais normalmente são feitas para todas
O processo de controle de mudanças começa quando o clien- as modificações, exceto as mais triviais.
te emite um pedido de comunicação. Este pedido passa pela A auditoria de configuração de software tem como objetivo
análise de uma Comissão de Controle de Modificações (do complementar a revisão técnica formal e trata dos seguintes
inglês Change Control Board – CCB), que é responsável pela aspectos:
sua aprovação ou não. É gerada então uma ordem de modifi- Verifica se a modificação técnica especificada foi realizada e
cação de engenharia (Engineering Change Order – ECO) pra as se foi incorporada alguma modificação adicional;
modificações aprovadas. O ICS é retirado do repositório para Verifica se uma revisão técnica formal foi feita para avaliar
uma área de trabalho exclusiva do profissional, que irá executar a correção técnica;
as mudanças. As mudanças são executadas, as atividades de Verifica se o processo de software foi seguido;
SQA são aplicadas, e os ICS’s modificados são introduzidos Verifica se constam anotados no ICS modificado, dados de
no repositório com os mecanismos adequados de controle rastreabilidade tais como data da modificação, autor, nº de
de versão. Controles para acesso aos ICS’s pelos engenheiros requisição etc.;
e controles de sincronização de modificações paralelas por Verifica se os procedimentos de GCS para registrar e relatar
pessoas diferentes são usados nesta etapa. a modificação, foram seguidos;
A Figura 4 esboça o processo formal de controle de modifi- Verifica se todos os ICS’s relacionados foram atualizados de
cações segundo Pressman (2006, p 610). forma adequada.

Quando a GCS é uma atividade formal, a auditoria de confi-


guração é conduzida pelo grupo responsável pela garantia de
qualidade. A auditoria também tem como objetivo garantir que
os ICS’s corretos foram incorporados em um build específico e
que sua documentação está consistente com a nova versão.

Relatórios de Estado
Os relatórios de estado é uma tarefa de GCS que tem por
objetivo responder às seguintes questões:
O que aconteceu ?
Quem fez ?
Quando aconteceu ?
O que mais será afetado ?

O relatório de estado reúne informações de todos os estágios


da GCS. Atividades como identificação de ICS’s, aprovação de
modificações, resultado das auditorias de configuração são
registradas no relatório de estado. O relatório de estado deve
ser colocado em um banco de dados de maneira que todas
as pessoas envolvidas na manutenção de software tenham
acesso as informações ali contidas. O principal objetivo de
um relatório de estado é manter a gerência e os profissionais
informados das modificações sofridas por um software, de-
vendo ser gerado regularmente.
Figura 4. Processo de controle de modificações (Pressman, 2006)
Ferramentas de Apoio à GCS
Auditoria de Configuração Existem diversas ferramentas disponíveis no mercado para
Além dos controles de identificação, versão e modificação apoiar a Gerência de Configuração de Sistemas. As funciona-
vistos anteriormente, precisamos implementar algum mecanis- lidades, documentação, o suporte disponível e popularidade
mo que nos garanta que as modificações foram feitas de forma variam bastante. As ferramentas comerciais apresentam
adequada. Este mecanismo envolve dois aspectos: maior número de funcionalidades mas tem um alto custo. As

Edição 24 - Engenharia de Software Magazine 19


ferramentas open source além de baixo custo, também apre- reconhecido como sendo líder isolado na categoria Standalone
sentam vantagens como qualidade e segurança. A Tabela 1 Software Configuration Manager (SSCM) tendo uma forte
apresenta algumas ferramentas e suas aplicações. atuação na categoria Software Configuration and Change
Management (SCCM).
Tipo de ferramenta Nome
O Subversion começou a ser escrito no ano 2000 como um
Controle de Versão CVS
esforço para criar um sistema de controle de versão o qual
SubVersion
operasse de forma parecida com o CVS porém sem os seus
Controle de mudança Mantis
problemas, e suprindo as facilidades não existentes no CVS. No
Bugzilla
ano de 2001, o Subversion já estava suficientemente desenvol-
Integração (Build) Scons
vido para ser capaz de hospedar seu próprio código fonte.
Tabela 1. &ERRAMENTASPARA'#3 Algumas de suas facilidades são:
Operações de “Commit” são atômicas. Interrupções nestas
CVS operações não causam inconsistências no repositório;
O CVS, ou Concurrent Version System (Sistema de Versões Mudanças de nomes, cópias, e movimentações de arquivos
Concorrentes), é um sistema de controle de versão open source, são guardadas como histórico de revisões;
que permite que se trabalhe com diversas versões de arquivos Mudanças de nomes em diretórios são guardados também
organizados em um diretório e localizados local ou remota- como versões. Árvores de diretórios inteiras podem ser movi-
mente, mantendo-se suas versões antigas e os logs de quem e das ou copiadas com rapidez e tem estas operações guardadas
quando manipulou os arquivos. no histórico de revisões;
É especialmente útil para se controlar versões de um software Servidor Apache HTTP como servidor de rede;
durante seu desenvolvimento, ou para composição colaborativa Operações de Branch e Tag são menos custosas, independente
de um documento. do tamanho do arquivo. O Subversion não faz distinção entre
O CVS utiliza uma arquitetura cliente-servidor: um servidor Tag, Branch e um diretório;
armazena as versões atuais do projeto e seu histórico, e os clien- Permite operações de “lock” para arquivos que não podem
tes se conectam a esse servidor para obter uma cópia completa ser fundidos (sofrer operação de “merge”).
do projeto, trabalhar nessa cópia e então devolver suas modifica-
ções. Tipicamente, cliente e servidor devem estar conectados por Mantis
uma rede local de computadores, ou pela internet, mas o cliente Mantis é um sistema de controle de mudança open source,
e o servidor podem estar na mesma máquina se a configuração baseado em Web, bastante popular. Foi escrito em linguagem
do CVS for feita de maneira a dar acesso a versões e histórico PHP e trabalha com banco de dados MySQL, MS SQL e Pos-
do projeto apenas a usuários locais. tgreSQL e um webserver. Pode ser instalado em Windows,
O CVS possui limitações tais como: Linux, Mac OS, OS/2 e outros e funciona na maioria dos web
 Os arquivos em um repositório CVS não podem ser re- browsers como um cliente.
nomeados, eles devem ser explicitamente removidos e re- Algumas de suas características são:
adicionados; É um software livre (licença GPL);
O protocolo do CVS não permite que os diretórios sejam mo- Fácil de instalar;
vidos ou renomeados. Cada arquivo do subdiretório em questão Fácil de avaliar;
deve ser individualmente removido e re-adicionado; É baseado em Web;
 Não permite “lock” (permite que dois usuários alterem o Suporta qualquer plataforma que roda PHP;
mesmo arquivo ao mesmo tempo) e em alguns casos pode ser Suporta múltiplos projetos por instancia;
mais custoso resolver o conflito do que evitar que ele ocorra. Suporte para Projetos, Sub-projetos e categorias;
Suporte a diferentes níveis de acesso de usuário por projetos;
Subversion Suporta log de mudanças;
Subversion (também conhecido por SVN, o nome da sua ferra- Possui diversos relatórios e gráficos;
menta de linha de comando) é um sistema de controle de versão Usuários podem monitorar as solicitações;
open source projetado especificamente para ser um substituto Envio de notificações por e-mail;
moderno do CVS, que se considera ter algumas limitações. Permite histórico de mudanças;
O Subversion é bem conhecido na comunidade que utiliza Integração com SVN e CVS.
código aberto e é utilizado em diversos projetos incluindo
Apache Software Foundation, KDE, Free Pascal, FreeBSD, GCC Bugzzila
Python, Django, Ruby, Mono, SourceForge.net, ExtJS e Tigris.org. Bugzilla é uma ferramenta baseada em Web e e-mail, que dá
O Google Code também faz a hospedagem de seus projetos de suporte ao desenvolvimento do projeto Mozilla, rastreando
código aberto utilizando o Subversion. defeitos de software, e servindo também como plataforma
O Subversion também é adotado no mundo corporativo. para solicitações e controle de mudanças. Como projeto de
Em 2007, a Forrest Research reportou que o Subversion foi software livre, é mantido por voluntários, sendo utilizado

20 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

por diversos outros projetos e empresas. Algumas de suas Institute) na Carnegie Mellon University a pedido do Depar-
características são: tamento de defesa dos EUA que necessitava de um modelo
Capacidade de pesquisa avançada; para avaliar os seus fornecedores de software. A versão 1.1
 Notificações por e-mail controladas pelas preferências de foi publicada em 2002 e a atual, versão 1.2 , foi publicada em
usuários; agosto de 2006.
Lista de defeitos em diversos formatos; A missão inicial da equipe que produziu o CMMI era com-
Relatórios periódicos (diários, semanais etc.) enviados por binar três modelos:
e-mail; Capability Maturity Model for Software (SW-CMM) v. 2.0
Controle de tempo de execução de uma solicitação; draft C
Sistema de atribuição de tarefas; Systems Engineering Capability Model (SECM)
 Diversas versões de localização (incluindo Português Integrated Product Development Capability Maturity Model
– Brasil). (IPD-CMM) v. 0.98

SCons O CMMI permite abordar a avaliação e o melhoramento de


SCons é uma ferramenta de construção de software open processos utilizando dois tipos de representação: contínua e
source escrita em Python. O SCons provê uma ponte entre por estágio.
plataformas e é o substituto para o utilitário clássico Make com A representação contínua permite a uma organização sele-
funcionalidades similares ao autoconf/automake, e possui com- cionar áreas de processo e melhorar os processos relacionados
piladores integrados. Algumas de suas características são: a ela. Nesta representação, são utilizados níveis de capacidade
Seus arquivos de configuração são scripts Python; para caracterizar os melhoramentos relativos a uma área de
Analise automática de dependências, nativa para C, C++ e processo individual.
Fortran, extensível para outras linguagens; A representação por estágios usa um conjunto pré-definido
Suporte nativo para adquirir arquivos fonte do CVS; de áreas de processo para definir uma via de melhoramento
Suporte nativo ao MS Visual Studio .NET para uma organização. Esta via de melhoramento é carac-
 Detecção de mudanças de construção usando assinaturas terizada por níveis de maturidade. Cada nível fornece um
baseadas em MD5. conjunto de áreas de processo que caracterizam diferentes
comportamentos organizacionais.
Gerência de configuração nos modelos de maturidade A Figura 5 mostra uma visão geral por estágio dos níveis de
A partir dos anos 90, iniciou-se um movimento no sentido de maturidade e as áreas de processo envolvidas. Podemos notar
solucionar problemas que afetavam a industria de software. na figura que a Gestão de Configuração de Software é uma
Problemas como descumprimento de prazos, estouro de or- área de processo do nível 2 do modelo de maturidade.
çamentos, falta de funcionalidades requeridas pelos clientes e Segundo o CMMI-DEV (2006, p.114), o propósito da Gestão
outros, afetavam de maneira drástica a qualidade dos produtos de Configuração de software (GCS) é estabelecer e manter a
de software produzidos nesta época. integridade dos produtos de trabalho, usando identificação da
A maioria destes problemas originavam-se do fato da cons- configuração, controle de configuração, status da configuração
trução de software ser conduzida utilizando-se processos contábil e auditoria de configuração.
improvisados e pouco ou nada controlados. Sendo assim, As metas e práticas especificas da gestão de configuração
vários órgãos e associações começaram a criar modelos que definidas na CMMI são:
orientassem o desenvolvimento destes produtos. SG 1. Estabelecer baselines.
Embora hoje existam diversos modelos de maturidade SP 1.1 Identificar itens de configuração
voltados para o desenvolvimento de software objetivando SP 1.2 Estabelecer um Sistema de Gestão de Configuração
aumentar a produtividade da construção e a sua qualidade, SP 1.3 Criar ou liberar baselines
todos incluem a utilização de práticas de GCS que variam de SG 2. Rastrear e controlar mudanças
acordo com cada modelo. SP 2.1 Rastrear requisição de mudanças
Neste artigo será apresentado os pontos em comum da apli- SP 2.2 Controlar itens de configuração
cação da GCS nos modelos CMMI, e MPS.BR. SG 3. Estabelecer integridade
SP 3.1 Estabelecer registros de Gerencia da Configuração
GCS aplicada no CMMI SP 3.2 Realizar auditorias de configuração
O CMMI (Capability Maturity Model Integration) tem como
objetivo prover um modelo de maturidade para desenvolvi- GCS aplicada no MPS
mento de produtos e serviços de uma maneira geral. Ele aponta O programa MPS.BR (Melhoria de Processo do Software
práticas que cobrem o ciclo de vida dos produtos desde a sua Brasileiro) foi criado em 2003 pela SOFTEX (Associação para
concepção até a entrega e manutenção. A versão 1.0 foi publi- Promoção da Excelência do Software Brasileiro). O MPS.BR
cado em 2000 em substituição ao CMM (Capability Maturity tem o apoio do Ministério de Ciência e Tecnologia (MCT)
Model) Versão 1.1, criado pela SEI (Software Engineering da Financiadora de Estudos e Projetos (FINEP) e do Banco

Edição 24 - Engenharia de Software Magazine 21


Figura 5. Visão por nível de maturidade X Áreas de processo

Interamericano de Desenvolvimento (BID). Sua estrutura está Este modelo surgiu pelo fato de muitas empresas ao busca-
dividida em duas áreas de apoio: rem certificação CMM/CMMI se depararem com os custos
• Fórum de Credenciamento Controle (FCC) cujas atribui- elevados de implementação/avaliação, inviabilizando as
ções são: certificações para pequenas empresas.
I. Emitir parecer que subsidie decisão da SOFTEX sobre o Uma das metas do programa MPS.BR é definir e aprimorar
credenciamento de Instituições Implementadoras (II) e Ins- um modelo de melhoria e avaliação de processo de software
tituições Avaliadoras (IA); visando preferencialmente às micro, pequenas e médias em-
II. Monitorar os resultados das Instituições Implementa- presas, de forma a atender as suas necessidades de negócio
doras (II) e Instituições Avaliadoras (IA), emitindo parecer e ser reconhecido nacional e internacionalmente como um
propondo à SOFTEX o seu descredenciamento no caso de modelo aplicável à indústria de software.
comprometimento da credibilidade do modelo MPS. A base técnica para a construção e aprimoramento deste
• Equipe Técnica do Modelo (ETM) cuja atribuição é apoiar a modelo de melhoria e avaliação de processo de software é
SOFTEX sobre os aspectos técnicos relacionados ao Modelo composta pelas normas ISO/IEC 12207:2008 [ISO/IEC, 2008a]
de Referência (MR-MPS) e Métodos de Avaliação (MA-MPS) e ISO/IEC 15504-2 [ISO/IEC, 2003]. O MPR.BR se propõe ser
para: compatível com o modelo CMM/CMMI para software.
I. Criação e aprimoramento contínuo do MR-MPS, MA-MPS Na Figura 6 temos uma visão geral dos principais compo-
e seus guias específicos; nentes MPS.BR.
II. Capacitação de pessoas por meio de cursos, provas e O Modelo de Referência, MR-MPS, define níveis de ma-
workshops. turidade que são uma combinação entre processos e sua

22 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

capacidade. Para cada nível de maturidade são estabelecidos software utilizando-se das ferramentas Mantis para controle de
processos que caracterizam estágios de melhoria da imple- modificações e Subversion para controle de versões.
mentação de processos na organização. O MR-MPS define sete
níveis de maturidade: Nivel Processos
A (Em Otimização); A
B (Gerenciado Quantitativamente); B Gerência de Projetos – GPR (evolução)
C (Definido); C Gerência de Riscos – GRI
D (Largamente Definido); Desenvolvimento para Reutilização – DRU
E (Parcialmente Definido); Gerência de Decisões – GDE
F (Gerenciado); D Verificação – VER
G (Parcialmente Gerenciado). Validação – VAL
Projeto e Construção do Produto – PCP
Integração do Produto – ITP
Desenvolvimento de Requisitos – DRE
E Gerência de Projetos – GPR (evolução)
Gerência de Reutilização – GRU
Gerência de Recursos Humanos – GRH
Definição do Processo Organizacional – DFP
Avaliação e Melhoria do Processo Organizacional – AMP
F Medição – MED
Garantia da Qualidade – GQA
Gerência de Portfólio de Projetos – GPP
Figura 6. Visão geral dos componentes do MPS.BR Gerência de Configuração – GCO
Aquisição – AQU
O primeiro nível da escala é o “G” e o último o “A”. A G Gerência de Requisitos – GRE
Tabela 2 mostra os processos exigidos para cada nível de Gerência de Projetos – GPR
maturidade.
Tabela 2. Níveis de Maturidade do MR-MPS
Segundo definição do MPS.BR Guia de Implementação (2009,
p. 16), o propósito do processo de Gerência de Configuração Estudo de caso de uma implementação de GCS com
é estabelecer e manter a integridade de todos os produtos de Mantis e Subversion
trabalho de um processo ou projeto e disponibilizá-los a todos A partir de agora será apresentado um estudo de caso de
os envolvidos. A GCS é encarada pelo MPS.BR como sendo implementação de práticas de GCS com as ferramentas Mantis
um processo do nível de maturidade “F” e portanto deve ter e Subversion em uma empresa de construção de software de
resultados esperados. Os resultados esperados da GCS são: pequeno porte. A esta empresa, daremos o nome fictício de
GCO1 - Um Sistema de Gerência de Configuração é esta- “Casa do Software”.
belecido e Mantido;
GCO2 - Os itens de configuração são identificados com base Cenário
em critérios estabelecidos; A empresa “Casa do Software” é uma empresa de pequeno porte
 GCO3 - Os itens de configuração sujeitos a um controle e conta com trinta e cinco colaboradores. A empresa desenvolve
formal são colocados sob baseline; softwares voltados para áreas comerciais de outras empresas
GCO4 - A situação dos itens de configuração e das baselines utilizados por vendedores em seus notebooks nas visitas a seus
é registrada ao longo do tempo e disponibilizada; clientes. A empresa não possui uma política de GCS implementa-
 GCO5 - Modificações em itens de configuração são da. Existe apenas uma rotina periódica de back-ups que fica sob
controladas; responsabilidade do pessoal de suporte de infra-estrutura.
GCO 6 - O armazenamento, o manuseio e a liberação de itens As solicitações de modificações são feitas pelos clientes
de configuração e baselines são controlados consistentes; através de reuniões realizadas com o gerente de projetos e
GCO7 - Auditorias de configuração são realizadas objeti- desenvolvedores. A única documentação existente sobre as
vamente para assegurar que as baselines e os itens de confi- solicitações são as atas das reuniões, não havendo documen-
guração estejam íntegros, completos e consistentes. tação de acompanhamento da manutenção e aprovação formal
das mesmas por parte da gerência de projetos. Existe mais
Nesta parte do artigo foi mostrado onde a Gerência de confi- de uma versão do mesmo sistema, como conseqüência de
guração de Software se encaixa nos dois dos principais modelos alterações feitas especificamente para determinados clientes,
de maturidade de software usados por em presas brasileiras. Na o que complica ainda mais a manutenção dos produtos de
próxima seção do artigo será apresentado um estudo de caso software. Como a empresa está em franca expansão, fica clara
de aplicação de GCS em uma empresa de desenvolvimento de a necessidade de se implementar práticas de GCS que possam

Edição 24 - Engenharia de Software Magazine 23


contribuir para melhorar a qualidade de software da mesma, Nas seções seguintes mostraremos um PGC para esta em-
além disso, as práticas de GCS adotadas deverão estar em presa com base em pesquisa nos trabalhos de Borges (2006),
conformidade com o MPS-BR. Barbosa (2007), Neto(2005).
Como nesta empresa não existe a prática de GCS, será ne-
cessário a realização de treinamentos para que os diversos
colaboradores envolvidos no processo de implementação de
tais práticas e também aqueles que irão fazer uso dela possam
compreender o novo processo e utilizá-lo conforme definido
no Plano de Gerência de Configuração.
Como projeto piloto, foi selecionado o SISVEN (Sistema de
Vendas). O SISVEN é um sistema feito em Java destinado a
tirar pedidos de vendas, fazer prospecção de clientes e roda
em notebooks utilizados por vendedores que visitam clientes
em todo o país.

Plano para implementação da GCS na empresa


Devido ao tamanho da empresa e da pouca experiência do
pessoal envolvido, será implantada a GCS sob a perspectiva
de desenvolvimento, a qual abrange os sistemas de Controle
Figura 7. &LUXODO0LANODE)MPLEMENTA¥ÎODA'#3NAEMPRESA
de Modificações, Controle de Versões e Gerenciamento da
Construção. Histórico das Revisões
Embora a implementação seja feita sob esta perspectiva, as As tabelas apresentadas nas Tabelas 3 e 4 deverão ser altera-
funções da perspectiva gerencial podem ser implementadas das sempre que alguma modificação for feita no PGC.
por estes três sistemas acrescendo-se procedimentos manuais.
Neste artigo apresentaremos uma solução baseada em Mantis Data Versão Descrição Autor
para o “Controle de modificações”, e Subversion para o “Con- 05/07/2009 1.0 Criação da primeira versão Alberto Boller
trole de Versões”. O “Gerenciamento de construção” feito por
um sistema automatizado não será tratado neste trabalho. Na
Figura 7 podemos ver o fluxo do Plano para implementação da
GCS na empresa.

Criação da Equipe de Gerência de Configuração (EGC) Tabela 3. (ISTØRICODAS2EVISÜES


A Equipe de Gerência de Configuração (EGC) será composta
por um gerente de configuração, um gerente de projetos e por Data Versão Nome Cargo
uma pessoa de infra-estrutura. 05/07/2009 1.0 Alberto Boller Filho Gerente de Projetos
A responsabilidade deste grupo é procurar melhorar de for-
ma constante as atividades de GCS definidas para a empresa,
seja mudando processos ou incluindo novas ferramentas.

Criação do Comitê de Controle de Configuração (CCC) Tabela 4 . Aprovações


O Comitê de Controle de Configuração (CCC) será com-
posto pelo gerente de projetos e o Gerente de Qualidade. A Histórico das Revisões
responsabilidade do CCC será avaliar se uma determinada Aprovações
modificação deve ser implementada, rejeitada ou posterga-
da, baseando-se em análises de impacto que tal modificação Identificação dos ICS’s
irá causar. Os itens de configuração, os níveis de controle exigidos e
os identificadores para cada um encontram-se descritos na
Criação do Plano de Gerência de Configuração (PGC) Tabela 5. Outros itens também poderiam ser controlados
O Plano de Gerência de Configuração (PGC) define formal- mas para exemplificar este estudo de caso, os itens constan-
mente os padrões e práticas adotadas pela empresa no que tes nesta tabela são suficientes.
tange à GCS. Neste documento estão descritos os procedi-
mentos a serem seguidos, as ferramentas a serem utilizadas, Regras para nomeação dos itens de configuração
os ICS’s que deverão estar sob controle da GCS, sua forma de Com exceção do Plano de Gerencia de Configuração,
identificação e todas as diretrizes que qualquer sistema deverá Fontes e Executáveis, o nome dos artefatos deverá seguir
seguir dentro da empresa. a seguinte regra:

24 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

<SISVEN>-<identificador_do_artefato>-<xxx> Armazenamento dos ICS’s


Todos os ICS’s especificados na Tabela 5 serão armaze-
Onde <xxx> é um número sequencial começando em 001. nados em um repositório do Subvesion em um servidor de
arquivos que poderá ser acessado via Internet ou através
Descrição Identificador Nível de Controle da rede local. A estrutura do diretório do repositório para
Casos de uso UC Versão e mudança armazenamento do sistema SISVEN pode ser visto na
Diagrama de Classes DC Versão e Mudança Figura 8.
Documento de Requisitos DR Versão e Mudança
Plano de Testes PTES Versão e Mudança
Plano de Gerencia de Configuração - Versão e Mudança
Código Fonte - Versão e Mudança
Release - Versão e Mudança

Tabela 5. )TENSDE#ONFIGURA¥ÎO

Regras para versionamento


As regras de versionamento serão aplicadas apenas nas
identificações de tags e branches, uma vez que o Subver-
sion controla as versões de itens de configuração a cada
operação de commit.
O padrão de versionamento utilizará a regra descrita a
seguir:
<XX>.<YY>
Figura 8. Estrutura de diretório do repositório
onde:
XX é um número decimal que representa a versão; Gerenciamento de Baselines
YY é um número decimal que representa a modificação. Sempre que uma modificação for concluída, seja em algum
documento ou código fonte e o gerente de projetos tiver
O primeiro numero de versão deverá ser 01.00. A cada mo- inspecionado os testes e aprovado, o desenvolvedor poderá
dificação, o valor YY deve ser incrementado de uma unidade solicitar ao gerente de configuração a criação de uma base-
e retorna para 00 assim que uma nova versão é gerada. line. As baselines ficarão armazenadas na subpasta “tag”
da estrutura de diretório do repositório.
Identificação de Tags Os branches deverão ser criados pelo gerente de configu-
Sempre que uma nova baseline for criada, esta deverá ser ração apenas quando a modificação exigida pela solicitação
identificada por uma tag seguindo as seguintes regras: de mudança levar um tempo para sua conclusão superior
Baseline de Documentos a três semanas, caso contrário será feita na mainline cuja
DOC-V-<versão> subpasta da estrutura de diretório chama-se “trunk” (ver
Baseline de Código Fonte Figura 8).
FONTE-V-<versão> Apenas o gerente de configuração terá autoridade para
Baseline de Releases criar branches e tags e deverá fazê-lo mediante a solicitação
RELEASE-V-<versão> formal do gerente de projeto que deverá enviar um e-mail
especificando o que e para quem deve ser criado.
Onde <versão> segue as regras descritas no item anterior.
Estabelecimento de um sistema de GCS
Identificação de Branches Conforme descrito no MPS.BR Guia de Implementação
Sempre que houver necessidade de criação de um branch, sua (SOFTEX, 2009, p. 20), para que a Gerência de Configu-
identificação deverá obedecer aos seguintes padrões: ração ocorra de forma sistemática, é necessário que seja
Branch de Documentos estabelecido um sistema de Gerência de Configuração. Esse
DOC-MANUT-<número_da_solicitação_de_modificação> sistema pode ser decomposto em três subsistemas: sistema
Branch de Código Fonte de controle de versões, sistema de controle de modificações
FONTE-MANUT-< número_da_solicitação_de_modificação> e sistema de gerenciamento de construção.
Branch de Releases Para o subsistema de controle de modificações, utiliza-
RELEASE-MANUT-< número_da_solicitação_de_modificação> remos a ferramenta Mantis. A escolha desta ferramenta
está apoiada no fato de ser open source (o que diminui os
O <número_da_solicitação_de_modificação> será aquele atri- custos), por ter integração direta com o Subversion (o que
buído pelo campo ticket do Mantis conforme veremos adiante. permite dar visibilidade ao processo), e ser uma aplicação.

Edição 24 - Engenharia de Software Magazine 25


A Figura 9 ilustra o fluxo básico de controle de modificações produto TortoiseSVN que faz a mesma coisa só que de forma
que será seguido quando uma solicitação de modificação interativa e visual facilitando o trabalho.
for feita pelo usuário.

Figura 10. Tela de login do Mantis

Figura 9.&LUXODO#ONTROLEDEMODIFICA¥ÜESDAEMPRESAh#ASADO3OFTWAREv Figura 11. Visão inicial dos status de solicitações de mudanças

Nas Figuras 10 a 14 podemos visualizar como o Mantis


trata o controle de uma solicitação de modificações. Na
Figura 10 observamos que existe um controle de acesso
às solicitações a nível de tipo de usuário que pode ser um
relator, desenvolvedor, gerente administrador etc, cada qual
com suas restrições de acesso.
Na Figura 11 temos uma visão (a nível de usuário) das diver-
sas solicitações e seus status. Nas Figuras 12 a 14 aparece em
detalhes todos os tramites pelos quais passou uma solicitação
de mudanças, permitindo manter informado o usuário solici-
tante e todos os outros envolvidos no processo de GCS.
Para o subsistema de controle de versões, será utilizado o
Subversion. A escolha desta ferramenta também está baseada
no fato de ser open source, ter integração com o Mantis e com Figura 12. 6ISÎODETALHADADEUMASOLICITA¥ÎODEMUDAN¥A)NFORMA¥ÜES
o Eclipse. O Subversion possui uma parte server que roda em gerais)
um servidor e que fica responsável por fazer as operações de
check-in, check-out, controle de lock, merge, controle de acesso Na Figura 15 é apresentado um fluxo básico de utilização
e outras. O Subversion possui também uma parte client, que do Subversion.
roda na máquina do desenvolvedor e que tem a função de Nas Figuras 16 a 23 são apresentados exemplos das funções
solicitar à parte server as funções necessárias. Como a parte descritas na Figura 15 usando-se o TortoiseSVN.
client do Subversion é executada em linha de comando, e por As Figuras 16 e 17 mostram que o desenvolvedor deve fazer
esta razão ser pouco amigável, iremos utilizar como client o uma cópia dos ICS’s do repositório para seu disco local a fim

26 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

de poder fazer as modificações necessárias utilizando-se da


operação de check-out. A Figura 18 mostra que novos itens de
configuração são adicionados à cópia local do repositório atra-
vés de operação de add. A Figura 19 mostra uma operação de
update para atualizar a cópia local do repositório. As Figuras 20
à 22 mostram uma atualização da mainline através de uma
operação de commit. Vale observar neste ultimo caso que esta
operação é controlada com autenticação de usuário e senha.
Por fim, a Figura 23 mostra um log com todas as operações
executadas neste repositório ao longo do tempo.
Através das figuras vistas pode-se concluir que o Subversion
Figura 16. &AZENDOCHECK OUT
controla de forma adequada o armazenamento e manuseio de
ICS’s, fornecendo dados para sua auditoria.

Figura 17. Resultado da operação de check-out

Figura 13. Visão detalhada de uma solicitação de mudanças (Anotações)

Figura 18. Adicionando novos programas ao repositório local

Figura 14. 6ISÎODETALHADADEUMASOLICITA¥ÎODEMUDAN¥A(ISTØRICO


do caso)

Figura 15. &LUXOBÉSICODEUTILIZA¥ÎODOSUBVERSION Figura 19. &AZENDOUMAOPERA¥ÎODEUPDATEPARAATUALIZARACØPIALOCAL

Edição 24 - Engenharia de Software Magazine 27


Figura 20. )NICIANDOUMAOPERA¥ÎODECOMMIT Figura 23. Log das operações realizadas no repositório

Instalação do Mantis
A versão do Mantis para Windows pode ser baixada a
partir do site “http://www.mantisbt.org/download.php”.
A sua versão estável mais recente é a MantisBT 1.1.8. Os se-
guintes softwares são requeridos e devem ser instalados:
PHP 4.3.0 and higher
MySQL database 4.1.1 and higher (MS SQL and DB2 are
also supported).
Web server (Apache, IIS, etc.)

Como forma de facilitar a instalação dos softwares acima,


pode ser instalado a última versão do XAMPP que traz
todos os requisitos para rodar o Mantis. O XAMPP pode
Figura 21. Operação de commit (autenticação de usuário autorizado) ser baixado a partir do site www.baixaki.com.br.
Caso seja instalado o XAMPP, o diretório de instalação do
Mantis deve estar localizado na pasta “htdocs” existente
no diretório de instalação do XAMPP.
O Mantis é simples de instalar. Basicamente é só seguir
as instruções de instalação que irão surgir na tela.

Configuração do Mantis
Após instalado o Mantis é necessário configurar o arquivo
“config.inc.php” com os parâmetros corretos para emissão
de e-mails. A configuração utilizada neste trabalho está
apresentada na Figura 24. Os campos “user”, “domínio” e
“password” que aparecem no texto devem ser substituídos
pelos correspondentes de cada caso.
A configuração listada na Figura 24 já inclui os parâ-
Figura 22. Resultado da operação de commit metros necessários para integração com o Subversion. O
significado de cada parâmetro pode ser obtido no manual
do Mantis no endereço “http://manual.mantisbt.org/
Resultados esperados do MPS.BR alcançados na solução index.php”.
adotada Vale observar que para que o envio de e-mails a cada novo
Conforme descrito anteriormente, a solução adotada deve- status de uma solicitação de modificação ocorra, é neces-
rá estar em conformidade com o modelo MPS-BR. sário a instalação do PHPMailer, que pode ser encontrado
Segundo o MPS.BR Guia Geral (SOFTEX, 2009, p.23) o no site “http://phpmailer.sourceforge.net”. A instalação do
processo de Gerencia de Configuração encontra-se no nível PHPMailer é simples, bastando para tanto copiar os arqui-
“F” do MR-MPS e deve atingir sete resultados esperados. vos “class.smtp.php” e “class.phpmailer.php” para o diretó-
A Tabela 6 mostra os resultados esperados e os itens deste rio destinado aos arquivos de include. No caso do XAMPP o
trabalho onde estão contemplados. diretório é “<diretório_de_instalação_do_XAMPP>\ php\

28 Engenharia de Software Magazine - Gerência de Configuração


PROJETO

Resultado esperado Seção


GCO 1. Um Sistema de Gerência de Configuração é estabelecido e mantido Estabelecimento de um sistema de GCS
GCO 2. Os itens de configuração são identificados com base em critérios estabelecidos Identificação dos ICS’s
Regras para nomeação dos itens de configuração
Regras para versionamento
Identificação de Tags
Identificação de Branches
GCO 3. Os itens de configuração sujeitos a um controle formal são colocados sob baseline Armazenamento dos ICS’s
Gerenciamento de Baselines
Estabelecimento de um sistema de GCS
GCO 4. A situação dos itens de configuração e das baselines é registrada ao longo do tempo e Gerenciamento de Baselines
disponibilizada; Estabelecimento de um sistema de GCS

GCO 5. Modificações em itens de configuração são controladas; Estabelecimento de um sistema de GCS

GCO 6. O armazenamento, o manuseio e a liberação de itens de configuração e baselines são Estabelecimento de um sistema de GCS
controlados

GCO 7. Auditorias de configuração são realizadas objetivamente para assegurar que as baselines e os Estabelecimento de um sistema de GCS
itens de configuração estejam íntegros, completos e consistentes

Tabela 6. 2ESULTADOSESPERADOSNONÓVEL&DO-03"2

PEAR”. A instalação está descrita no arquivo “readme” que


traz também um exemplo simples.

Instalação do Subversion
A instalação do Subversion é mais simples do que a do
Mantis. O arquivo de instalação pode ser obtido no ende-
reço http://www.collab.net/downloads/subversion/. O
único software requerido é o Apache version: 2.2.11 que
já estará instalado caso o XAMPP tenha sido instalado
primeiro. Vale ressaltar que neste endereço existem dois
arquivos de instalação que devem ser baixados:
 CollabNet Subversion Server and Client v1.6.3 (for
Windows)
CollabNet Subversion Command-Line Client v1.6.3 (for
Windows)

O primeiro é obrigatório para o funcionamento das ope-


rações. Para o segundo arquivo, poderá ser usada a alter-
nativa do software “TortoiseSVN” que é mais amigável e
tem integração direta com o Windows Explorer. O arquivo
para instalação do TortoiseSVN pode ser encontrado no
site “www.baixaki.com.br”. Não é necessário configuração
adicional no software para o seu funcionamento, porém,
para cada repositório deverá ser configurado os perfis Figura 24. Arquivo config.inc.php
de acesso no arquivo “svnserve.conf”. Para detalhes de
integração do Subversion com o Mantis, consulte o site terminologias e algumas ferramentas voltadas para dar
http://alt-tag.com/blog/archives/2006/11/integrating- apoio à GCS.
mantis-and-subversion/. Na sequencia, mostramos uma solução de boa qualidade e
baixo custo que atende as exigências dos modelos de maturi-
Consideraçõs Finais dade e que pode ser facilmente implementada em empresas
Neste artigo, vimos inicialmente os conceitos gerais de de pequeno porte a fim de instalar as práticas de Gerência de
Gerencia de Configuração de software, suas principais Configuração de Software. A solução foi mostrada através de

Edição 24 - Engenharia de Software Magazine 29


um estudo de caso em uma empresa fictícia, e fez uso das fer- Dê seu feedback sobre esta edição! eu
Feedback

s
ramentas Mantis e Subversion para o controle de solicitação


A Engenharia de Software Magazine tem que ser feita ao seu gosto.

sobre e
de modificações e controle de versões respectivamente.
Para isso, precisamos saber o que você, leitor, acha da revista!
Foram apresentados ainda aspectos de instalação das ferra-

s
ta
edição
Dê seu voto sobre este artigo, através do link:
mentas e sua customização.
www.devmedia.com.br/esmag/feedback

Referências Links

Barbosa, Valeria Plano de Gerência de Configuração de Software: Sistema de Collabnet “CollabNet Subversion Downloads”
Controle de Custos 11/09/2007 disponível em http://conexao.googlecode.com/files/ http://www.collab.net/downloads/subversion/
SYSCOPlanoGerenciaConfiguracao.pdf
Comunidade de Software & Inovação Empresarial “As Ferramentas de SCM e o Suporte
Ben Collins-Sussman, de et al Version Control with Subversion: for Subversion 1.6 (Compiled do CMM”
from r3445) 2008 disponível em <http:subversion.tigris.org/> http://paginas.ispgaya.pt/~msantos/es_artigos_tecnicos_1/60_FerramentasSCM_e_
suporteCMM.pdf
Borges, Vanessa R. Implantação de Práticas de Gerência de Configuração em uma Fábrica de
DevMedia “Gerência de Configuração – Parte 1”
Software: Um estudo de caso (Graduação em Ciência da Computação) Universidade Federal de
http://www.devmedia.com.br/articles/viewcomp.asp?comp=9378
Lavras, Minas Gerais, 2006
EAI Community “Establishing a Configuration Management Baseline”
Forte, G.,“Rally Round the Repository”, CASE Outlook, Dez 1989, p. 5-27 http://it.toolbox.com/blogs/enterprise-solutions/establishing-a-configuration-management-
baseline-13910
MOLINARI, Leonardo. Gerência de configuração: Técnicas e práticas no desenvolvimento do
software. Florianópolis : Visual Books, 2007. 208p. Enciclopédia Livre, (2007) “Gerência de Configuração de Software”
http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_Configura%C3%A7%C3%A3o_de_Software
Neto, Euclides Plano de Gerência de configuração de software: Projeto VENSSO – Venda
de Serviços de Software 27/05/2005 disponível em <http://vensso.sourceforge.net/doc/ Gerência de Configuração “Gerência de Configuração”
VENSSO_SCM_20050527.pdf> http://www.cin.ufpe.br/~gfn/qualidade/gc.html

PRESSMAN, Roger S. Engenharia de software. 6ª. ed. São Paulo : McGraw-Hill, 2006. xxxi, 720p. Mantis “Mantis Bug Tracker”
http://www.mantisbt.org/
SEI, Software Engineering Institute. CMMI for Development, Version 1.2: CMMI DEV V 1.2.
Pronus Engenharia de Software “O que é Gerência de Configuração”
Carnegie Mellon University, EUA, 2006 573p.
http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/gerencia_configuracao.php
SOFTEX MPS.BR - Melhoria de Processo do Software Brasileiro, Guia de Implementação – Parte 2: Regularize “Gerência de Configuração de Software”
Nível F, Rio de Janeiro, 2009 53p http://cartilha.regularize.com.br/list/18/cartilha/post/80/gerencia-de-configuracao-de-software.html

SOFTEX, MPS.BR - Melhoria de Processo do Software Brasileiro, Guia Geral Rio de Janeiro, 2009 57p Tigris.org “Subversion”
http://subversion.tigris.org/

30 Engenharia de Software Magazine - Gerência de Configuração

Vous aimerez peut-être aussi