quinta-feira, julho 31, 2008

O Custo de um Bug

Quem já não ouviu do gerente de projetos que tempo no cronograma para testes é bobagem? Teste unitário então? “Ah, isso é coisa daquele povo da eXtreme Programming, não precisamos disso! Vai consumir mais tempo e encarecer nosso projeto.”.

É! Eu já ouvi isso, e ouvi pessoas dizendo que ferramentas de ALM (Application Lifecycle Management) são bobagens também. Que tal perguntarem o que a Dell acha disso? Isso mesmo, a Dell! Ela conseguiu um ROI de “apenas” 225% em “apenas” 6 meses de implantação do Team System . Quem quiser consultar mais detalhes desse caso de sucesso acesse ROI CASE STUDY MICROSOFT VISUAL STUDIO TEAM SYSTEM DELL

Bom, já vimos que há pessoas que acham que testes são caros, ferramentas, como o Team System, são caras, vamos tentar entender quanto custa um simples bug no seu sistema. Vamos lá.

Cenário 1 : Bug encontrado durante o desenvolvimento
Este cenário é o ideal. O desenvolvedor escreve o código, cria os testes unitários, verifica que alguns métodos estão com erros, os corrige e pronto. Desde que ele termine dentro do prazo, o meu custo adicional é zero.

Cenário 2 : Bug encontrado durante a fase de homologação
Desta vez o desenvolvedor também foi cuidadoso, no entanto, ele não testou uma integração do código que ele acabou de desenvolver com outro código já existente. Isso vai gerar erro de integração. O testador vai identificar o erro, registrá-lo, colocar os passos para reprodução e outras informações necessárias, esse bug será triado por um team leader, que encaminhará para um programador que precisará entender o que é esse bug, tentará reproduzi-lo para depois corrigir e só então gerar uma nova build para ser publicada. Ah, o testador terá que verificar se o bug foi realmente corrigido.

Bom, estimando isso em horas, podemos colocar 2 horas para o testador, mais 3 horas do desenvolvedor e do team leader. Se assumirmos uma valor médio de R$ 40,00 por hora, já temos um prejuízo de R$ 200,00 com apenas um bug.

Você deve estar pensando naquela sua planilha lotada deles né? Acertei? Que coisa!

Cenário 3 : Bug encontrado em produção
Dessa vez vamos falar do pior cenário, o cliente achou o bug. Primeiro que você vai ouvir um monte de abobrinha do cliente, e com razão. Você vai ter que dar um suporte telefônico pra ele, tentar entender o que ele está dizendo, dificilmente você terá um cenário igual ao dele, você perderá tempo montando o cenário, depois que conseguir reproduzir o bug irá registrá-lo, o programador terá que entender, corrigir, gerar uma build, ir pra teste, publicar no cliente, testar novamente. Ufa!!! Nessa brincadeira, você perdeu tempo do gerente do projeto, analista de negócio, team leader, programador, testador e do implantador.

Assumindo duas horas pra cada recurso, que ainda é pouco, e um valor médio, dessa vez ,de R$ 50,00 por hora, afinal gerente e analista ganham bem :-) A brincadeira ficou R$ 600,00. Bugzinho caro né?


Vamos fazer uma continha simples agora. 15 bugs por mês no cenário 2, mais 2 bugs do cenário 3 e no final de um ano temos um gasto com bugs em apenas um projeto de R$ 50.400,00.

Resumindo:
Bugs em um ano de projeto: R$ 50.400,00
Licença do Team System: Menos de US$ 15.000,00 (se for parceiro, pode ser até free)
Ver seu cliente feliz com o sistema sem bugs e renovando contratos: não tem preço

Impressionante como a implantação do Team System e os testes unitários no cronograma ficaram baratos de repente.

Um grande abraço
André Dias

quarta-feira, julho 30, 2008

Como fazer Backup do Team System

Vamos imaginar o seguinte cenário: Você passa algumas horas lendo o Installation Guide do Team System, cria os usuários do Team System no AD, instala o Windows 2003, SQL Server 2005, aplica os patches direitinho, configura o Sharepoint finalmente instala o Team Foundation Server.

Você fica todo feliz, começa a migrar todos os projetos da empresa pro Team System, configura build daqui, customiza um processo ali e depois de um mês, com toda a empresa dependendo do Team System, o servidor resolve "capotar".

É um cenário meio catastrófico, mas confesso que já aconteceu comigo. Aí o gerente olha pra você e fala: "me coloca esse servidor no ar o mais rápido possível, pois estou com o time todo parado, e se fosse o antigo Source Safe eu já tinha restaurado o .dat e estava tudo bem".

Realmente, nesse ponto ele tinha razão, o processo de backup / restore do Team System é um pouquinho mais difícil que o do Source Safe, mas porque estou contando toda essa histórinha? Na verdade, é só pra te comover um pouco e pra você se lembrar que caso não tenha planejado o Backup do seu Team System, já passou da hora de fazer. Vamos ver como:

Por trabalhar de forma integrada com Sharepoint e com Reporting Services o processo de Backup do Team System requer que todos os bancos de dados sejam "backupeados" ao mesmo tempo. Se o backup dos bancos forem executados de forma separada, poderá haver inconsistências nos seus dados, então sugiro que você leia a receitinha de bolo da Microsoft dizendo passo a passo o que você deve fazer para ter um backup íntegro do seu Team System.

O procedimento de backup pode ser acessado nesta URL http://msdn.microsoft.com/en-us/library/ms253070(vs.80).aspx e recentemente foi publicado um vídeo muito bom executando o procedimento e mostrando como fazer isso na prática. Vale a pena a visita em http://msdn.microsoft.com/en-us/vsts2008/cc770261.aspx.

Uma última dica pra finalizar que não está nos procedimentos da Microsoft: Considere o uso de máquinas virtuais para o seu Team System. Nós conseguimos reduzir o tempo de restore do Team System no caso de crash total da máquina de 6 horas para 30 minutos usando essa abordagem.

Um abraço
André Dias

terça-feira, julho 29, 2008

Novidades do Team System Rosario

O VSTS 2008 (conhecido como Orcas), nem tinha sido lançado e a Microsoft já estava trabalhando na próxima versão do produto, o Visual Studio Team System “Rosario”.

Enquanto o VSTS 2008 não trouxe muitas novidades em relação ao seu antecessor, o Visual Studio Team System “Rosario” está prometendo uma verdadeira revolução no produto. Muitas das features solicitadas pelo pessoal que trabalha com o Team System está presente na especificação do novo produto, entre elas: gerenciamento de portfólios de projetos e integração com o Project Server nativa, rastreabilidade e análise de impacto, diversas melhorias nas ferramentas de testes e muito mais.

Confira as principais novidades do Team System “Rosario” abaixo:

  1. Priorização e gerenciamento de projetos de TI compartilhado com o Project Server através de integração direta. (Hoje, isso é feito através de um plug-in chamado PsTfsConnector )

  2. Gerenciamento de portfólios de projetos para permitir um gerenciamento de recursos balanceado de acordo com as necessidades de negócios.

  3. Rastreabilidade completa (ex. work items hierárquicos) para permitir rastrear artefatos contra requisitos de negócio e possibilidade de realizar análises de impacto rapidamente de acordo com requisições de mudanças.

  4. Métricas e Dashboards para visão compartilhada de status e progresso do projeto em relação aos artefatos previstos para as entregas.

  5. Novos recursos poderosos para permitir que desenvolvedores e testadores possam rapidamente identificar, comunicar, priorizar, diagnosticar e resolver bugs.

  6. Gerenciamento de test case integrado para criar, organizar e gerenciar test cases com os times de desenvolvimento e testes.

  7. Automação de testes e guias para ajudar desenvolvedores e testadores a focarem em testes de negócio ao invés de tarefas repetitivas e manuais.

  8. Métricas de qualidade para decisões de release no formato “vai/não vai” se uma aplicação está pronta para produção e se foi totalmente testada contra os requisitos de negócio.

  9. Rápida integração de times remotos, distribuídos e desconectados no processo de desenvolvimento.

  10. Fácil customização de processos e guias da Microsoft e de parceiros para ajustar a forma que o seu time trabalha.

  11. Suporte integrado para construção de setups usando Windows Installer XML technology

  12. Melhorias na build, no controlador de versão (Source Control) e na administração multi-server.

Pra quem se interessou, há uma máquina virtual completinha disponível com o produto para download, é uma versão de abril/08 e possui pouco mais de 8 GB, então além de paciência recomendo um bom gerenciar do downloads. O endereço para baixá-la é http://www.microsoft.com/downloads/details.aspx?familyid=65d0e3bd-9df3-421a-804f-8f01bd90f0b4&displaylang=en&tm

Abraços
André Dias

segunda-feira, julho 28, 2008

Team System : Um caminho mais curto para obter o CMMi

Que o Team System é um produto para ALM (Application Lifecycle Management – Gerenciamento de Ciclo de Vida de Aplicações) todo mundo está cansado de saber. O que algumas pessoas talvez não saibam é que o Team System pode facilitar, e muito, a vida da sua empresa na obtenção do CMMi nível 3. Vamos entender por que.

O CMMi pede que você tenha Gerenciamento de Configuração, Medição e Análise, Monitoramento e Controle de Projeto, Planejamento do Projeto, Garantia de Qualidade do Produto e do Processo, Gerenciamento de Requisitos e Gerenciamento de Fornecedores, isso só pra citar as Áreas de Processos do nível de maturidade 2.

O Team System consegue endereçar todos esses requisitos oferecendo versionamento de artefatos, utilizando o Source Control para controle de código fonte e o SharePoint para gerenciamento dos demais artefatos. Oferece também um gerenciamento muito bom de work items que te permite não só gerenciar requisitos, mas também ter planejamento, controle e monitoramento de projetos.

Se você achar que ainda falta alguma coisa, é só fazer a integração com o Project Server, que aí consultor nenhum de CMMi vai colocar defeito. De quebra ele traz também mais de 20 relatórios para você realizar medição e acompanhar a qualidade do seu produto e possui também diversas ferramentas de testes integradas para te auxiliar na qualidade. E por último e muito importante também, traz todo o processo descrito no portal do projeto.

Legal! Existem algumas ferramentas no mercado que também fazem isso. Talvez não tão integradas como o Team System, mas fazem. E então qual é o grande diferencial do Team System?

O Team System foi desenhado para se moldar a qualquer tipo de processo e a Microsoft fez um trabalho fantástico para desenhar um template de processo que fosse aderente ao CMMi, mas que não tivesse toda aquela burocracia que muitos acham necessário, ela criou o MSF for CMMI® Process Improvement.

Enquanto um processo CMMi típico tem em torno de 400 artefatos para estar aderente ao nível 3, o MSF for CMMI® Process Improvement, possui apenas 59. Uma redução considerável de 85%. Tudo isso é possível graças à integração da ferramenta com o template de processo e principalmente da aderência do template de processo ao manifesto ágil que é:
  • Colaboração com o Cliente sobre Negociação de Contratos
  • Responder as mudanças sobre Seguir o Planejamento
  • Pessoas e Iterações sobre Processos e Ferramentas
  • Software Funcionamento sobre Documentação Abrangente
Trazendo toda essa teoria pro lado prático e analisando um pouco da experiência que já tive. Dificilmente, você conseguirá seguir 100% o template de processo MSF for CMMI® Process Improvement, no entanto, é muuuito mais simples customizar um template com 59 artefatos desenhados para trabalhar de forma integrada com uma ferramenta que vai te dar todo o apoio na implantação e manutenção do processo do que criar um processo do zero tendo como meta uns 400 artefatos e ter várias ferramentas que não se conversam.

E tem gente que ainda pergunta por que eu gosto desse esse tal de Team System :-)

Abraços
André Dias

sábado, julho 26, 2008

Utilizando Team System com Eclipse

Sempre quando tento vender a idéia do Visual Studio Team System para empresas que desenvolvem sistemas para várias plataformas, na maioria das vezes, a primeira pergunta que ouço é: "Na minha empresa, utilizamos Java, VB6, Delphi e .Net. O Team System consegue gerenciar tudo isso?" E eu com o peito estufado digo com todo o prazer "Simmm !!! "

No entanto, eu nunca tinha "brincado" de integrar Team System com Eclipse, apenas com VB6 e SQL Management Studio (para saber como veja esse post), mas como nesse mundo da computação, nunca existe nunca. Surgiu a primeira necessidade de se fazer essa integração, que para a minha surpresa, foi muito simples e bastante agradável.

O primeiro passo foi baixar o plugin para eclipse no site da Teamprise. O processo de instalação é é muito simples. Basta decompactar os arquivos na pasta do eclipse e quando você abre a IDE é só escolher quais janelas do Team System você quer exibir.

O pessoal da Teamprise fez um excelente trabalho e não deixaram a desejar nem na usabilidade. Os ícones, janelas, nomenclaturas são exatamente iguais ao Visual Studio. Confiram algumas telas:

Imagem 1: Team Explorer



Imagem 2: Pending Changes (Work Items)



Imagem 3: "Solution Explorer" com integração ao VSTS



Como nem tudo são flores esse plugin tem um custo de US$ 199.00. Nada muito significante comparado ao retorno que ele te dá. O investimento realmente vale a pena.

Para os javeiros de plantão, antes de torcerem o nariz para essa ferramenta da Microsoft e dizer que o Subversion é muito melhor, dêem uma olhadinha no TS. Acho que vocês vão mudar de idéia rapidinho.

Um abraço
André Dias

quinta-feira, julho 24, 2008

Iniciando com o Windows Workflow Foundation

Pra quem está interessado em iniciar seus estudos no Windows Workflow Foundation (WF) ou simplesmente entender como "encaixar" esse recurso em sua aplicações, uma boa fonte é o site de arquitetura para Workflow & Business Processes em http://msdn.microsoft.com/en-us/architecture/aa699452.aspx.

Lá você encontrará ferramentas, webcasts e artigos sobre engines de workflow, orquestração de serviços, monitoração e principalmente como desenvolver e integrar tudo isso. É um prato cheio de informação pra quem trabalha ou quer trabalhar com workflows.

[]s
André Dias