Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Revista MSDN Magazine Edição 11 - A Arte de Versionar Integrando o VS.NET ao Visual SourceSafe (Parte I)
Artigo Originalmente Publicado na MSDN Magazine Edição 11

Clique aqui para ler todos os artigos desta edição
A Arte de Versionar
Integrando o VS.NET ao Visual SourceSafe
(Parte I)
por André Furtado
Costuma-se dizer que a única certeza de um novo projeto de software é que o mesmo sofrerá mudanças. Apesar de tal afirmação estar focada nas mudanças de requisitos, ela é perfeitamente aplicável ao item que mais está sujeito a alterações em um projeto: seu código-fonte. Desse modo, o popularmente adotado processo de desenvolvimento incremental de software, caracterizado por sucessivos builds, releases, patches e correções, pode-se tornar um sério risco ao projeto caso não haja um gerenciamento produtivo e eficaz da evolução do código-fonte, assim como do controle de seu compartilhamento entre os desenvolvedores. Através deste artigo você encontrará na ferramenta Visual SourceSafe (VSS) uma poderosa aliada para automatizar e gerenciar o controle de versão de seus projetos, além de descobrir como aumentar consideravelmente a produtividade de sua equipe através da integração do VSS com o Visual Studio .NET.
Nesta primeira parte, você entenderá o porquê do controle de versão, os fundamentos básicos do VSS e como implantar a ferramenta, além de descobrir que cuidados devem ser tomados com suas soluções e projetos no VS.NET para garantir um controle versão eficiente.
Por que versionar?
Ao contrário de muitos problemas e soluções que existem na Tecnologia da Informação, o controle de versão não é uma necessidade originada pelas recentes tecnologias ou pela complexidade do atual processo de desenvolvimento de software. Na verdade, desde que um programador necessitou desenvolver sucessivas versões para sua aplicação e desde que duas pessoas (e não apenas uma) decidiram somar seus esforços para implementar uma aplicação, criou-se a necessidade pela Gerência de Configuração.
Se você não está antenado com processos e a Engenharia de Software em geral, talvez nunca tenha ouvido falar em Gerência de Configuração. Entretanto, a verdade é que ela está cada vez mais em evidência e merecendo a atenção dos projetos de software da atualidade (existem, inclusive, profissionais especializados apenas nessa área: os gerentes de configuração). Em resumo, a Gerência de Configuração é um processo que, através do controle e organização da evolução do software em construção, procura maximizar a produtividade e diminuir a burocracia do projeto, evitando desperdício de trabalho e enganos comuns cometidos por desenvolvedores.
O cenário a seguir exemplifica alguns problemas decorrentes da ausência de um processo adequado de Gerência de Configuração. Imagine que dois desenvolvedores, João e Maria, estão trabalhando conjuntamente na implementação de um software, conforme mostra a Figura 1. Além de desenvolver suas próprias classes (J1, M1, J2, M2, etc.), João e Maria estão compartilhando a classe C, mostrada ao centro da figura. Suponha que João acessa a classe compartilhada e realiza algumas modificações na mesma. Mais tarde, Maria também realiza algumas alterações em C mas, ao tentar compilar suas classes (M1, M2 e M3) com C, diversos erros são apontados pelo compilador, nenhum deles na parte que Maria alterou. Resultado: Maria não tem a menor idéia sobre a causa do problema, portanto não sabe resolvê-lo e está com seu desenvolvimento bloqueado!

Figura 1. João e Maria desenvolvem software, compartilhando a classe C
Você poderia propor a seguinte solução: que tal se cada desenvolvedor trabalhasse com uma cópia local da classe compartilhada, salvando-a em um repositório comum a cada alteração, como mostra a Figura 2? Sim, esta abordagem resolve a situação anterior, mas cria um outro problema.

Figura 2. João e Maria desenvolvem software, utilizando cópias locais (CJ e CM) da classe compartilhada
Suponha que João encontre e corrija um defeito em sua versão local da classe compartilhada, salvando esta alteração na classe C do repositório. Maria, com sua versão local desatualizada, pode encontrar e corrigir o mesmo defeito já corrigido por João. Resultado: o trabalho de João é desperdiçado! Uma situação pior ainda se dá quando João encontra e corrige um defeito, salvando "
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
André Furtado
é engenheiro de software pelo Centro de Tecnologia XML de Recife / Qualiti Software Processes, mestrando e bacharel em Ciência da Computação pela Universidade Federal de Pernambuco, Certified Microsoft Solutions Framework Practitioner, Certified IBM-DB2 User e SCJP 1.4.




