Prévia do material em texto
UML – Unified Modeling Language Diagramas de Casos de Uso José Correia, Março 2006 (http://paginas.ispgaya.pt/~jcorreia/) José Correia UML – Diagramas de Casos de Uso 2 Objectivos ? O objectivo de um diagrama de casos de uso de um sistema é mostrar para que serve o sistema (quais são os usos possíveis do sistema), ignorando a forma como o sistema está organizado internamente. ? Mais precisamente, permite capturar o comportamento (funcionalidades) do sistema do modo como é visto pelos utilizadores, sem ter de especificar como é que esse comportamento é implementado. ? Os diagramas de casos de uso descrevem: • o contexto do sistema • as funcionalidades do sistema (os casos de uso) • e, possivelmente, alguns requisitos não funcionais (os que têm a ver com casos de uso particulares) José Correia UML – Diagramas de Casos de Uso 3 Elementos da UML ? O diagrama de casos de uso de um sistema contém: • Linha que define a fronteira do sistema – entre o sistema físico e os actores que com ele interagem • Actores (fora do sistema) • Casos de uso (dentro do sistema) • Associações de interacção entre actores e casos de uso ? Um diagrama de casos de uso também pode conter: • Relações de dependência entre casos de uso - de extensão (estereótipo «extend») - de inclusão (estereótipo «include») • Relações de generalização - entre casos de uso ou entre actores José Correia UML – Diagramas de Casos de Uso 4 Exemplo José Correia UML – Diagramas de Casos de Uso 5 Actores ? Um actor... ... é um tipo de utilizador do sistema ... é alguém, ou alguma coisa, que interage com o sistema pode ser qualquer coisa – humano, dispositivo de hardware, outro sistema, etc. ... é, como iremos ver, uma classe (de objectos externos ao sistema). ? A mesma pessoa, ou coisa, pode corresponder a vários actores • de acordo com Booch, “um actor representa um conjunto coerente de papéis que utilizadores de um sistema desempenham quando interagem com os casos de uso do sistema” ? Actores ≠ Recursos do sistema • Recursos são pessoas, máquinas, etc., que pertencem ao sistema e que são usados para levar a cabo tarefas dentro do sistema ProfessorAluno José Correia UML – Diagramas de Casos de Uso 6 Cliente ou «actor» Cliente Actores: Exemplos e Notação ? Ex.1 – Actores em relação a um negócio de restauração: • Fornecedor • Cliente ? Ex.2 – Actores em relação a um software de gestão de restaurantes: • Administrador do sistema • Empregado da caixa • Empregado de mesa ? Os actores são representados por ícones, ou por classes, com estereótipo «actor» José Correia UML – Diagramas de Casos de Uso 7 Casos de Uso (Use Cases) ? Um caso de uso é um padrão de comportamento que o sistema exibe e pode corresponder a: • uma funcionalidade do sistema • um tipo de interacção entre um ou mais actores e o sistema com um determinado objectivo • um processo de negócio (no contexto de um sistema de negócio) ? Um caso de uso é uma sequência de acções relacionadas, incluindo variantes, que um sistema realiza para produzir um resultado observável com valor para um actor (que interage com esse caso de uso) • a sequência concreta de acções pode variar de instância para instância do caso de uso (daí se falar em “incluindo variantes”) • as instâncias de um caso de uso são as ocorrências concretas do caso de uso ? Os casos de uso descrevem o que um sistema faz e não o modo como faz Solicitar Lista de Cursos José Correia UML – Diagramas de Casos de Uso 8 Servir almoço Servir almoço ou Casos de Uso: Exemplos e Notação ? Exemplo de casos de uso num negócio de restauração: • Servir almoço • Servir jantar • Comprar bens ? Um caso de uso é representado por uma elipse, com o nome do caso de uso dentro ou por baixo da elipse ? Os nomes dos casos de uso podem ser dados na perspectiva do sistema ou do actor José Correia UML – Diagramas de Casos de Uso 9 Exemplo Cliente Servir almoço Fornecedor Restaurante Servir jantar Comprar bens ? Associações entre actores e casos de uso mostram que actores interagem com que casos de uso • são representadas, normalmente, por linhas sem qualquer adorno José Correia UML – Diagramas de Casos de Uso 10 Documentar Casos de Uso ? O diagrama de casos de uso deve ser acompanhado de descrições dos actores e casos de uso ? Pode-se (deve-se!) especificar o comportamento de cada caso de uso descrevendo o fluxo de eventos de forma textual • documentação escrita do ponto de vista do actor - indicar o que o sistema deve fornecer ao actor, quando o caso de uso é executado ? Convém indicar: • como é que o caso de uso começa e acaba • o fluxo básico (principal) de eventos • fluxos alternativos de comportamento • fluxos excepcionais de eventos (ex: respostas a erros) José Correia UML – Diagramas de Casos de Uso 11 Descrição de Casos de Uso (cont.) ? Exemplo do restaurante (simplificado): • Servir almoço: um cliente vem ao restaurante e é-lhe servido almoço. O cliente escolhe o que pretende de um menu de almoços, com dois pratos do dia e vários outros pratos de preparação rápida. • Servir jantar: um cliente vem ao restaurante e é-lhe servido o jantar. O cliente pode escolher um prato de um menu bastante variado ou pode até pedir um prato com uma composição por ele indicada. • Comprar bens: são adquiridos os ingredientes necessários para a confecção dos pratos que constam do menu. Inclui-se aqui tanto o planeamento das aquisições, como a realização das aquisições a fornecedores do restaurante. ? Um caso de uso pode também ser descrito através de diagramas de interacção ou outros diagramas dinâmicos - conforme iremos ver quando falarmos desses tipos de diagramas UML José Correia UML – Diagramas de Casos de Uso 12 Relação “extend” entre Casos de Uso ? Podem-se organizar os casos de uso em casos básicos e extensões aos casos básicos • uma instância do caso de uso A pode incluir (sujeito a condições especificadas na extensão) o comportamento especificado por B • o caso básico deve fazer sentido sozinho • os actores interagem com o caso básico (A) ? as extensões traduzem partes, ou modalidades, acrescentadas condicionalmente (opções) • notação: dependência com estereótipo «extend» A B «extend» extensãocaso básico José Correia UML – Diagramas de Casos de Uso 13 ? Exemplo: ? Podem-se indicar explicitamente os pontos em que um caso de uso básico pode ser estendido (pontos de extensão) ? Na descrição textual do caso básico: ... (sobremesa) ... Servir uma sobremesa Servir jantar Extension points sobremesa «extend» (sobremesa) Relação “extend” entre Casos de Uso (cont.) Servir uma entrada Servir jantar Servir uma sobremesa Servir à luz de velas «extend» «extend» «extend» José Correia UML – Diagramas de Casos de Uso 14 Relação “include” entre Casos de Uso ? Quando vários casos de uso têm um fluxo de eventos comum, é conveniente separar essa parte comum para um novo caso de uso que é incluído pelos primeiros • uma instância do caso de uso A inclui obrigatoriamente o comportamento especificado por B • os actores interagem com A • ao fazer a descrição textual de A: include(B) • notação: dependência com estereótipo «include» A B (parte comum a outros casos de uso além de A) «include» José Correia UML – Diagramas de Casos de Uso 15 Servir almoço Servir jantar Cobrar refeição «include» «include» Relação “include” entre Casos de Uso (cont.) ? Exemplo: José Correia UML – Diagramas de Casos de Uso 16 Servir uma refeição Servir almoço Servir jantar Relação de Generalização entre Casos de Uso ? Relação de generalização: relação entre uma coisa mais genérica e uma coisa mais especializada...... que é totalmente consistente com o primeiro elemento ... e adiciona informação adicional ? Significa que o caso de uso "filho" (mais especializado) herda o comportamento, significado e actores do caso de uso "pai" (mais genérico) • o filho pode adicionar ou substituir comportamento do pai; • o filho pode aparecer em qualquer contexto em que o pai pode aparecer. ? Exemplo: José Correia UML – Diagramas de Casos de Uso 17 Relação de Generalização entre Actores ? Um Cliente Empresarial é um (is a) Cliente • analogia com hierarquia ISA no modelo Entidade-Associação ? O Cliente Empresarial herda as associações (de interacção com casos de uso) do Cliente genérico ? A Generalização permite simplificar e estruturar os diagramas Cliente Cliente Empresarial José Correia UML – Diagramas de Casos de Uso 18 Exemplo 1: Restaurante «extend» «extend» «extend» Servir almoço Cobrar refeição «include» Cliente Fornecedor Negócio de restauração Servir uma refeição Servir jantar Servir à luz de velas Servir uma sobremesa Servir uma entrada Comprar bens José Correia UML – Diagramas de Casos de Uso 19 Exemplo 2: Vídeo-gravador Utilizador «actor» Televisor Vídeo-gravador Gravação programada Reprodução de vídeo- cassete Gravação não programada Gravação de vídeo-cassete «actor» Antena José Correia UML – Diagramas de Casos de Uso 20 Granularidade dos Casos de Uso ? Um caso de uso (pelo menos um caso de uso básico) deve representar uma unidade de funcionalidade o mais pequena possível que, uma vez implementada, acrescenta valor (do ponto de vista dos actores) ao sistema que está a ser desenvolvido ? Exemplo no multibanco: • "introduzir cartão" não é um caso de uso porque não tem valor isoladamente; • "levantar dinheiro" é um caso de uso porque tem valor para um actor individual (o detentor do cartão) ? Com este objectivo, pode ser necessário agrupar num único caso de uso várias interacções com o sistema (que ocorrem até em sessões diferentes) • isso não impede que se divida um caso de uso básico em vários casos de uso de grão mais fino, incluídos pelo primeiro • Exemplo numa biblioteca: o caso de uso “Empréstimo” (aquele que tem valor para os utilizadores) pode ser dividido em “Levantamento” e “Devolução” José Correia UML – Diagramas de Casos de Uso 21 Repor Bebidas de acordo com Vendas Abrir a Máquina Fechar a Máquina Agente do Fornecedor Repor Bebidas <<extend>> <<include>> <<include>> Retirar Dinheiro <<include>> <<include>> Dono ClienteComprar Bebida Extension Point encher prateleiras Exemplo: Máquina de bebidas ? Considere o seguinte diagrama de casos de uso, correspondente a uma máquina de bebidas: ? Explique o significado do diagrama anterior, descrevendo o fluxo de eventos de forma textual. José Correia UML – Diagramas de Casos de Uso 22 Exemplo: Máquina de bebidas (cont.) ? Resposta possível à pergunta formulada: • Comprar Bebida: Um cliente dirige-se à máquina de bebidas, introduz o dinheiro e selecciona a bebida pretendida entre as existentes na máquina. A máquina entrega a bebida seleccionada e, se for caso disso, devolve o troco. • Repor Bebidas: O agente do fornecedor repõe as bebidas à medida que estas forem sendo consumidas. Para tal, abre a máquina, enche as prateleiras com as bebidas em falta e fecha a máquina. • Retirar Dinheiro: O dono do estabelecimento onde a máquina está colocada, abre a máquina, retira o dinheiro existente, deixando o suficiente para trocos, e volta a fechar a máquina. ? Quais são as funcionalidades do sistema modelizado pelo diagrama anterior? • As funcionalidades do sistema são os casos de uso, ou seja: “Comprar Bebida”, “Abrir a Máquina”, “Fechar a Máquina”, “Retirar Dinheiro”, “Repor Bebidas” e “Repor Bebidas de acordo com Vendas”. José Correia UML – Diagramas de Casos de Uso 23 Pacotes de Casos de Uso ? Num sistema complexo, podem existir demasiados casos de uso para visualizar com clareza num único diagrama! ? Uma solução: um diagrama de casos de uso inicial, com pacotes de casos de uso, e um diagrama de casos de uso relativo a cada pacote ? Se tivermos um grande número de casos de uso devemos procurar agrupá-los em pacotes! ? Critérios de agrupamento de casos de uso: • por sub-sistemas • por actores José Correia UML – Diagramas de Casos de Uso 24 Definição de Plano de Curso Elaboração de Calendário de Exames Atribuição de Serviço Docente Elaboração de Horários Elaboração de Relatório de Curso Exemplo: SI do ISPGaya Definição de Ficha de Disciplina Lançamento de Classificações Publicação de Material de Apoio Lançamento de Sumários Elaboração de Relatório de Disciplina Inscrições no Curso Inscrições nas Disciplinas Inscrições nas Turmas Consulta e Descarregamento de Material de Apoio de Disciplinas Consulta de Horários Consulta de Classificações Consulta de Sumários Aluno de Curso Docente de Disciplina Funcionário de Secretaria Director de Curso José Correia UML – Diagramas de Casos de Uso 25 SIIPG - Gestão de Cursos Director de Curso Definição de Plano de Curso Elaboração de Calendário de Exames Atribuição de Serviço Docente Elaboração de Horários Elaboração de Relatório de Curso Exemplo: SIIPG José Correia UML – Diagramas de Casos de Uso 26 SIIPG - Gestão de Disciplinas Docente de Disciplina Definição de Ficha de Disciplina Lançamento de Classificações Publicação de Material de Apoio Lançamento de Sumários Elaboração de Relatório de Disciplina Exemplo: SIIPG José Correia UML – Diagramas de Casos de Uso 27 Exemplo: SIIPG SIIPG - Inscrições Funcionário de Secretaria Inscrições no Curso Inscrições nas Disciplinas Inscrições nas Turmas Aluno de Curso submete candidatura pela Web executa procedimento de colocação automática, ou trata manualmente José Correia UML – Diagramas de Casos de Uso 28 Exemplo: SIIPG SIIPG - Apoio a Alunos Aluno de Curso Consulta e Descarregamento de Material de Apoio de Disciplinas Consulta de Horários Consulta de Classificações Consulta de Sumários José Correia UML – Diagramas de Casos de Uso 29 Exemplo: SIIPG Sist. de Informação do ISPGaya (SIIPG) Aluno de Curso Apoio a Alunos Docente de Disciplina Gestão de Disciplinas Funcionário de Secretaria Director de Curso Inscrições Gestão de Cursos José Correia UML – Diagramas de Casos de Uso 30 Realizações de Casos de Uso ? Um Diagrama de Casos de Uso apresenta uma visão externa do sistema ? Os Diagramas de Interacção descrevem como os casos de uso são realizados como interacções entre associações de objectos ? Há dois tipos de Diagramas de Interacção (interaction diagrams): • Diagramas de Sequência (Sequence diagrams) • Diagramas de Colaboração (Collaboration diagrams) José Correia UML – Diagramas de Casos de Uso 31 Resumo ? Um Diagrama de Casos de Uso... ... descreve o comportamento de um sistema do ponto de vista do utilizador ... descreve o que um sistema faz e não como o faz ... divide as funcionalidades do sistema em transações (casos de uso) que têm significado para os utilizadores (actores) ... é uma descrição funcional de um sistema e dos seus principais processos ... fornece uma descrição gráfica de quem irá usar o sistema e do tipo de interacções a esperar dentro desse sistema José Correia UML – Diagramas de Casos de Uso 32 Resumo (cont.) ? Um caso de uso contém múltiplos cenários, cada um dos quais descreve um fluxo específico de eventos • devemos garantir que cada caso de uso descreve um pedaço significativo(com valor) da utilização do sistema • ao definir casos de uso com texto, usar nomes e verbos de forma consistente e precisa - irá facilitar a definição de objectos e mensagens nos diagramas de interacção ? Ao construir os casos de uso, pensar... … nas tarefas que devem ser desempenhadas pelo(s) actor(es) … em manter os casos de uso simples José Correia UML – Diagramas de Casos de Uso 33 Resumo (cont.) ? Um diagrama de casos de uso deve... ... conter apenas casos de uso ao mesmo nível de abstracção ... incluir apenas os actores que são necessários ? Quando é que um diagrama de casos de uso deve ser usado? • na especificação do contexto do sistema • na descrição (captura) dos requisitos de um sistema, nas fases de design, implementação e documentação • na modelização de testes de cenários com casos de uso ? O diagrama de casos de uso é, geralmente, elaborado na fase de análise e especificação de requisitos, por analistas e especialistas do domínio José Correia UML – Diagramas de Casos de Uso 34 Referências Estes apontamentos foram baseados em: • “UML – Unified Modeling Language”, Curso em Tecnologia de Objectos, FEUP, Novembro 2000 Ademar Aguiar, Gabriel David, João Pascoal Faria • “Introduction to UML: Structural Modeling and Use Cases”, Cris Kobryn, Novembro 2000 • “UML, Metodologias e Ferramentas CASE”, Alberto Rodrigues da Silva, Carlos Videira, Maio 2001 • “Analysis and Design with UML” Rational Software Corporation, 1997 • Web: - OMG UML Resources: www.omg.org/uml/