Rastreabilidade: da necessidade do cliente ao produto pronto

Você já se perguntou de onde veio alguma fórmula mágica que está escrita no código? Ou já se deparou com o desafio de avaliar qual seria o impacto de um requisito que mudou? Para deixar sua vida mais fácil, o que é necessário é que seu projeto tenha rastreabilidade.

E o que é rastreabilidade? É tornar evidente o vínculo entre as etapas e entre os artefatos gerados durante o processo, para saber qual a sua origem ou motivação.

O ideal é que uma necessidade do cliente seja mapeada em um ou mais requisitos. Não basta apenas evoluir o texto da necessidade de forma a gerar os requisitos, tornando-o objetivo e passível de testes. É preciso documentar que a primeira está associada a esses requisitos. A forma de fazer isso pode variar. Há quem crie matrizes de rastreabilidade, que funcionam bem. Também é possível identificar necessidades e requisitos com códigos inteligentes, de modo que uma parte do código dos requisitos seja justamente o da necessidade que o motivou - o que funciona para a cardinalidade um-para-muitos. Os sistemas de ALM (application lifecycle management) podem ter essa responsabilidade também, permitindo um cadastro do vínculo. Não deixa de ser uma matriz de rastreabilidade, mas sem necessidade de planilhas auxiliares.

Da mesma forma que um requisito está amarrado a uma necessidade, o mesmo ocorre com os elementos de solução técnica. Cada mecanismo empregado ou cada visão arquitetural poderia estar vinculado a um requisito, funcional ou não funcional.

Quando chegamos ao código, cada grupo de arquivos do sistema poderia estar vinculado a um ou mais elementos da solução técnica. Para tanto, poderia ser utilizado algum recurso do próprio controle de versão, do ALM ou ainda, de uma forma muito mais manual, cabeçalhos nos arquivos fonte. Essa última complica a solução do controle dos arquivos sem controle de fonte, como imagens e bibliotecas externas.

Os casos de testes também devem estar associados aos requisitos que os mesmos exercitam no código.

Enfim, temos uma ideia geral do que é rastreabilidade. Agora, quando tivermos que entender que fórmula maluca era aquela, voltamos até a necessidade do cliente que a motivou, por meio da trilha deixada pelo caminho. Se quisermos analisar o impacto de um requisito, poderia dizer quais arquivos no meu código tem potencial de serem afetados ou requerem teste. Também seria possível avaliar quais testes unitários precisam ser revisados. E tudo isso ajuda na gestão do risco de mudanças. Isso aumenta a segurança no sistema. Claro que dá trabalho, mas compensa. Fica mais profissional.

Provocações finais

Você diria que o projeto que você trabalha hoje é rastreável?  Quão difícil é deixar tudo documentado, a fim de permitir a rastreabilidade? É mais caro ou mais barato ter algo com rastreabilidade?

Comentários

Postagens mais visitadas deste blog

Brilho nos olhos

Um breve olhar do que já foi escrito

Requisitos conflitantes e dilemas no projeto de software