Rastreabilidade em Projetos Ágeis

by alisson.vale 15/8/2007 23:56:00

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:

  1. 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?
  2. task to code: Seu desenvolvedor trabalha com workingspaces individualizadas para cada tarefa?
  3. 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?
  4. 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?
  5.  Seu cliente consegue mapear a build gerada com a tarefa que ele solicitou?

Posts relacionados

Comentários

1/9/2007 22:22:18

Marcos Vinícius Guimarães

Alisson,

estou gostando bastante do blog e este assunto de agilidade + certificações (avaliações seria melhor) me interessa muito.

Só não entendi porque, no caso dos projetos ágeis, a rastreabilidade não serviria também para descobrir o que deve ser alterado caso alguma funcionalidade seja totalmente modificada pelo Cliente. Eu sei que ela serve para mais coisas e até o pessoal dos projetos "tradicionais" deveriam usar melhor o conceito de rastreabilidade. Mas identificar o impacto das mudanças é uma utilidade óbvia de um sistema de rastreabilidade.

Marcos

Marcos Vinícius Guimarães

2/9/2007 03:19:03

Alisson Vale

Olá Marcos,

É ótimo saber que você está gostando do blog. É sempre bom ter um feedback de vez em quando. Obrigado. Apareça sempre que quiser para dar sua opinião. O espaço estará sempre aberto.
Na minha visão, a rastreabilidade tem um propósito diferente em projetos ágeis. Não é tão importante assim saber o que precisa ser alterado, pois como um projeto ágil investe mais em documentos executáveis, estes serão naturalmente encontrados quando uma alteração os afetar. Um outro ponto é que projetos ágeis tendem a não preservar modelos, pois estes são gerados de forma automatizada quando são necessários. Assim, a diferença está principalmente nos artefatos produzidos nas duas abordagens. É claro que se o projeto (ágil ou não) tiver alguma documentação manual, ter alguma rastreabilidade será útil.
Mas, em termos ágeis, rastreabilidade é utilizada para conectar a demanda (the customer voice) com a entrega de forma automatizada. O cliente pede algo com suas palavras e depois recebe uma release documentada com suas próprias palavras. Para se alcançar isso, é preciso sair da user story, passar pelas tasks, pelos testes, pelo código, pela build até chegar na release que ele recebe.
Desse modo, acho que em termos de avaliação não interessa muito o propósito mas o fato de existir a rastreabilidade entre os artefatos ou não.

Abraços,

Alisson

Alisson Vale

21/7/2008 16:24:16

Ricardo

O Alisson, inlcui comentários sobre este post na lista do XP RIO...

tech.groups.yahoo.com/group/xprio/message/5445

...............................................................

De lá pra cá aprendi que o uso de rastreabilidade em um ambiente ágil
é interessante como forma para descrever um incremento do seu
software. Um incremento é o caminho ou o processo necessário para sair
da demanda do cliente em direção ao atendimento a essa demanda por
meio de software funcionando.

Em software, um incremento é a implementação mais próxima do conceito
que a Toyota chama de fluxo unitário. O fluxo unitário depende de
níveis baixos de inventário (estoque) para funcionar e, no caso de
software, software pronto e não-entregue é inventário, portanto, quem
se apóia em conceitos de produção enxuta (e a maioria dos projetos
ágeis,o faz) tem a boa prática de otimizar ao máximo o que há entre o
início do desenvolvimento de uma nova feature e sua entrega.

Nesse processo de otimização você eliminará , por meio de processos de
melhoria contínua, uma grande quantidade de artefatos que não agregam
valor ou automatizará a geração desses artefatos de forma a minimizar
seu impacto nas atividades que de fato agregam valor gerando software
funcional. O quê fica precisa ser rastreável.... só que como, em
processos ágeis, o foco é a geração de valor (não o
processo-pelo-processo), a rastreabilidade não é para documentos, mas
para descrever a cadeia de valor que levou seu software a sair da
posição n para a n+1. Isso o ajudará a percorrer novamente a cadeia de
valor caso precise entender ou ajustar um determinado incremento em
algum momento.

É muito útil, em um cenário onde você tem vários incrementos
acontecendo simultaneamente, poder sair rapidamente da demanda do seu
cliente para qualquer artefato que esteve envolvido no processo de
elaboração e entrega dessa demanda. Não porquê você simplesmente
"acha" que aquilo será útil um dia para *localizar artefatos que
precisem ser modificados*, mas porquê um dia talvez você precise
*entender tudo que foi feito para gerar aquele incremento*.

O ponto é que o desperdício de manter um processo manual de mapeamento
de artefatos é imenso. Entre fazer manualmente e não fazer, eu
certamente optaria por não fazer. Mas como acho o conceito importante,
prefiro tentar encontrar outras soluções. Pode-se fazer isso com um
pouco de criatividade e algumas boas ferramentas. Alguns exemplos:

- Todo incremento do software pode ser identificado e documentado em
um ticket em uma ferramenta de Issue Tracking (o Mantis é o meu
favorito);
- Quando o incremento é implementado pelo desenvolvedor, o ticket pode
ser documentado com um link para uma visão do código alterado (gosto
da dupla Track+Subversion para isso). Aqui você pode criar políticas
de check-in que evitem uma alteração no repositório sem um ticket
associado.
- Quando a build passa pela Integração Contínua, o ticket é
documentado com o número de build e com links para os relatórios
gerados por ela;
- Integrar o Issue Tracking com um wiki pode ajudar a rastrear o
incremento a uma especificação mais formal. Ex:
www.phidelis.com.br/.../...Executaacute3bveis.aspx
(Figura2)
- Uma release pode conter vários incrementos. Assim, um release note
rastreia o incremento com o documento que notifica os clientes sobre a
nova release.
- Esse paper também descreve algumas idéias ligadas a rastreabilidade:
www.telelogic.com/download/index.cfm?id=4857

E por aí vai... tenho certeza que há muita solução criativa de
rastreabilidade por aí. E isso não é decorrencia de uma metodologia,
mas do processo de melhoria contínua e dos resultados que ele produz
ao longo do tempo.

Em resumo, na minha visão rastreabilidade em projetos ágeis significa
documentar um incremento de forma a capacitar sua equipe a chegar a
qualquer artefato modificado à partir da necessidade de negócio que o
originou. Assim, você poderá entender mais rapidamente o quê foi
feito, como foi feito e porquê foi feito.

Abraços,
Alisson Vale

Ricardo br

Comentar


(Vai mostrar seu Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Pré-visualização

5/9/2008 19:15:14

Sobre o Autor

Alisson Vale Alisson Vale
Líder de Projeto da Phidelis Tecnologia.


E-mail me Send mail
      Sign in

Últimos posts

Últimos comentários

Termo de Responsabilidade

Este site apresenta apenas opiniões pessoais. Não necessariamente representa as opiniões ou práticas da Phidelis Tecnologia.

© 2008