• Nenhum resultado encontrado

Como vimos nesse capítulo, as aplicações auto-adaptativas são capazes de modificar o seu comportamento em tempo execução. Em geral, existem duas abordagens que podem ser utilizadas para promover adaptações em tempo de execução. A abordagem paramé- trica consiste na modificação dinâmica de parâmetros interpretados por uma aplicação, possibilitando uma mudança em seu comportamento. A flexibilidade decorrente da abor- dagem paramétrica é limitada, uma vez que o seu uso direto permite apenas a seleção de comportamentos previstos em tempo de desenvolvimento.

Uma solução mais flexível do ponto de vista da adaptação consiste na utilização da abordagem composicional, que viabiliza a substituição dos elementos que constituem a aplicação em execução. Para que essa abordagem possa ser utilizada, é necessário que uma aplicação possa ser concebida como uma composição de unidades elementares fortemente coesas e fracamente acopladas. Nesse cenário, o desenvolvimento de uma aplicação con-

siste em duas etapas: (1) concepção das unidades elementares de reuso, e (2) composição (montagem) da aplicação a partir das unidades previamente disponíveis. Nesse contexto, dois paradigmas, eventualmente vistos como complementares, podem ser utilizados: de- senvolvimento baseado em componentes e computação orientada a serviços.

Embora a orientação a componentes e a serviços viabilizem a adaptação em tempo de execução, esses paradigmas não são suficientes para a construção de aplicações auto- adaptativas. De fato, uma aplicação auto-adaptativa deve ser capaz de conduzir seu pró- prio processo de adaptação, devendo para tanto ser capaz de supervisionar e adaptar seu comportamento em função de modificações em seu contexto de execução. Em suma, a na- tureza auto-adaptativa dessas aplicações impõe a necessidade de embutir nas aplicações uma lógica de adaptação, a qual é normalmente realizada através da implementação de um laço de controle.

Visando separar as lógicas de negócio e de adaptação, a construção de aplicações auto- adaptativas normalmente se baseia na utilização de gerentes de adaptação externos, os quais implementam a lógica de adaptação sob a forma de um laço de controle, realizando o gerenciamento da porção adaptável da aplicação, a qual está centrada no domínio de negócio. Para que esses gerentes possam tomar decisões, eles devem utilizar uma base de conhecimento formada por meta-representações das aplicações. Nesse contexto, o uso das técnicas de reflexão viabiliza a conexão causal entre essas meta-representações e a aplicação em execução, permitindo que as representações sejam utilizadas como interfaces de gerenciamento.

Para simplificar o projeto dos gerentes e ampliar a sua possibilidade de reuso, as meta-representações que integram a base de conhecimento são normalmente constituídas de modelos de alto nível mantidos em tempo de execução, referenciados frequentemente como models@runtime.

Dentre as aplicações auto-adaptativas, as QSBAs são de particular interesse para esta tese. Essas aplicações são composições dinâmicas, nas quais o processo de adaptação é guiado pela qualidade dos serviços. Para que essas aplicações possam ser gerenciadas em tempo de execução, é necessária uma definição clara das características de qualidade, en- volvendo desde a definição de uma taxonomia (através da concepção de um modelo de qualidade extensível) até a ampliação dos descritores de serviços, os quais devem contem- plar tanto características funcionais quanto não-funcionais. Mais ainda, é necessário que as descrições de qualidade contenham informações suficientes para subsidiar a infraestrutura subjacente na condução da monitoração e adaptação das aplicações.

Visando contextualizar os conceitos apresentados, o capítulo seguinte discute como eles podem ser organizados na proposição de uma plataforma genérica de suporte às aplicações auto-adaptativas.

3 PLATAFORMA GENÉRICA DE SUPORTE ÀS APLICAÇÕES AUTO- ADAPTATIVAS

It is not what you say, but how you say it.

Archibald Putt,

A plataforma DSOA foi concebida com o propósito de apoiar o desenvolvimento e exe- cução de aplicações auto-adaptativas baseadas em serviço e cientes de qualidade, referidas no contexto desse trabalho como QSBAs. Essas aplicações são inerentemente dinâmicas, sendo capazes de se reconfigurar em função de variações no nível de qualidade dos servi- ços providos e requeridos. Desenvolver plataformas capazes de suportar aplicações auto- adaptativas é, por natureza, um problema complexo, envolvendo desde a concepção de um ambiente de execução até a construção de ferramentas de apoio ao desenvolvimento. Para contextualizar as dificuldades envolvidas na concepção de uma plataforma dessa natureza, o presente capítulo organiza o arcabouço conceitual apresentado anteriormente com o intuito de definir uma plataforma genérica de suporte às aplicações auto-adaptativas.

Visando estruturar a apresentação dos elementos que compõem essa plataforma, divi- dimos o capítulo em três partes. Primeiramente, apresentamos os elementos que normal- mente integram um ambiente de execução capaz de suportar a auto-adaptação, discor- rendo acerca do papel de cada um e de como eles podem ser efetivamente integrados.

Na sequência, apresentamos os recursos que devem ser fornecidos por um ambiente de desenvolvimento, focando no papel dos modelos e nos benefícios que podem ser obtidos a partir da utilização de uma abordagem de desenvolvimento dirigida por esses modelos.

Por fim, discutimos o papel dos ambientes de meta-modelagem, os quais são utilizados para definir as linguagens embutidas nos ambientes de desenvolvimento. A partir da de- finição dessas linguagens, é possível a geração de um conjunto de ferramentas integradas nesses ambientes, incluindo editores e transformadores de modelos, e geradores de código.