Gerência - Ciclo de Vida de Desenvolvimento
Visual Studio Team System: mais qualidade aos times de desenvolvimento de software
Veja neste artigo como o Visual Studio Team System ajuda a melhorar a qualidade dos times de desenvolvimento de software.
por Marcos Dell AntonioJoel Spolsky é um dos maiores nomes na área de desenvolvimento de software. Simplesmente uma referência, seja pela sua experiência profissional na Microsoft ou pela sua extensa contribuição à comunidade técnica. Em 09 de agosto de 2000 ele escreveu um teste chamado The Joel Test: 12 Steps to Better Code (O teste do Joel: 12 passos para ter um código melhor). O propósito dele era estabelecer uma lista de perguntas simples e rápidas para medir o quão bom um time de desenvolvimento de software é. Confira:
- Você usa controle de versão?
- Você pode gerar uma build em um único passo?
- Você faz builds diárias?
- Você tem um banco de dados com os bugs registrados?
- Você corrige os bugs antes de escrever código novo?
- Você tem uma agenda atualizada?
- Você tem uma especificação?
- Os programadores possuem boas condições de trabalho?
- Você usa as melhores ferramentas que o dinheiro pode comprar?
- Você tem testadores?
- Os novos candidatos escrevem código durante as entrevistas?
- Você faz testes de usabilidade?
Enquanto o Software Engineering Institute da Universidade Carnegie Mellon tentou chegar à mesma resposta através de inúmeras teorias, o Joel foi preciso o suficiente nas suas perguntas para que as resposta fossem “sim” ou “não”. São 12 questões e cada “sim” corresponde um ponto a mais. Depois de responder todas perguntas do teste você poderá obter algumas conclusões com base no total de pontos atingido:
- 12 ou 11 pontos: situação perfeita, o time é bom;
- 10 pontos ou menos: problemas sérios, o time pode e deve melhorar.
É fácil perceber que o autor é exigente: ou o time é bom ou não. Não existe meio termo. Isto parece preciosismo demais, mas não é o foco do artigo, portanto não será discutido aqui. Outro fato importante é que, segundo o autor, grande parte das empresas existentes atingem no máximo 2 ou 3 pontos no teste, enquanto que empresas como a Microsoft chegam nos 12 pontos durante todo o processo de desenvolvimento.
E como o Visual Studio Team System ajuda a responder estas questões?
O Visual Studio Team System (VSTS) é uma ferramenta completa para o gerenciamento do ciclo de vida das aplicações, ou no termo original em inglês, Application Lifecycle Management (ALM). Isso significa que um projeto de software pode ser concebido do início ao fim utilizando o VSTS. Em outras palavras, a análise, desenvolvimento, gerenciamento, testes, etc, tudo isso está integrado de alguma forma com o VSTS. Agora que você já conhece alguns conceitos básicos, vamos responder as questões propostas pelo Joel.
Primeira questão: você usa controle de versão?
O controle de versão é um dos pré-requisitos mais básicos para o sucesso de um projeto. Sem ele os envolvidos não conseguem ver de forma rápida e eficiente quem fez alterações no código e também correm o risco de não conseguirem voltar para uma versão mais antiga do produto, além de diversos outros problemas. Para esta primeira questão a resposta com o VSTS é simples: use o Team Foundation Version Control (TFVC).
O TFVC é um poderoso controle de versão construído totalmente do zero, portanto não tem relacionamento algum com o Source Safe. Ele roda sobre o SQL Server e é integrado com as políticas de segurança do Windows, além de possuir todo o conjunto de requisitos básicos para um controle de versão: check-out, check-in, branches, labels, merges, histórico, changesets, etc.
Um ponto. Faltam só 11. :)
Segunda questão: você pode gerar uma build em um único passo?
Nesta questão o Joel não está se referindo à build do projeto através da ferramenta de desenvolvimento, aquela que usamos diversas vezes durante o dia para compilar e testar o código escrito. O que ele quer saber é se você consegue disponibilizar uma nova versão do software para o cliente em apenas um passo. Com o VSTS isso é possível e muito simples e rápido utilizando um Team Build Type.
O Team Build Type é o recurso do VSTS que permite definir novos processos de builds. Para responder a segunda pergunta do teste, deve-se criar um novo Team Build Type de acordo com o contexto atual (projeto em questão, forma de distribuição do software e outras políticas específicas). Desta forma, sempre que for preciso gerar uma build em um único passo você conseguirá iniciar todo o processo rapidamente e o servidor do VSTS junto com o MSBuild farão todo o resto do trabalho.
+1 ponto. Já temos 2.
Terceira questão: você faz builds diárias?
A geração diária de builds faz parte de um processo conhecido como Integração Contínua. Integrar continuamente significa garantir que todo o código hospedado no controle de versão estará funcionando quando for requisitado. Essa necessidade surgiu a partir do momento que diversos desenvolvedores começaram a trabalhar paralelamente no mesmo projeto. O VSTS responde a questão do Joel através das opções da build disponíveis no Team Build Type.
É possível definir que uma build será executada a cada check-in, semanalmente, a cada intervalo de tempo ou ainda diariamente. Toda esta configuração é visual no VSTS e pode ser feita rapidamente nas opções da build. Além do mais, não existe problema ao agendar duas ou mais builds para um mesmo horário, pois o servidor do VSTS consegue gerenciar todas as requisições.
+ 1 ponto, já são 3!
Quarta questão: você tem um banco de dados com os bugs registrados?
A única certeza que temos sobre bugs no desenvolvimento de um software é que eles irão existir. Cabe a nós gerenciá-los de maneira eficiente e corrigi-los o quanto antes. Para resolver este problema, o VSTS possui um recurso chamado Work Item, ou em português, Item de Trabalho. Cada item de trabalho possui um tipo, sendo que um dos tipos disponíveis é o Bug. Portanto para registrar e gerenciar bugs, você pode e deve usar os itens de trabalho.
+ 1 ponto, somamos 4 no total.
Quinta questão: você corrige os bugs antes de escrever código novo?
A maneira mais fácil para que um programador corrija os bugs é fazer com que ele saiba que eles existem. Outro ponto fundamental é fornecer as informações necessárias para a reprodução do erro. Seguindo estes dois pré-requisitos, com certeza os bugs registrados serão corrigidos antes de escrever código novo. Da mesma forma que a questão anterior, neste caso o VSTS possui o Work Item do tipo Bug para gerenciar os erros do software.
+ 1 ponto, temos 5.
Sexta questão: você tem uma agenda atualizada?
Só desenvolver um software não basta, também é preciso entregá-lo e o mais importante: na hora certa. Uma agenda atualizada, segundo o Joel, ajuda você a decidir quais funcionalidades estarão disponíveis ou não na versão final. Em outras palavras, a agenda atualizada fornece informações sobre o vencimento de prazos, portanto você pode decidir por incluir na versão final do software somente os itens mais importantes e indispensáveis, postergando os outros para versões futuras.
O VSTS mais uma vez resolve este problema. Ele trabalha completamente integrado com o Microsoft Project, de tal forma que o desenvolvedor alimenta uma base de dados que também é utilizada pelo Project. Isso significa que o gerente de projetos terá toda a informação necessária disponível e atualizada a qualquer hora do dia, pois a integração é em tempo real e sem burocracias.
+ 1 ponto, estamos na metade, 6.
Sétima questão: você tem uma especificação?
Todo mundo acredita que escrever especificações é algo excelente, entretanto grande parte das pessoas não faz isso. Por quê? O fato é que muitas ferramentas para especificação de software são incompletas e não são integradas com o ambiente do desenvolvedor. O VSTS resolve justamente estes dois problemas: suporta a especificação de softwares e, quando necessário, também integra com ferramentas de terceiros.
Nas versões 2005 e 2008 do VSTS já estão disponíveis diversos recursos para especificação de software. Um deles é o diagrama de classes, que inclusive pode ser gerado automaticamente a partir do código fonte. O segundo é o Item de Trabalho, que pode armazenar texto e imagens sobre uma determinada tarefa. Além disso, a versão 2010 do VSTS terá suporte para os principais diagramas da UML e mais alguns específicos da ferramenta.
+ 1 ponto, temos 7.
Oitava questão: os programadores possuem boas condições de trabalho?
O Joel nesta questão se refere ao espaço físico do ambiente de trabalho. Segundo ele, há um ganho de produtividade muito grande quando as pessoas são posicionadas em lugares adequados, ou seja, com chances menores de interrupção, privacidade, etc. O VSTS não pode interferir nisto diretamente, porém ele traz outros fatores que melhoram as condições de trabalho de todos os envolvidos.
A ferramenta para desenvolvimento de software é integrada com a ajuda online da MSDN. Com alguns cliques o programador consegue as informações que precisa sem interromper outra pessoa. Outro aspecto importante é o foco no negócio e nos resultados, pois quem está envolvido no projeto sabe que existe uma excelente ferramenta dando suporte a todo o ciclo de vida da aplicação.
+ 1 ponto, e agora são 8.
Nona questão: você usa as melhores ferramentas que o dinheiro pode comprar?
É praticamente impossível desenvolver um sistema moderno sem o auxílio de uma ferramenta poderosa e com recursos avançados. Gerenciamento efetivo, comunicação fácil, agilidade no desenvolvimento e testes automatizados são só alguns exemplos do que é indispensável para ganhar tempo. Neste caso, o VSTS mais uma vez oferece uma solução completa e flexível de acordo com as necessidades do cliente.
O Visual Studio Team Suite, por exemplo, é o componente do VSTS usado por desenvolvedores, arquitetos e testadores. Todas as ferramentas que ele comporta são integradas entre si e simples de usar. No aspecto gerencial, o VSTS possui um grande número de relatórios, além de possibilitar o acesso de diversas informações pela web utilizando o Visual Studio Team System Web Access.
+ 1 ponto, 9 no total.
Décima questão: você tem testadores?
Segundo o Joel, ignorar a fase de testes é perder dinheiro. Pare e pense: se um programador recebe $ 100 por hora e um testador $ 30, com qual deles o custo é menor para executar os testes? Não ter testadores é uma falsa economia, pena que muitas vezes as pessoas não percebem isso ou acham que é tempo desperdiçado. Com o VSTS e os recursos de testes disponíveis é diferente, pois há mais agilidade no processo e consequentemente o custo é menor ainda.
O testador tem à disposição uma série de maneiras para realizar os testes usando o VSTS. Uma delas é o Web Test, que permite gravar e executar por indeterminadas vezes o acesso a um site, é o que conhecemos como simulação de acesso. Outra maneira é com o Load Test que simula diversos usuários acessando o servidor simultaneamente, também conhecido como Teste de Carga. Tudo isso e muito mais está disponível no Visual Studio Team Suite.
+ 1 ponto, 10! Faltam só 2.
Décima primeira questão: os novos candidatos escrevem código durante as entrevistas?
Você contrataria um mágico sem pedir a ele que demonstrasse algum truque? É isso que o Joel quer saber com esta questão. Segundo ele, um número cada vez maior de programadores é contratado com base em entrevistas simples, que dependem somente de uma boa conversa. O pior de tudo é que frequentemente os entrevistadores fazem questionamentos já conhecidos, como aquelas perguntas básicas “por que você escolheu a empresa xyz?” ou “o que te motiva a trabalhar na área de zyx?”.
O VSTS pode ajudar também no processo da entrevista. Se for um candidato a programador, ele pode ser posto à frente do Visual Studio Development Edition e a partir daí deverá resolver uma série de problemas. Se for um aspirante a testador, a versão Visual Studio Test Edition será muito útil para conhecer o perfil investigativo do profissional. O mesmo acontece para arquitetos, DBAs, gerentes, analistas, etc. Todos eles têm um papel bem definido durante o ciclo de vida de uma aplicação e o VSTS possui ferramentas focadas para cada um deles.
+ 1 ponto. 11! Falta só 1.
Décima primeira questão: você faz testes de usabilidade?
Jacob Nielsen, uma das maiores referências sobre usabilidade na web, fala e escreve muito sobre um conceito chamado hallway usability testing. Em português a tradução é algo parecida com teste de usabilidade feito por pessoas aleatórias. Segundo ele, cinco pessoas é o número suficiente de testadores aleatórios para garantir que a usabilidade do site esteja em perfeitas condições. E o VSTS pode ajudar você a garantir um ótimo nível de usabilidade em suas aplicações.
Para projetos web hoje é indispensável uma interface rica para o usuário. O VSTS oferece recursos como Silverlight, componentes AJAX e bibliotecas Java Script integradas na ferramenta de desenvolvimento. Além disso, possui suporte para edição de código HTML e um editor robusto e flexível para CSS. Todas estas tecnologias unidas proporcionam ao usuário final uma experiência fantástica, pois dão uma base sólida para a criação de um site que utiliza os melhores conceitos de usabilidade.
+1 ponto, chegamos no nível máximo: 12!
Conclusão
O VSTS é uma solução completa para qualificar qualquer time de desenvolvimento de software. Os recursos que ele oferece para desenvolvedores, testadores, gerentes, etc, são excelentes para a criação de qualquer projeto. E o mais importante: tudo em um único conjunto de ferramentas trabalhando de maneira integrada e inteligente para facilitar as tarefas do dia-a-dia.
Referências
Marcos Dell Antonio
http://www.marcosdellantonio.net
Joel Spolsky
http://www.joelonsoftware.com/
Marcus Garcia
http://marcusgarcia.spaces.live.com/
Ramon Durães
http://www.ramonduraes.net/
- Change Management ou a Gestão da MudançaMetodologias e Processos
- Integrando o Sub Version com o Visual StudioCiclo de Vida de Desenvolvimento
- Definição Ágil de User Stories – Toda história deve ter um início felizMetodologias e Processos
- EPM (Project Server) + ALM (Team System) = Maior controle em projetosMetodologias e Processos
- Como Inserir Horas Extras no ProjectCiclo de Vida de Desenvolvimento