Prévia do material em texto
INTRODUÇÃO À ENGENHARIA DE SOFTWARE Prof. Marcelo Cabral www.fundacaoredeam.com.br 2016 Tópicos da aula de Hoje: ❖ Casos de Uso Conceito Geral Estrutura Diagrama de Casos de Uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE O que é? ❖ Uma técnica para capturar requisitos funcionais ❖ Descreve o sistema sob a perspectiva do usuário final ❖ Descreve a interação típica dos usuários com o sistema Usualmente se inicia na analise de cenários de uso previamente descritos em linguagem natural Fornece uma narrativa estruturada dessa interação INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exemplo de cenário de uso ❖ O cliente folheia o catálogo e seleciona itens para adicionar na cesta de compras. Quando o cliente deseja fechar a compra, ele deve informar os dados do cartão de crédito e confirmar a compra. O sistema autoriza a venda junto à operadora do cartão e notifica o cliente, tanto de forma síncrona, na tela, quanto de forma assíncrona, via e-mail. INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exemplo de cenário de uso ❖ O cliente folheia o catálogo e seleciona itens para adicionar na cesta de compras. Quando o cliente deseja fechar a compra, ele deve informar os dados do cartão de crédito e confirmar a compra. O sistema autoriza a venda junto à operadora do cartão e notifica o cliente, tanto de forma síncrona, na tela, quanto de forma assíncrona, via e-mail. INTRODUÇÃO À ENGENHARIA DE SOFTWARE E os cenários derivados ? ❖ Nem sempre as coisas acontecem como esperamos O cartão pode não ser autorizado pela operadora Um cliente conhecido pode pendurar a conta e só pagar no final do mês ❖ Todos esses cenários são diferentes, porém similares Todos tem o mesmo objetivo: comprar produtos Todos pertencem ao mesmo caso de uso: comprar produtos INTRODUÇÃO À ENGENHARIA DE SOFTWARE Casos de Uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Casos de Uso ❖ O caso de uso foca no cenário típico, onde tudo acontece na maior parte das vezes ❖ Os cenários alternativos também são descritos no caso de uso em uma seção separada ❖ Conhecido como extensões ou fluxos alternativos ❖ Deve indicar o ponto em que estende o cenário típico ❖ Deve indicar o ponto em que retorna ao cenário típico INTRODUÇÃO À ENGENHARIA DE SOFTWARE Atores ❖ Representa as entidades que se relacionam com o sistema ❖ Exemplos: Usuário Cliente Representante do cliente (caixa do supermercado) Gerente Sistema externo Etc. ❖ Um outro sistema externo pode também ser um ator ❖ Tipos de atores Primário: são beneficiados diretamente pelo caso de uso Secundários: atores que participam como coadjuvantes no caso de uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Atores x Usuários ❖ Importante: ator é o papel, e não a pessoa Ex.: Se existe um cliente do sistema chamado João, existe um ator chamado “cliente”, e não um ator chamado “João” ❖ Usuário Pode representar perante o sistema vários papéis diferentes (pode ser vários atores diferentes). ❖ Ator Várias pessoas podem representar o mesmo papel. ❖ Um caso de uso pode ser usado por vários atores diferentes INTRODUÇÃO À ENGENHARIA DE SOFTWARE Atores x Usuários INTRODUÇÃO À ENGENHARIA DE SOFTWARE Identificação dos Casos de Uso e Atores ❖ Ler a descrição em linguagem natural do sistema, buscando por Casos de uso candidatos: verbos Atores candidatos: substantivos ❖ Exemplo O cliente entra na loja para comprar produtos... O porteiro registra [a chegada de] encomendas... INTRODUÇÃO À ENGENHARIA DE SOFTWARE Conteúdo de um Caso de Uso ❖ Não existe consenso na estrutura interna de um caso de uso ❖ Algumas estruturas são utilizadas recorrentemente Simples Detalhada ❖ É importante selecionar uma estrutura que seja adequada para o problema e o processo em uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Estrutura Simples de um caso de uso ❖ Nome ❖ Cenário típico ❖ Cenários alternativos INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exemplo de cenário de uso ❖ O cliente folheia o catálogo e seleciona itens para adicionar na cesta de compras. Quando o cliente deseja fechar a compra, ele deve informar os dados do cartão de crédito e confirmar a compra. O sistema autoriza a venda junto à operadora do cartão e notifica o cliente, tanto de forma síncrona, na tela, quanto de forma assíncrona, via e-mail. INTRODUÇÃO À ENGENHARIA DE SOFTWARE Estrutura Simples de um caso de uso (exemplo) ❖ Nome: UC1 – Compra de produto ❖ Cenário típico 1. O cliente folheia o catálogo e seleciona itens para comprar 2. O cliente fecha a compra 3. O cliente escolhe a forma de entrega 4. O sistema apresenta o preço total 5. O cliente fornece os dados do cartão de crédito 6. O sistema autoriza a compra 7. O sistema confirma na tela a compra 8. O sistema envia um e-mail confirmando a compra INTRODUÇÃO À ENGENHARIA DE SOFTWARE Estrutura Simples de um caso de uso (exemplo) ❖ Cenários alternativos 5. O cliente é conhecido 1. O sistema pendura o pagamento 2. Retorna para o passo 7 do fluxo principal 6. A operadora do cartão não autoriza a compra 1. O cliente pode fornecer outro cartão, retornando para o passo 5, ou cancelar a compra INTRODUÇÃO À ENGENHARIA DE SOFTWARE Estrutura detalhada de um caso de uso ❖ Nome: título do caso de uso ❖ Lista de atores: perfis de usuários ou sistemas que usam o caso de uso ❖ Visão geral (descrição): descrição textual ❖ Gatilho: ação que dispara sua execução ❖ Pré-condições: restrições para sua execução ❖ Cenário típico( Fluxo principal): passos ordenados para a sua execução ❖ Cenários alternativos: fluxos de ações que podem ocorrer paralelamente ao fluxo principal, dada uma condição específica ❖ Regras de Negócio: restrições (regras) para execução de um mais passos do fluxo principal ou alternativo ❖ Extensões: saídas para outros casos de uso ❖ Pós-condições: condição final a ser estabelecida ao final de sua execução INTRODUÇÃO À ENGENHARIA DE SOFTWARE Estrutura de um caso de uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Descrição de um cenário ❖ O cenário é composto de passos Lista de passos Tabela comum a coluna para os atores e outra para o sistema ❖ Cada passo descreve O ator envolvido A sua intenção naquela interação INTRODUÇÃO À ENGENHARIA DE SOFTWARE Perguntas para identificar atores e casos de uso ❖Quem utiliza o sistema ? ❖Como é o uso do sistema ? ❖Quais informações são fornecidas ou obtidas do sistema ? ❖Como o sistema é mantido ? ❖Quais outros sistemas interagem com esse sistema ? INTRODUÇÃO À ENGENHARIA DE SOFTWARE Perguntas para identificar cenários ❖Quando tudo dá certo, como o sistema se comporta ? ❖Algo pode ocorrer de forma diferente nesse passo ? ❖O que pode dar errado nesse passo ? INTRODUÇÃO À ENGENHARIA DE SOFTWARE Caso de Uso x Passo ❖ Quando um passo for muito complicado Verifique se o cenário alternativo está se misturando com o cenário típico Verifique se é possível transformar o passo em outro caso de uso ❖ Quando um passo vira um novo caso de uso O primeiro caso de uso deve incluir o segundo Na UML: relação de <<include>> Na descrição do caso de uso: hiperlink para o outro caso de uso ❖ Cuidado: Não faça decomposição funcional do caso de uso! INTRODUÇÃO À ENGENHARIA DE SOFTWARE Dicas ❖ Comecem da estrutura simples e adicionem somente os elementos necessários ❖ Façam casos de uso enxutos Casos de uso longos não são lidos ! ❖ Adicione detalhes de forma proporcional ao risco do caso de uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício ❖ Vamos detalhar um caso de uso? ❖ Cadastrar Cliente Os dados que preciso preencher das mensagens são: Nome, endereço, categoria, e-mail, telefone, data de aniversário Eu quero que todos os dados sejam obrigatórios,menos data de aniversário Eu não quero repetir o cadastro de um cliente Se ele já estiver cadastrado, quero que seja exibida a tela de consulta desse cliente, ok ? Precisam de mais informações ? É só perguntar INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício ❖ Nome ❖ Ator ❖ Gatilho ❖ Pré-condição ❖ Fluxo Principal ❖ Fluxos Alternativos ❖ Extensões ❖ Pós-Condição ❖ Regras de Negócio INTRODUÇÃO À ENGENHARIA DE SOFTWARE INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício (Sugestão) INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício (Sugestão) INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagrama de Casos de Uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE UML – Unified Modeling Language ❖ UML (Unified Modeling Language) é uma linguagem visual para especificação, construção e documentação de artefatos de software ❖ O propósito da modelagem (criação de esquemas UML ) é, principalmente, para entender e não para documentar ! ❖ Trabalha como paradigma de Orientação a Objetos ❖ UML sozinha não resolve nada: Ela deve ser usada dentro de um processo de desenvolvimento ! INTRODUÇÃO À ENGENHARIA DE SOFTWARE Por que usar UML ? ❖ Linguagem para modelagem de sistemas padronizada pela OMG (Object Management Group) ❖ Altamente reconhecido e utilizado na indústria de software em geral (mesmo não sendo um padrão industrial) ❖ Ajuda a conceber nossas ideias, em relação ao sistema que estivermos projetando Pensar antes de codificar! Apresentar nossas ideias ao grupo de forma que todos possam interagir e discutir um determinado ponto Aumenta a participação e envolvimento do time ! Linguagem comum entre todos os envolvidos INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagramas providos pela UML 2.0 ❖ São 13 diagramas, divididos em 3 grupos: INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de Casos de Uso ❖ O diagrama de casos de uso exerce um papel importante na análise de sistemas: É o principal diagrama para ser usado no diálogo como usuário na descoberta e validação de requisitos; Os casos de uso constituem elementos que estruturam todas as etapas do processo de software. INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagrama de casos de Uso ❖ A maior riqueza dos casos de uso está na sua descrição, não no diagrama ❖ Contudo, a UML oferece um diagrama que permite visualizar Os atores Os casos de uso O relacionamento entre atores e casos de uso O relacionamento entre casos de uso ❖ Serve como um índice visual dos casos de uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Elementos do Diagrama de casos de Uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagrama de casos de Uso ❖ Analogia com Controle Remoto Visão externa do sistema; Fornece um conjunto de serviços complexos que são acessados através de botões; INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagrama de casos de Uso ❖ Exemplo: INTRODUÇÃO À ENGENHARIA DE SOFTWARE Diagrama de casos de Uso (relacionamentos) ❖ Os casos de uso podem ser organizados por meio de relacionamentos (interações) Com atores Com outros casos de uso A UML disponibiliza 4 tipos: Comunicação Generalização Extensão <<extends>> Inclusão <<include>> INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖Comunicação Representa quais atores estão ligados a quais casos de uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖Generalização / Especialização entre Atores Relação “é um” entre atores Um ator (Gerente) herda o perfil de outro ator (Funcionário) Ou seja, ele possui acesso aos casos de usos acessíveis pelo ator mais “genérico”, porém o inverso não é verdade o Um gerente é um funcionário, mas um funcionário não é um gerente INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖Generalização / Especialização entre Atores Os casos de uso especializados herdam a estrutura do caso de uso generalizado O supertipo contém cenários mais genéricos Os subtipos contém cenários mais especializados, particular a cada um deles Os cenários comuns a mais de um caso de uso é adaptado em um caso de uso generalizado INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖Generalização / Especialização entre Atores Quando usar ? Quando você estiver descrevendo comportamentos semelhantes entre casos de uso, mas algum deles faz um pouco mais que o outro. Exemplo: INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖ Extensão Um caso de uso pode opcionalmente utilizar um outro Encapsula um cenário alternativo complexo em um outro caso de uso Utiliza o campo “Gatilho” para definir o momento que entra em ação Pode ser visto como um remendo (patch) do caso de uso base Representada através de um arco pontilhado com o rótulo <<extend>> INTRODUÇÃO À ENGENHARIA DE SOFTWARE Tipos de Interação ❖ Inclusão Adição de um comportamento específico em um ponto determinado do caso de uso Útil quando esse comportamento é repetido em diversos casos de uso do sistema Um caso de uso inclui (precisa de, é composto de) outro Representada através de um arco pontilhado com o rótulo <<include>> INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exemplo INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de Casos de Uso ❖ Tipos possíveis de associação (interação): INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de Casos de Uso ❖ Cuidado ao modelar as fronteiras do sistema Um usuário pode desempenhar diferentes papéis INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de Casos de Uso ❖ Cuidado ao modelar as fronteiras do sistema Quais as fronteiras do sistema ? INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de Casos de Uso ❖ Heurísticas Evitar um número muito elevado de casos de uso Fragmentar o sistema em subsistemas (ou em subpacotes) Usar casos de uso com denominação genéricas como Manter ou Gerenciar para descrever as funções de Cadastro de uma entidade Evitar detalhamento algorítmico Evitar o uso de <<include>> e <<extend>> nas primeiras iterações; Lembrem-se que modelagem é um processo iterativo; Diagramas de Caso de Uso têm sido usados para auxiliar no diálogo com o usuário Deve-se ter atenção para o fato que o diagrama tem semântica informal Isto é, não é preciso formalismo na sua descrição Para um mesmo problema, múltiplas soluções válidas são admitida INTRODUÇÃO À ENGENHARIA DE SOFTWARE Localizar Atores e Casos de Uso ❖ Objetivos Delimitar o sistema Destacar os atores que irão interagir com o sistema Destacar os casos de uso do sistema Definir glossário com os principais termos Processo Identificar os Atores Identificar Casos de Uso Criar Diagramas de Caso de Uso Descrever Caso de Uso INTRODUÇÃO À ENGENHARIA DE SOFTWARE Dicas: Como encontrar atores ? ❖ Quem usa o sistema ? ❖ Quem instala / mantém o sistema ? ❖ Quem inicia / desliga o sistema ? ❖ Que outros sistemas usam o sistema ? ❖ Quem recebe informação do sistema ? ❖ Quem provê informação ao sistema ? INTRODUÇÃO À ENGENHARIA DE SOFTWARE Dicas: Como encontrar casos de uso ? ❖ Atores são fundamentais para a descoberta dos casos de uso Qual o objetivo de cada ator com o sistema ? Pergunte: O sistema armazena informações ? Que informações atores irão criar, ler, atualizar ou apagar ? O sistema precisa notificar o ator sobre mudanças no seu estado interno ? Existe algum evento externo que o sistema precisa saber ? Que ator informa o sistema destes eventos ? INTRODUÇÃO À ENGENHARIA DE SOFTWARE Detalhar um caso de uso ❖ Seguir o template detalhado para especificação de casos de uso visto na aula ❖ Lembrando de descrever os cenários Identificar fluxo normal; Identificar fluxos alternativos; INTRODUÇÃO À ENGENHARIA DE SOFTWARECasos de Uso devem ser... ❖ Unidades testáveis e auto-contidas ! ❖ Isso facilita: Distribuição de tarefas entre os desenvolvedores; Gerenciamento do cronograma; Planejamento e realização de testes unitários; e Integração do sistema. ❖ Sem isso, não é viável um desenvolvimento iterativo e incremental ! ❖ O escopo de um caso de uso deve ser limitado. INTRODUÇÃO À ENGENHARIA DE SOFTWARE Modelagem de casos de uso ❖ Conclusão: Todas as atividades de desenvolvimento são organizadas em função dos casos de uso; Ele será nosso Oráculo! Isso inclui atividades de: • Modelagem e Projeto; • Codificação; • Planejamento do Projeto; • Teste de Software; • Homologação do sistema INTRODUÇÃO À ENGENHARIA DE SOFTWARE Ferramentas de Modelagem ❖ Serão necessárias no trabalho em grupo ❖ Exemplos: StarUML BOUML Rational Rose Eclipse ArgoUML AstahUML Outros INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício ❖ Dada a descrição do sistema a seguir, vamos elaborar seu diagrama de casos de uso... ❖ Sistema: Controle Acadêmico de Disciplinas Alunos, professores e coordenadores podem consultar os dados de alunos por: Nome [padrão], Matrícula, Ano de Ingresso Alunos podem fazer suas matrículas Coordenadores podem fazer ajustes de matrículas de alunos Professores e coordenadores podem consultar dados de uma turma, como por exemplo seus alunos Todos os usuários precisam de identificados de acordo com seu perfil INTRODUÇÃO À ENGENHARIA DE SOFTWARE Exercício INTRODUÇÃO À ENGENHARIA DE SOFTWARE Dúvidas INTRODUÇÃO À ENGENHARIA DE SOFTWARE INTRODUÇÃO À ENGENHARIA DE SOFTWARE Espero que tenham gostado ! Até próxima aula !