Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos...

34
Aula 8 Aula 8 Contratos Contratos

Transcript of Aula 8 Contratos. Atividades da Fase Analisar Refinar Plano Sincronizar artefatos...

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