• Nenhum resultado encontrado

Estilos de Arquiteturas ou Paradigmas de Projeto

3.2 Mobilidade de Código

3.2.2 Estilos de Arquiteturas ou Paradigmas de Projeto

Arquiteturas de softwares com características similares podem ser representadas por esti- los de arquiteturas ou paradigmas de projeto que definem abstrações e estruturas de referên- cia que podem ser instanciadas dentro de um projeto de um sistema. Abordagens tradicionais para o projeto de software não são suficientes quando aplicações de larga escala, que explo- ram mobilidade de código e reconfiguração dinâmica de componentes de software, precisam ser projetadas. Neste caso, os conceitos de localização, a distribuição de componentes e a

MCLs Desenvolvedores Mobilidade Mecanismos Comentários AgentTcl Dartmouth College Forte Migração, Clone Passou a se chamar

(Estados Unidos) Remoto e Shipping D’agents

Ara Univ. de Kaiserlautern Forte Migração Suporta C, C++ e Tcl (Alemanha)

Java Sun Microsystems Fraca Code Fetching Applets são aplicações típicas de cód. móveis Java IBM (Tóquio) Fraca Code Fetching e Aglets = agent +

Aglets Code Shipping applets

TACOMA Troms And COrnell Fraca Code Shipping Tcl estendida Mobile Agents

Telescrip General Magic Forte Migração e Clone Remoto Primeira MCL

Tabela 3.1: Tabela Comparativa de MCLs

migração de componentes para diferentes localizações precisam ser explicitamente levados em conta ainda durante a fase de projeto.

Antes de introduzir os estilos de arquiteturas, alguns conceitos básicos de entidades que constituem um sistema de software serão elucidados. Componentes são os constituintes de uma arquitetura de software. Estes podem ainda ser divididos em: componentes de có- digo, que encapsulam o conhecimento ou regras para executar uma computação particular (know-how); componentes de recursos, que representam dados ou dispositivos usados du- rante a computação; e componentes computacionais ou de execução, que são executores ativos capazes de processar um componente de código e gerenciar componentes de recur- sos, conforme especificado em um conhecimento específico. As interações são eventos de comunicação envolvendo dois ou mais componentes, como por exemplo, uma mensagem trocada entre dois componentes computacionais. O conceito de sítios, intuitivamente, im- plica a noção de local. Os sítios hospedam componentes, além de suportar componentes computacionais, exigindo recursos de processamento.

As arquiteturas descritas, a seguir, são analisadas em termos das interações ocorridas en- tre componentes, considerando a coordenação e localização destes, ao prestar um serviço qualquer (Picco, 1998). O cenário é montado de forma que um componente computacional A, localizado no sítio SA, requisita a execução de um serviço qualquer. Em se tratando de

um sistema distribuído, assume-se também a existência de um outro sítio SB, com compo-

nente computacional B, necessário na realização do serviço. As arquiteturas são analisadas levando-se em conta o local dos componentes antes e depois da prestação do serviço, o com- ponente computacional responsável pela execução do serviço e, finalmente, o local onde a computação é efetuada. A Figura 3.3 resume, com base nestes fatores, as quatro arquiteturas apresentadas em detalhes, de acordo com (Picco, 1998; Papaioannou, 2000).

Cliente-Servidor (C/S). Na arquitetura cliente-servidor um componente computaci- onal B, localizado no sítio SB, recebe requisições para prestação de alguns serviços,

SA C. Comput. A código R SA C. Comput. A SA C. Comput. A código SA C. Comput. A código SB C. Comput. B código SB C. Comput. B código R R SB C. Comput. B código SB C. Comput. B código R Cliente-Servidor (C/S)

Execução Remota (REV)

Código sob Demanda (CoD)

Agentes Móveis

Migração do agente móvel

Figura 3.3: Paradigma de Códigos Móveis

sendo chamado de servidor. O componente de código para prestação do serviço, assim como os recursos utilizados para tal, estão localizados no sítio SB. Um componente A,

chamado de cliente, localizado em um sítio SA, requisita a execução de um serviço ofe-

recido pelo servidor, interagindo com o componente B. Ao receber esta requisição, B executa o código referente à prestação do serviço, utilizando seus próprios componen- tes recursos. Normalmente, a realização de um serviço fornece algum tipo de resultado que é enviado para o cliente que fez a requisição.

Execução Remota ou Remote Evaluation (REV). No paradigma REV, um compo-

nente A, localizado no sítio SA, detém o código para prestação de serviço, porém ne-

cessita de recursos para a sua execução. Os recursos necessários estão localizados no sítio SB. Então, A envia o código para B para que este execute o código usufruindo

dos próprios recursos localizados no sítio SB(shipping). Os resultados da prestação do

serviço são enviados de volta para A.

Código sob Demanda (CoD). Nesta arquitetura, o componente A possui todos os recursos necessários para a prestação de serviço, faltando-lhe, porém, as instruções de como os recursos devem ser usados para que o serviço possa ser realizado. Desta forma, A interage com o componente B, localizado no sítio SB, requisitando o código

para tal serviço (fetching). Ao receber o código de B, o componente A executa-o, utilizando seus próprios recursos.

Agentes Móveis. O paradigma de agentes móveis difere de todos os outros paradig- mas citados anteriormente, pois a prestação de um serviço nem sempre envolve uma

interação entre dois componentes. Nesta arquitetura, o componente A, localizado ini- cialmente no sítio SA, detém o código e os recursos necessários para a execução do

serviço. O serviço pode ainda necessitar de recursos extras localizados em um sítio remoto, SB. Neste caso, o componente de código migra para o sítio SB, transferindo

consigo o código, o seu estado e recursos móveis como resultados intermediários. Ao chegar no sítio SB, A completa o serviço usufruindo dos recursos disponíveis neste

sítio. Assim, enquanto no REV e no CoD o foco é na transferência de código entre componentes, no paradigma de agentes móveis, o elemento a ser transferido é todo o componente computacional, composto do seu código, estado e alguns recursos neces- sários para a realização da tarefa.

Picco (1998) constata que os estilos de arquiteturas, apresentados acima, são indepen- dentes de uma linguagem ou de sistemas particulares nos quais estes são implementados. Os paradigmas de códigos móveis tratam explicitamente do conceito de localização. A abs- tração de sítio é introduzida em nível de projeto para que a localização de componentes computacionais seja levada em conta.

O paradigma de código móvel tem-se mostrado eficiente no desenvolvimento de sistemas distribuídos (Picco, 1998). A maioria dos paradigmas tradicionais são estáticos em relação à estrutura do código de seus componentes e do local onde estes são executados. Além disso, os tipos de interações são fixos, uma vez que é impossível mover os componentes a fim de otimizar as interações em tempo de execução. O paradigma de código móvel é caracterizado pela transitoriedade dos componentes nas localidades de um sistema. As arquiteturas REV e CoD, por exemplo, permitem a execução de código em processadores remotos, tornando muitas vezes a troca de dados entre os componentes envolvidos na computação, em simples interações locais. O CoD ainda oferece uma certa flexibilidade aos componentes ao permitir que eles busquem códigos em outros sítios, estendendo seu comportamento.