Especificação e Modelagem de Requisitos Especificação e Modelagem de Requisitos Regras de Negócio Glossário Documento de Visão Elicitar Requisitos de Produto Especificar casos de uso e validá-los Especificar requisitos não funcionais Analisar e Validar os requisitos Casos de Uso e Esp. Suplementar Plano e Casos de Teste Analista de Requisitos Requisitos p/ Inspeção Análise dos Requisitos Trabalha com requisitos incompletos Se preocupa em descobrir problemas Requisitos são enumerados por exemplo, em uma reunião com stakeholders – Quais as inconsistências? – Quais os conflitos? – Tenho que fazer uma nova reunião? Especificação de Requisitos de Produto Desenvolvida como uma conseqüência da fase de análise de requisitos – Modelo de Casos de Uso – Especificação Suplementar Serve como base para casos de teste – Requisitos funcionais e não funcionais Modelo de Casos de Uso O Modelo de Casos de Uso – Especifica em detalhes requisitos do sistema Emprega – Atores – Casos de Uso Cliente Comprar Ator Cliente Define o que existe do lado de fora do sistema – Ator é uma classe do subsistema mais abrangente que interage diretamente com o sistema – É algo com comportamento como • • • • uma pessoa (identificada pelo seu papel) um sistema computacional uma organização um sensor/atuador Caso de Uso Comprar Caso de Uso: – O que deve ser feito pelo sistema – histórias de sucesso e insucesso que suportam o mesmo objetivo – um conjunto de cenários relacionados Cenário: – uma instância de um Caso de Uso – uma seqüência específica de ações e interações entre atores e sistema Modelo de Casos de Uso Os atores representam o que interage com o sistema Representam tudo que necessita trocar informação com o sistema Como estão fora do sistema: não são descritos em detalhe Atores são diferentes de usuários: – usuário usa o sistema – ator representa uma certa regra seguida pelo usuário – uma mesma pessoa pode aparecer como instância de vários atores Modelo de Casos de Uso Uma instância de um Ator efetua diversas operações no sistema Quando um usuário usa o sistema, efetua um seqüência de transações relacionadas em um diálogo com o sistema Esta seqüência é chamada de Caso de Uso Cada Caso de Uso é uma forma específica de usar o sistema Cada execução de um caso de uso pode ser visto como uma instância do Caso de Uso Modelo de Casos de Uso Casos de Uso capturam os requisitos funcionais O conjunto de todos os Casos de Uso especificam a funcionalidade completa do sistema Agrupar funcionalidades e chamá-las de Casos de Uso facilita o gerenciamento destes requisitos durante ciclo de desenvolvimento Modelo de Casos de Uso Caso de Uso – determina um ou mais casos de teste Do conjunto de casos de uso é possível derivar o Plano de Testes – Garantir adequação do software aos requisitos funcionais Casos de Uso Casos de Uso Discutir com o cliente o que o sistema fará Identificar quem interage com o sistema Identificar que interfaces o sistema terá Casos de Uso Tipos e Formatos – Caixa preta – O sistema é descrito em termos de suas responsabilidades – Elementos de software possuem responsabilidades e colaboram com outros elementos que têm responsabilidades Casos de Uso Definindo as responsabilidades do sistema com casos de uso caixa-preta – O que o sistema deve fazer sem decidir como – Estilo caixa-preta • O sistema deve registrar a venda de cada item – Errado • O sistema salva no banco de dados..... • O sistema gera um SQL INSERT....... Casos de Uso Formato – Breve – um resumo – Casual – formato informal – Totalmente especificado • Um conjunto de seções que apóiam a sua descrição em detalhe De posse dos Casos de Uso Verifique se não há requisitos faltando Verifique que os desenvolvedores entendem os requisitos Vantagem é ter apelo visual dos requisitos mais relevantes do cliente Elaborando o Modelo de Casos de Uso Identificando Nenhum sistema existe isoladamente – interage com atores humanos e/ou autômatos – atores esperam que o sistema se comporte de acordo com o previsto Um caso de uso – especifica o comportamento de um sistema (ou de parte deste) – é a descrição de um conjunto de seqüências de ações – inclui variantes realizadas pelo sistema para produzir um resultado observável por um ator Casos de Uso: função – transação/serviço Seqüência de ações, executada pelo sistema, que gera um resultado – De valor observável – E para um ou mais atores Função Procedimento computacional Caso de Uso: Ator Alguém ou alguma coisa (fora do sistema) que interage com o sistema Emissor/Receptor Caso de Uso Casos de uso podem ser aplicados para captar o comportamento pretendido – não é necessário especificar como serão implementados – fornecem uma maneira de obter melhor compreensão do sistema – cooperação com usuários e especialistas do domínio da aplicação Caso de Uso Executa alguma quantidade tangível de trabalho Sob a perspectiva do ator fornece – um resultado – um novo objeto – alteração de estado de um objeto existente Caso de Uso A descrição de um caso de uso define o que o sistema faz quando o caso de uso é realizado A funcionalidade do sistema é definida por um conjunto de casos de uso, cada um representando um fluxo de eventos específico Além disso, servem para: – verificar o sistema à medida que evolui durante o desenvolvimento Caso de Uso e Ator Descrição Passo 1 Passo 2 … Passo N Emissor Função Atores De um modo geral, atores podem ser: – – – – papéis que as pessoas representam nos Casos de Uso dispositivos de hardware mecânicos ou elétricos outros sistemas computacionais tempo (para representar atividades periódicas) Atores Pode-se definir grupos gerais de atores e suas especializações Funcionários Boy Caixa Atores Os atores estão associados a Casos de Uso – Ator e Caso de Uso se comunicam – Enviar e Receber mensagens Cliente Venda Caixa Casos de Uso Nomes – Todo caso de uso deve ter um nome que o diferencie dos demais – Expressões verbais ativas – Nomeiam um comportamento do sistema Exemplo de Caso de Uso Cliente de banco deseja usar um caixa automático para – sacar dinheiro, transferir dinheiro ou consultar o saldo da conta Ator: Cliente Casos de Uso: Sacar dinheiro, Transferir dinheiro e Consultar saldo Exemplo de Caso de Uso Valor de resultado observável Transferir dinheiro Sacar dinheiro Consultar saldo Cliente Identificando Casos de Uso Em geral, é difícil decidir entre um ou vários Casos de Uso Por exemplo, seria Caso de Uso: – Inserir cartão em um Caixa Automático? – Digitar a senha? – Receber o cartão de volta? Casos de Uso devem ser organizados para evitar – Redundância – Conflitos – Ambigüidades Identificando Casos de Uso Identificando Casos de Uso Deve representar valor observável para ator Pode-se determinar – Devido a interações Ator x Sistema • seqüência de ações com o sistema que resultam valores para atores – Devido a necessidades de um Ator • satisfaz um objetivo particular de um ator que o sistema deve prover Identificando Casos de Uso Procedimentos Iniciais – Escolha a fronteira do sistema – Identifique os atores primários • aqueles cujas necessidades serão supridas pelo sistema – Defina Casos de Uso que satisfaça as necessidades dos atores primários • um caso de uso para cada necessidade Identificando Casos de Uso Traçar fronteira conceitual – Identificar o que está fora e o que está dentro do sistema Exemplo: ponto de vendas – Fora • Cliente, Caixa, Agente de Cartão de Crédito – Dentro • Venda, Emissão Recibo, Estoque, .... Identificando Casos de Uso O que está dentro do sistema: – é responsável por executar seu comportamento O que está fora: – o contexto do sistema – o ambiente onde o sistema existe – determinam as necessidades que o sistema deve atender Identificando Casos de Uso Identifique os atores – – – – – Quais grupos precisam de ajuda do sistema para realizar suas tarefas? Quais grupos são necessários para a execução das funções do sistema? Quais grupos interagem com algum hardware externo ou outros sistemas? Quais grupos realizam funções secundárias de administração e de manutenção? Existem atividades temporais periódicas? Identificando Casos de Uso Atores Primários – necessidades que são supridas pelo sistema • Caixa, cliente Atores de suporte – provem serviços para o sistema • Agente de cartão de crédito Primeiro temos que encontrar os atores primários – enumere as necessidades para cada ator Achando Casos de Uso Que funções o ator requer do sistema? O que o ator necessita fazer? O ator tem que ler, criar, destruir, modificar ou armazenar algum tipo de informação do sistema? O ator tem que ser notificado sobre eventos do sistema, ou o ator necessita notificar o sistema sobre alguma coisa? – o que estes eventos representam em termos de funcionalidade Achando Casos de Uso Pode o trabalho diário do ator ser simplificado ou mais eficiente através da incorporação de novas funções? Outras questões – Que entradas/saídas o sistema necessita? • De onde vem e para onde vão? – Quais os maiores problemas com a implementação atual (quando existir automática ou a manual) Identificando Casos de Uso Defina Casos de Uso – Nomeie os casos de uso como uma necessidade • Processar venda ( um necessidade do caixa) – Descreva cada caso de uso • primeiro uma descrição simplificada • complete esta descrição – analise o conjunto de casos de uso e faça uma organização – Não considere a Interface Homem-máquina • isto é implementação – Foco – o que fazer Caso de Uso: um exemplo 1/8 Caso de Uso: Processar Venda Descrição Breve – O Caixa necessita efetuar a venda de um conjunto de itens selecionados pelo cliente. Deve atualizar estoque, registrar a venda e emitir o recibo Descrição Informal – Um cliente chega no caixa com itens a comprar. O Caixa registra cada item usando o Sistema. O sistema apresenta o total parcial e a descrição de cada item. O cliente entra com a informação de pagamento, que o sistema valida e registra. O sistema atualiza o estoque. O cliente recebe um recibo e parte com os itens adquiridos Casos de Uso – Detalhado 2/8 Ator primário – o que inicia a ocorrência do caso de uso – Caixa Interessados – – – – Todos interessados em validar o Caso de Uso Caixa Cliente Gerente Pré-condições – O que deve ser verdade antes de iniciar o caso de uso – O caixa está identificado e autenticado Casos de Uso – Detalhado 3/8 Pós-condições – O que deve ser verdade após o término com sucesso do caso de uso – A venda está registrada. O estoque foi atualizado, As comissões foram calculadas e armazenadas • descrição ainda informal Casos de Uso - Descrição Detalhada 4/8 Fluxo Normal – Descreve a história principal de sucesso do caso de uso Fluxos Alternativos ou Extensões – Indicam outros cenários (tanto de sucesso como de insucesso) Requisitos Especiais: requisitos não funcionais, atributos de qualidade ou restrições • Usar um leitor ótico para o código de barras Casos de Uso – Descrição Detalhada 5/8 Cadastrar Cliente Fluxo Normal: – 1. 2. 3. 4. Número seqüência. Agente + verbo + complemento O cliente fornece seus dados O sistema verifica que o cliente não está cadastrado O sistema adiciona novo cliente O sistema informa que o cadastro foi efetuado com sucesso Casos de Uso – Descrição Detalhada 6/8 Fluxos Alternativos: Caso <número>: <Descrição do caso alternativo> Número seqüência . Agente + verbo + complemento ; – Finalizar caso de uso ou retornar ao passo... Casos de Uso – Descrição Detalhada 7/8 Cadastrar Cliente - Fluxos Alternativos Caso 1: o cliente já está cadastrado 1. O sistema verifica que o cliente está cadastrado • número da seq. onde se inicia a variante 2. O sistema informa que já está cadastrado 3. Finalizar caso de uso Casos de Uso – Descrição Detalhada 8/8 Venda Fluxo Normal 1. O cliente chega com os itens selecionados no caixa 2. O Caixa inicia uma venda 3. Para cada item (trazido pelo Cliente) 1. 4. 5. 6. 7. 8. 9. 10. Adicionar Item de venda O caixa finaliza a venda O sistema totaliza a compra e informa o total O cliente efetua o pagamento O Caixa registra o pagamento O sistema da baixa no estoque dos itens vendidos O sistema emite o recibo ...................... Exercício Desenvolver o Diagrama de Casos de Uso e a descrição dos Fluxos para o sistema da Petrobrás. Organizando o Modelo de Casos de Uso Organizando Organize os atores semelhantes em uma hierarquia de generalização/especialização Especifique as associações de cada ator para os Casos de Uso Diagrama de Casos de Uso Cliente Realizar transacao com Cartao de Credito Agente de Cartao de Credito Processar Conta do Cliente Pessoa Fisica Pessoa Juridica Instituicao Financeira Diagramas de Casos de Uso São secundários O importante é o texto descrevendo os Casos de Uso Apóiam a organização – Pacotes de Casos de Uso • Agregam casos de uso funcionalmente coesos – Visualizam relacionamentos entre • casos de uso • atores Revisando Casos de Uso Todos os atores envolvidos com um Caso de Uso – Estão se comunicando? – Aparecem na sua descrição? – Algum não aparece? Tem ator ou Caso de Uso sem nenhuma associação? Algo de errado... Tem algum requisito funcional conhecido não tratado pelos Casos de Uso Revisando Casos de Uso Estruturar modelo de Casos de Uso Estabelecer relacionamentos entre Casos de Uso – “Inclusão” – “Extensão” – “Generalização” Tem similaridades descritas em mais de um caso de Uso eliminar redundâncias – Inclusão (<< include>>) A descrição do Caso de Uso está muito complexa – Extensão (<< extends>>) – Generalização (herança) Inclusão Executando uma instância do Caso de uso Base Caso de uso Base <<include>> Caso de Uso Inclusão Inclusão Caso de uso base incorpora explicitamente comportamento de outro Caso de Uso em ponto específico Representado como uma dependência (seta tracejada) para o Caso de Uso incluído Se o Caso de Uso incluído muda o Base, necessita ser revisto <<include>> Inclusão Caso de Uso Venda Fluxo Normal 1. 2. 3. 4. ........ ......... Inclui Pagar Finalizar Venda Inclusão Pagar <<include>> Cliente Venda Extensão uma instância do Caso de uso Base Executando Caso de uso Base <<extend>> Ponto de Extensão Caso de Uso Extensão Extensão Um Caso de Uso incorpora implicitamente o comportamento de outro caso de uso Apenas em circunstâncias específicas o caso de uso estendido é incorporado ao caso de uso base Utilizado para modelar comportamento excepcional do sistema – Exceções Extensão Representado como uma dependência – seta tracejada para o Caso de Uso Base Se o Caso de Uso base muda o Caso de Uso estendido, necessita ser revisto <<extend>> Extensão Caso de Uso Devolver Produtos Fluxo Normal 1. O Cliente chega com produto para devolução 2. O Caixa prepara cupom de troca (devolver dinheiro) 3. Reportar ao Estoque 4. Finalizar Operação 1. Ponto de extensão – devolver dinheiro Extensão <<extends>> Efetuar Troca Devolver Dinheiro Generalização Executando uma instância do Caso de uso Filho Caso de uso Pai Caso de Uso Filho Generalização Similar a generalização entre Classes O caso de uso filho herda – o significado do caso de uso pai – o comportamento O comportamento do Caso de Uso filho normalmente é redefinido O Caso de Uso filho pode ser usado no lugar do pai Generalização derivado base Pagar a Dinheiro Cliente Pagar Pagar com Cartão Generalização Ator: Cliente 1. Esse caso de Uso começa quando o cliente deseja efetuar pagamento 2. O Cliente registra o documento de cobrança 3. O Cliente informa a opção desejada 1. Se pagto a dinheiro – executar subseção Pagar a dinheiro 2. Se pagto com cartão de crédito- executar subseção Pagar com Cartão 4. O sistema registra o pagamento 5. O sistema emite o recibo 6. Subseção – Pagar a Dinheiro 1. 2. 3. 4. O Cliente coloca o dinheiro em um envelope e lacra O Cliente informa o numero do envelope ao sistema O cliente deposita o envelope ....... Exercício - Especifique os Casos de Uso para: 1. 2. 3. Sistema da padaria de pequeno porte Sistema inteligente de preenchimento do IRPF Sistema de abertura automática de porta Revisando..... Dicas/Sugestões Todos os Casos de Uso deverão representar algum comportamento distinto e identificável Nomeie um comportamento que seja único, identificável e razoavelmente atômico Faça a fatoração de comportamento comum, obtendo-se este comportamento de outros casos de uso (inclusão) Faça a fatoração de variantes, aplicando esse comportamento a outros casos de uso que o estendem Descreva o fluxo de eventos de maneira suficientemente clara para que alguém de fora seja capaz de compreendêlo com facilidade – Especifique um conjunto mínimo de cenários explicitando a semântica normal e variante do Caso de Uso Dicas e Sugestões Mostre somente – Casos de Uso que são importantes para a compreensão do comportamento do sistema (ou da parte sendo modelada) – Somente os atores relacionados com esses Casos de Uso Exercício Especifique um sistema para uma Agenda Telefônica, que controle aniversário dos contatos: – Elicitar requisitos com o uso das técnicas abordadas • Requisitos de negócio • Requisitos de produto • Regras de negócio – Detalhar os Casos de Uso