1 / 21

Contratos Modelagem Funcional

Contratos Modelagem Funcional. Prof. Dr. Daniel D. Abdala Baseada nas transparências de professor Leandro Becker. Contratos – Modelagem Funcional. Contratos são a forma de detalhar como as operações e consultas do sistema devem ocorrer ;

golda
Download Presentation

Contratos Modelagem Funcional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ContratosModelagem Funcional Prof. Dr. Daniel D. Abdala Baseada nas transparências de professor Leandro Becker

  2. Contratos – Modelagem Funcional • Contratos são a forma de detalhar como as operações e consultas do sistema devem ocorrer; • Podem ser descritos de maneira informal (textual)ou de maneira não ambígua (pseudo-código) • Utilizam os casos de uso expandidos ou diagramas de seqüência e a modelagem conceitual;

  3. Contrato de Operação de Sistema • Um contrato de operação do sistema nada mais é que um texto estruturado composto pelas seguintes partes: • Pré-condições; • Pós-condições; • Exceções. • Especifica em que estado o sistema deve estar para que a operação possa ocorrer; • Especifica em que estado o sistema deve ser deixado uma vez que a operação chega ao seu termino; • Especifica como o sistema deve se comportar em situações excepcionais.

  4. Contrato de Consulta de Sistema • Um contrato de consulta do sistema nada mais é que um texto estruturado composto pelas seguintes partes: • Pré-condições; • Resultados. • Especifica em que estado o sistema deve se encontrar para que a consulta possa ocorrer; • Especifica quais serão os resultados produzidos/retornados pela consulta.

  5. Tipos de Pré-condições • Garantia de parâmetros: pré-condições que garantem que os parâmetros da operação ou consulta correspondem a elementos válidos do sistema de informação • Restrição complementar: pré-condições que garantem que a informação se encontra em uma determinada situação desejada

  6. Em um contexto não ambíguo • é possível simplificar a escrita da pré-condição self.cadastroexists(nome=nomeCliente)

  7. Restrição complementar • exemplo: se o modelo conceitual especifica que uma associação tem multiplicidade de papel 0..1, uma pré-condição complementar poderá especificar que, para uma instância específica, a associação efetivamente existe (ou não existe); • uma pré-condição nunca poderá contradizer as especificações do modelo conceitual, apenas complementá-las.

  8. Exemplo Alias: cliente = self.cadastroselect(nome=nomeCliente) Pré: clientesize() == 1 cliente.debito == 0

  9. Diagrama de seqüência com exceções Operação: identificaCliente(nome:String) Alias: cliente = self.cadastroselect(nome=nomeCliente) Pré: - Exceções: “Nome invalido” se clientesize == 0 “Cliente com debito” se cliente.debito != 0

  10. Pós-condições semânticas • Instância: criação e destruição • Associação: criação e destruição • Atributo: modificação de valor

  11. Criação de uma instância e sua associação com outra instância preexistente • Pós: foi criado um Cliente e associado à Videolocadora • Pós: • cliente = Cliente.new() • self.addToCadastro(cliente).

  12. Criação de uma associação entre duas instâncias Pós: O cliente cujo nome é nomeCliente foi associado à VideoLocadora como clienteCorrente Alias: cliente = self.cadastroselect(nome=nomeCliente) Pós: self.clienteCorrente = cliente

  13. Pós-condição condicional Pós: se não havia nenhum emprestimoAberto associado ao clienteCorrente, então um novo Emprestimo foi criado e associado ao clienteCorrente como emprestimoAberto. Pós: self.clienteCorrente.emprestimoAberto@presize==0 IMPLIES self.clienteCorrente.emprestimoAberto=Emprestimo.new()

  14. Contrato para Inserção

  15. Em OCL

  16. Outras Consultas e Operações (específicas dos casos de uso) • Freqüentemente haverá uma cadeia de execução ao longo de um dos fluxos, explicitada no diagrama de seqüência. • Verificar: • Qual é o objetivo de cada operação? • O que cada uma delas espera que tenha sido produzido pelas anteriores? • O que cada uma delas produz? • Que exceções poderiam ocorrer durante a execução?

  17. Exemplo

  18. Fluxo de trabalho: • Expandir cada caso de uso e fazer o diagrama de seqüência. • Fazer o modelo conceitual. • Escrever os contratos das operações e consultas do caso de uso.

  19. Exercício: contrato empréstimo

More Related