• Nenhum resultado encontrado

Ambiente para Suporte ao Desenvolvimento de Aplicações Paralelas Baseadas no Modelo #.

N/A
N/A
Protected

Academic year: 2022

Share "Ambiente para Suporte ao Desenvolvimento de Aplicações Paralelas Baseadas no Modelo #."

Copied!
1
0
0

Texto

(1)

Ambiente para Suporte ao Desenvolvimento de Aplicações Paralelas Baseadas no Modelo #.

Rodrigo Cavalcante Mendes1

1Centro de Informática – Universidade Federal do Pernambuco (UFPE)

rcm2@cin.ufpe.br

Abstract. This paper purpose is describe some artifacts features and techniques applied on conception and implementation of a CASE (Computer Aided Software Development) tool based on # model, an extension of Haskell model concepted by Dr. Francisco Heron de Carvalho Júnior. The tool provides a visual development support for wide scale clusters parallel programs, using abstractions supported by # programming model, contribuiting on reuse of software components, on both orthogonal programming levels supported by # model, coordination and computation.

Resumo. Este artigo tem como objetivo descrever algumas características de artefatos e técnicas aplicadas na concepção e implementação de uma ferramenta de suporte ao desenvolvimento de aplicações sob o modelo #, extensão do modelo Haskell concebida pelo Dr. Francisco Heron de Carvalho Júnior. Esta ferramenta propõe-se a fornecer o suporte ao desenvolvimento visual de programas paralelos de larga escala sobre clusters, através das abstrações oferecidas pelo modelo # de programação, permitindo o reuso de componentes de software, sob ambos os níveis ortogonais de programação suportados pelo modelo #, coordenação e computação.

(2)

1. Introdução

O objetivo desta seção é descrever e definir algumas das motivações e fundamentos os quais o a ferramenta Visual # Tool se baseia, abordando o propósito do modelo # bem como suas características principais e a linguagem Haskell #, base da geração de código para execução de aplicações paralelas utilizando a linguagem funcional Haskell.

1.1. O Modelo Hash (#)

O modelo # foi elaborado como uma iniciativa de ser uma opção para o desenvolvimento de aplicações e soluções que requerem recursos de paralelismo.

Através de uma observação das tendências encontradas com a disseminação de tecnologias que se utilizam de paralelismo, grid computing e cluster computing, o modelo # oferece o recurso de programação em alto nível, agregando as novas metodologias e abordagens utilizadas no desenvolvimento de aplicações em larga escala. Tendo sido fundamentada em modelos formais de redes de Petri, ela possibilita analisar propriedades e avaliar o desempenho das aplicações através do uso de ferramentas já existentes. Aspectos de qualidade e produtividade provenientes da engenharia de software como modularidade e reuso estão entre alguns dos fundamentos em que o modelo propõe adotar.

Uma aplicação baseada no modelo # pode ser analisada através de duas perspectivas fundamentais: o mundo das computações e o mundo dos processos. O primeiro refere- se às funcionalidades oferecidas pela aplicação, descrevendo-as sob a ótica computacional. O segundo analisa sob o âmbito organizacional do paralelismo empregado, de forma a otimizar o desempenho. Mecanismos de alto nível visando possibilitar a geração de um código eficiente, considerando uma linguagem de alto nível foram aplicados. Entre eles os de mais destaque são os esqueletos topológicos. O mundo dos processos é responsável por capturar a essência do comportamento conjunto dos processos que formam o programa paralelo especificado por uma biblioteca de passagem de mensagens. O uso da linguagem haskell para servir de base para implementação de códigos para aplicações paralelas deve-se essencialmente pela possibilidade de ortogonalizar o mundo de processos com o mundo computacional, sem a necessidade de nenhuma extensão, pois oferece recursos como funções de alta ordem e lazy evaluation [Carvalho 2004].

1.1. A Linguagem Haskell #

A linguagem Haskell # é uma extensão da linguagem Haskell, baseada no modelo # para a execução paralela de programas funcionais que se baseiam em arquiteturas distribuídas, chamadas de clusters. Uma das principais vantagens provenientes da independência entre os meios de coordenação e computação no modelo # é a facilidade de implementação em linguagens que têm uma fácil aderência ao modelo, podendo-se usufruir de ferramentas já existentes sem necessidade de adaptações.

MPI (Message Passing Library) e GHC (Glasgow Haskell Compiler), são bases para a linguagem no aspecto de gerenciamento de paralismo e para a compilação de módulos funcionais respectivamente, colaborando para a eficiência e portalidade em aplicações desenvolvidas a partir da linguagem [Carvalho 2004].

2. A ferramenta VHT (Visual # Tool)

A ferramenta VHT (Visual # Tool) foi concebida com o propósito de fornecer suporte a implementação de aplicações baseadas no modelo #, disponibilizando um ambiente

(3)

visual de desenvolvimento de aplicações paralelas baseadas nesse modelo, facilita a visualização e criação de configurações, além de permitir o reuso de componentes e configurações previamente implementadas. A possibilidade de utilização e criação de bibliotecas de componentes do modelo # e integração com aplicações já existentes visando avaliação de propriedades e análise de desempenho das aplicações de grid computing ou cluster computing e geração de código na linguagem haskell # são alguns dos propósitos da ferramenta.

2.1. Características principais

A ferramenta VHT fornece suporte as seguintes características:

 Suporte a uma biblioteca de componentes reusáveis;

 Geração de código # a partir da especificação visual da configuração;

 Integração ao compilador #, para geração de código MPI executável;

 Integração a LAM-MPI, permitindo a execução de aplicações paralelas no cluster a partir do ambiente de desenvolvimento;

 Integração a XMPI, para visualização da execução de programas MPI;

 Integração ao tradutor de programas para redes de Petri;

Integração à ferramenta PEP[BEEJGB+97], para a avaliação de propriedades de programas com # com redes de Petri.

A ferramenta CASE (Computer Aided Software Engineering), foi dividida em vários módulos, ficando o enfoque deste artigo as considerações relativas ao suporte de bibliotecas reusáveis e a geração do código # a partir da especificação visual da configuração.

2.2. Linguagem de Programação Adotada

A linguagem de programação adotada foi JAVA, por fornecer suporte à programação orientada a objetos e ser multiplataforma, permitindo uma maior integração com outras aplicações. A priorização desses critérios deve-se principalmente aos requisitos de reuso e de integração com aplicações baseadas em plataformas distintas, essencialmente as de execução e simulação de ambientes paralelos.

Em especial foi utilizada a biblioteca swing, que fornece suporte a componentes visuais para o desenvolvimento de interfaces e ser uma biblioteca independente de plataforma, diferentemente da SWT.

2.3. Estrutura de Dados Adotada para Integração

A estrutura adotada foi XML por ser simples e flexível, permitindo criar uma gramática baseada no modelo #, podendo ser extensível para novas funcionalidades e fornecer uma fácil integração com outras aplicações por ter um padrão universalizado.

(4)

3. A Arquitetura

O ambiente foi desenvolvido utilizando uma arquitetura modular em 3 camadas utilizando a estrutura da Figura 1.

3.1. Camada de Apresentação

A camada de apresentação é responsável por disponibilizar e interagir com o usuário as funcionalidades da aplicação. Para a primeira versão da aplicação foi selecionado o modelo desktop de aplicação, onde o software é instalado na máquina do usuário e utilizasse de recursos do sistema operacional para gerenciamento e navegação entre as janelas da ferramenta. Este padrão de interface adotado foi baseado nas ferramentas mais conceituadas e utilizadas como o BORLAND JBUILDER, BORLAND DELHI, entre outros.

3.2. Camada de Negócio

A camada de negócio é responsável por fornecer as funcionalidades do sistema e representar as entidades e componentes utilizados pela aplicação. Como a linguagem utilizada adotada é orientada a objetos, os componentes gráficos (representações visuais de conceitos do modelo #) e os componentes de negócio (representação em objeto e entidades dos conceitos do modelo #) são construídos, manipulados e integrados nessa camada, diminuindo o acoplamento entre a interface e os componentes de negócio e entre componentes de negócio e a persistência dos dados.

3.3. Camada de Persistência

A camada de persistência é responsável por recuperar e armazenar as configurações especificadas na ferramenta. Como estrutura de persistência foi utilizada o sistema de arquivos, em que as entidades, componentes e objetos que representam o modelo # são mapeados em estruturas em XML, facilitando a integração entre aplicações que suportam o modelo # e o reuso de configurações no próprio VHT.

Apresentação Negócio Persistência

Figura 1. Visão geral Arquitetura

(5)

4. Conceitos Gerais aplicados ao VHT

Esta seção define algumas das principais suportadas pelo modelo # e que são utilizadas na maioria das funcionalidades e representações do VHT.

4.1. Componentes

Componentes são abstrações para as entidades do modelo # que implementam funções, que quando compostas descrevem as computações realizadas pelo programa paralelo.

Preferencialmente, cada componente implementa uma certa funcionalidade específica, sendo descrito unicamente pela sua interface, composta por argumentos e pontos de retorno [Carvalho 2004].

4.2. Unidades (Units)

No modelo #, unidades constituem abstrações para entidades executáveis (processos) em programas paralelos, instanciadas a partir de interfaces. Unidades instanciadas a partir de uma mesma interface compartilham o mesmo conjunto de portas e comportamento especificados por esta.

Na descrição de uma unidade, é possível replicar as portas de sua interface, formando agrupamentos de portas. No entanto, tendo em vista manter a consistência com a descrição comportamental descrita pela interface a partir da qual a unidade foi instanciada, agrupamentos de portas são tratados como portas individuais quando ativadas. Portanto, portas pertencentes a um mesmo agrupamento devem ser ativadas simultaneamente na ativação deste [Carvalho 2004]. Uma unidade básica pode ser visualizada na Figura 2.

Figura 2. Unit Básica

4.3. Configurações (Configurations)

Uma configuração é um programa que define um componente composto. Uma configuração no modelo # é formada por declarações de entidades (componentes, interfaces, unidades e canais) e as relações entre estas, constituindo uma rede de unidades [Carvalho 2004].

4.4. Interfaces

O conceito de interface no modelo # representa as informações essenciais para caracterização, em nível de coordenação, do comportamento dos processos que compõem um programa paralelo. Uma interface # é definida por uma coleção de portas de entrada e saída. A ordem em que estas são ativadas durante a execução descreve o comportamento da interface. Define-se a ativação de uma porta é ocorre quando uma operação de comunicação é realizada [Carvalho 2004].

(6)

5. O Ambiente Visual VHT e Principais Componentes

A ferramenta VHT foi dividida em módulos distintos, mas podendo-se agrupar em essencialmente dois: o módulo de confecção do ambiente, representação em XML e criação de especificações de configurações e o modulo de aplicações de integração.

A seguir segue algumas considerações a respeito das funcionalidades do módulo de confecção do ambiente gráfico e geração de código XML. Na Figura 3 podemos visualizar a tela principal do ambiente VHT bem como o menu de atalho de suas principais funcionalidades. O menu de atalho possui as principais funcionalidades do sistema e é exibido através do clique do mouse.

Figura 3. Tela Principal e Menu de Atalho.

A ferramenta VHT possui diversas funcionalidades implementadas, em que a maioria delas está relacionada a unidades (units). Algumas funcionalidades de uma unidade são:

 Atribuir um componente: Associa uma unidade a um componente (Figura 4).

Figura 4. Unidade com um componente associado.

 Configurar uma Interface: Aplica uma interface à unidade, permitindo a configuração realização de comunicação através das portas de entrada e saída (Figura 5).

Figura 5. Unidade com uma interface configurada.

(7)

Através dessas funcionalidades é possível configurar completamente uma unidade e com isso fazer diversas interações e relações entre outras, gerando assim componentes compostos que posteriormente podem formar componentes para servirem como biblioteca, gerar código executável baseado na linguagem Haskell #, simular a execução da aplicação paralela, ou executar aplicações integradas a ferramenta, para avaliação de desempenho e análise de propriedades. Um exemplo de interações e relações é exibido na Figura 6.

Figura 6. Exemplo de relacionamentos e configurações de componentes.

5.1. Representação de entidades no modelo # em dados semi-estruturados (XML)

Um dos recursos mais interessantes da ferramenta é a forma de armazenamento das aplicações paralelas geradas no ambiente visual. A estrutura de armazenamento adotada é baseada na linguagem XML, permitindo uma melhor representatividade dos dados e permitindo a integração com outras aplicações e módulos do sistema.

Foi criada uma estrutura que identifica as entidades do modelo # suportadas na ferramenta VHT. Na Figura 7 podemos visualizar uma unidade com a interface configurada e seu código em XML correspondente.

Figura 7. Unidade com a interface configurada e o código XML correspondente.

(8)

6. Considerações Finais

O modelo # surgiu com a proposta de simplificar o desenvolvimento de aplicações paralelas distribuídas, fornecendo um conjunto de recursos de suporte à programação de alto-nível considerando critérios de boas práticas amplamente difundidas como reuso e portabilidade.

A ferramenta Visual # Tool tem como objetivo facilitar a geração de código de aplicações paralelas suportadas pelo modelo #, além de agregar a possibilidade de uma programação baseada em componentes visuais e permitir o uso integrado de ferramentas existentes que objetivam avaliar propriedades, desempenho e simulação dos ambientes e aplicações paralelas.

7. Trabalhos Futuros

Pela ferramenta Visual # Tool se propor a integrar várias aplicações já disseminadas para a análise de propriedade, simulação e avaliação de desempenho de aplicações paralelas, é necessário realizar a integração do módulo de ambiente visual e geração de código com o que se comunica com aplicações externas.

A representação em XML necessita de um maior refinamento e adição de novas funcionalidades, essencialmente relacionadas a entidades e recursos existentes no modelo #, mas ainda não suportados na ferramenta.

Alguns recursos avançados disponíveis no modelo # precisam ser implementados no ambiente de desenvolvimento visual, permitindo a total aderência entre o modelo e a ferramenta.

8. Referências

Carvalho, Francisco Heron. (2004) “Programação Paralela Eficiente de Alto-Nível Sobre Arquiteturas Distribuidas”, Tese de Doutorado defendida no Centro de Informática – Universidade Federal de Pernambuco.

Ian Sommerville. Software Engineering - sixth edition. Addison-Wesley, 2000.

W3C - World Wide Web Consortium, Extensible Markup Language (XML), http://www.w3.org/XML/, Janeiro 2004.

Referências

Documentos relacionados

Não se está perante a situação de uma única falta injustificada; só se pode falar em falta de assiduidade se houver alguma continuidade, o que não implica que tenham de ser faltas

A estabilidade do corpo docente permanente permite atribuir o conceito muito bom, segundo os parâmetros da área, para o item 2.2 (pelo menos 75% dos docentes permanentes foram

O segundo Beneficiário será designado pelo Segurado na Proposta de Adesão, podendo ser substituído a qualquer tempo, mediante solicitação formal assinada pelo próprio Segurado, para

No período de primeiro de janeiro a 30 de junho de 2011, foram encaminhadas, ao Comitê de Segurança do Paciente da instituição sede do estudo, 218 notificações de

[Informar a data, o nome e a assinatura do dirigente máximo que aprovou o documento Termo de Abertura do Projeto antes deste projeto ser solicitado ao Governador pelo

Gottardo e Cestari Junior (2008) efetuaram análise de viabilidade econômica na implantação de silo de armazenagem de grãos utilizando os seguintes modelos VPL,

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

As dimensões de TI estudadas nessa pesquisa buscou identificar e relação entre Tecnologia da Informação e a entrega da Proposta de Valor Social pela Empresa estudada. A