terça-feira, 9 de fevereiro de 2010

O Básico sobre Controle de Código



Muitos problemas de desenvolvimento de software são causados por falta de controle de versão. Faça uma avaliação rápida da situação da sua equipe de desenvolvimento:

  1. Alguém já sobrescreveu o código de outra pessoa por acidente e acabou perdendo as alterações?
  2. Tem dificuldades em saber quais as alterações efetuadas em um programa, quando foram feitas e quem fez?
  3. Tem dificuldade em recuperar o código de uma versão anterior que está em produção?
  4. Tem problemas em manter variações do sistema ao mesmo tempo?



Se alguma das perguntas acima teve um sim como resposta, então sua equipe necessita urgentemente de um sistema para controle de versão!

Um sistema de controle de versão (ou versionamento), VCS (do inglês version control system) ou ainda SCM (do inglês source code management) na função prática da Ciência da Computação e da Engenharia de Software, é um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões – histórico e desenvolvimento – dos códigos-fontes e também da documentação.

Esse tipo de sistema é muito presente em empresas e instituições de tecnologia e desenvolvimento de software. É também muito comum no desenvolvimento de software livre. É útil, em diversos aspectos, tanto para projetos pessoais pequenos e simples como também para grandes projetos comerciais.

Principais vantagens

As principais vantagens de se utilizar um sistema de controle de versão para rastrear as alterações feitas durante o desenvolvimento de software ou o desenvolvimento de um documento de texto qualquer são:
Controle do histórico: facilidade em desfazer e possibilidade de analisar o histórico do desenvolvimento, como também facilidade no resgate de versões mais antigas e estáveis. A maioria das implementações permitem analisar as alterações com detalhes, desde a primeira versão até a última.
Trabalho em equipe: um sistema de controle de versão permite que diversas pessoas trabalhem sobre o mesmo conjunto de documentos ao mesmo tempo e minimiza o desgaste provocado por problemas com conflitos de edições. É possível que a implementação também tenha um controle sofisticado de acesso para cada usuário ou grupo de usuários.
Marcação e resgate de versões estáveis: a maioria dos sistemas permite marcar onde é que o documento estava com uma versão estável, podendo ser facilmente resgatado no futuro.
Ramificação de projeto: a maioria das implementações possibilita a divisão do projeto em várias linhas de desenvolvimento, que podem ser trabalhadas paralelamente, sem que uma interfira na outra.

Não existe nada mais frustrante do que não ter exatamente o código-fonte da versão que está rodando no cliente ou não saber o que mudou desde que a versão foi entregue. Esse tipo de coisa pode acabar com uma empresa ou fazer com que ela fique muito mal vista no mercado.

Porém, independente do mercado, existe um bom motivo para o desenvolvedor possuir algum tipo de controle de código: controle. Se você ou sua equipe não conseguem corrigir todos os bugs, pelo menos saberão o que já foi feito. Se você achou um bug que não existia antes da versão 10, o histórico das mudanças entre a versão estável 9 e a versão não-tão-estável 10 vai te dar uma pista muito boa de onde o problema pode ter sido gerado. Visto dessa forma, não importa muito o tamanho da equipe ou da organização. O importante de um bom código é que suas mudanças estejam sempre registradas, visíveis e disponíveis a qualquer um.



Opções para Controle de Código

Um controle de código para uma pessoa só não precisa ser nada muito sofisticado, sendo que um amontoado de ZIPs pode dar conta do recado. Porém, a partir do momento em que o número de desenvolvedores aumenta para dois ou mais, aí o controle baseado em ZIPs começa a ruir, e é necessário usar uma ferramenta mais apropriada. Existem algumas opções, que vai do gosto e necessidades de cada um:

Visual Source Safe ou VSS: não é gratuito nem robusto o suficiente para agüentar toneladas de código-fonte, mas vem junto do Visual Studio e pode ser apropriado para empresas de porte pequeno ou médio (e empresas de um programador só).

Concurrent Version System ou CVS: é um sistema fonte aberto, gratuito e robusto. Suficiente para agüentar toneladas de código-fonte e equipes de vários andares. Atualmente está sendo substituído gradualmente pelo

Subversion ou SVN: é um substituto moderno do antigo CVS; igualmente gratuito e poderoso, está rapidamente se tornando a opção predominante.
Git: é um sistema de controle de revisão distribuida, rápido e escalável. O Git foi desenvolvido inicialmente por Linus Torvalds mediante uma necessidade de ter um software robusto para controle de versão do kernel linux. O Git, diferente do subversion, por exemplo, não é um repositório de dados centralizado. Assim, cada pessoa que trabalha no mesmo projeto terá uma cópia completa do repositório, portanto, as operções comuns de um repositório de dados são feitas localmente. Isso dá a liberdade total para o usuário trabalhar com o repositório como quiser, criando branches, fazendo merges, etc... Ao final do processo, ele pode enviar um branch mais bem trabalhado e testado ao repositório remoto.

Para aqueles que queiram aprofundar no assunto recomendo a leitura dos artigos abaixo, que entre outros, serviram de base para este post.

http://pt.wikipedia.org/wiki/Sistema_de_controle_de_versão

http://www.pronus.eng.br/artigos_tutoriais/gerencia_configuracao/conceitos_basicos_controle_versao_centralizado_e_distribuido.php

segunda-feira, 8 de fevereiro de 2010

Um pouco mais sobre Scrum

Olá amigos ... 


Neste final de semana conversando com meu amigo Daniel (Towersoft) sobre scrum, algumas dúvidas acabaram surgindo durante nossa conversa sobre a forma de implementar o Scrum. 


Encontrei no Youtube o vídeo abaixo com uma explicação bem humorada sobre o assunto, que agora compartilho com vocês. 


Estou utilizando scrum a pouco tempo, mas já notei uma melhoria significativa na gestão dos meus projetos de software. 


Um abraço

quinta-feira, 4 de fevereiro de 2010

O Teste do Joel: 12 Passos para um Código Melhor


Nas minhas "andanças" pela internet acabei encontrando o Teste do Joel: 12 Passos para um Código Melhor e fiquei impressionado com o que li. 

Antes de falar do teste de Joel, preciso falar do próprio Joel é claro. Quem será esse tal Joel Spolky, então vamos lá: 



Joel Spolsky é um experiente programador, dono do Blog Joel On Software - um dos melhores (senão o melhor) blog sobre gerenciamento e desenvolvimento de software. Também é  o fundador da Fog Creek Software, uma pequena empresa de software na cidade de Nova York. Formou-se na Universidade de Yale, e trabalhou como programador e gerente na Microsoft, na Viacom e no Juno.


O legal do Teste do Joel é que ele consiste de 12 perguntas que deverão ser respondidas com SIM ou NÃO cada questão. Você não precisa realizar cálculos complicados para achar o resultado. Simplesmente atribua à sua equipe 1 ponto para cada "sim" respondido. 

Uma pontuação 12 é perfeita, 11 é tolerável, mas 10 ou menos indica que você tem sérios problemas. A verdade é que a maioria das empresas de software funcionam com uma pontuação 2 ou 3, e elas precisam de uma grande ajuda, porque companhias como a Microsoft funcionam com 12 pontos todo o tempo.

Então vamos lá às perguntas : 

  1. Você usa controle de código?
  2. Você pode compilar em somente um passo?
  3. Você faz compilações diárias?
  4. Você tem uma base de dados de bugs?
  5. Você corrige os bugs antes de escrever código novo?
  6. Você tem um cronograma atualizado?
  7. Você tem uma especificação?
  8. Os programadores tem condições de trabalho tranqüilas?
  9. Você usa as melhores ferramentas que o dinheiro pode comprar?
  10. Você tem testadores?
  11. Novos candidatos escrevem código durante a entrevista?
  12. Você faz testes de usabilidade de corredor?
Se você desejar poderá ler o artigo completo que serviu de base para este post e conhecer um pouco mais sobre cada um dos doze itens clique no link abaixo: 


Diante de tudo que li e do impacto que esse assunto causou em mim, nos proximos posts vou abordar assuntos correlatos aos itens do teste, e o primeiro deles será sobre controle de código, e sobre a ferramenta que uso para esta finalidade o GIT. 

Então ... temos um encontro marcado no próximo post.

Até lá. 

Dicas da IDE do Delphi - Parte 05

Olá amigos ... finalizando a série de dicas sobre a IDE do Delphi, seguem as duas últimas dicas:


Dica 09 - Re-factoring

O re-factoring agrupa algumas funções que podem ser facilmente chamada pelas suas teclas de atalho e  que  facilitam o trabalho do desenvolvedor de diversas maneiras. Algumas delas: 

- Rename (CTRL + SHIFT + E) - Rename :  Faz uma busca no código da palavra selecionada e lista as mesmas para que se decida se quer ou não aplicar as alterações.

- Declare variable (CTRL + SHIFT + V) - Declare variable : Cria uma variável durante a escrita do código sem ter que voltar no início do método e declarar. 

- Declare field (CTRL + SHIFT + D) - Declare field : Cria um field durante a escrita do código sem ter que declará-lo incialmente. 

- Extract Method (CTRL + SHIFT + M) - Extract Method : Extrai um determinado bloco de código e o transforma em um método. No lugar onde haviam as linhas retiradas é colocada a chamada para o método. 

- Find Unit - Find Unit : Encontra a unit e a declara. Ele permite escolher a seção que ela deve ser declarada. 


Dica 10  - Options Delphi 2006

Nessa versão as opções “Environment Options”, “Editor Options”, “Debugger Options” foram reorganizadas para ficarem em apenas um lugar, ou seja, em Tools > Options.


Figura 8. Janela options do delphi 2006 


      Vejamos alguns exemplos de configurações que podem ser feitas através do Options:

Options > Environment Options > VCL Designer > Module Creation Options > New forms as a text: Essa opção deve estar marcada para que o arquivo do formulário (dfm) seja gravado como texto e não como binário.

Options > Environment Options > VCL Designer > Module Creation Options > Auto create forms e data modules: Essa opção deve estar marcada para que os formulários e data modules sejam criados automaticamente.

Options > Environment Options > VCL Designer > Options > Embedded designer : Se essa opção estiver marcada os formulários ficarão suspensos.
Options > Editor Options > Source Options > Options > Block indent : Seta a indentação para as teclas de atalho Ctrl + Shift + I/U.

Options > Debugger Options > General > Integrated debugging : Se essa opção estiver desmarcada não será feito mais debug para nenhum projeto.

Options > Debugger Options > General > Mark buffers read-only on run : Se essa opção estiver marcada não será permitido editar o código da unit em tempo de execução.


Estes foram apenas algumas funcionalidades da IDE. Existem muitas outras que podem até se encaixar melhor com a sua realidade de trabalho e suas necessidades pessoais e com o gosto pessoal de cada desenvolvedor. 

Experimente navegar pelo Help do Delphi, você descobrirá muita coisa “bacana”. Além disso existe também muito material sobre o assunto disponível na DevMedia e na Internet.  Pesquise, busque e compartilhe suas formas pessoais de interagir com o ambiente Delphi.

Um grande abraço e até o próximo artigo.