• Nenhum resultado encontrado

3.2 Modelo de Especificação CM-tel

3.2.3 Contêineres CM-tel

Um contêiner CM-tel representa o ambiente de execução para um conjunto de implementações de componentes e inclui mecanismos para facilitar o desenvolvimento de aplicações, para integrar os aspectos funcionais providos pelo componente com os requeridos pelos aspectos não-funcionais técnicos e, também para controlar o acesso aos componentes. Em adição, CM-tel provê mecanismos de interceptação, que é uma forma de tornar os contêineres mais flexíveis em tempo de execução per- mitindo a integração de um comportamento especializado na cadeia de invocação de uma operação.

O modelo de especificação para um contêiner CM-tel, de forma semelhante ao modelo de es- pecificação de componentes, descreve os padrões arquiteturais e convenções definidos pelo modelo para a construção de um ambiente de execução. Estes padrões e convenções contemplam a estrutura deste ambiente CM-tel em termos de suas interfaces, das funcionalidades disponíveis por estas in- terfaces, bem como a infra-estrutura fornecida pelo modelo CM-tel para o suporte às especificações dos aspectos funcionais e não-funcionais proporcionados pela natureza contratual das especificações. Esta infra-estrutura será apresentada no modelo de projeto para contêineres na Seção 3.3.3 e, na Seção 4.2.1 serão apresentadas as adições relativas ao suporte aos aspectos tecnológicos.

CM-tel mantém as principais estruturas de um contêiner encontradas em modelos de componentes bem estabelecidos tais como EJB e CCM, avaliados no Capítulo 2. Esta similaridade decorre do fato de que os contêineres hospedam componentes CM-tel e provêem alocação dos recursos requeridos aos componentes hospedados neste ambiente. Por exemplo, recursos necessários para que um com- ponente distribuído possa interagir com outros componentes, recursos para prover os aspectos não- funcionais, além de recursos básicos como processamento, comunicação, memória, armazenagem e outras dependências que o componente hospedado necessite. Em adição, a nossa proposta possibilita que um contêiner proporcione o suporte a algumas extensões como, por exemplo, a adição de novos elementos ao contêiner, tais como facilidades de qualidade de serviço para portas de fluxo contínuo e suporte à mobilidade de código.

define um contêiner CM-tel. Esta classe fornece o suporte necessário aos componentes (relação

supports), bem como a infra-estrutura necessária para que estes componentes interajam com outros

componentes. A relação depends identifica a dependência que um componente tem de outros compo- nentes (dependência de contexto).

0..n 1 +find_home_by_name() 0..n depends supports Component HomeFinder 1 DeploymentProps Container

Fig. 3.17: Modelo conceitual para contêineres CM-tel.

Contêineres CM-tel proporcionam a interface HomeFinder. Esta interface possibilita a obtenção das referências das fábricas dos componentes e de outros elementos que venham a ser incorporados ao contêiner. Após a obtenção da referência da fábrica desejada, o cliente pode criar ou encontrar a re- ferência do componente desejado. Quando o cliente faz uma requisição para alguma operação destas interfaces, o contêiner pode interceptá-las por meio de interceptadores, personalizando ou adicio- nando serviços de gerência (propriedades não-funcionais), antes de repassá-las para os componentes de destino. Uma instância de um componente é gerenciada, em tempo de execução, por uma única fábrica. A interface HomeFinder define a operação find_home_by_name, que retorna a referência da fábrica dado o seu nome.

Adicionalmente, os contêineres CM-tel proporcionam a interface de configuração Deployment-

Props, conforme apresentado na Figura 3.17. Esta interface provê o acesso às propriedades de um

contêiner que foram definidas na sua instalação. Isto permite que uma aplicação altere a configuração do contêiner dinâmicamente. Por exemplo, a aplicação pode alterar o valor da qualidade de serviço de um contêiner fazendo com que componentes que definem portas de fluxo contínuo sejam notificados da alteração (e, eventualmente, efetuem operações de adaptação ao novo nível de QoS).

Extensão de Contêineres CM-tel

O modelo CM-tel possibilita o suporte a algumas extensões de domínio específico ao seu modelo conceitual básico como, por exemplo, a adição de um novo elemento ao contêiner: agente móvel para prover mobilidade de código. Os contêineres CM-tel hospedam e gerenciam agentes móveis, além de componentes, bem como provêem alocação de recursos necessários aos agentes hospedados. Com este suporte, um agente móvel pode, por exemplo, sensoriar o ambiente onde foi instalado e

executar algumas ações; por exemplo, adaptar dinâmicamente certas funcionalidades do contêiner ao ambiente.

A representação completa do contêiner CM-tel com a extensão para incorporar agentes móveis ao modelo é ilustrada na Figura 3.18. A classe Agent é utilizada para definir um agente móvel CM-tel.

1 Home Finder +find_home_by_name() 0..n supports 0..n depends 0..n supports DeploymentProps Agent Component Container

Fig. 3.18: Representação completa de contêiner CM-tel estendido.

De forma semelhante a componentes, a interface HomeFinder possibilita a obtenção das referên- cias das fábricas de agentes móveis hospedados no contêiner.

A união dos metamodelos UML estabelecidos para componentes e para contêineres CM-tel (figu- ras 3.9 e 3.18) forma o metamodelo para aplicações telemáticas e ubíquas.

Perfil UML para Contêineres CM-tel

A Tabela 3.2 define um perfil UML associado ao modelo conceitual (metamodelo) para con- têineres CM-tel. Os estereótipos container e agent permitem relacionar classes do modelo da apli- cação com as classes Container e Agent, respectivamente.

Analogamente aos metamodelos, a união dos perfis UML estabelecidos para componentes e para contêineres CM-tel forma um perfil UML empregado na modelagem UML de aplicações telemáticas e ubíquas.