Histórico O conceito de “Caso de Uso” foi criado por Ivar Jacobson (um dos “três amigos” - como se chama o grupo que formulou a UML e o Processo Unificado). Surgiu da necessidade de tentar estabelecer comunicação eficiente entre o técnico de software e o usuário. “Alcançar boa comunicação, associada a um bom entendimento do mundo dos usuários, é a chave para desenvolver um bom software”. Definições Um caso de uso é uma técnica de modelagem usada para descrever o que um novo sistema deve fazer . Ele é construído através de um processo interativo no qual as discussões entre o cliente e os desenvolvedores do sistema conduzem a uma especificação do sistema da qual todos estão de acordo. Em um momento inicial, os casos de uso deveriam estabelecer comunicação entre os técnicos de software e os usuários; uma vez estabelecido acordo quanto ao comportamento esperado, estes diagramas seriam utilizados também para comunicação entre técnicos: os casos de uso constituem a referência primária para as demais abstrações – ou decodificações –dos requisitos nos artefatos propostos , até se chegar à linguagem de programação. Identificação Geralmente, é difícil decidir se um conjunto de interações do usuário do sistema, ou uma caixa de diálogo, é um ou são vários casos de uso. Considere o uso de uma máquina de reciclagem. O cliente insere itens de depósito como, por exemplo, latas, garrafas e caixotes na máquina de reciclagem. Ao inserir todos os itens de depósito, basta pressionar um botão e um recibo é impresso. Esse recibo pode ser trocado por dinheiro. Identificação É um caso de uso para inserir um item de depósito e outro caso de uso para solicitar o recibo? Ou trata-se apenas de um caso de uso para os dois? Há duas ações, mas uma sem a outra é de pouco valor para o cliente. Mais exatamente, é o diálogo completo, com todas as inserções e a obtenção do recibo, que tem valor para o cliente (e faz sentido para ele). Portanto, o diálogo completo, desde a inserção do primeiro item de depósito, até o pressionamento do botão e a obtenção do recibo, é um caso de uso completo. Diagrama Sob uma perspectiva comunicacional, o diagrama de casos de uso pode ser descrito como um sistema de símbolos que, por convenção preestabelecida, se destina a representar e transmitir uma mensagem entre a fonte e o ponto de destino. A fonte seria o técnico de software e o ponto de destino um usuário ou um outro técnico de software. Diagrama Ator Representa qualquer entidade que interage com o sistema durante sua execução essa interação se dá através de comunicações (troca de mensagens). Um ator pode ser uma pessoa (usuário, secretaria, aluno...) . Objeto caso de uso Cada objeto caso de uso é representado graficamente com o símbolo de uma elipse e corresponde a um comportamento do sistema que produz um resultado de valor mensurável para um ator. Casos de uso descrevem as coisas que os atores querem que o sistema faça e deve ser uma tarefa completa, segundo a perspectiva do ator. O conjunto de todos os casos de uso irá descrever a funcionalidade completa do sistema sob o ponto de vista dos usuários. Relacionamento A representação gráfica das interações entre os atores e os casos de uso é convencionada pela UML através de linhas chamadas associações de comunicação, ou simplesmente associações. É importante destacar que cada associação entre um ator e um caso de uso representa todo o diálogo que se dá entre eles, até que um resultado de valor observável seja alcançado. Com isso, mesmo que haja várias interações entre o usuário e o sistema, uma linha entre o ator e o caso de uso é suficiente para representar todas essas interações. Formalmente, as “associações mostram com quais atores o caso de uso se comunica. Exemplo Suponha que você tenha um almoxarifado de peças onde clientes façam pedidos e onde um operador receba tarefas do sistema para buscar peças para os pedidos dos clientes e distribuir peças do setor de compras para o almoxarifado. Exemplo Vamos identificar os atores . Eles são : Cliente , Operador , Sistema e Setor de Compras. Exemplo Não errado !!! No exemplo Sistema não pode ser um ator pois ele não se ajusta ao conceito dado a um ator . Lembre-se que um ator é um papel que interage com o sistema mas não faz parte do sistema, então no lugar de Sistema poderíamos sugerir um administrador ou gerente. Então os atores seriam : Cliente , Operador , Administrador e Compras. Exemplo E os casos de usos , quais seriam ? - solicita peças (ator Cliente) - entrega peças (ator Compras) - buscar pedidos (ator operador) - distribuir pedidos (ator operador) - cadastrar Tarefas (administrador) Exemplo Errado !!! No caso do ator operador ele não atua sobre o sistema nos casos de uso buscar pedidos e distribuir pedidos , ele atua sobre o sistema realizando Tarefa. Então o correto seria. - solicita peças (ator Cliente) - entrega peças (ator Compras) - realiza Tarefa (ator operador) - cadastrar Tarefas (administrador) Diagrama INCLUSÃO Se um caso de uso inicia ou inclui o comportamento de outro , dizemos que ele usa o outro. Ex: No caso de uso Comprar Item se o pagamento for feito com dinheiro podemos ter a inclusão PagarComDinheiro As propriedades básicas da inclusão são : realizar um decomposição funcional reduzir a complexidade de um caso de uso O caso de uso básico não pode executar sem a inclusão. EXEMPLO Então para o exemplo do cliente com o use case Solicitar Pedidos de peças teríamos: INCLUSÃO EXTENSÃO • Extensão - Define pontos de extensão que adicionam comportamento a um caso de uso base descrevendo uma variação do comportamento normal. O caso de uso base pode ser executado mesmo sem a extensão. • Ex: O caso de uso Comprar Produto pode apresentar a extensão Compra por um Cliente Regular. Abaixo temos o diagrama UML EXEMPLO EXTENSÃO A IMPORTÂNCIA DA COMUNICAÇÃO COM O USUÁRIO A notação de casos de uso, assim como a UML, foram divulgadas e tiveram ampla aceitação mundial pelos membros da comunidade de software. É importante destacar que para comunicação entre membros do corpo técnico, os casos de uso podem gerar comunicação eficiente, mas o que está em análise a princípio não é a utilidade dos diagramas quando se trata de comunicação entre técnicos, mas entre técnicos e usuários. Enquanto a compreensão pelos usuários do produto que será construído é fundamental, é discutível a pertinência do aprendizado deste tipo de notação (mesmo que apenas para leitura) por pessoas que são apenas usuários de produtos de software, e que estão eventualmente envolvidas em projeto de desenvolvimento de software como fontes de informação e validação de requisitos, mas não como construtores de programas.