190 likes | 409 Views
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
E N D
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 ...
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
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 vVenda, e objetos lvLinha 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