Aula 8 Contratos.

Slides:



Advertisements
Apresentações semelhantes
Modelo de Casos de Uso Diagrama de Casos de Uso
Advertisements

Orientação a objetos identidade abstração classificação encapsulamento
Análise e Projeto Orientado a Objetos
Requisitos de Software
UML Diagramas de Caso de Uso (USE-CASE)
APSOO Aula 03.
APSOO Aula 05.
Desenvolvimento de Sistemas Baseado na Transformação de Modelos
Casos de Uso.
Diagrama de Classes.
Engenharia de Software
Contratos de Operação.
Cartões CRC (Class Responsibility Card)
Diagrama de Sequência.
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Projeto de Software Orientado a Objetos
Contratos em Projeto OO
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – Noções de Engenharia de Software COINFO – CEFET-PB 9. Modelo conceitual (diagrama.
Objetivo: compreender e aplicar um modelo sequencial
Objetivo: compreender e aplicar um modelo sequencial
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
PARTE V Diagramas de Seqüência de Sistema
RUP: Fluxo de Análise e Projeto
Contratos Modelagem Funcional.
Projeto da Camada de Domínio
Selma Shin Shimizu Melnikoff 2006
Modelagem de Interações
AP 1.
Diagramas de Sequência e Comunicação
Especificação de Requisitos de Software com Casos de Uso
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
Prof. Dr. Daniel D. Abdala Baseada nas transparências de professor Leandro Becker.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Expansão dos Casos de Uso
Conheça o PDV Apresenta as principais ferramentas e
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 11. Comunicação Objetivo: compreender a notação do diagrama de.
Fase de Elaboração: Fluxo de Análise Análise de Sistemas de Software Prof. Rodrigo Ribeiro.
Caso de Uso - Definição Um caso de uso é uma descrição narrativa de uma seqüência de eventos que ocorre quando um ator (agente externo) usa um sistema.
Diagramas de Atividade
UNIDADE 2 UML MODELAGEM TEMPORAL
Fase de Concepção (Início, Planejamento)
Análise e Projeto de Sistemas
Análise Orientada Objeto
UML – Engenharia de Software 1
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
Especificação de Caso de Uso
Laboratório de Programação
Diagrama de Colaboração. Diagramas de Interação Expressam informações bastante similares porém de maneira diferente Diagrama de seqüência: – Interação.
Análise e Projeto de Sistemas
Modelando Sistemas em UML
Fluxos secundários Só devem ser analisados e descritos após a descrição dos fluxos básicos. Fluxos alternativos situações especiais (desconto para um cliente)
Casos de Uso Tarciane Andrade
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Modelo de Análise e Projeto
Atividade de Análise Fase de Elaboração. Artefatos Casos de Uso –Expansão dos Casos de Uso Definidos na Fase de Concepção: Formulário Específico –Diagramas.
Fase de Concepção (Início, Planejamento)
Modelação Aula T15 Modelação Conceptual de Sistemas Revisão do Comportamento OCL – Object Constraint Language José Borbinha.
Contratos Modelagem Funcional.
Fase de Concepção (Início, Planejamento)
Expansão dos Casos de Uso
Diagrama Casos de Uso.
Interações entre objetos
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
UML (Unified Modeling Language) A linguagem unificada de modelagem
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Memória de Aula 07: Desenvolvimento de Sistemas Diagramas de Sequência
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1 Análise e Projeto de Sistemas Modelagem de Requisitos com Casos de Uso.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Transcrição da apresentação:

Aula 8 Contratos

Atividades da Fase Analisar Refinar Plano Sincronizar artefatos Analisar Projetar Construir Testar 1. Definir Casos de Uso Essenciais 2. Refinar Diagramas de Casos de Uso 3. Refinar o Modelo Conceitual 4. Definir Diagramas de Seqüência do Sistema 5. Definir Contratos de Operação 6. Definir Diagramas de Estado

O que foi visto até agora Casos de Uso Completo Abstrato (descrição textual)

O que já foi visto até agora Casos de uso com substantivos e verbos sublinhados Caso de Uso 1 Caso de Uso 2 . Caso de Uso n

Comportamento do Sistema (DSS) É uma especificação do que o sistema faz sem explicar como ele o faz. O comportamento é definido como uma “caixa preta”. O diagrama de seqüência é utilizado para especificar parte do comportamento. O comportamento é dependente dos casos de uso.

Cenários ou Diagramas de Seqüência do Sistema (DSS) Cenários ou DSS mostram um cenário global do funcionamento do sistema, dividindo o caso de uso em partes bem definidas denominadas operações, que são executadas em resposta aos eventos

Cenários ou Diagramas de Seqüência do Sistema (DSS) Processo Unificado: um DSS para cada caso de uso relevante. Pode haver várias soluções para o mesmo problema

O Diagrama de Seqüência do Sistema (DSS) Mostra uma particular seqüência de eventos dentro de um caso de uso, os atores que interagem com o sistema, o sistema (como uma caixa preta) e os eventos de sistema que os atores geram. Deve ser feito para uma seqüência típica eventos do caso de uso e, possivelmente, outros DSSs podem ser criados para as seqüências alternativas mais interessantes.

O Diagrama de Seqüência do Sistema (cont.) O tempo corre no sentido de cima para baixo. A ordem dos eventos deve seguir a ordem no caso de uso.

Exemplo DSS para o caso de uso Emprestar Livro

Outro Exemplo DSS para o UC Emprestar Livro

Eventos e Operações de Sistema Um evento de sistema é um evento externo de entrada para o sistema, gerado por um ator. Eventos de sistema podem incluir parâmetros. Um evento inicia uma operação de resposta do sistema. Uma operação de sistema é uma operação executada em resposta a um evento de sistema. Os eventos e operações também podem ser de saída.

Evento de Entrada X Evento de Saída

Contratos das Operações

Atividades da Fase Analisar Refinar Plano Sincronizar artefatos Analisar Projetar Construir Testar 1. Definir Casos de Uso Essenciais 2. Refinar Diagramas de Casos de Uso 3. Refinar o Modelo Conceitual 4. Refinar Glossário 5. Definir Diagramas de Seqüência do Sistema 6. Definir Contratos de Operação 7. Definir Diagramas de Estado

Contratos das Operações É importante que as tarefas atribuídas às operações sejam bem documentadas, para evitar redundâncias e inconsistências. Um contrato especifica o comportamento esperado para cada operação correspondente a um evento do sistema.

Contratos das Operações Auxiliam a definir o comportamento do sistema. Definem o efeito das operações sobre o sistema  mudanças de estado que ocorrem quando uma operação é invocada Depende do modelo conceitual, dos diagramas de seqüência e da identificação das operações do sistema.

Contratos das Operações (cont.) A especificação dos contratos segue um estilo declarativo, enfatizando o que deve ser feito, sem explicar como. Pode ser escrito de maneira informal ou formal. Normalmente é expresso em termos de pré-condições e pós-condições. Deve ser especificado um contrato para cada operação do sistema (pelo menos para as mais importantes ou abrangentes) Podem ser elaborados também para métodos importantes e/ou complexos do sistema.

Contratos das Operações Características típicas de um contrato: Nome da operação e Parâmetros de entrada Objetivos (ou responsabilidade) Tipo (responsável pela operação) Notas e Exceções Referências cruzadas Pré-condições Pós-condições

Pré-Condições Representam o estado do sistema antes da invocação da operação. Não serão verificadas pela operação, ou seja, assume-se que elas são verdadeiras ao invocar a operação

Pós-Condições Representam o estado do sistema após a invocação da operação, mostrando o que mudou como conseqüência da sua execução. Para cada operação, analisar os conceitos identificados no Modelo Conceitual e definir, para cada possível objeto do sistema, o que muda quando a operação é invocada. Observar o DSS, para ter uma melhor idéia do contexto em que a operação está inserida e o contexto resultante.

Exemplo Encerrar Empréstimo Qual a responsabilidade desta operação? Em quais casos de uso ela aparece? O que ela considera como verdadeiro para ser executada? O que muda no Modelo Conceitual após sua invocação?

Exemplo Operação: encerrarEmpréstimo() Referências Cruzadas: Caso de Uso: “Emprestar Livro” Pré-Condições: um leitor apto ao emprestar livros já foi identificado; pelo menos um livro já foi identificado e está disponível para ser emprestado. Pós-Condições: um novo empréstimo foi registrado; o novo empréstimo foi relacionado ao leitor já identificado na operação “iniciar o empréstimo”; a situação dos livros emprestados foi alterada para “emprestado”.

Como fazer um contrato: Relacionamento entre artefatos Caso de Uso: Comprar Itens . . . 1. Este caso de uso começa... Comprar Itens – versão 1 :Sistema Caixa entrarItem(CUP, quantidade) Casos de Uso terminarVenda() Sistema entrarItem() terminarVenda() entrarPagamento() registrarPagamento(quantia) Diagrama de Seqüência do sistema Operações de sistema Operação: entrarItem . . . Pós-condições Operação: terminarVenda . . . Pós-condições: . . . Contratos

Como fazer um contrato Identifique as operações do sistema a partir dos diagramas de seqüência do sistema. Para cada operação do sistema, construa um contrato. Comece escrevendo a seção Responsabilidade, descrevendo informalmente a finalidade (objetivo) da operação.

Como fazer um contrato (cont.) Então, complete a seção Pós-condições, descrevendo de forma declarativa as mudanças de estado que ocorrem nos objetos do modelo conceitual. Para descrever as pós-condições, use as seguintes categorias: Criação e exclusão/instâncias. Modificação de atributos. Associações formadas e desfeitas.

Pós-condições A UML não restringe como as pós-condições devem ser expressas. Deve ser declarativa e orientada a mudanças de estado e não orientada a ações. Por isso, usar o verbo no passado. Ex. Usar “uma Venda foi criada”, ao invés de “criar uma Venda” As cláusulas das p.c. estão associadas ao modelo conceitual. Ao escrevê-las você pode notar erros ou omissões no modelo conceitual.

Pós-condições: quão completas devem ser ? Não é provável, e mesmo necessário, criar um conjunto de pós-condições completo na fase de análise. Alguns detalhes serão descobertos durante a fase de projeto. Isto segue o espírito do desenvolvimento iterativo.

Estudo de Caso: Sistema Terminal de Ponto de Vendas Criação dos contratos das operações: EntrarItem(codProd,quantidade) TerminarVenda() RegistrarPagamento(quantia)

Modelo conceitual para o domínio do PDV 1..1 Caixa Gerente 1..* * Pagamento quantia Cliente TPV < Registra-Vendas-do Iniciado por Loja endereço nome Possui Catálogo de Produtos Usado-por Venda data tempo Paga-por Iniciada-por Registra-Dados-da v Capturada-em Item Estoca 0..1 Especificação de Produto descrição preço CUP Contém Descreve LinhadeItemdeVenda quantidade Contido-em Registra-venda-de Descritos-por

Nome: entrarItem(codProd:número, quantidade:inteiro) Contrato Nome: entrarItem(codProd:número, quantidade:inteiro) Responsabilidade: Entrar(registrar) a venda de um item e acrescentá-lo à venda. Exibir a descrição e o preço do item. Tipo: Sistema Referências cruzadas:Caso de Uso: Comprar Itens Notas: Use acesso super-rápido ao banco de dados Exceções: Se o codProd não for válido, indique o erro. Saída: Pré-condições: O codProd existe (é conhecido do sistema) Pós-condições: Se for uma nova venda, uma Venda foi Criada (c.i.) Se for uma nova venda, a nova Venda foi associada ao TPV (f.a) Uma LinhadeItemdeVenda foi criada (c.i) A LinhadeItemdeVenda foi associada à Venda (f.a) LinhadeItemdeVenda.quantidade recebeu o valor de quantidade (m.a) A LinhadeItemdeVenda foi associada a um(a) (Especificaçãode) Produto, com base no codProd (f.a) c.i. = criação de instância f.a = formada uma associação m.a = modificação de atributo

Nome: terminarVenda() Contrato Nome: terminarVenda() Responsabilidades: Registrar que é o fim da entrada de itens de Venda e exibir o total da venda. Tipo: Sistema Refs cruzadas: Caso de Uso: Comprar Itens Exceções: Se uma venda não está em andamento, indicar o erro. Saída: Pré-condições: Uma venda deve ter sido iniciada Pós-condições: Venda.estáCompleta recebeu o valor true (ma) Problemas: Exibir o total da venda A pré-condição No original traduzido, está escrito “recebe” na pós-condição.

Mudanças no modelo conceitual Existe um atributo sugerido no contrato de terminarVenda que não aparece no modelo conceitual. Venda estáCompleta:Booleano data hora

Nome: registrarPagamento(quantia:quantidade) Contrato Nome: registrarPagamento(quantia:quantidade) Responsabilidades: Registrar o pagamento, calcular o troco e imprimir o recibo. Tipo: Sistema Refs cruzadas: Função do sistema: R2.1 Caso de Uso: Comprar Itens Notas: Exceções: Se a venda não está completa, indicar um erro. Se a quantia for menor que o total da venda, indicar um erro. Saída: / Pré-condições: Pós-condições: Um Pagamento foi criado (ci) Pagamento.quantiaFornecida recebeu o valor de quantia (ma) O Pagamento foi associado à Venda (fa) A Venda foi associada à Loja, para acrescentá-la ao registro histórico de vendas completadas (fa) c.i. = criação de instância f.a = formada uma associação m.a = modificação de atributo