Artigo Engenharia de Software 11 - Especificação de Casos de Uso
Detalhando os Requisitos de Software
Apresenta o documento de especificação de casos de uso, fundamental para o processo de desenvolvimento de software, e exemplifica as seções e componentes das seções deste documento.
Informar o leitor sobre quais elementos considerar quando da elaboração de um documento de especificação de casos de uso, apresentando um modelo (template) de documento que pode ser adotado ou customizado.
Durante o desenvolvimento de um sistema de software no qual há a necessidade de elaborar o documento de especificação de casos de uso, os quais descrevem o conjunto de funcionalidades do sistema a serem implementados pela equipe de projeto.
Desenvolver um sistema de software é uma atividade que requer um conjunto de habilidades com objetivo de entender as necessidades do usuário e/ou cliente, analisá-las, documentá-las num documento de requisitos (discutido na edição anterior), desenvolver o projeto, implementar e testar o software. Perceba que um engenheiro de software é um profissional que possui um conjunto de competências e é comum especializar-se em alguma(s) dela(s). As atividades iniciais são importantes, já que definem quais funcionalidades o sistema deve prover. Portanto, faz-se necessário descrever os requisitos de software com objetivo de facilitar as etapas seguintes (projeto e implementação).
Note que um documento de requisitos de software precisa ser claro, consistente e completo, pois ele servirá de referência aos desenvolvedores, gerente de projeto e engenheiros de software (responsáveis pelos testes e manutenção do sistema). Requisitos bem documentados consideram não apenas consistência, completude e clareza, mas também a evolução dos requisitos e, portanto, características do sistema de software. Dentro deste contexto, este artigo trata da especificação de casos de uso para detalhamento dos requisitos de software.
A especificação de requisitos de um sistema de software descreve as necessidades de usuários do sistema e, mais especificamente, descreve o conjunto de funcionalidades que o sistema deve fornecer. É a partir desta especificação que o projeto de software é desenvolvido para, em seguida, ser implementado. Quaisquer problemas como, por exemplo, de inconsistência ou ambigüidade, resultará em possíveis erros que precisarão ser corrigidos em alguma etapa futura do processo de desenvolvimento.
Adicionalmente ao objetivo acima, uma especificação de requisitos tem ainda outro objetivo, talvez até mais importante: comunicar de maneira efetiva quais funcionalidades o sistema deve prover (ou ainda, o que não irá prover). Perceba que a especificação de requisitos irá apoiar a comunicação entre usuários (clientes), projetistas, programadores, testadores.
O interesse é o de especificar as funcionalidades ou requisitos funcionais de um sistema. Nesse sentido, o sistema irá prover uma determinada funcionalidade quando solicitado ou quando uma condição for alcançada. Dessa forma, o que se tem é uma interação entre a funcionalidade (caracterizada pelo caso de uso) e um ator, que pode ser um usuário (humano), um componente de software ou algum hardware (ou dispositivo). Num exemplo simples do conhecimento do leitor, tem-se a funcionalidade login de um sistema Web, a qual serve para autenticar o login e senha de usuários e permitir acesso a determinada aplicação. Para essa funcionalidade, ou caso de uso, há uma interação entre usuário e o caso de uso login. Para tanto, um conjunto de passos é usado para descrever o fluxo de eventos da interação entre essas duas entidades. A seguir, a especificação de casos de uso é apresentada e exemplificada.
Caso de uso é uma técnica de especificação que descreve uma seqüência de ações que o sistema deve realizar para produzir uma resposta para um ator. Na realidade, tem-se uma seqüência da interação entre caso de uso e ator. O caso de uso detalha o que um sistema deve fazer, descrevendo como uma determinada funcionalidade é utilizada por um ator.
Cabe destacar que um caso de uso compreende duas partes: o diagrama de caso de uso e o caso de uso propriamente dito. O diagrama de caso de uso é um dos nove diagramas da UML (Unified Modeling Language) enquanto que o caso de uso consiste de um template (ou modelo), conforme apresentado na seção seguinte, que serve para detalhar a seqüência de passos de execução do caso de uso. Neste artigo, o foco é tratar da especificação de casos de uso, isto é, de apresentar e ilustrar um template de especificação e, portanto, o assunto diagrama de casos de uso não é tratado.
Os casos de uso servem para especificar as interações existentes entre o sistema em desenvolvimento e atores (ou entidades externas ao sistema). Os atores compreendem usuários, estímulos externos gerados por dispositivos eletrônicos ou outros sistemas computacionais. Os atores podem ser considerados como entidades externas ao sistema, já que estão fora da fronteira do sistema, e são responsáveis por gerar eventos para iniciar interação com o caso de uso.
Outra recomendação é evitar uso de termos específicos de implementação, procurando manter o nível de detalhamento compreensível ao usuário. É preciso considerar que os casos de uso devem levar em conta o vocabulário do usuário. Além disso, um cenário é uma instancia de um caso de uso e, portanto, um caso de uso pode conter um ou mais cenários, conforme apresentado na seção seguinte.
Exemplificando a Especificação de Casos de Uso
Casos de uso servem para especificar o comportamento de um sistema de software ou parte dele, isto é, descrevem um conjunto de ações que produzem algum resultado. Note que o objetivo do caso de uso é especificar o 'o que' e não o 'como' um determinado sistema realiza um objetivo. Um exemplo de diagrama de caso de uso é mostrado na Figura 1.
Figura 1. Exemplo de um caso de uso.
A figura contém um ator (Cliente) e um caso de uso (ValidarCliente) com o qual o ator interage. Note que podemos ter interações entre atores e casos de uso, cujo objetivo é alcançar a meta do caso de uso (realizando sua funcionalidade). Essas interações ocorrem através da troca de mensagens onde os atores se comunicam com o(s) caso(s) de uso. O fluxo que descreve as ações (i.e. mensagens) trocadas entre atores e caso de uso é denominado de fluxo principal e compõe o núcleo do documento da especificação de casos de uso.
Esse documento contém um conjunto de informações que são de interesse do cliente, gerente de projeto, gerente de negócios a programadores, analistas e engenheiros de testes. Nesse sentido, o engenheiro de software, ao elaborar esse documento, busca um compromisso de comunicar bem o conjunto de passos de cada caso uso do sistema, bem como prover detalhes com suficiente clareza e consistência para público alvo, ou seja, os programadores e engenheiros de testes (responsáveis pela implementação do sistema e elaboração e execução de plano de testes, respectivamente).
A Tabela 1 apresenta uma relação dos itens consideradas imprescindíveis em um documento de especificação de casos de uso. A relação de itens destacados na Tabela 1 não pressupõe a intenção de ser completo, mas de apontar os itens considerados como mais importantes num documento da especificação de casos de uso para uma empresa.