• Sonuç bulunamadı

C. AHLAKİ VASIFLAR

XIII. AHDE VEFA-SIDK-EMANET

Os próximos passos do processo proposto consistem em identificar os interesses adaptativos relevantes para a aplicação, bem como as politicas de adaptação, que definem o comportamento adaptativo para cada contexto de execução da aplicação. Como descrito na Seção 4.1, os interesses adaptativos, que irão direcionar a adaptação contextual da aplicação para o estudo de caso são: perfis do usuário; tipo e estado da rede; localização, tipo e estado dos dispositivos e nível de energia do dispositivo.

As políticas de adaptação devem ser definidas através de regras que determinam quais componentes de negócio (módulos funcionais) devem ser usados em cada contexto de execução da aplicação. Na versão atual não são tratadas questões quanto à interdependência dos componentes a serem utilizados, nem quanto a validação das composições geradas. Exemplos de políticas de adaptação para o estudo de caso são representadas através do pseudocódigo da Figura 25:

x Se perfil admin e dispositivo notebook então usar TelaAdminNotebook;

x Se ambiente externo e rede conectada então

usar Base de Dados Central e Módulo de Criptografia; Figura 25 – Pseudocódigo de políticas de adaptação

4.2.3. Construção do Modelo de Aspectos

Os próximos passos a serem seguidos de acordo com o processo de desenvolvimento proposto são a construção do Modelo de Aspectos, que é composto pelo conjunto de aspectos a serem utilizados para prover a adaptação da aplicação com base nos interesses adaptativos e a identificação dos componentes de negócio afetados pelos interesses adaptativos, através da construção de uma matriz relacionando os interesses adaptativos com cada componente do Modelo Base (conforme demonstrado na Tabela 1). Com relação ao modelo de aspectos, cabe lembrar que o PACCA provê um conjunto de aspectos concretos default para aplicações ubíquas (Figura 13)., portanto já provê um modelo de aspectos default para tal domínio de aplicações.

Com relação à identificação dos componentes de negócio afetados pelos aspectos, a Tabela 1 contém a matriz construída para representar tal relação entre os compomentes base e os interesses adaptativos (componentes do modelo de aspectos).

Tabela 1. Matriz de Relacionamento dos interesses adaptativos com os componentes do Módulo Base

Controlador

Login Controlador Administrador Controlador Médico Controlador Enfermeiro Controlador Paciente Generic DAO Perfil de Usuário ¥ ¥ ¥ ¥ ¥ Nível de Energia ¥ ¥ ¥ ¥ ¥ Estado da Rede ¥ Localização ¥ Tipo de Dispositivo ¥ ¥ ¥ ¥ ¥

Após ilustrar a matriz de relacionamentos, serão apresentandos diagramas que mostram como os aspectos interceptam o Modelo Base. Conforme citado anteriormente, devido à ausência de uma notação padrão, foram adicionados estereótipos às

representações UML (<<Aspect>> para os aspectos e <<AbstractAspect>> para o aspecto abstrato e <<intercepta>> para as relações entre os aspectos e as classes do Modelo Base)

Figura 26 – Classe interceptada pelo AdaptadorAbstrato

Na Figura 26, o AdaptadorAbstrato faz a interceptação da classe responsável pelo login na aplicação, onde antes da efetivação do login (método login) é realizada a subscrição do endereço MAC (subscribe) e ao realizar o logoff é realizado o cancelamento da subscrição (unsubscribe).

Figura 27 – Classes interceptadas pelo AdaptadorUsuario

Na Figura 27, o AdaptadorUsuario realiza a interceptação da classe responsável pelo login na aplicação para que o usuário seja autenticado e seja iniciada uma nova

sessão ou resgatada uma sessão ainda ativa. Os demais controladores são interceptados devido ao processo de gerenciamento de sessão.

Figura 28 – Classes interceptadas pelo AdaptadorTela

Na Figura 28, o AdaptadorTela intercepta a classe responsável pelo login, pois ao efetuar login na aplicação o AdaptadorTela se encarrega de adaptar a aplicação de modo que seja carregada a tela adequada ao perfil e ao dispositivo utilizado no login. As demais classes de controle (ControladorAdministrador, ControladorMedico, ControladorPaciente e ControladorEnfermeiro) são interceptadas pelo AdaptadorTela sempre que efetuarem alguma operação, pois assim o AdaptadorTela consulta o Gerente de Contexto e caso o nível de energia estiver menor que o limite estabelecido a aplicação deve ser adaptada sendo carregada uma interface textual.

Na Figura 29, o AdaptadorConectividade intercepta a classe GenericDAO, Classes DAO são responsáveis pelo processo de persistência das informações. Tal classe é interceptada por ser a responsável pelas interações com as Bases de Dados, logo quando é realizada uma operação para persistir dados, a aplicação se adapta (com a interceptação do AdaptadorConectividade) sendo utilizada a Base de Dados adequada ao contexto corrente. O AdaptadorConectividade se encarrega de adaptar a aplicação de acordo com a conectividade da rede (online ou offline), utilizando a Base de Dados Local ou a Base de Dados Central, e de acordo com a localização (ambiente externo), fazendo uso de criptografia (carga do Módulo de Criptografia) no tráfego entre o dispositivo e a Base de Dados Central.

Figura 30 – Classe interceptada pelo AdaptadorRede

Na Figura 30, o AdaptadorRede intercepta a classe GenericDAO, sendo tal aspecto o responsável por adaptar a aplicação na troca de informações entre a aplicação e a Base de Dados Central comprimindo os dados enviados pela rede com base na banda disponível.

Como pode ser notado nos diagramas que ilustram a composição dos aspectos com o modelo base, existem situações onde há vários aspectos interceptando um mesmo módulo funcional da aplicação. Como conseqüência, os métodos contidos nestes módulos são interceptados por mais de um aspecto, podendo se configurar uma situação de conflito entre aspectos. Tal conflito denota a necessidade das interceptações serem ordenadas, ou seja, um aspecto necessita realizar sua interceptação antes de outro, sendo, portanto, imprescindível a utilização de um mecanismo de precedência. Tanto AspectJ quanto JBOSS AOP, apresentam mecanismos de precedência de aspectos.

Em AspectJ, a precedência é declarada através da instrução “declare precedence: aspecto1, aspecto2;”, dessa forma, o aspecto1 deve ser analisado antes do

aspecto2. Esta listagem pode possuir quantos aspectos forem necessários para a resolução do conflito. Já no JBOSS AOP, a resolução é realizada através da tag <precedence> no arquivo de configuração jboss-aop.xml, onde também é definida uma listagem de aspectos para serem analisados de acordo com a ordem especificada para a resolução do conflito.

4.3. Construção da Aplicação usando o PACCA – Fases de Projeto,