130 likes | 263 Views
propriedades rose, roze, z-eves. introdução. propriedades em diagramas UML Roze, Z-Eves. Propriedades. Características desejáveis do sistemas Úteis para geração de casos de teste Não se sabe a priori se a propriedade é satisfeita. classe Conta. Conta. saldo : <br>at = 0. Creditar().
E N D
introdução • propriedades em diagramas UML • Roze,Z-Eves
Propriedades • Características desejáveis do sistemas • Úteis para geração de casos de teste • Não se sabe a priori se a propriedade é satisfeita
classe Conta Conta saldo : \nat = 0 Creditar() Debitar() CreditarDebitar() CreditarV1V2()
exemplo • Criar um diagrama de classes no Rose para a classe Conta, inserindo as operações especificadas no diagrama anterior.
pré, pós-condições • Creditar póssaldo' = saldo + val? • Debitar présaldo val? póssaldo' = saldo – val?
exemplo • Inserir as pré e pós condições para as operações de Conta.
propriedades • Inverso Creditar ; Debitar saldo' = saldo • Comutativo Creditar[v1/val?] ; Creditar[v2/val?] Creditar[v2/val?] ; Creditar[v1/val?]
exemplo • Inserir as propriedades Inverso e Comutativo para a classe Conta. • Abrir especificação da classe, clicar na aba “Roze” e escrever a propriedade no campo “properties” • Lembre-se de especificar que as operações creditarDebitar e creditarV1V2 são operações auxiliares • aba “Roze” -> “isDefinition”’ = true
usando o Roze • Mapeamento de UML anotado para especificações Z • Selecionar uma classe, selecionar no menu: tools -> roze -> Z property checker • Salvar arquivo
usando Z-Eves • Verificador de sintaxe, teoremas, modelos. • Abrir arquivo criado anteriormente: • File -> import • Checar especificação • Command -> check all paragraphs
Provando propriedades com o Z-Eves • Provar propriedade • Clicar com botão direito na propriedade e selecionar “show proof” • Reduction -> prove by reduce • Nem sempre se consegue provar as propriedades na primeira tentativa, por isso há algumas opções para se reescrever a propriedade e tentar novamente
exercícios • Crie uma classe coleção de contas que possua os métodos: • removerConta(Conta c) • adicionarConta(Conta c) • Escreva as pré e pós condições das operações. • Escreva e teste uma propriedade que diga que: duas inserções do mesmo elemento seguido de sua remoção implica que o elemento não pertence à coleção. • Escreva uma propriedade desejada para o seu sistema.