Contratos
Modelagem Funcional
Modelagem Funcional
 Especificação das funções externas 
isto é, a cargo dos atores  do sistema
 Operações

Diagrama de Sequência de Operações
 Consultas
/ Relatórios
Contrato
 Dentro da modelagem funcional,
Contratos especificam somente as
operações
 Consultas / Relatórios são próprios de
especificação de interface
Artefatos Necessários aos
Contratos
 Modelo conceitual
 Diagramas de seqüência
É Tempo de Recordar as Dependências
entre Artefatos de Análise ...
Documento de
Requisitos
Organização dos
Requisitos
Casos de
Uso
Modelo
Conceitual
Preliminar
Manutenção de
Entidades
Casos de
Uso Expandidos
Modelo
Conceitual
Dicionário de
Dados
Diagramas de
Sequência
Contratos
Consultas /
Relatórios
Elementos de um Contrato de
Operação
 Identificação
 Referências Cruzadas
 Casos
de uso onde a operação aparece
 Pré-condições
 Pós-condições
Pré-condições
 Definem o que deve ser verdadeiro na
estrutura da informação armazenada para
que uma operação possa ser executada


Certos objetos devem existir (ou não existir!)
Certas associações entre objetos devem existir
(ou não existir!)
 As pré-condições não serão testadas durante
a execução da operação
 Algum mecanismo externo deverá garantir as
pré-condições antes de executar a operação
Pós-condições
 Estabelecem como o estado do sistema
deve mudar, em função da execução da
operação
 Criação
/ destruição de objetos
 Criação / destruição de associações entre
objetos
 Mudança de estado de objetos
Template de um Contrato
Operação: Nome e parâmetros
[Referências cruzadas]: Use cases em que a
operação
pode ocorrer
Pré-condições: Hipóteses acerca do estado do
sistema ou dos objetos do modelo do domínio,
antes da execução da operação
Pós-condições: O estado dos objetos do
modelo do domínio, depois que a operação foi
realizada
Exemplos de Contrato
 Estudo de Caso
 Um
sistema de terminal de vendas em um
supermercado  Sistema TV

Detalhado no livro de Larman
Modelo Conceitual do Sistema
TV
Diagrama de Sequência para o
Caso de Uso Processar Vendas
Contrato para a Operação IniciarVenda()
Contrato C1: IniciarVenda()
Referências cruzadas: Caso de Uso Processar
Vendas
Pré-condições
- Um objeto TV e um objeto Caixa existem
- A associação TV É operado por Caixa existe
Pós-condições
- Uma instância v de Venda foi cria
- v foi associada segundo Venda Registrada em TV
- v.data := data
- v.tempo := tempo
Contrato para a Operação EntrarItem()
Contrato C2: EntrarItem(IDItem, quantidade)
Referências cruzadas: Caso de Uso Processar
Vendas
Pré-condições
- Um objeto Venda criado
Pós-condições
- Uma instância lv de Linha de Venda foi criada
- lv foi associada segundo Contida em,
Registra venda de, Descrita por
- lv.idItem := IDItem
- lv.quantidade := quantidade
Contrato para a Operação
TerminarVenda()
Contrato C3: TerminarVenda()
Referências cruzadas: Caso de Uso
Processar Vendas
Pré-condições
- Um objeto v de Venda criado
Pós-condições
- v.completa := verdade
Contrato para a Operação
FazerPagto()
Contrato C4: FazerPagto()
Referências cruzadas: Caso de Uso
Processar Vendas
Pré-condições
- Um objeto v Venda, e objetos lv Linha de Venda
criados
Pós-condições
- uma instância p de Pagto foi criada
- p foi associada a v segundo Paga
- p.valor := valor
- v foi associada segundo É arquivada por
Contratos São Também um Meio de
Validar / Refinar Modelos
Conceituais
 Estudo de Caso
O
atributo completa da entidade Venda só
foi descoberto durante a especificação do
contrato C3
Venda
Completa
Data
Tempo
Preparando-se para a Mini-prova
#6
 Estudo de caso: o seu projeto!
 Casos de Uso expandidos
 Modelo do domínio detalhado
 Diagramas de Sequência para cada caso de uso
 Especificar os contratos de cada uma das
operações dos diagramas de sequência
 Refinar / validar o modelo do domínio
Download

5-Contratos