No post anterior publicado aqui no blog: "Vantagens do controle de versão no desenvolvimento ágil" escrevi um pouco sobre controle de versão, destacando algumas de suas vantagens e relacionando-as ao desenvolvimento ágil. Dentre as vantagens destacadas, encontram-se o suporte à colaboração, o suporte à marcação e a rastreabilidade, que são características das ferramentas de controle de versão que facilitam o processo de desenvolvimento ágil.
Porém, para se usufruir destas vantagens da melhor maneira não basta possuir uma ferramenta de controle de versão. É preciso utilizar estas ferramentas de maneira adequada para que elas sejam um facilitador do processo de desenvolvimento e não um complicador, para não comprometer a agilidade. Mas o que significa utilizar estas ferramentas de maneira adequada? Eu diria em poucas palavras que é utilizar tais ferramentas de maneira a usufruir dos seus benefícios relevantes para o projeto complicando o mínimo possível o processo de desenvolvimento. Mas como fazer isso? Alguma fórmula mágica? Não! Não existe fórmula mágica para isso. Mas existem algumas práticas que, quando empregadas, levam a um uso adequado das ferramentas de controle de versão.
Destacarei algumas boas práticas e explicarei a relação dos benefícios destas práticas com o desenvolvimento ágil.
Escolha da ferramenta e seus recursos
Vamos começar pela escolha da ferramenta de controle de versão. Como escolher uma ferramenta que atenda às necessidades do desenvolvimento ágil?
Como citei no post anterior, o suporte à colaboração é uma das grandes vantagens oferecidas pelas ferramentas de controle de versão ao desenvolvimento ágil. Vale lembrar que segundo a metodologia Scrum, é importante que a equipe de desenvolvimento implemente em conjunto cada uma das histórias, buscando um maior número de entregáveis ao final da Sprint. Por conta disso, é natural que dois ou mais desenvolvedores estejam trabalhando em cima de um mesmo código simultaneamente, e é aí que o suporte à colaboração figura como um importante aspecto da ferramenta de controle de versão.
Outro fator importante na escolha da ferramenta é a simplicidade.
Utilizar muitos recursos não é sinônimo de sucesso no controle de versão. Os recursos utilizados devem estar alinhados às necessidades do projeto. Afinal (permitam-me a metáfora) não é preciso um canhão pra matar uma mosca! O uso de recursos complexos desnecessariamente pode comprometer a agilidade no processo de desenvolvimento. Portanto, pode-se destacar a simplicidade como um aspecto importante na escolha dos recursos utilizados para o controle de versão.
Comentários nas alterações
Toda alteração feita em algum componente versionado deve ser acompanhada de um comentário, um texto que permita o entendimento da razão pela qual a mudança foi realizada. Isto tem grande importância para o desenvolvimento ágil uma vez que tais comentários permitem um entendimento mais imediato de como o código foi sendo implementado, conferindo agilidade nas decisões de implementação das histórias.
Assegurar que os commits não causem quebra do build
Uma prática de fundamental importância é a de assegurar que os commits não causem erros ao dar build no projeto. É importante que a qualquer momento o código mantido pelo controle de versão possa ser compilado sem erros. É responsabilidade da equipe sempre fazer esta verificação antes de realizar os commits de suas alterações. Geralmente para auxiliar neste processo,v de verificar se os commits não resultam na quebra o build, são utilizadas ferramentas de Integração Contínua, que, segundo Martin Fowler, "é uma prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente […]". Mas este é um assunto para próximos posts!
Backup de versões
Todos os backups das versões do projeto devem ser mantidos no repositório, preferencialmente associados a uma identificação, uma tag. No processo de desenvolvimento ágil é produzida uma nova versão entregável do produto a cada Sprint. Portanto manter o controle das versões que foram lançadas a cada Sprint é uma prática que permite maior agilidade, uma vez que facilita a recuperação de cada versão a qualquer momento. Uma prática que pode facilitar ainda mais este processo é a de estruturar a identificação da tag, de forma que só pela identificação já seja possível saber informações como a versão do projeto e a Sprint na qual a versão foi lançada.
Este post teve o objetivo de ressaltar algumas das muitas boas práticas que devem ser adotadas sobre o controle de versão para que confiram maior agilidade ao processo de desenvolvimento de software. Lembro também, que apesar de a Gerência de Configuração não ser explicitamente definida como um item obrigatório do Scrum, ela tem papel importante no desenvolvimento ágil de software. Falamos também de um elemento importante que é a Integração Contínua, que será objeto de destaque em posts futuros! Até lá!
Referências:
Muito bom, parabéns pelo post!