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