Recentemente eu participei como entrevistado em um dos podcasts que o Vinícius Teles da Improve it está promovendo sobre experiências ágeis. Essa série que ele vem conduzindo tem mostrado que há gente de todo o país se envolvendo muito seriamente com as técnicas e conceitos de desenvolvimento Ágil e é uma ótima oportunidade para aprender sobre o que tem sido feito e testado por aí. Algumas pessoas que ouviram a entrevista entraram em contato para saber mais detalhes sobre alguns tópicos abordados que não ficaram muito claros (a entrevista foi gravada via skype e a conexão de internet não ajudou muito no dia :S) . De qualquer forma, meu contato continua aberto para quem quiser compartilhar alguma experiência ou tirar alguma dúvida. Um dos tópicos que eu falei um pouco rápido mas que sempre gera muita dúvida é o conceito de "Rastreabilidade" e como ele pode ser aplicado em projetos Ágeis. Quem houve falar em Rastreabilidade já lembra logo da famosa "Matriz de Rastreabilidade" tão utilizada em projetos tradicionais, especialmente naqueles que precisam estar aderentes aos principais selos de certificação do mercado (CMM, ISO, etc).  O fato é que, em um projeto Ágil, essa matriz não vai servir para muita coisa. Entretanto, o conceito de Rastreabilidade continua sendo importante e, mesmo em um projeto Ágil, pode lhe trazer significantes benefícios. Rastreablidade significa, de uma forma mais simplificada, unir diferentes artefatos gerados pelo seu processo por meio de um cordão imaginário que, em um dado momento, pode ser "puxado" trazendo consigo todos os artefatos que estão relacionados entre si. É como se eu tivesse um mecanismo para navegar entre artefatos que mantém algum tipo de relacionamento entre si, tais como: user story (business value) => features (tasks) => tests => code   ou release => features => user story    ou code => tests => release => features => user story  ou user story => features => documentação e por aí vai... Em um projeto Ágil o objetivo da rastreabilidade também é diferente daquele para a qual ela é usada em projetos tradicionais. Nesses projetos essa matriz é utilizada principalmente para se detectar que artefatos devem ser modificados quando uma solicitação de mudança é feita pelo cliente. Já em um projeto Ágil a  rastreabilidade é tratada como mais um elemento que visa aproximar aquilo que o usuário pede daquilo que ele recebe. Ele tem que ser trabalhado de uma maneira que dispense o uso planilhas ou qualquer alimentação manual de dados. O processo e o ambiente técnico montado podem, se preparados adequadamente, serem capazes de gerar essa rastreabilidade sem que ninguém tenha que mantê-la de forma manual. Assim, o grande objetivo dessa prática é ser capaz de mapear, identificar e acoplar as demandas do usuário com suas respectivas entregas. Como incentivar ou garantir que sua equipe não vai entregar nada que não tenha sido efetivamente fruto de uma demanda válida do seu cliente? Em outras palavras, o que o seu cliente pede aparece documentado em seu release note? Você consegue identificar exatamente o quê foi modificado em termos de código-fonte para que aquela entrega fosse feita? Um outro ponto interessante é que conseguir implementar isso te dá uma grande vantagem no processo de aderência ao que está estipulado para a área de gerência de requisitos na maioria dos processos de certificação. Aqui na empresa nós conseguimos implementar isso integrando algumas ferramentas open-source que utilizamos, entre elas o Mantis, o CVS, o NAnt e o CruiseControl.Net. O próprio processo, apoiado pelo ferramental utilizado favorece e gera a rastreabilidade. E, para que isso ocorra, não é preciso preencher nenhuma planilha ou documento. Há algumas ferramentas mais pesadas que podem ajudar nisso, como o Team System da Microsoft ou o Star Team da Borland. Mas como elas oferecem muitos recursos o risco de criarem overheads no processo pode ser grande. O ideal é ir devagar trazendo para uso apenas aquilo que realmente interessa. O importante é identificar no seu processo os pontos onde você pode criar as conexões de rastreabilidade e implementá-los. Alguns pontos de rastreabilidade que são comuns a quase todo projeto de software: user story to task: Seu processo consegue te dizer quais foram as tasks necessárias para implementação de uma user story? Que bugs a corrigiram? Que tasks a modificaram? task to code: Seu desenvolvedor trabalha com workingspaces individualizadas para cada tarefa? code to sourcecontrol: Há uma política de check-in que favorece a integração do código alterado de forma atrelada a tarefa que originou a intervenção? O processo de check-in gera informação de rastreabilidade? sourcecontrol to build: As builds são identificadas pela tarefa que a originou? Release Notes e Change Logs são gerados de forma automática?  Seu cliente consegue mapear a build gerada com a tarefa que ele solicitou?

Posted by: alisson.vale
Posted on: 8/15/2007 at 11:56 PM
Tags: , ,
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (3) | Post RSSRSS comment feed