Artigos
Gerência de Configuração de Software
Controle de Versão de Software com o CVS
A qualidade de software é um dos assuntos mais atuais em discussão na comunidade de Engenharia de Software. Embora os primeiros esforços mais amplos no sentido de se produzir software com maior qualidade e produtividade datem da década de 70, foi na segunda metade da década de 90 que uma série de novos conceitos e abordagens alcançaram maturidade e visibilidade. Neste contexto, destacam-se os modelos de qualidade de processo de software, entre os quais o SEI-CMM é o mais conhecido e utilizado, e as novas técnicas de desenvolvimento de software, tais como RAD (Rapid Application Development) e as orientadas a objetos.
Assim sendo, um dos maiores desafios das organizações de software hoje é justamente aplicar em seus processos de desenvolvimento tanto os novos conceitos de engenharia de software quanto as práticas de qualidade preconizadas pelo CMM e outros modelos.
CMM
Com a combinação de práticas de engenharia de software, técnicas de gerenciamento de projetos e conceitos mais genéricos do Gerenciamento da Qualidade Total, as organizações de desenvolvimento de software começaram a priorizar o foco das iniciativas de melhoria na definição de melhores processos de gerenciamento de projetos de software. A consolidação destas idéias se deu através do modelo SEI-CMM, da Carnegie-Mellon University.
O CMM procura orientar a organização no sentido de implementar a melhoria contínua do processo de software, e o faz através de um modelo de 5 níveis, priorizado de forma lógica as ações a serem realizadas. Quanto maior o nível, maior a maturidade da organização, o que se traduz em maior qualidade do produtos final, prazos e custos mais baixos e maior previsibilidade em cronogramas e orçamentos.
No nível 1, chamado de Inicial, o desenvolvimento é caótico. Não existem procedimentos padronizados, estimativas de custos e planos de projeto. Cada qual desenvolve como quer, não existe documentação e não há mecanismos de controle que permitam ao gerente saber o que está acontecendo, identificar problemas e riscos e agir de acordo. Como conseqüência, os desvios não são corrigidos e ocorrem os problemas como prazos não cumpridos, orçamentos estourados, software sem qualidade e usuários insatisfeitos. Na verdade, raramente existe um cronograma ou um orçamento. Infelizmente, estima-se que mais de três quartos das empresas norte-americanas encontram-se neste nível, e não há razões para acreditar que a situação seja melhor no Brasil.
Para passar ao nível 2, a organização deve instituir controles básicos de projeto, incluindo o Gerenciamento de Requisitos e de Projetos (técnicas para planejar e estimar o esforço em projetos, e controlar o progresso), Controle Gerencial (verificação pela Gerência do progresso do projeto em momentos pré-determinados, incluindo a qualidade dos produtos), a instituição de um Grupo de Garantia de Qualidade e de procedimentos básicos de Gerenciamento de Configuração (para garantir que mudanças no projeto e manutenções solicitadas não destruam o que já foi feito, garantindo um mínimo de estabilidade no desenvolvimento; nada é mais deletério para um projeto do que requerimentos que mudam constantemente e sem controle).
No nível 2 da CMM, surge a necessidade da Gerência de Configuração de Software (GCS), que é uma disciplina de apoio integrante do processo de software, cujo papel é garantir a integridade do produto de software por meio do controle de sua evolução ao longo de todo o seu ciclo de vida, e que é considerada fundamental para o desenvolvimento de software de qualidade.
O Controle de Versão de Software na CMM
Devido ao grande número de elementos, ou itens de configuração, geralmente envolvidos num desenvolvimento de software, torna-se essencial a utilização de ferramentas que auxiliem na realização das atividades de GCS. Dentre as ferramentas destacam-se as de controle de versão, cujos objetivos são: armazenar os itens que são produzidos no desenvolvimento, permitir o acesso de maneira controlada a quaisquer versões destes elementos, armazenar informações de histórico dos itens de forma a estabelecer a base para o controle da evolução do produto de software, e reter informações que permitam automatizar o acesso aos conjuntos de itens de configuração que compõem o produto de software num específico estado de seu desenvolvimento.
Apesar de existirem no mercado dezenas de ferramentas de controle de versão, sua utilização é pouco difundida nos desenvolvedores de software nacionais, principalmente nos pequenos desenvolvedores. Esta baixa utilização em parte advém do pouco conhecimento acerca da disciplina de gerência de configuração, mas também é conseqüência do alto custo das ferramentas comerciais, na faixa de US$ 600,00 a US$ 5.000,00 a licença de uso, e do suporte deficitário ou caro provido pelos representantes no nosso país. Ademais, tais ferramentas nem sempre abordam adequadamente aspectos específicos relativos a forma de desenvolvimento dos pequenos desenvolvedores de software nacionais.
Existem no mercado diversos produtos disponíveis para o controle de versões de software, variando grandemente entre eles quanto às funcionalidades e preços de licença. Um traço em comum é que todos apresentam custos de licença relativamente alto, e em dólar, para organizações de qualquer porte, muitas vezes desestimulando ou mesmo inviabilizando a adoção destas ferramentas.
Por outro lado, há diversas ferramentas de controle de versão de boa qualidade, como o CVS, desenvolvidas sob o conceito de software livre e, portanto, de domínio público.
Com a necessidade crescente de ferramentas de controle de versão de software e com os restritivos custos das ferramentas comerciais de controle de versão, o CVS aparece como um alternativa muito atraente para organizações que necessitam aperfeiçoar o processo de desenvolvimento de software.
O CVS
O CVS é um padrão de fato para no processo de desenvolvimento de Software Livre, sendo utilizado por milhares de desenvolvedores ao redor do mundo no desenvolvimento de software. O site SourceForge.net talvez seja o exemplo mais pujante da utilização do CVS como espinha dorsal ao desenvolvimento concorrente e por equipes distribuídas geograficamente. Atualmente existem mais de 50.000 projetos cadastrados neste site e um volume de mais de 500.000 desenvolvedores.
Com o CVS, é possível que grupos de pessoas trabalhem simultaneamente no desenvolvimento de software e outros produtos baseados em arquivos como, por exemplo, manuais, apostilas, dados de configuração, dentre outros.
Existe um repositório central com as versões mais recentes dos arquivos. Com isto, é possível criar uma cópias desses arquivos e, caso no futuro esses arquivos sejam atualizados, o CVS se encarregará de atualizar as cópia quando for necessário fazê-lo. Se novas versões destes arquivos forem colocadas no CVS nesse período de modificação, a atualização tentará o máximo possível combinar as alterações do repositório com as feitas localmente.
Caso haja coincidência nas alterações e algum conflito seja criado pelas mudanças concorrentes, o CVS notificará o conflito e será necessário alguma intervenção humana para resolver este problema.
Vantagens trazidas pelo uso do CVS:
-
Ajuda a rastrear erros no software. Por exemplo, quando o código é modificado, é comum que o programador introduza erros que somente são detectados muito tempo após a alteração.
-
Com CVS, é possível recuperar uma versão anterior que funcione para identificar a causa do erro.
-
Facilita a colaboração entre desenvolvedores, permitindo que dois ou mais desenvolvedores trabalhem de forma independente sobre o mesmo código fonte.
-
Permite identificar e resolver conflitos nos fontes.
-
Facilita o gerenciamento de releases do código.
-
Permite verificar a produtividade de um programador, através do histórico de modificações.
-
Possibilidade de utilizar as informações do repositório do CVS como fonte de métricas que subsidiem o processo de desenvolvimento de software nas organizações.9
Ferramentas complementares ao CVS
No entorno do CVS foram desenvolvidas várias ferramentas complementares que auxiliam processo de controle de versão seja através a integração do CVS à ambientes de desenvolvimentos integrados (IDE), seja pela extensão das funcionalidades oferecidas (por exemplo, integração automática com ferramenta de build) ou então pelo oferecimento de uma interface gráfica multi-plataforma.
Conclusão
O CVS é uma alternativa eficiente, escalável e de baixo custo para organizações que necessitam de uma ferramenta de controle de versão de software. Seu uso intenso no suporte ao desenvolvimento de software livre é a prova de sua adequação a grandes projetos e a equipes distribuídas geograficamente.
Entretanto, é importante frisar, o CVS é somente a ferramenta de controle de versão e não substitui o processo de gerenciamento de configuração de software (GCS). O GCS é uma considerável mudança cultural nas equipes de desenvolvimento e necessita de outros fatores, além do CVS, para que o resultado seja bem sucedido.
A Dextra e o CVS
A Dextra oferece treinamentos formais sobre o CVS, com turmas abertas e in-company (saiba mais). Além do treinamento, a Dextra oferece serviços de consultoria e mentoring no CVS, alocando profissionais experimentados para trabalhar junto à equipe do cliente na implantação de processos de controle de versão.
Referências
CVS Home: www.cvshome.org
Treinamento
em CVS

