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

Preview:

Citation preview

Aula 8Aula 8

ContratosContratos

Aula 8Aula 8

ContratosContratos

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

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 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

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 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.

Evento de Entrada X Evento de Saída

Contratos das Contratos das OperaçõesOperações

Contratos das Contratos das OperaçõesOperações

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

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?

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”.

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

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 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))

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

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

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.

Mudanças no modelo conceitual

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

Venda

estáCompleta:Booleanodatahora

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