OCL: Object Constraint Language



Documentos relacionados
Especificação Operacional.

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

CASO DE ESTUDO SOBRE SIG

4.1. UML Diagramas de casos de uso

Gestão de projectos na Web

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação?

De Arte a Ciência: Regras para o Desenho de Software

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Guia de utilização da notação BPMN

NORMA BRASILEIRA DE CONTABILIDADE NBC TSC 4410, DE 30 DE AGOSTO DE 2013

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

ATENAS: Um Sistema Gerenciador de Regras de Negócio

Sistemas Operacionais. Prof. André Y. Kusumoto

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE

TÉCNICAS DE PROGRAMAÇÃO

Gestão do Risco e da Qualidade no Desenvolvimento de Software

Especificação do Trabalho

Manual do Gestor da Informação do Sistema

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc

Bem-vindo ao tópico sobre administração de listas de preços.

Catálogo Nacional de Compras Públicas. Manual de Fornecedores

Engenharia de Software II

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

agility made possible

Rock In Rio - Lisboa

Resolução da lista de exercícios de casos de uso

Condições Gerais Programa de fidelidade O CLUBE FITNESSBOUTIQUE Junho 2011

Observação das aulas Algumas indicações para observar as aulas

Integração de livros fiscais com o Microsoft Dynamics AX 2009

Programação Orientada a Objeto

Guião de Ajuda. Inscrição. Instituto Português da Juventude Departamento de Associativismo

Universidade do Minho Licenciatura em Engenharia Informática

FERRAMENTAS DA QUALIDADE

PAINEL DE ADMINISTRADOR

CRIAÇÃO DE MAPAS TEMÁTICOS COM ALOV MAP

Tabelas vista de estrutura

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP

DGAJ/DF. Curso em E-learning

POC 13 - NORMAS DE CONSOLIDAÇÃO DE CONTAS

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Trabalho de Desenvolvimento de Sistemas de Software GereComSaber 2ª Fase

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

2 Engenharia de Software

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

TIC Tecnologias da Informação e Comunicação 10º Ano

Introdução ª Parte - Acesso à Aplicação Avaliação Online... 4 I Aceder à Aplicação Inscrição Acesso à Aplicação...

PARLAMENTO EUROPEU. Comissão dos Assuntos Jurídicos PE v01-00

Akropole Catequista. Todos os Ficheiros no Akropole Catequista trabalham com uma simples barra de edição, com 4 botões:

Submissão Autenticada de Ficheiros ao SIGEX

Relatório de projecto

RELATÓRIOS GERENCIAIS

Pontifícia Universidade Católica de Minas Gerais Bacharelado em Sistemas de Informação Trabalho de Diplomação

Bem-vindo ao curso delta Gerenciamento de peso para a versão 9.1. Este curso aborda a nova solução de peso introduzida nessa versão.

INSPECÇÃO-GERAL DA EDUCAÇÃO PROGRAMA AFERIÇÃO

Objetivo do trabalho 4

Invenções Implementadas por Computador (IIC) Patentes

Perguntas Mais Frequentes Sobre

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Armazenamento e Pesquisa de Topic Maps em Banco de Dados Relacional

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

SLA. Acordo de Nível de Serviço. Service Level Agreement

A Importância do Desenho de Construção Mecânica e da Concepção e Fabrico Assistidos por Computador ao nível da Indústria Metalomecânica *

Resolução de avarias de MPEG

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Bem-vindo ao tópico sobre consultas no SAP Business One.

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária)

COMO FUNCIONA NOSSA CONSULTORIA DE MARKETING DIGITAL ESPECIALIZADA EM VENDAS ONLINE

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

BREVE INTRODUÇÃO AO SISTEMA DA GESTÃO DE DOCUMENTOS DA CÂMARA MUNICIPAL DE MACAU PROVISÓRIA

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Controle e execute tudo o que está relacionado com Pessoal e Salários com um software eficaz e preparado para completar todas as tarefas nesta área

UML (Unified Modelling Language) Diagrama de Classes

Micro Mídia Informática Fevereiro/2009

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

FAZEMOS MONOGRAFIA PARA TODO BRASIL, QUALQUER TEMA! ENTRE EM CONTATO CONOSCO!

Curso:... Prova de Sistemas de Informação para Bibliotecas (21105) Nome:... Nº de Estudante:... B. I. nº... Assinatura do Vigilante:...

Em FORMATO E-LEARNING PQ A Página 1 de 6

REGULAMENTO DA COMISSÃO DE AUDITORIA BANCO ESPÍRITO SANTO, S. A. Artigo 1.º Composição

NORMA TÉCNICA E PROCEDIMENTOS GERAIS PARA ADMINISTRAÇÃO DO BANCO DE DADOS CORPORATIVO

Norma Interpretativa 2 Uso de Técnicas de Valor Presente para mensurar o Valor de Uso

Unidade II MODELAGEM DE PROCESSOS

Transcrição:

OCL: Amílcar Domingos Rodrigues Santy Fernandes, Girson César Silva Monteiro, Rui Sá Guerra, Simão Castro Faculdade de Engenharia da Universidade Do Porto, Rua Dr. Roberto Frias, s/n 4200-465 Porto, Portugal ei99079@fe.up.pt, ei01095@fe.up.pt, ei03096@fe.up.pt, ei04100@fe.up.pt 1-Resumo Trabalho de pesquisa sob tema proposto, abreviado OCL, é elaborado no âmbito da disciplina de Engenharia de Software, de Faculdade de Engenharia da Universidade do Porto. Neste trabalho, são abordadas as valências desta linguagem formal, a sua aplicabilidade em diferentes ferramentas de especificação de modelos, tidas como plataformas de apoio no desenvolvimento de sistemas de aplicação, com base na Programação Orientada aos Objectos. O trabalho está dividido em três partes: - na primeira parte é feita uma breve introdução dos temas e sub temas a desenvolver (Objectivos), bem como uma descrição sucinta da linguagem acima referida, o seu uso para especificação e restrição em modelos, a conversão de restrições de linguagem natural para OCL, e finalmente, o paradigma de implementação que é utilizada nesta linguagem, como forma de especificação em modelos; - na segunda parte, é abordada a arquitectura do OCL, casos práticos da sua utilização nos sistemas. É ainda tratada nesta parte, a análise gramatical da linguagem ao nível do léxico e da sintaxe. Outras referências com aplicação prática, como implementação do dicionário de dados, tradutores para o OCL, assim como a sua livraria standard, também são aqui abordados. - na terceira parte, temos exemplos de tradução com ilustrações, tabelas de comparação, e finalmente as ferramentas. Presume-se assim, com o desenvolvimento destes temas elaborados, esgotar os objectivos preconizados para este projecto de pesquisa. Na última página são dadas as referências dos materiais consultados na sequência da pesquisa. 1

2-Objectivos O OCL é uma ferramenta utilizada para a especificação de restrições na modelação dos diagramas arquitectados em UML. Um diagrama UML por conseguinte, tal como um diagrama de classe, não é suficientemente refinado para fornecer todos os aspectos relevantes de uma especificação. Há entretanto uma necessidade de definir restrições adicionais sobre objectos no modelo. Daí a tentação de sempre descrever essas restrições em linguagem natural. Contudo, a prática demonstrou que esse método de descrição das restrições, tem resultado sempre em ambiguidades. Para resolver, obstante, esses problemas de ambiguidades, tem-se recorrido às linguagens de especificação formal como OCL, justamente para solucionar tais problemas. Baseando-se na especificação de objectos em modelos, ou nas classes, de forma segura e concisa, sem ambiguidades. Neste trabalho, como já supracitado, é demonstrado a aplicabilidade dos padrões de escrita dessas restrições, na linguagem OCL. O projecto está estruturado em três partes, já referido anteriormente, cada uma dividida em sub temas onde são abordados aspectos relevantes do uso da linguagem OCL. Como seguem: Introdução ao OCL: aborda as valências da linguagem, a sua origem e a aplicabilidade para os modeladores a UML, a importância do seu uso nas definições formais das restrições. Descrição da Linguagem OCL: aborda casos específicos da utilização da linguagem quanto a definição de modelos UML; bem como a especificação dos invariantes. Motivação: aborda o uso do OCL para especificação e restrições; a conversão de restrições de linguagem natural para OCL. Implementação com OCL: aborda características do OCL quanto ao contexto, expressões, tipos de restrições e de operações, processos de implementação, e uso de expressões OCL em modelos UML. Arquitectura do OCL: aborda a parte estrutural e semântica da linguagem, o dicionário de dados, a gramática que engloba também o nível léxico e sintáctico; descrição da semântica utilizando UML; elementos básicos do OCL e livraria standard; e tradutor e exemplos de tradução para OCL. Ferramentas: aborda diferentes ferramentas onde a OCL se pode aplicar as valências do OCL. Considerações: esboça as valências do OCL como uma linguagem formal, e suas vantagens na especificação dos modelos. 3-Introdução ao OCL A Linguagem de Restrição de Objectos, abreviado OCL (), é uma linguagem formal, utilizada para descrever expressões em modelos de UML. Essas expressões definem tipicamente as condições que se deve assegurar para o funcionamento de um sistema que está a ser modelado, ou ainda, de modelação de informações contidas nos objectos descritos num determinado modelo. Quando uma expressão OCL é avaliada, não tem qualquer efeito colateral, isto é, não pode alterar o estado de execução do respectivo sistema. As expressões do OCL podem sim ser 2

utilizadas para especificar as restrições de operações ou acções de um determinado objecto, que quando executadas alteram o estado do sistema. Os modeladores de UML podem utilizar o OCL para especificação de restrições nas aplicações definidas nos modelos correspondentes. Os modeladores podem ainda recorrer à OCL, para especificar perguntas ou definir condições que são completamente diferentes de uma linguagem de programação. As expressões do OCL não interfiram na execução do programa. Não são compilados aquando da execução do programa. Embora existam ferramentas para a verificação e compilação das expressões descritas em linguagem OCL. Mais a frente abordaremos em mais detalhe essas ferramentas. O OCL entre outras pode ser utilizada: Para especificar invariantes em classes e tipos do modelos de classes. Especificar tipos invariantes para estereótipos. Descrever pré e pós condições em operações. Como uma linguagem de navegação entre associações. Como uma linguagem de pergunta. Para descrever protectores. Para especificar o alvo das mensagens e acções. Para especificar regras de derivações para atributos. Especificar restrições sobre operações. 4-Descrição da linguagem OCL é uma Linguagem Formal utilizada para definir restrições sobre objectos. Tais restrições, especificam condições que têem de se verificar no sistema modelado. OCL não é uma linguagem de programação. É antes de mais, uma linguagem de modelação com regras de sintaxe e semântica bem definidas, e expressa informações que não existem nos modelos. Por exemplo, um diagrama de UML, tal como diagrama de classe, não é suficientemente refinado para fornecer todos os aspectos relevantes de uma especificação. Há entretanto, a necessidade de definir restrições adicionais sobre objectos nos modelos. Essas restrições são descritas frequentemente na linguagem natural, que apresentam sempre resultados ambíguos, quanto às informações dos objectos. Para acabar com essa representação ambígua de informação, foram desenvolvidas linguagens formais So-Called. A desvantagem dessas linguagens formais tradicionais, é que são acessíveis às pessoas com uma base matemática muito forte, mas não aos utilizadores médios de um sistema de modelação. 3

Em virtude dessa desvantagem, foi desenvolvido o OCL, justamente para facilitar a tarefa de definição das restrições, e também de dotar as linguagens formais de uma utilização flexível e mais acessível. É uma linguagem fácil de ler e de escrever. OCL foi desenvolvido em 1995 por Jos Warmer, como uma linguagem de business modelling (modelação de negócio). Em 1996, o OMG fez um Request for Proposals em análise e desenho OO. E em 1997 a IBM e a Object Time Limited em colaboração com os parceiros da Unified Modelling Language (UML), publicaram as versões: O OCL 1.3 de 1999; O OCL 1.4 de 2001; e actualizaram a linguagem em 2004 com a versão OCL 2.0. O OCL consequentemente, garante que as suas expressões não tenham efeitos colaterais, isto é, não altera o estado do objecto. Quando uma expressão OCL é avaliada, retorna apenas um valor. Para cada classificador (sejam classes, interfaces) definido dentro do UML, corresponde a um tipo OCL. A linguagem também define os seus tipos. Mais a frente é apresentada uma tabela com todos os tipos definidos em OCL. 5-Motivação A importância prática das regras da linguagem OCL, quanto a implementação das especificação de restrições e definições das derivações em modelos, requer um controle estruturado e disciplinado, que garanta que tais regras estipuladas, se vão verificar em qualquer circunstância durante o desenvolvimento do programa que as utiliza. Para esse efeito, são desenvolvidas ferramentas para a modelação das expressões e interpretadores para o OCL, assim como um compilador para as expressões do OCL. Interfaces que viabilizem, por outro, a utilização de técnicas de processamento de linguagem natural para base de dados. Essas ferramentas são capazes de lidar com restrições sobre dados estabelecidos através das expressões do OCL. Como exemplo, escolhemos três ferramentas para melhor ilustrar o que descrevemos acima. Como seguem: Atenas; Hermes; OCLE. Atenas: é um sistema modelador de regras de negócio, que permite a sua captura e implementação; todas as restrições sobre modelos de classe devem ser encaradas como regras de negócio, mesmo as mais simples; regras de negócio muito simples em geral, podem ser mapeados directamente como restrições de modelo. Hermes: é um tradutor para OCL; traduz uma restrição estabelecida numa sentença em português, e tenta gerar a expressão em OCL, que representa essa restrição dentro de um modelo de classe. OCLE: compilador do OCL, permite ao modelador apurar correcção da sintaxe e a semântica de expressões OCL; faz uma avaliação de restrições especificadas pelo modelador, em diferentes elementos do modelo; ajuda a corrigir erros nos modelos e nas especificações OCL. 4

5.1-Uso de OCL para a especificação e restrições Vamos propor para a análise deste tema, a integração das ferramentas acima referidas, neste caso Atenas e Hermes, em linguagem OCL, na definição das regras de restrições sobre um determinado modelo de classes ou de um Sistema de Gestão de Base de Dados. A ideia básica de Atenas, é de uma ferramenta que serve como uma base formal para a documentação das regras de negócio de um sistema de informação. Uma vez que as restrições estejam estabelecidas em OCL, o Atenas é capaz de detectar na base de dados, os eventos que podem vir a violar essas restrições, como por exemplo, a inserção de um registo, alteração de valor de uma coluna ou remoção de um registo. O sistema também é capaz de gerar um código específico para detectar e impedir violações, gerando tiggers que verificam a validade de restrição no evento correspondente. Tudo isso é feito automaticamente através de uma expressão em OCL, e do mapeamento entre um modelo de classes e o esquema da base de dados relacional. E para cada expressão em OCL, são mantidas a informação sobre a restrição em si, tais como a sua origem, aplicabilidade, histórico e etc. Neste contexto, o Hermes traduz uma restrição estabelecida numa sentença em português, e tenta gerar a expressão OCL que representa essa restrição dentro de um modelo de classe. Caso a expressão seja gerada correctamente, o Hermes activará código correspondente do Atenas que irá gerar código da respectiva linguagem de programação (por exemplo SQL) para fazer a avaliação das regras. Para Atenas, as regras de negócio estão divididas em três grupos: regras extraídas automaticamente do esquema do banco de dados, regras registadas manualmente pelos utilizadores e regras inferidas automaticamente a partir das outras duas. A ferramenta possui funcionalidade para lidar com estes três tipos de regras. De acordo com o que já definimos em cima, especificamos em concreto as funcionalidades disponibilizadas pela ferramenta: Validar o sistema: uma vez que todas as regras de negócio estejam estabelecidas numa linguagem formal, é possível gerar a lista de eventos do sistema (inserção, alteração, ) onde os mesmos são gerados. Validar os Dados Legados: assegurar a integridade e a qualidade dos dados, aquando da implementação de um novo sistema, em substituição do anterior. Auxílio para a Extracção das Regras do Negócio: um sistema que estruture as regras de negócio de forma independente, as mensagens do erro são as próprias regras de negócio. Manutenção do Sistema: a ferramenta permite analisar o impacto de mudanças em regras de negócio, através do relatório do impacto duma mudança ocorrida em alguma regra de negócio. 5

Regra OCL Esquema Compilador Lista de Eventos Código emsql Formal Triggers Informal Updates Fig. 1. Esquema de avaliação do impacto de alteração de Base de Dados 5.2-Conversão de restrições de Linguagem Natural para OCL Escrever restrições sobre um modelo de classe utilizando OCL, não é uma tarefa trivial para não programadores. É necessário ter um conhecimento sobre o modelo de classes, mesmo sendo uma linguagem declarativa. O OCL não é uma linguagem trivial. O OCL é uma linguagem formal, com as regras de sintaxe e semântica bem distintas da linguagem natural. O sistema Hermes, escolhido neste trabalho de pesquisa para exemplificar o funcionamento da linguagem, permite que não programadores descrevam restrições utilizando linguagem natural, em português, e as transformam em OCL e depois passado para linguagem de programação. Durante o processo, as eventuais ambiguidades presentes no discurso humano, são eliminadas. 6

Há três cenários onde a utilização do Hermes apresenta vantagens óbvias. Um cenário seria a formalização de regras de negócio ou restrições durante a etapa de análise, através da captura em linguagem natural e posterior conversão em OCL. A esta altura, não é necessário que o modelo de classes esteja muito estável de qualquer forma o sistema suporta pequenas evoluções. Quando o modelo estiver mais estável as regras escritas em linguagem natural podem ser então transformadas em OCL e finalmente quando o modelo relacional estiver pronto elas serão convertidas em código SQL (queries e triggers) para verificarem e manterem a integridade das regras. Dessa forma é possível documentar as regras de negócio nas etapas iniciais da análise, utilizando linguagem natural e estabelecendo as regras com um máximo de independência do modelo de dados de implementação. Um outro cenário possível é a existência de dados legados que devem ser filtrados ou avaliados quanto à obediência as regras de negócio ou outras restrições. Como em geral o número de restrições a serem testadas é grande torna-se mais fácil estabelecêlas em linguagem natural. Além disso, as restrições no fundo são as mesmas, independentemente do esquema dos dados. Portanto, elas podem ser estabelecidas uma única vez, testada contra os dados legados, e o tratamento adequando providenciado. Após a migração para um novo esquema, as mesmas regras são novamente traduzidas para OCL (possivelmente diferente do anterior) e compiladas para o SQL apropriado a nova base. Finalmente, podemos ter também a situação onde um analista de negócios está a investigar a validade de determinadas regras de negócio, realizando uma prospecção de conhecimento numa base de dados já existente. Assim, ao invés de restrições teríamos suposições sobre os dados, tais como os pedidos com peso acima de 50 kg pagam transporte maior que 40,00 Euros e o tempo de entrega é maior que 7 dias, onde o tempo de entrega é a data de entrega menos a data do pedido. Após o analista de domínio ou negócio elaborar uma suposição, o sistema Hermes a transformaria em OCL e depois em SQL, e investigaria a validade da mesma na base de dados, retornando o registos processado em acordo ou desacordo com a regra. Embora esse tipo de prospecção seja manual, é um facto geralmente aceite que boas descobertas de conhecimento em bases de dados podem ser realizadas por especialistas do negócio que sabem ou têm uma boa noção do que devem procurar. 6-Implementação de Contrato com OCL Nesta parte estão representados os contratos do sistema. Em orientação a objectos, o contrato descreve de forma clara e unívoca as obrigações de um objecto, sendo que este executará seus serviços (obrigações) mediante o cumprimento de certas regras estipuladas (direitos ou condições iniciais sob as quais o serviço será prestado). O contrato está relacionado à definição da interface de um objecto. Difere do contrato legal por não necessitar de um cliente. 7

Em seguida apresentamos dois exemplos de contratos: Contrato para fornecerdinheiro: Name: fornecerdinheiro(dinheiro:moeda) Responsibilities: Fornecer dinheiro à máquina de bebida. Atualizar contagem da quantia de dinheiro fornecida pelo cliente. Exibir bebidas disponíveis. Type: System Cross References: R2.1 Notes: Exceptions: Output: OCL Specification: context Sistema::fornecerDinheiro(dinheiro:Moeda) pre:dinheiro.valor=1.0 post: maquinadebebida.carteiradocliente@pre->size=0 implies maquinadebebida.carteiradocliente->size=1 and maquinadebebida.carteiradocliente.oclisnew=true post: maquinadebebida.carteiradocliente.oclisnew=true implies maquinadebebida.carteiradocliente.itemderepositoriodedinheiro >size=1 and itemmaisrecente(maquinadebebida.carteiradocliente).oclisnew=true post:if itemmaisrecente(maquinadebebida.carteiradocliente).oclisnew then itemmaisrecente(maquinadebebida.carteiradocliente).moeda=dinheiro and itemmaisrecente(maquinadebebida.carteiradocliente).quantidade=1 else itemmaisrecente(maquinadebebida.carteiradocliente).quantidade= itemmaisrecente(maquinadebebida.carteiradocliente@pre).quantidade+1 endif 6.1-Tipos de Restrições em OCL Expressões Contexto de uma expressão: As expressões OCL requerem que as restrições estejam ligadas a um contexto de um modelo. O contexto de uma expressão pode ser uma classe de objectos ou pode ser uma operação aplicável a um objecto. Para representar um contexto em OCL utilizamos a palavra reservada context <contexto> 8

Invariantes (inv): condição (ou predicado) que se aplica a TODAS as classes (ou tipo ou interface ou associação e etc ) Pré-condição (pre): condição que deve ser satisfeita antes da execução de uma operação Pós-condição (post): condição que deve ser satisfeita após a execução de uma operação Guarda: condição que deve ser satisfeita para que uma transição de estado seja efectuada As restrições aqui colocadas foram retiradas dos contratos expressos na anterioriormente. Exemplos de invariantes: context Cliente inv: idade > = 18 and self.idade < 100 context c: Cliente inv CasamentoLegal: c.casado implies c.idade > = 21 CasamentoLegal identificador do invariante c objecto casado - atributo 7-Ferramentas Neste capítulo falamos das ferramentas que tornam a linguagem OCL mais fácil de ser usada. Em baixo estão enunciados algumas das mais recentes ferramentas dessa linguagem. ModelRun (Boldsoft) ModelRun permite a exploração e a navegação dos modelos através dos objectos dinâmicos e uma sustentação completa para o OCL. Uma vez que o modelo foi carregado, é possível examinar suas propriedades de três vistas: "Metadata": onde nós encontramos a informação nas classes. Podemos consultar o nome da classe, as suas super-classes, as associações, os atributos e as operações. "Objects": uma vista para segurar os objectos. É necessário previamente carregar o ficheiro de objectos com o formato padrão de XML. "Ocl Workbench": para a criação e a manipulação de expressões do OCL. A "Workbench" esta compreendida entre uma janela da selecção de contexto e um editor das expressões do OCL. OCL Compiler (Cybernetic Intelligence GMBH) OCL Compiler é uma aplicação para analisar as expressões do OCL que aparecem no modelo de UML. É uma ferramenta independente em que, dado um modelo do software com restrições do OCL, as seguintes acções podem ser executadas (dependendo da especificação da ferramenta): - Verificação da sintaxe das restrições. - Verificação de consistência das restrições usando o modelo. Por o exemplo, se o nome de uma classe, de um atributo ou de uma associação for escrito incorrectamente, "OCL Compiler" detectará a inconsistência. 9

-Verificação de incompatibilidade das restrições, isto é, certifica-se que restrições do mesmo modelo não entrem em conflito. O analisador é independente da ferramenta CASE usada na modelação, isto é não sabe nada sobre a ferramenta CASE e comunica-se através de uma ferramenta "front-end". A versão mais recente dessa ferramenta é a OCL Compiler v 1.5, desenvolvida pela Cybernetic Intelligence GmbH, uma empresa de software Suiça criada em 1994. OCL Compiler (University de Dresden) O OCL Compiler (OCLCUD) foi desenvolvido em Java pela Universidade de Dresden.As características principais deste analisador são: capacidade de verificação sintáctica e semântica das expressões do OCL e a possibilidade de gerar código Java e SQL a partir das restrições escritas em OCL. 8-Considerações No desenvolvimento do trabalho de pesquisa não tivemos dificuldades de maior. Encontramos materiais com informações precisas e esclarecedoras, que em muito facilitou a estruturação do trabalho. Não conseguimos fazer referências detalhadas de muitos temas, e acabamos mesmo por deixar outros de fora, devido a limitação de páginas do relatório. Mas, efectivamente, conseguimos incluir aspectos mais relevantes do tema que nos propusemos desenvolver como trabalho de pesquisa. Obstante, julgamos que conseguimos alcançar os objectivos delineados para este trabalho, embora tivemos que deixar alguns temas de fora, fizemos uma abordagem precisa dos temas mais importantes. No entanto, ficamos a conhecer bastante bem, as potencialidades da ferramenta OCL, as vantagens da sua aplicabilidade na definição de restrições nos modelos de classes em UML e ainda noutras linguagens de programação. Portanto, concluímos que o uso desta ferramenta, para a especificações das restrições, vai tornar-se cada vez mais necessária, devido não só a facilidade da sua utilização, mas também da vantagem que nos proporciona quanto a geração dos códigos em linguagens de programação, de forma segura e com elevada qualidade. 10

Referências: 1. http://www.omg.org/docs/ptc/03-10-14.pdf 2. http://www.klasse.nl/ocl/ 3. http://www.ic.unicamp.br/~eliane/cursos/mc627/ocl_artigo.pdf 4. Birgit Demuth, Heinrich Hussmann: Using UML/OCL Constraints for Relational Database Design 11