Esse artigo faz parte da revista Engenharia de Software 15 edição especial. Clique aqui para ler todos os artigos desta edição



Projeto

Incorporando Restrições à UML

Os conceitos principais por trás da linguagem OCL

 

De que trata o artigo: Neste artigo será apresentada uma introdução à OCL, a linguagem de restrição oficial da UML.

 

Para que serve: Impor restrições a alguns objetos é de fundamental importância para esclarecer, verificar e validar modelos UML. Este artigo trata sobre como é possível fazer isso através da OCL.

 

Em que situação o tema é útil: Para aqueles que não conseguem apenas com os diagramas UML definir todos os aspectos relevantes da especificação do sistema.

 

A UML (Unified Modeling Language) é uma linguagem para especificação, documentação, visualização e desenvolvimento de sistemas orientados a objetos. Sintetiza os principais métodos existentes, sendo considerada uma das linguagens mais expressivas para modelagem de sistemas e por isso de grande aceitação na indústria. Por meio de seus diagramas é possível representar sistemas de softwares sob diversas perspectivas de visualização. Facilita a comunicação de todas as pessoas envolvidas no processo de desenvolvimento de um sistema - gerentes, coordenadores, analistas, desenvolvedores - por apresentar um vocabulário de fácil entendimento.

A primeira versão da UML foi apresentada em junho de 1996 e submetida à OMG (Object Management Group), consórcio de empresas que define padrões de modelos e linguagens. A revisão desse modelo mostrou uma grande deficiência na clareza e consistência das definições da UML. Em particular, uma dificuldade encontrada foi que a semântica da UML poderia ser interpretada de formas ambíguas. O problema foi minimizado com a elaboração de uma nova versão da linguagem, a qual foi publicada em 1997. O mais importante incremento nesta versão foi a criação da OCL (Object Constraint Language), que acompanha oficialmente a evolução da UML até os dias atuais.

A linguagem OCL

A OCL (ou linguagem para especificação formal de restrições, em português) é uma linguagem declarativa para descrever as regras que se aplicam aos modelos UML. É uma linguagem de texto precisa que fornece afirmações em um modelo orientado a objeto que não possam ser expressadas pela notação diagramática. A OCL complementa os modelos UML fornecendo expressões que não têm nem as ambiguidades da língua natural (eg. “o sistema deve identificar uma pessoa com um telescópio”), nem a dificuldade inerente de se usar matemática complexa.

Com a OCL é possível testar a construção dos modelos, retirar métricas ao nível de projeto e ainda especificar vários tipos de restrições, que poderão refletir regras de negócio, através de pré/pós condições e invariantes.

Como a OCL é uma linguagem formal, semelhante a uma linguagem de programação, torna-se, também, possível a criação de geradores de código tendo como entrada os modelos e as especificações/restrições nessa linguagem e como saída programas fontes em linguagens de programação ou “triggers” para bancos de dados. Inclusive, atualmente a OCL vem se tornando um componente fundamental no novo padrão MDA-QVT (Query-View-Tranformation) para transformação de modelos da OMG.

         A OCL 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 consulta.

·        Para especificar o alvo das mensagens e ações.

·        Para especificar regras de derivações para atributos.

·        Especificar restrições sobre operações.

 

A estrutura da OCL está intimamente ligada a outros modelos da UML, sendo bastante usada com o Diagrama de Classes através de uso de notas nos diagramas. É composta por expressões escritas em forma de afirmações. É uma linguagem que possui tipos de dados pré-definidos, assim como algumas palavras reservadas. Nas próximas seções falaremos sobre a sintaxe de cada uma dessas características principais.

Expressões OCL

Toda expressão OCL é declarativa no sentido de que expressa o quê a restrição representa no sistema e não como essa restrição é implementada. A avaliação de uma expressão quase sempre resulta em um valor booleano e nunca muda o estado do sistema no modelo.

As expressões OCL são utilizadas para definir condições invariantes nas classes representadas em um modelo e também são utilizadas para especificar as pré e pós-condições em operações aplicadas a classes deste modelo. ...

Quer ler esse conteúdo completo? Tenha acesso completo