• Aucun résultat trouvé

Ressource en eau

Dans le document RAPPORT DE PRESENTATION - APPROBATION (Page 37-40)

3 État initial de l’environnement

3.2 Ressource en eau

Um ponto positivo em relação às representações gráficas, como a UML, por exemplo, é a facilidade de entendimento que elas proporcionam. Entretanto, embora a UML ofereça uma notação expressiva, não existe uma definição semântica formal para os seus elementos. Existem vários problemas ligados a ambigüidades, contradições e omissões na especificação das várias versões da UML.

Um ponto negativo decorrente desse fato é que diferentes pessoas podem apresentar diferentes interpretações para o mesmo modelo, ou seja, o entendimento comum de um modelo é, muitas vezes, mais aparente do que real (BREU et al., 1998). Além disso, a existência de uma semântica bem definida é um requisito importante para o desenvolvimento de ferramentas de apoio à verificação e validação de modelos.

Adotamos como contexto deste trabalho um subconjunto da UML para o qual existe uma semântica bem definida. Esse conjunto é composto pela definição de classes, associações entre classes, atributos e operações de cada classe. A definição formal da

semântica da OCL passou a existir na versão 2.0 da sua especificação, e é baseada na definição formal desse subconjunto de elementos da UML (OMG, 2003a).

Assim, estamos considerando um sub-conjunto da UML representado por um esquema estrutural contendo definições de classes e associações, complementado com definições em OCL. Esse subconjunto pode ser utilizado tanto na elaboração de modelos no nível M1, como de metamodelos (nível M2). Os demais diagramas da UML como statecharts, diagramas de seqüência, entre outros, não fazem parte do escopo deste trabalho, embora a OCL também possa ser utilizada nesses diagramas.

Mesmo existindo uma definição semântica formal para esse subconjunto da UML, bem como para os elementos da OCL, existem alguns problemas relacionados tanto à linguagem como à sua definição semântica que são relevantes para a implementação de ferramentas de apoio à verificação e validação de modelos UML/OCL. A descrição detalhada dos problemas e das soluções propostas é apresentada no capítulo 7. Em síntese, podemos destacar as seguintes questões:

• Dificuldade em definir o escopo de atuação de uma operação. Este problema é conhecido como “frame problem” (MCCARTHY e HAYES, 1969), e a OCL não oferece recursos que facilitem a definição dos elementos de um espaço de objetos que podem ser modificados por uma operação.

• Omissões da semântica ligada à redefinição de valor inicial de atributos, regras de derivação de atributos e de operações em uma hierarquia de classes. Em particular, a definição atual da semântica da OCL não contempla a redefinição de operações.

• Ausência de recursos que permitam a reutilização local de expressões entre as diferentes pré e pos-condições de uma operação, resultando em redundância ou maior complexidade das especificações de operações.

Além disso, no contexto da elaboração de modelos executáveis, a OCL pode ser utilizada para especificar explicitamente o resultado de operações de consulta. Entretanto, como expressões OCL não podem produzir modificações no espaço de objetos onde elas sejam avaliadas, uma alternativa para a produção de especificações executáveis de operações modificadoras consiste em empregar uma linguagem de ações. A partir da sua versão 1.5, a especificação da UML passou a definir uma semântica de

ações, a UML Action Semantics (UML AS), que fornece uma forma padronizada e independente de plataforma para a especificação de ações e atividades em um modelo.

Existe, porém, uma significativa superposição entre as construções definidas na UML AS e aquelas definidas na especificação OCL, o que torna possível definir um mapeamento entre expressões OCL e uma parte significativa das ações definidas pela UML AS. Ações de leitura, ações primitivas, invocação de operações de consulta, acesso a propriedades de objetos, acesso a ligações entre objetos, bem como operações de leitura e manipulação de coleções são alguns exemplos de ações que podem ser expressas em OCL, uma vez que nenhuma dessas ações é capaz de produzir modificações no contexto de instâncias onde elas são executadas.

De um modo geral, as linguagens concretas de ação para modelos UML definem sintaxes específicas para essas ações, ignorando as construções definidas na OCL. Se considerarmos o contexto de produção de um modelo, onde sejam especificadas tanto restrições (utilizando a OCL), como ações executáveis (utilizando uma linguagem concreta de ações), a convergência sintática das duas linguagens concretas em direção à utilização de construções já presentes na OCL possibilitaria uma integração mais natural da especificação das ações com o restante do modelo, i.e., invariantes, pré-condições e pós-condições, além da possibilidade de utilização de uma biblioteca padronizada de operações de manipulação dos diferentes tipos de coleção definidos na OCL. Uma proposta para essa convergência é apresentada no capítulo 7 desta tese.

2.8 Considerações Finais

Este capítulo apresentou os principais conceitos e trabalhos relacionados que são relevantes para o entendimento dos demais capítulos desta tese. A relevância da identificação e do registro de construções problemáticas em especificações OCL foi discutida. Os trabalhos relacionados à técnica de reestruturação tanto de código, como de modelo, foram mencionados, ressaltando-se a lacuna existente na sua aplicação em especificações OCL. Um conjunto de construções problemáticas e de reestruturações aplicáveis a modelos UML/OCL que visam preencher essa lacuna é apresentado nos capítulos 3 e 4.

Este capítulo também apresentou um resumo das principais técnicas que podem ser aplicadas para a verificação e a validação de especificações de uma forma geral, e a

modelos UML/OCL, em particular. Embora existam várias ferramentas que ofereçam recursos para a avaliação sintática e para a verificação de tipos em uma especificação OCL, o suporte automatizado para análises dinâmicas ainda é bastante limitado. Não encontramos nenhuma abordagem, aplicável em modelos UML com restrições em OCL, que empregasse as técnicas de execução de modelos em conjunto com a definição de casos de teste, de forma a possibilitar a análise automática de regressão de uma especificação OCL em cenários de evolução ou de reestruturação do modelo. O capítulo 6 apresenta a proposta de uma abordagem que visa apoiar a aplicação de técnicas de análise dinâmica a modelos UML/OCL com a possibilidade da execução automática de testes de regressão sobre um modelo. A relação entre esses recursos e a execução de reestruturações manuais, bem como a utilização dessa abordagem para automatizar algumas reestruturações, são discutidas no capítulo 6.

Alguns problemas relacionados à semântica da OCL e a possibilidade de integração da OCL com a semântica de ações definida na especificação da UML também foram brevemente apresentados. Uma proposta de integração entre a semântica de ações e a OCL é descrita no capítulo 7, onde é discutida a aplicação dessa integração tanto para a produção de modelos executáveis, como para a implementação de operações sobre os modelos propriamente ditos, como é o caso das reestruturações, por exemplo.

Capítulo 3

Dans le document RAPPORT DE PRESENTATION - APPROBATION (Page 37-40)