ANÁLISE ORIENTADA A OBJETOS Set/2010 Professor Mário Dantas Aula 04 - Agenda 2 Ator Caso de uso Associações Entre atores e casos de uso Entre casos de uso Inclusão: estereótipo <<include>> Extensão: estereótipo <<extend>> Generalização Diagrama de casos de uso Especificação de casos de uso Ator 3 É qualquer entidade que interage com o sistema Pode ser um usuário, um hardware externo, outro sistema Representa uma classe de usuários (papel), não um usuário específico Algo sobre o que o sistema não tem controle Ator 4 Várias pessoas podem ser representas por um único ator. Ator 5 Um pessoa pode atuar como mais de um ator. Como nomear um ator 6 Agrupe os indivíduos segundo a utilização do sistema Identifique os papéis que eles assumem ao utilizar o sistema: cada papel é um ator em potencial Cargo nem sempre é um papel Escolha nomes conhecidos dos usuários: não invente! Como nomear um ator 7 Caso de Uso 8 “Um Caso de Uso é a relação de uma seqüência de ações que um sistema executa produzindo um resultado de valor observável para um ator específico.” Rational Unified Process – RUP Caso de Uso 9 Modela um diálogo entre ator e sistema Define o comportamento de um sistema ou de parte dele Descreve passo a passo como o sistema desempenha suas funções Possui cenários (instâncias) Define respostas que o sistema deve gerar para cada evento previsto Deve possuir uma especificação Caso de Uso 10 Descrição 11 Apresenta uma breve descrição do objetivo do caso de uso. Pré-condição 12 É o estado do sistema requerido antes do caso de uso ser iniciado Deve ser um estado de valor mensurável; A pré-condição é uma restrição para o início do caso de uso e não o evento que inicia o caso de uso (um evento ter ocorrido pode ser uma précondição). Pós-condição 13 Uma pós-condição é o estado no qual o sistema deve estar ao término da execução do caso de uso Deve ser um estado de valor mensurável Cenário 14 São os caminhos possíveis no diálogo ator-sistema durante a execução do caso de uso: instância de um caso de uso Fluxo principal (ou básico) Fluxo onde tudo “dá certo”; o mais freqüente Fluxos alternativos Variações na execução do fluxo básico Fluxos de exceção Erros que podem ocorrer nos fluxos básico e alternativo Cenários 15 Fluxo principal 16 Exemplo: 1. O Cliente informa a opção de Saque. 2. O Sistema solicita o valor do saque. 3. O Cliente informa o valor e confirma a operação. 4. O Sistema verifica o valor informado. 5. O Sistema verifica o saldo do cliente. 6. O Sistema debita o valor sacado do saldo do cliente. 7. O Sistema entrega o dinheiro. 8. Fim do caso de uso. Fluxo alternativo 17 Exemplos: A1. Saldo insuficiente 1. No passo 5 do fluxo básico o Sistema verificou que o cliente não possui saldo. 2. O Sistema informa o saldo disponível. 3. O caso de uso volta para o passo 8 do fluxo básico. A2. Valor informado inválido 1. No passo 4 do fluxo básico o sistema verificou que o valor informado é inválido. 2. O sistema informa que o valor é inválido. 3. O sistema informa as regras para valores válidos. 4. O caso de uso volta para o passo 2 do fluxo básico. Um caso de uso não contém 18 Detalhes da interface gráfica com usuário – GUI (útil apenas para protótipos) Objetivos de performance (requisito não funcional) Detalhes da arquitetura da aplicação: módulos, menus, componentes Quaisquer requisitos não funcionais: eventualmente, podem ser inserido por meio de notas explicativas Um caso de uso não contém 19 “... O ator clica no botão OK...” “... O sistema exibe um JTable com os...” “... A resposta deverá ser retornada em menos de 10 segs...” “... O sistema inicia uma conexão com o servidor de aplicação...” “... O usuário deverá informar os códigos por meio da caneta ótica ....” Como encontrar casos de uso? 20 Identifique as interações do usuário: concentre-se nos objetivos do usuário: “Sacar dinheiro...” “Transferir dinheiro entre contas...” “Cadastrar contas de débito automático...” Descreva o quê o usuário espera do sistema Descreva as operações que criam, lêem, atualizam e excluem informações (manter, CRUD, etc.); Descreva como os atores são notificados sobre alterações de estado do sistema; Descreva como o ator necessitará informar ao sistema eventos ocorridos. Como encontrar casos de uso? 21 Crie listas de verificação e validação (V&V): O sistema fornece o comportamento correto às necessidades do negócio? Todas as necessidades são resolvidas pelos Casos de Uso que você identificou? Quais Casos de Uso suportarão as principais funcionalidades do sistema? Quais informações devem ser modificadas ou criadas no sistema? Aplicar as Listas de V&V para os casos de uso encontrados Como nomear casos de uso? 22 Use uma frase que especifique o objetivo do ator Técnica “O ator usa o sistema para...” Utilize verbos concretos, “fortes”, ao invés de verbos genéricos e fracos, exemplos: Verbos fortes: criar, calcular, migrar, receber, arquivar, registrar e ativar Verbos fracos: fazer, relatar, controlar, gerenciar, administrar, organizar e processar Seja explícito Use termos específicos: Termos genéricos: formulário, dado e sistema Termos específicos: propriedade, pagamento e conta Como nomear casos de uso? 23 Boas escolhas Depositar Dinheiro Conferir Movimentação Bancária Transferir Valores entre Contas Correntes Escolhas ruins Controle de Saque Controle de Saldo Transferência Bancária Gerir Algo Gestão Disso ou Daquilo Exemplo 24 O cliente pode usar o caixa automático para sacar e transferir dinheiro e consultar o saldo Ator: Cliente Casos de uso: Sacar Dinheiro Transferir Dinheiro Consultar Saldo Associações: Ator – Caso de Uso 25 Indicar que o ator participa e se comunica com o sistema, conforme descrito no caso de uso A seta, quando houver, indica quem inicia a comunicação, não demonstram fluxo e setas duplas não são usadas Associações: Ator – Caso de Uso 26 Seta do ator para o caso de uso: Ator dispara o caso de uso Ator estimula o sistema Ator principal Associações: Ator – Caso de Uso 27 Seta do caso de uso para o ator: Sistema solicita ou envia informações Sistema sinaliza que espera uma ação do ator Ator secundário Associações: Ator – Caso de Uso 28 Associação entre Casos de Uso 29 Surgem da fatoração de casos de uso Três tipos: Inclusão <<include>> Extensão <<extend>> Generalização Objetivos: Reuso de parte do caso de uso Especialização de comportamento Descrição de procedimentos opcionais Associação entre Casos de Uso 30 Inclusão – include 31 A execução do caso de uso incluído é obrigatória O caso de uso base depende do caso de uso incluído Nem o caso de uso base, nem o incluído, acessam os atributos um do outro (baixo acoplamento) A inclusão é, na essência, um tipo de encapsulamento Exemplo de Inclusão – include 32 No sistema de Caixa Bancário, os casos de uso “Sacar”, “Depositar” e “Transferir” precisam indicar que o cliente será identificado no sistema. Este comportamento pode ser fatorado em um caso de uso chamado “Identificar Cliente”, que os três casos de uso incluem. Da perspectiva dos casos de uso base, não importa qual método é utilizado para a identificação, se senha, cartão, identificação de retina, mas apenas o resultado. Da perspectiva do caso de uso incluído, não importa qual caso de uso o está utilizando (incluindo) ou como o resultado será processado. Exemplo de Inclusão – include 33 Execução de caso de uso include 34 O comportamento incluído é inserido em uma localização específica do caso de uso base e é executado quando este passo é atingido. Extensão - extend 35 Indica que uma parte do caso de uso é um comportamento opcional do sistema Para mostrar que um comportamento é executado somente sob certas condições Para mostrar que podem existir tipos de comportamento que serão inseridos no caso de uso dependendo da interação do ator com o caso de uso Extensão - extend 36 O caso de uso de extensão é inserido no caso de uso base em locais específicos chamados “Pontos de extensão” O caso de uso extensor depende do caso de uso estendido. Exemplo Caso de Uso extend 37 No sistema de Caixa Bancário, quando o cliente for identificado, o sistema precisa saber se ele já adquiriu seguro contra roubo de cartão e, caso negativo, oferecer a aquisição do seguro. Podemos demonstrar isso com a criação de um caso de uso chamado “Adquirir Seguro” que estende a funcionalidade de “Identificar Cliente”. Exemplo Caso de Uso extend 38 Execução de Caso de Uso extend 39 Quando a execução do caso de uso atinge o ponto de extensão, a condição do caso de uso é avaliada, e se for verdadeira o caso de uso é executado. Fluxo alternativo ou extend? 40 Freqüentemente nos deparamos com a dúvida entre um fluxo alternativo e um caso de uso estendido. Considerar o seguinte: O fluxo alternativo é complexo ao ponto de confundir o entendimento do caso de uso? A condição para execução do fluxo é muito excepcional? O valor semântico do modelo com extensão fica aprimorado? Generalização 41 Destacar o comportamento comum a mais de um caso de uso, mas com algumas particularidades adicionais Demonstrar formas mais específicas de comportamento do um caso de uso Relacionamento do tipo é-um entre um caso de uso base (pai) com um ou mais casos de uso filhos Generalização 42 Semelhante a herança entre classes O filho herda toda a estrutura, comportamento e relacionamentos do pai; O filho é totalmente dependente da estrutura do pai. Exemplo de Generalização 43 No caso de uso “Cobrança de Pênalti”, podem ser representados: (1) a cobrança de pênalti em tempo regulamentar e (2) a cobrança de pênalti como desempate. Esses dois casos de uso têm muito do seu comportamento em comum, mas com uma particularidade: a reposição da bola, que deve ser posta em jogo (1) ou não (2). Exemplo de Generalização 44 Exemplo de Generalização Exemplo de Generalização 46 Exemplo de Generalização 47 O caso de uso “pai” é executado quando, no fluxo do caso de uso “filho”, existe generalização O caso de uso “filho” é executado quando, no fluxo do caso de uso “pai”, existe especialização Diagrama de Casos de Uso 48 É criado para representar o conjunto de associações entre atores e casos de uso e entre casos de uso São casos de uso associados que descrevem todas as formas de uso do sistema Fornece uma visão das funcionalidades de um sistema: ajuda a capturar os requisitos funcionais Constitui uma forma de comunicação bastante útil entre projetistas e clientes Ajuda na identificação de objetos, na execução de testes e na documentação Diagrama de Casos de Uso 49 Indica que tipo de usuário (ator, perfil) usa quais funcionalidades: o quê o sistema deve fazer e para quem Deve ser completo: todas as funcionalidades devem estar presentes, mesmo que em diagramas separados que compõem o sistema É uma visão de alto nível: perspectiva externa e dos atores O mais informal dos diagramas da UML Diagrama de Casos de Uso 50 Trata-se de uma representação dinâmica: é importante para a organização e modelagem de comportamentos do sistema Não há decomposições funcionais (explosões) Devem ter a complexidade controlada, podendo ser organizados de acordo com sua relevância, freqüência de utilização e valor para os usuários Exemplos: Operação de Cursos 51 Exemplo: Agência Bancária 52 Especificação de Caso de Uso 53 Os casos de uso, mesmo no contexto de seus diagramas, são semanticamente limitados, dependendo de interpretação A especificação (documentação) é essencial para uma compreensão precisa Diagramas da UML, como o de atividades e o de seqüência, mais formais e precisos, podem ser usados na documentação O padrão de especificação, incluindo nível de detalhe exigido e informações obrigatórias, deve estar definido na metodologia Modelo de Especificação 54 Descrição Requisitos Atores Pré-condições Evento que inicia Fluxo Principal Fluxos Alternativos Extensões Pós-condições Regras de negócio Exemplo: Manter empregados 55 RF1 – O sistema deve permitir a manutenção dos dados dos empregados, pelo gerente, conforme regras de negócio RN1 a RN6 Exemplo: Manter empregados 56 RN1 – Um empregado deve possuir obrigatoriamente os dados: código, nome, idade, data de admissão e estar associado a um cargo RN2 – O código é o identificador do empregado na empresa e deve ser exclusivo RN3 – O nome do empregado deve ser um nome válido de acordo com a legislação de registro de nascimentos Exemplo: Manter empregados 57 RN4 – A idade deve ser um número inteiro maior ou igual a 16 e menor que 150 RN5 – A data de admissão deve ser uma data válida, no formato dia, mês e ano e não pode ser posterior à data corrente, nem anterior à data corrente menos trinta dias RN6 – O cargo do cliente deve ser selecionado entre os cargos cadastrados no sistema Exemplo: Manter empregados 58 Descrição: Permite consultar, incluir, alterar dados e excluir fisicamente empregados na base de dados do sistema Requisitos: RF1 Atores: Gerente Pré-condições: O ator deve estar identificado pelo sistema e ser um gerente Evento que inicia: Solicitação do ator Extensões e inclusões: não há Exemplo: Manter empregados 59 Pós-condições: A operação solicitada pelo ator é concluída com dados atualizados ou consultados, condicionado ao atendimento das regras de negócio Regras de Negócio: RN1 a RN6 Exemplo: Manter empregados 60 Fluxos Alternativos: [A1] O ator escolhe um empregado para consulta detalhada 1. O sistema pesquisa e exibe todos o dados do empregado selecionado 2. O ator solicita retorno à relação de empregados 3. O sistema retorna ao passo 1 do fluxo principal Exemplo: Manter empregados 61 [A2] O ator escolhe um empregado para edição 1. O sistema pesquisa e exibe todos os dados do empregado selecionado, oferecendo as opções de edição dos dados exceto o código identificador 2. O ator edita os dados e solicita gravação [A5] 3. O sistema valida e grava os dados [A6] 4. O sistema retorna ao passo 1 do fluxo principal Exemplo: Manter empregados 62 [A3] O ator escolhe um empregado para exclusão 1. O sistema solicita confirmação 2. O ator confirma a exclusão [A7] 3. O sistema exclui o empregado e retorna ao passo 1 do fluxo principal Exemplo: Manter empregados 63 [A4] O ator escolhe a inclusão de um novo empregado 1. O sistema solicita os dados do empregado 2. O ator informa os dados e solicita gravação [A5] 3. O sistema valida e grava os dados [A6] 4. O sistema retorna ao passo 1 do fluxo principal Exemplo: Manter empregados 64 [A5] O ator solicita cancelamento da operação 1. O sistema retorna ao passo 1 do fluxo principal Exemplo: Manter empregados 65 [A6] Dados inválidos, conforme RN usadas no caso de uso 1. O sistema informa quais dados estão inválidos e porque 2. O sistema retorna à inclusão ou edição com os dados informados pelo usuário, mesmo que inválidos Exemplo: Manter empregados 66 [A7] O ator não confirma a exclusão dos dados 1. O sistema retorna ao passo 1 do fluxo principal