34
Aula 8 Aula 8 Contratos Contratos

Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Embed Size (px)

Citation preview

Page 1: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Aula 8Aula 8

ContratosContratos

Aula 8Aula 8

ContratosContratos

Page 2: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Atividades da Fase AnalisarRefinarPlano

Sincronizarartefatos

Analisar Projetar Construir Testar

1. Definir Casos deUso Essenciais

2. Refinar Diagramas de Casos de Uso

3. Refinar o Modelo Conceitual

4. Definir Diagramas deSeqüência do Sistema

5. Definir Contratos deOperação

6. Definir Diagramas de Estado

Page 3: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

O que foi visto até agora

Casos de Uso Completo Abstrato

(descrição textual)

Page 4: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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

.

.

.

Page 5: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 6: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Cenários ou Diagramas de Seqüência do Sistema

(DSS)• Cenários ou DSSCená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

Page 7: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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

Page 8: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 9: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 10: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Exemplo DSS para o caso de uso Emprestar Livro

Page 11: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Outro Exemplo DSS para o UC Emprestar Livro

Page 12: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Eventos e Operações de Sistema

• Um evento de sistema é um evento externo de entradaentrada 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ídasaída.

Page 13: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Evento de Entrada X Evento de Saída

Page 14: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Contratos das Contratos das OperaçõesOperações

Contratos das Contratos das OperaçõesOperações

Page 15: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Atividades da Fase AnalisarRefinarPlano

Sincronizarartefatos

Analisar Projetar Construir Testar

1. Definir Casos deUso Essenciais

2. Refinar Diagramas de Casos de Uso

3. Refinar o Modelo Conceitual

4. Refinar Glossário 5. Definir Diagramas deSeqüência do Sistema

6. Definir Contratos deOperação

7. Definir Diagramas de Estado

Page 16: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 17: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 18: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 19: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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

Page 20: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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

Page 21: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 22: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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?

Page 23: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

ExemploOperaçã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”.

Page 24: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Como fazer um contrato: Relacionamento entre artefatos

Caso de Uso: Comprar Itens

. . .1. Este caso de uso começa...

:SistemaCaixa

Comprar Itens – versão 1

entrarItem(CUP, quantidade)

terminarVenda()

registrarPagamento(quantia)

Sistema

entrarItem()

terminarVenda()

entrarPagamento()

Operação: entrarItem

. . .Pós-condições. . .

Operação: terminarVenda

. . .Pós-condições: . . .

Casos de Uso

Diagrama de Seqüênciado sistema

Operações de sistema

Contratos

Page 25: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 26: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 27: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 28: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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.

Page 29: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Estudo de Caso: Sistema Estudo de Caso: Sistema Terminal de Ponto de Terminal de Ponto de

VendasVendas

Estudo de Caso: Sistema Estudo de Caso: Sistema Terminal de Ponto de Terminal de Ponto de

VendasVendas

Criação dos contratos das Criação dos contratos das operações:operações:

EntrarItem(codProd,quantidade)EntrarItem(codProd,quantidade)

TerminarVenda()TerminarVenda()

RegistrarPagamento(quantiaRegistrarPagamento(quantia))

Page 30: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Modelo conceitual para o domínio do PDV

1..1

1..1

Caixa

1..1

Gerente

1..*

1..*

1..1

*

1..1

1..1

Pagamento

quantia

1..1

1..1

Cliente

1..1

1..1

*

1..1TPV

1..1

< Registra-Vendas-do

1..11..*

Iniciado por

1..1

*1..1

Loja

endereçonome

1..*

1..1Possui

1..*1..1

Catálogo de Produtos

*

1..1Usado-por

*

1..1

Venda

datatempo

1..1

1..1Paga-por

1..1

1..1

Iniciada-por

1..1

*

Registra-Dados-dav

1..1

1..1Capturada-em

1..*

1..1

Item

*1..1

Estoca

0..1

1..1

Especificação de Produto

descriçãopreçoCUP

1..*1..1

Contém

*

Descreve

*

LinhadeItemdeVenda

quantidade

1..1

1..*

Contido-em

1..1

0..1

Registra-venda-de

1..1

*

Descritos-por

1..1

Page 31: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

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: SistemaReferências cruzadas:Caso de Uso: Comprar ItensNotas: Use acesso super-rápido ao banco de dadosExceçõ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 deinstânciaf.a = formada umaassociaçãom.a = modificaçãode atributo

Contrato

Page 32: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

ContratoNome: terminarVenda()Responsabilidades: Registrar que é o fim da entrada de itens de Venda e exibir o total da venda.Tipo: SistemaRefs cruzadas: Caso de Uso: Comprar ItensExceções: Se uma venda não está em andamento,

indicar o erro.Saída: Pré-condições: Uma venda deve ter sido iniciadaPós-condições:

• Venda.estáCompleta recebeu o valor true (ma)

Problemas:

a. Exibir o total da venda

b. A pré-condição

c. No original traduzido, está escrito “recebe” na pós-condição.

Problemas:

a. Exibir o total da venda

b. A pré-condição

c. No original traduzido, está escrito “recebe” na pós-condição.

Page 33: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

Mudanças no modelo conceitual

• Existe um atributo sugerido no contrato de terminarVenda que não aparece no modelo conceitual.

Venda

estáCompleta:Booleanodatahora

Page 34: Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos AnalisarProjetarConstruirTestar 1. Definir Casos de Uso Essenciais 2

ContratoNome: registrarPagamento(quantia:quantidade)Responsabilidades: Registrar o pagamento, calcular o troco e imprimir o recibo.Tipo: SistemaRefs cruzadas: Função do sistema: R2.1 Caso de Uso: Comprar ItensNotas: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ânciaf.a = formada uma associaçãom.a = modificação de atributo