200 likes | 300 Views
OCLE Object Constraint Language Environment. Fábio Moura CIn-UFPE. Roteiro. Introdução Projetos Modelos Compilando Especificações OCL Model Checking Geração de Código Java Exemplo. OCLE – Introdução.
E N D
OCLEObject Constraint Language Environment Fábio Moura CIn-UFPE
Roteiro • Introdução • Projetos • Modelos • Compilando Especificações OCL • Model Checking • Geração de Código Java • Exemplo
OCLE – Introdução • OCLE foi especialmente projetada e implementada para auxiliar usuários UML no desenvolvimento de expressões OCL • Erros no desenvolvimento dos modelos podem ser facilmente detectados e corrigidos • Permite fácil criação de expressões OCL • É uma ferramenta poderosa, de uso muito simples e intuitivo • Permite acesso completo tanto a nível de meta modelos como de modelos • É gratuita ! • http://lci.cs.ubbcluj.ro/ocle/index.htm • http://www.cin.ufpe.br/~in1006/2005/OCLE
Projetos • Permite o gerenciamento flexível de modelos e especificações OCL • Poder ser desenvolvidos em arquivos separados e posteriormente unidos em um projeto • Um mesmo arquivo OCL ou modelo UML pode ser usado em mais de um projeto OCLE • Um projeto pode conter mais de um modelo UML • Um deles deve ser o modelo ativo • A sua criação é opcional • A estrutura do projeto ativo é mostrada no Project panel • Contém o Project Browser • Mostra os arquivos contendo os componentes do projeto
Projetos • Project Browser
Criando Novos Projetos • Menu Project – New ...
Modelos • OCLE permite a importação de modelos UML realizados usando ferramentas CASE como o Rational Rose • A precondição é que estes modelos estejam armazenados no formado XMI • OCLE também permite a criação de modelos UML dentro de uma interface gráfica e então exportá-los para arquivos XMI • O modelo ativo é mostrado no model browser • Completa navegação e representação do modelo • Filtragem • Edição
Diagramas Suportados • Use Case • Classe • Objetos
Compilando Especificações OCL • O compilador OCL permite ao usuário checar a corretude da sintaxe e da semântica de expressões OCL • Componente chave de qualquer ferramenta OCL • Menu Tools – Compile project specifications • Tipos de arquivos com especificações OCL • .ocl – especificações expressas no nível de meta modelo • .bcr – especificações expressas no nível de modelo (restrições de negócio)
Model Checking • OCLE realiza a checagem do modelo através da avaliação de restrições especificadas pelo usuário em diferentes elementos do modelo • Ajuda a corrigir erro nos modelos e nas especificações OCL • Maneira mais simples de checar o modelo • Compile as especificações OCL • Menu Tools – Check model • Problemas são mostrados no painel Evaluation
Avaliação Local • Característica poderosa do OCLE que permite a avaliação parcial de uma expressão OCL em um determinado contexto • Passos • Escolha a regra que deseja avaliar – clique duas vezes em sua declaração de contexto • Um menu popup será mostrado contendo todas as instâncias possíveis para a classe mencionada na declaração de contexto • Selecione uma instância clicando duas vezes sobre ela • OCLE automaticamente irá modificar o contexto para todas as regras • Uma vez que o contexto foi escolhido, clique duas vezes em diferentes partes da expressão escolhida, OCLE irá tentar avaliar a expressão selecionada, mostrando o resultado no painel OCL Output • Dê um duplo clique sobre o estereótipo da expressão (inv) para avaliar a expressão inteira
Geração de Código Java • O principal objetivo do gerador de código é produzir uma aplicação completamente executável a partir do modelo UML e suas especificações OCL associadas • Transforma classes, interfaces e tipos de dados em seu código fonte Java correspondente • Adicionalmente, restrições OCL associadas são transformadas em código executável, integrado ao código do modelo UML, produzindo uma aplicação Java que checa suas próprias restrições • O código Java produzido é compilável, embora não seja completo • Uma vez que o código foi gerado, ainda se faz necessário escrever o corpo dos métodos gerados
Geração de Código Java • Para invocar o gerador de código, use a opção do menu Tools – Generate code ...
ExemploCódigo Gerado (.java) . . . public void check_Order_first() { Enum enumType = Order.this.type; boolean bEquals = enumType.equals(Enum.buy); float fMatchedPrice = Order.this.matchedPrice; float fLimit = Order.this.limit; boolean bLessOrEqual = fMatchedPrice <= fLimit; boolean bImplies = !bEquals || bLessOrEqual; if (!bImplies) { System.err.println("invariant 'first' failed for object "+Order.this); } } . . .