Reengenharia e Reestruturação do Sistema de Software LExVE

Propaganda
Reengenharia e Reestruturação do Sistema de Software
LExVE
Leo Altissimo Neto1, Lucas Kriesel Sperotto1
1
Curso de Ciência da Computação
Faculdade de Letras, Ciências Sociais e Tecnológicas (FALECT)
LAMSCAD - Laboratório de Modelagem e Simulação Computacional de Alto
Desempenho
Universidade do Estado de Mato Grosso (UNEMAT) – Alto Araguaia, MT – Brazil
[email protected], [email protected]
Abstract. This paper reports the reengineering of LExVE software system. The
LExVE Software System is a Simulation software that solves problems one and
two-dimensional governed by the Poisson equation. This reengineering is
needed to increase the performance of LExVE software system to translate it
from the Java language to C ++. This paper presents diagrams of the system
calculation module in JAVA and diagrams of the new classes.
Resumo. Este trabalho relata a reengenharia do sistema de software LExVE.
O sistema de Software LExVE é um software de simulaçao que resolve
problemas uni e bi-dimensionais governados pela equação de Poisson. Esta
reengenharia é necessária para aumentar o desempenho do sistema de
software LExVE ao traduzí-lo da linguagem JAVA para C++. Neste trabalho
são apresentados diagramas do módulo de cálculo do sistema em JAVA e
diagramas das novas classes.
1. Introdução
Este trabalho contribui com o desenvolvimento do sistema de software de simulação,
chamado de Laboratório para Experimentos Virtuais de Engenharia, e abreviado pela
sigla LExVE. O sistema de software LExVE, totalmente desenvolvido em linguagem
JAVA, é um software para simulação computacional de fenômenos estacionários
governados pela equação de Poisson por meio do método MEFG [Belytschko 1994], o
que abrange uma vasta gama de aplicações em diversas engenharias i.e. para a
simulação de dispositivos eletrostáticos e eletromagnéticos [Louaï, Naït-Saïd and Drid
2007] e[Marques 2007].
O sistema de software LExVE está organizado em três módulos principais: o
módulo de entrada de dados (pré-processamento) [Pereira et al. 2012], o módulo de
cálculo (processamento) [Sperotto et al. 2012] e o de exploração (pós-processamento)
[Almeida et al. 2012]. Dependendo do tipo de simulação o módulo de cálculo demanda
muito tempo para processar as informações e gerar os resultados. Sabe-se que a
linguagem JAVA, por ser interpretada, não alcança níveis de desempenho de uma
linguagem compilada como a C/C++. Dessa forma, pode-se aumentar
significativamente o tempo de resposta do sistema de software LExVE efetuando a
tradução do módulo de cálculo para a linguagem C++ seguindo a estrutura de classe do
software já codificado porém, com adequações.
Com esta tradução será possível realizar não só cálculos em problemas de maior
complexidade, mas também, incorporar ao sistema o suporte para processamento em
placas gráficas via biblioteca CUDA e suporte a paralelismo com as bibliotecas
OpenMP e MPI. O que alcançaria futuras pesquisas em processamento de alto
desempenho.
O sistema de software LExVE possui aplicação em diversos níveis da acadêmia,
desde o ensino de fenômenos físicos para cursos de graduação, quanto para a pesquisa e
desenvolvimento de dispositivos cujo princípio de funcionamento seja governado pela
equação de Poisson.
O objetivo deste trabalho é elaborar e documentar uma nova engenharia da
estrutura de classes do módulo de cálculo do sistema de software LExVE de forma a
atender a tradução para a linguagem C++ contemplando os padrões de projeto (design
pattern).
2. Metodologia
O desenvolvimento deste trabalho se iniciou com o estudo dos métodos numéricos
envolvidos no processo de simulação, principalmente métodos de integração numérica,
o método EFGM e suas técnicas auxiliares. Também foi necessário um estudo
aprofundado das linguagens JAVA e C++, bem como dos conceitos de Orientação a
Objetos. Em seguida foi estudado, com o auxílio de técnicas de engenharia reversa, o
módulo de cálculo do sistema LExVE e os algoritmos já codificados para o tratamentos
das geometrias e dos requisitos numéricos do sistema.
Diante desse estudo foi projetada uma nova estrutura de classes seguindo a
linguagem de modelagem UML (Unified Modelling Language) para o novo módulo de
cálculo. A diversificada modelagem visual possibilitada pelos diferentes diagramas da
linguagem UML permite ter-se uma visão mais concreta do software em
desenvolvimento, auxiliando na avaliação do sistema sob diferentes óticas ou situações
desde a fase de análise de requisitos, passando pela fase de projeto até sua
implementação e implantação. A engenharia do novo módulo de cálculo foi guiada
pelos novos requisitos do sistema, pelo diagrama oriundo da reengenharia e, na medida
do possível, pelos padrões de projetos (Design Patterns). Os padrões de projeto
documentam soluções gerais reutilizáveis para problemas recorrentes no
desenvolvimento de sistemas de software Orientados a Objetos. Além de uma boa
prática de programação, padrões de projeto facilitam: a reutilização de código; a
comunicação, a documentação e o aprendizado dos sistemas de software.
Tendo o projeto do novo módulo de cálculo concluído, partiu-se para a
codificação. Nesta etapa, ainda em execução, está sendo documentada cada classe e
cada método traduzido e, adicionalmente, está sendo projetado testes de unidade quando
necessário. Estes testes garantirão qualidade, confiabilidade e segurança aos métodos
codificados.
3. Resultados e Discussões
Após realizarmos a engenharia reversa do sistema, notamos que a estrutura de classes
do módulo de cálculo possuía uma enorme interdependência com as classes dos
módulos de exploração e modelagem, dificultando ainda mais a tarefa de traduzir
isoladamente algum pacote do solver, este fato justifica ainda mais a necessidade de
uma nova ação de engenharia de software sobre o módulo de cálculo.
Figura 1. a) diagrama de pacotes do sistema LExVE. b) diagrama de classes
do pacote weightFunction reformulado com o padrão Strategy.
Apresenta-se na figura 1 a) a representação gráfica dos pacotes do sistema
LExVE, estas disposições dos pacotes ainda são referentes a estrutura original do
software. Dentre todos os pacotes apresentados na imagem, apenas alguns precisaram
ser modificados e ou traduzidos de Java para C++, isso deve-se porque parte dos
pacotes são referentes a interface gráfica do software, e esta não há necessidade de ser
traduzida a fim de ganho de desempenho.
A Figura 1 b)
ilustra o novo diagrama de classes para as classes
“WeightFunction”. Neste diagrama podemos ver a aplicação do padrão de projetos
strategy. Este padrão foi escolhido por poder encapsular diversos algoritmos que
realizam operações semelhantes, porém com algumas sutilezas, além de poder
intercambiar facilmente entre eles de modo que o cliente do método execute o algoritmo
mais apropriado para determinado problema.
Devido a utilização de algumas bibliotecas nativas Java pelo módulo de cálculo,
algumas funcionalidades presentes nessas bibliotecas precisaram ser completamente
desenvolvidas, já outras puderam ser substituídas pelo uso da STL(Standard Template
Library). Bibliotecas adicionais, como por exemplo, a biblioteca para algebra linear,
também teve que ser desenvolvida.
Atualmente o projeto de reestruturação se encontra em final, com a grande
maioria dos pacotes presentes do módulo de cálculo já traduzidos, contudo é necessária
a tradução da totalidade do módulo de cálculo para que possamos obter dados concretos
sobre mudanças de desempenho.
4. Conclusões
Este trabalho contribuiu com o desenvolvimento de software científico do tipo
CAD/CAE voltado a uma metodologia numérica recente e promissora (EFGM),
alternativa a aplicação de métodos baseados em malha. Esperamos com a reestruturação
do sistema LExVE, levantar dados que sejam capazes de evidenciar as diferenças de
desempenho entre linguagens interpretadas e compiladas. Do ponto de vista científico, a
tradução do módulo de cálculo abrirá as portas para o estudo de problemas mais
complexos e ainda não abordados pela Literatura com esta abordagem numérica. Do
ponto de vista prático, este trabalho servirá como referência para as futuras evoluções
do sistema LExVE. Esperamos ainda, obter resultados satisfatórios com a otimização da
arquitetura e a mudança de linguagem. Esperamos que com as modificações o software
possa finalmente ser liberado para o uso acadêmico, com grande aproveitamento nas
áreas da engenharia.
Referencias
Belytschko, T., Lu, Y. Y. and Gu, L. (1994), “ Element-free Galerkin methods”,
International Journal for Numerical Methods in Engineering, Vol. 37, pp. 229-56.
Almeida, D. D., Pereira, A. F., Marques, G. N., "Sistema LExVE - EXPLORER:
Um módulo JAVA de pós-processamento CAD/CAE voltado ao método elementfree Galerkin", MOMAG Proceedings, 2012.
Louaï, F.Z., Naït-Saïd, N. and Drid, S. (2007), “Implementation of an efficient
element-free Galerkin method for electromagnetic computation”, Engineering
Analysis with Boundary Elements, Vol. 31, No. 3, pp. 191-199.
Marques, G. N., Machado, J. M., Verardi, S. L. L., Stephany, S. e Preto, A. J.
(2007.b), “Interpolating EFGM for computing continuous and discontinuous
electromagnetic fields”, International Journal for Computation and Mathematics in
Electrical and Electronic Engineering (COMPEL).
Pereira, A. F., Almeida, D. D., Marques, G. N., "Sistema LExVE - MODELER:
Um módulo JAVA de pré-processamento CAD/CAE voltado ao método elementfree Galerkin", MOMAG Proceedings, 2012.
Sperotto, L. K., Passaro, A., Marques, G. N., "Sistema LExVE - Solver: Módulo
de processamento CAD/CAE em JAVA voltado ao método element-free Galerkin",
MOMAG Proceedings, 2012.
Download