Prática: Implantando um Mecanismo de Rastreabilidade entre os Requisitos e os Produtos de Trabalho
Em um projeto de software indicar a relação entre os requisitos e produtos de trabalho permite a criação de um mecanismo de rastreabilidade. A boa utilização deste mecanismo reflete diretamente na qualidade do software. Com a rastreabilidade é possível compreender a importância de cada produto de trabalho e que necessidades do cliente estes realizam, mensurar o impacto de mudanças e de testes além de manter a consistência do produto e se este atende as necessidades iniciais do cliente.
Descrição
Objetivo
  • Compreender a origem dos requisitos
  • Gerenciar o escopo do projeto
  • Gerenciar mudanças nos requisitos
  • Avaliar o impacto no projeto da mudança em um requisito
  • Avaliar o impacto da falha de um teste nos requisitos (isto é, se o teste falhar, talvez o requisito não seja atendido)
  • Verificar se todos os requisitos do sistema são desempenhados pela implementação
  • Verificar se o aplicativo faz apenas o que era esperado que ele fizesse.
Informações Detalhadas

Sugerimos como pré-requisito ler o conceito Rastreabilidade

Descrição PrincipalA rastreabilidade é a capacidade de rastrear um elemento do projeto (artefato, produtos de trabalho) a outros elementos existentes. Ou seja, só podemos obter a rastreabilidade se indicarmos em nosso projeto como cada elemento se relaciona com outro.

Para facilitar o entendimento, dividimos os elementos existentes no projeto em três categorias.

  • Elementos de modelagem e implementação. São os elementos que descrevem e implementam a solução. São descritos normalmente na ferramenta Enterprise Architec (EA).
  • Documentos dinâmicos de gestão do projeto. Concretizam uma visão ou permitem gerenciar e monitorar o andamento do projeto. São normalmente descritos em editores de texto como o BrOffice.
  • Documentos estáticos. Também definidos em editores de textos padrões, no entanto, são estáticos. Logo após criado é apresentados e arquivados, sem gerar mudanças ao longo do projeto. Alguns exemplos: atas, script de apresentação, proposta comercial, análise de viabilidade, relatório de revisões, termos de revisão e aceite.

Para os elementos estáticos não adotamos manter a rastreabilidade, já que, como o próprio nome diz, eles não sofrem alterações.

Os documentos dinâmicos de gestão do projeto, diante de alterações no escopo do projeto, sofrem alterações e por isto devem ser rastreados. A rastreabilidade destes elementos é conforme mostrada na figura abaixo. De acordo com a Planilha de Estimativa de Escopo, Prazo e Custo, o Gerente do projeto cria o Plano de Projeto definindo o Cronograma, Plano das Iterações, Lista de Riscos e Diário de Bordo. Ele também gerencia o escopo do projeto com a Planilha de Gerenciamento de Casos de Uso e Mudanças.

Os elementos de modelagem e implementação são as principais peças que serão conectadas, pois elas geram os principais elementos do software, o código e as tabelas. Manter a rastreabilidade destes elementos é essencial para manter o software funcionando adequadamente, caso contrário, uma mudança em um elemento poderia gerar um efeito colateral em outro elemento e ninguém perceber.

O diagrama abaixo apresenta a forma como a rastreabilidade será implantada em nossos projetos. Como podem ver, temos a rastreabilidade vertical dos documentos de gestão do projeto e dos elementos de modelagem e implementação.

 

Adotamos a ferramenta Enterprise Architect (EA) para modelarmos elementos de desenho do software. Um dos motivos desta escolha é que o EA é a possibilidade de construirmos um mecanismo de rastreabilidade eficiente entre os elementos de modelagem. É importante enfatizar que a rastreabilidade não é mantida somente na ferramenta Enterprise Architect, produtos de trabalho externos são também rastreados no projeto da seguinte forma:



Elemento Rastreabilidade
Casos de Teste São rastreado pelo seu nome. O nome do Caso de Teste possui o mesmo identificados do Caso de Uso que testa. Exemplo: CSU 0012 é testado pelo CST 0012.
Código-fonte Cada código possuia a sua classe de mesmo nome desenhada no EA. Exemplo: Para a Classe "usuarioVisitante" existe o código "usuarioVisitante".
Tabela Análogo ao código fonte, o nome da tabela refleta a classe que ele está vinculado. Para a classe usuário, existe, por exemplo, uma tabela usuário.
Planilha de Gerenciamento de Requisitos e Mudanças, Plano do Projeto, Plano da Iteração, Cronograma e LIsta de Riscos A rastreabilidade é definida na imagem de rastreabilidade de todo o projeto (acima). Alterando um Caso de Uso existe uma análise de impacto na Planilha de Gerenciamento de Requisitos e Mudanças, Plano do Projeto eelementos anexos: Plano da Iteração, Cronograma e LIsta de Riscos.


Iniciando na fase de elaboração e se prolongando ao longo do projeto, a modelagem dos elementos no EA deve ser uma atividade cotidiana para a equipe técnica do projeto. Isto pois praticamente todos os dias são criados ou alterados elementos.

Identificando Relações entre Requistos e Elementos de Implementação

Em nosso processo identificaremos a rastreabilidade apenas entre os elementos de modelagem do projeto. Os demais elementos mantem a rastreabilidade implicitamente pela equipe do projeto conforme o diagrama apresentado e na execução das tarefas específicas para este fim (apresentadas no tópico seguinte).

Os primeiros elementos de modelagem criados são os Requisitos de Negócio. Retirados inicialmente do Documento de Visão, os requisitos de negócio devem ser adicionados no projeto do EA por uma organização lógica (requisitos funcionais e não-funcionais, por exemplo). Adicionados os requisitos, um diagrama de rastreabilidade horizontal deve ser criado, normalmente envolvendo todos os requisitos de negócio do projeto. Este diagrama (figura abaixo) identificará a relação entre cada requisito, identificando, por exemplo, se um requisito depende de outro, se um requisito é agregado a outro, etc.

 

Criado o diagrama de rastreabilidade horizontal, precisamos agora apenas mantê-lo mediante alguma alteração no projeto que identifique ou altere algum requisito ou sua relação.

O próximo passo, ainda na fase de elaboração, é a identificação dos Casos de Uso. Os Casos de Uso, em grande parte, realizam (são a representação da solução em funcionalidades do sistema) um ou mais requisitos. Por isto, eles são os elementos chave para indicar a rastreabilidade vertical. Crie então no EA um pacote para cada Caso de Uso, dentro deste pacote insira o Caso de Uso, o seu diagrama de rastreabilidade vertical e demais elementos relevantes (diagramas de sequência, atividades e outros ítens diretamente ligados ao Caso de Uso).

No diagrama de rastreabilidade vertical, inicialmente você indicará os requistos realizados e referenciados por este Caso de Uso.

Nos passos seguinte, novos elementos da modelagem serão criados, diagramas, classes, casos de testes, interfaces, mensagens, regras de negócio, etc. A cada novo elemento é necessário que você analise se este novo artefato possui alguma relação com os Casos de Uso do projeto. Necessariamente, no mínimo um Caso de Uso, este ítem deve se relacionar, caso contrário, sua existência não estaria realizando um requisito e ele não seria necessário no projeto. Sendo assim, indique a relação deste novo elemento com todos os Casos de Uso que ele se relaciona.



E pronto! Se todos os elementos foram inseridos no projeto com a atenção de relacioná-los com os demais elementos existentes a rastreabilidade do projeto está mantida.

Quem deve criar a rastreabilidade?

Por definição da rastreabilidade neste processo, vários produtos de trabalho possuem um vínculo virtual, por exemplo, entre Casos de Uso e a Planilha de Gerenciamento de Casos de Uso e Mudanças. No entanto, elementos de modelagem possuem um vínculo descrito no desenho do projeto. Portanto, em que momento e quem deve definir este vínculo? Para facilitar este entendimento criamos a planilha abaixo indicando onde cada papel criar o vinculo de rastreabilidade entre os elementos de modelagem:

Papel/Fase Concepção Elaboração Construção Transição
Analista de Negócio X Identificar Todos os Casos de Uso
(A cada Caso de Uso criado identificar qual a relação sua com um ou mais requisitos)
Especificar Casos de Uso Candidatos da Próxima Iteração
(a cada novo elemento criado indicar a sua relação com os outros existentes)
Especificar Casos de Uso Candidatos da Próxima Iteração
(a cada novo elemento criado indicar a sua relação com os outros existentes)
Especificar Casos de Uso Candidatos da Próxima Iteração
(a cada novo elemento criado indicar a sua relação com os outros existentes)
Arquiteto X

Refinar e Desenhar a Solução Arquitetural 
(Vincular Componentes aos Casos de Uso)

Refinar e Desenhar a Solução Arquitetural 
(Vincular Componentes aos Casos de Uso)

Refinar e Desenhar a Solução Arquitetural 
(Vincular Componentes aos Casos de Uso)

Gerente Projeto X Incorporar Mudança ao Escopo do Projeto 
(esta atividade é mais o planejamento da mudança do que o vínculo. No entanto, de acordo com as mudanças aprovadas alterar documentos de gestão do projeto para incorporar mudanças nas próximas iterações. Sem este vínculo as mudanças serão perdidas ao longo do projeto)
Incorporar Mudança ao Escopo do Projeto 
(de acordo com as mudanças aprovadas alterar documentos de gestão do projeto para incorporar mudanças nas próximas iterações. Sem este vínculo as mudanças serão perdidas ao longo do projeto)
Incorporar Mudança ao Escopo do Projeto 
(de acordo com as mudanças aprovadas alterar documentos de gestão do projeto para incorporar mudanças nas próximas iterações. Sem este vínculo as mudanças serão perdidas ao longo do projeto)
Desenvolvedor X X Refinar Desenho 
(de acordo com a especificação do Caso de Uso, a cada classe nova ou alterada deve ser indicada o seu vínculo com o Caso de Uso e demais elementos. também deve ser mantido o vínculo das classes com os códigos, telas e tabelas)
Refinar Desenho 
(de acordo com a especificação do Caso de Uso, a cada classe nova ou alterada deve ser indicada o seu vínculo com o Caso de Uso e demais elementos. também deve ser mantido o vínculo das classes com os códigos, telas e tabelas)

Mas como utilizar a rastreabilidade?

Em nosso PDS o diferencial notável da rastreabilidade é no processo de solicitação de mudança. Como tarefa deste processo devemos analisar o impacto de cada mudança solicitada, quais produtos de trabalho ela altera, como altera e qual a estimativa de esforço para implementar esta alteração. Sem os diagramas de rastreabilidade, esta cálculo seria um "chutômetro" pois ninguém poderia indicar com certeza todos os itens a serem alterados, pois cada papel trabalha com ítens em um determinado nível e abrangência. Já com as matrizes de rastreabilidade horizontal e vertical é possível analisarmos todos os impactos de uma mudança no projeto.

Mas somente os dois diagramas são suficientes para rastrear todas as mudanças? Não! Uma alteração pode alterar uma classe utilizada por vários outros elementos fora do contexto do Caso de Uso analisando, então, como analisar quais são estes elementos? Para isto a ferramenta EA, diante dos diagramas criados, provê automaticamente uma matriz de rastreabilidade, indicando um sistema de rastreamento de elemento para elemento em qual tipo de relação. Desta forma podemos, por exemplo, analisar as relações desta classe com todos os outros produtos de trabalho e identificar o impacto correto da mudança.

O que mais posso usufruir da existência da rastreabilidade no projeto?

Inúmeras possibilidades podem, e devem, se beneficiar com a rastreabilidade. A rastreabilidade está diretamente ligada a qualidade do projeto! Através da rastreabilidade podemos filtrar elementos para uma determinada finalidade. As rastreabilidades podem ser configuradas para ajudar a responder o seguinte conjunto de questões, por exemplo:

  • Podemos encontrar as necessidades dos usuários que serão atendidas na iteração #n
  • Podemos levantar o status de todos os testes em todos os casos de uso na interação #n
  • Podemos levantar todos os requisitos não-funcionais vinculados a testes que possuem status não testado
  • Podemos levantar os resultados de todos os testes que falharam, em ordem de importância
  • Podemos levantar a ordem de prioridade de um determinado conjunto de produtos de trabalho


 

Informações AdicionaisEnterprise Architect (EA): http://www.sparxsystems.com.au/