quinta-feira, 1 de setembro de 2011

UML: Exibição de um Caso de Uso

Visão Geral

Uma exibição de caso de uso captura o comportamento de um sistema, subsistema ou classe como se apresenta para um usuário externo. Isto particiona a funcionalidade do sistema em transações significativas para os atores – usuários do sistema idealizados. As peças de funcionalidades interativas são chamadas de Casos de Uso. Um Caso de Uso descreve uma interação com atores como uma sequencia de mensagens entre o sistema e um ou mais atores. O termo ator inclui seres humanos, tais como outros computadores ou processos. A figura 1 mostra um diagrama de caso de uso para uma aplicação de catálogo telefônico. O modelo foi simplificado para o exemplo.



Ator

Um ator é a idealização de uma pessoa externa, processo ou coisa interagindo com um sistema, subsistema ou classe. Um ator caracteriza uma interação que usuários de fora podem ter com o sistema. Em tempo de execução, um usuário físico pode estar vinculado a múltiplos atores dentro do sistema. usuários diferentes podem estar vinculados a um mesmo ator e portanto representa múltiplas instancias da mesma definição de ator.
Cada ator participa em um ou mais casos de uso. Ele interage com o caso de uso (e, portanto com o sistema ou classe que pertence ao caso de uso) pela troca de mensagens. A implementação interna de um ator não é relevante no caso de uso; um ator pode ser caracterizado suficientemente por uma série de atributos que define seu status.
Atores podem ser definidos em hierarquias de generalização, nas quais uma descrição abstrata do ator é compartilhada e aumentada por uma ou mais descrições especificas de atores.
Um ator pode ser um ser humano, outro sistema computacional ou um processo executável.
Um ator é representado como um pequena imagem de boneco palito como o nome abaixo.

Caso de Uso


Um caso de uso é uma unidade coerente de uma funcionalidade externamente visível fornecida por uma unidade do sistema e expressada por sequências de mensagens trocadas entre o sistema e um ou mais atores. O proposito do caso de uso é definir uma peça de comportamento coerente sem revelar a estrutura interna do sistema. A definição de caso de uso inclui todo o comportamento implica – a sequencia da linha principal, variações diferentes do comportamento normal e todas as condições excepcionais que podem ocorrer com tal comportamento, junto com a resposta desejada. A partir do ponto de vista do usuário, esta pode ser uma situação anormal. A partir do ponto de vista do sistema, elas são variações adicionais que devem ser descritas e manipuladas.
No modelo a execução de cada caso de uso é independente uma das outras, embora uma implementação de caso de uso pode cria dependências implícitas entre eles devido a objetos compartilhados. Cada caso de uso representa uma peça ortogonal de funcionalidade cuja execução pode ser misturada com a execução de outro caso de uso.
A dinâmica de um caso de uso pode ser especificada por interações UML, mostrado como diagramas de máquina de estado, diagramas de sequencia, diagramas de colaboração ou descrições informais em textos. Quando casos de uso são implementados eles são percebidos por artefatos de colaborações entre classes do sistema. Uma classe do sistema pode participar em múltiplas colaborações e, portanto em múltiplos casos de uso.
Ao nível do sistema, os casos de uso representam o comportamento externo do sistema inteiro visíveis aos usuários do lado de fora. Um caso de uso é como a operação do sistema, uma operação acionada por um usuário externo. Diferente de uma operação, portanto, um caso de uso pode continuar a receber entradas dos seus atores durante a sua execução. Casos de uso também podem ser aplicados internamente em unidades menores de um sistema como um subsistema ou uma classe individual. Um caso de uso interno representa o comportamento que uma parte do sistema apresenta para o restante. Por exemplo, um caso de uso para uma classe representa um pedaço coerente de funcionalidade que uma classe fornece para outras classes que desempenham certos papeis dentro do sistema. Uma classe pode ter mais que um caso de uso.
Um caso de uso é uma descrição lógica de uma fatia de funcionalidade do sistema. Não é uma construção manifesta na implementação de um sistema. Ao invés disso, cada caso de uso deve ser mapeado para as classes que constroem um sistema. O comportamento do caso de uso é mapeado para as transições e operações das classes. Na medida em que cada classe pode desempenhar múltiplos papéis na construção de um sistema, isto pode, portanto perceber porções de múltiplos casos de uso. Parte da tarefa de design é encontrar classes de construção que claramente combinem os papeis próprios para construir todos os casos de uso sem introduzir complicações desnecessárias. A elaboração de casos de uso pode ser modelada como um conjunto de um ou mais colaborações. Uma colaboração é a percepção (realization) de um caso de uso.
Um caso de uso pode participar em vários relacionamentos em adição a associações com atores.


 Relacionamento
 Função
 Notação
 Associação
 O caminho de comunicação entre um ator e o caso de uso no qual participa
 
 Extends (ou extend)
 A inserção de um comportamento adicional para dentro de um caso de uso base que não possui este comportamento adicionado
 
 Use case generalization
 Um relacionamento entre um caso de uso geral e um caso de uso mais especifico que herda e adiciona características para o primeiro
 
 Includes (ou include)
 A inserção de comportamento adicional para um caso de uso que explicitamente descreve a inserção
 

Um caso de uso é desenhado como uma elipse com seu dentro ou abaixo. Ele é conectado por linhas solidas aos atores que se comunicam com ele.
Embora cada instancia de caso de uso seja independente, a descrição de um caso de uso pode ser fatorada em outros, que sejam casos de uso mais simples. É similar à maneira de descrição de classe que pode ser definida incrementalmente a partir de descrições de superclasses. Um caso de uso pode simplesmente incorporar o comportamento de outros casos de uso como fragmentos de seu próprio comportamento. Isto é chamado como um relacionamento de include. Neste caso, o novo caso de uso não é um caso especial do caso de uso original e não pode ser substituído por ele.
Um caso de uso pode ser também definido como uma extensão incremental de um caso de uso base. Esta é chamada um relacionamento extends. Pode existir várias extensões do mesmo caso de uso base que pode tudo ser aplicado junto. As extensões para o caso de uso base adicionam isto a sua semântica; isto é o caso de uso base é instanciado, não a extensão de casos de uso.
Os relacionamentos de include e extension são desenhados como setas tracejadas com as palavras chave «include» ou «extend». O relacionamento include aponta para o caso de uso a ser incluído; o relacionamento extend aponta do caso de uso a ser extendido.
Um Caso de uso também podem ser especializado em um ou mais casos de uso filho. Isto é a generalização do caso de uso. Qualquer caso de uso filho pode ser usado em uma situação na qual o caso de uso pai é esperado.
A generalização é desenhada da mesma maneira que qualquer generalização, como uma linha a partir do caso de uso filho para o caso de uso pai com triangulo grande apontado para o caso de uso pai. A Figura 2 mostra os relacionamentos da aplicação do catálogo de vendas.

Nenhum comentário: