Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo

Este artigo apresenta inicialmente algumas definições associadas à engenharia de requisitos e à especificação de requisitos através de casos de uso. Em seguida, são apresentados alguns exemplos reais de especificação de requisitos utilizando casos de uso. Além disso, este artigo também apresenta algumas definições importantes sobre o diagrama de casos de uso e exemplificará seu uso através de um exemplo prático.


Para que serve

O objetivo do artigo é explicitar de forma prática como a especificação dos requisitos do software através de casos de uso podem ser efetuadas em um nível de detalhe tal que informações importantes para outras etapas do desenvolvimento como planejamento de testes, projeto e desenvolvimento não sejam omitidas.


Em que situação o tema é útil

O assunto abordado é útil no dia a dia do analista de requisitos na realização de suas atividades.

A engenharia de requisitos é um termo usado para descrever as atividades relacionadas à produção (levantamento, registro, validação e verificação) e gerência (controle de mudanças, gerência de configuração, rastreabilidade, gerência de qualidade dos requisitos) de requisitos. A Figura 1 representa essa definição.

Figura 1. Engenharia de Requisitos.

Mas o que podemos entender por requisitos? Existem diferentes definições encontradas na literatura técnica:

• Um requisito é uma característica do sistema ou a descrição de algo que o sistema é capaz de realizar para atingir os seus objetivos;

• As descrições das funções e restrições são os requisitos do sistema;

• Um requisito é uma propriedade que o software deve exibir para resolver algum problema no mundo real;

• Uma condição ou uma capacidade que deve ser alcançada ou estar presente em um sistema para satisfazer um contrato, padrão, especificação ou outro documento formalmente imposto...

Assim, podemos entender requisitos como sendo o conjunto de necessidades explicitadas pelo cliente que deverão ser atendidas para solucionar um determinado problema do negócio no qual o cliente faz parte. É importante estar atento para esta definição: embora o requisito seja definido pelo cliente, nem sempre o que o cliente quer é o que o negócio precisa. Cabe à equipe de consultores identificar a real necessidade do negócio.

Neste contexto, requisitos são importantes para:

• Estabelecer uma base de concordância entre o cliente e o fornecedor sobre o que o software fará;

• Fornecer uma referência para a validação do produto final;

• Reduzir o custo de desenvolvimento (como vimos anteriormente, requisitos mal definidos causam retrabalho).

A atividade de identificação e especificação de requisitos do software é uma atividade bastante desafiadora. É complexo:

• Identificar as reais necessidades do cliente;

• Lidar com clientes;

• Formalizar as necessidades do cliente através da especificação de requisitos de forma que esta seja de fácil entendimento para o cliente e forneça as informações requeridas pela equipe de desenvolvimento;

• Lidar com domínios desconhecidos. Entende-se por domínio o contexto para o qual o software está sendo desenvolvido. Por exemplo: contabilidade, medicina, controle de estoque. Para ilustrar esta dificuldade, imagine-se elaborando a especificação dos requisitos de um módulo estatístico para um sistema do mercado financeiro;

• Definir as necessidades do usuário em termos de especificações.

O objetivo deste artigo não é apresentar um referencial teórico sobre como lidar com cada questão envolvida nas atividades diárias de um analista de requisitos. Focaremos aqui apenas no último tópico da lista apresentada acima: “Definir as necessidades do usuário em termos de especificações”. Faremos isto de forma totalmente prática através da apresentação de um conjunto de casos de uso especificados que poderão servir de base para suas atividades como analista de requisitos.

Diagrama de Casos de Uso

Uma vez identificados e negociados, os requisitos devem ser documentados para que possam servir de base para o restante do processo de desenvolvimento.

Entre os muitos problemas que enfrentamos na documentação de requisitos, certamente, administrar o grande volume de informações gerado pelo processo de requisitos é um dos principais.

Os requisitos são documentados em um nível apropriado de detalhe. Em geral é produzido um documento de especificação de requisitos, de forma que todos os stakeholders possam entendê-lo.

O registro dos requisitos num documento próprio facilita o controle de alterações de todos os envolvidos na manutenção dos requisitos, bem como a geração de versões do documento e a facilidade de acesso por todos os envolvidos.

Entretanto, normalmente, desempenha-se uma atividade entre o levantamento de requisitos e sua especificação, a elaboração do diagrama de casos de uso.

Um caso de uso é uma seqüência de interações entre o ator (alguém ou algo que interage com o sistema) e o sistema, que acontece de forma atômica, na perspectiva do ator. Isso significa que quando criamos um caso de uso apenas nos preocupamos com “o que” o sistema deve fazer e não com “o como” deve fazer. Para lidar com os casos de uso, a UML apresenta o diagrama de casos de uso, que permite ao analista agrupar o comportamento esperado do sistema em rotinas de limites muito bem definidos, que farão a interação com os usuários.

Elementos de um diagrama de caso de uso

Ao criarmos um diagrama de caso de uso, também devemos nos atentar para certas características para que o diagrama não fique errado ou confuso no momento da especificação:

Ator: Alguém ou algo que interage com o sistema. Um ator pode ser uma pessoa, um sistema externo ou um hardware.

Herança de Atores: Outra característica com atores é a possibilidade de criar heranças entre eles (o mesmo que herança de classes). Através deste conceito é possível montar uma hierarquia de atores do sistema.

Caso de Uso: Como já explicado, um caso de uso mapeia a interação entre o ator e o sistema. Para uma perfeita compreensão do que um caso de uso controla, é fundamental que seu nome esteja dentro do contexto do negócio. Portanto, bons nomes de casos de uso são aqueles que o próprio cliente utiliza no seu dia a dia, por exemplo, Abrir Conta, Sacar Dinheiro e etc.

Herança de Casos de Uso: Assim como podemos criar herança entre os atores, também podemos criar herança entre os casos de uso. Essa característica tem o mesmo objetivo que uma herança de classes em um diagrama de classe, ou seja, quando queremos atribuir novas características ao caso de uso sem perder a sua essência, criamos casos de uso (filho) que herdam do caso de uso mais abstrato (pai).

Reuso de Caso de Uso: Podemos reutilizar casos de uso para aproveitarmos as mesmas interações entre ator e sistema. Em um diagrama, podemos reutilizar um caso de uso de duas formas possíveis:

o Include: Essa característica significa que o caso de uso sempre será chamado.

o Extend: Essa característica significa que o caso de uso poderá ou não ser executado, ou seja, dependerá do resultado de uma condição de negócio para ser decidido se ele será executado.

...
Quer ler esse conteúdo completo? Tenha acesso completo