persistência em aplicações desenvolvidas no paradigma

Propaganda
Congresso de Inovação, Ciência e Tecnologia do IFSP - 2016
Persistência em aplicações desenvolvidas no paradigma orientado a objetos – um estudo de caso
comparativo
PEDRO KARUT GIMENEZ1, RINALDO MACEDO DE MORAIS2
1
Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas, Bolsista PIBIC/PIBIT do CNPQ, IFSP, Campus
Catanduva, [email protected].
2
Professor Doutor, IFSP, Campus Catanduva, [email protected].
Área de conhecimento (Tabela CNPq): Banco de Dados – 1.03.03.03-0
Apresentado no
7° Congresso de Iniciação Científica e Tecnológica do IFSP
29 de novembro a 02 de dezembro de 2016 - Matão-SP, Brasil
RESUMO: Esse artigo apresenta um estudo de caso que compara diferentes tecnologias para
persistência. Foram analisadas quatro versões de uma mesma aplicação orientada a objetos em que se
utilizou, como métricas para comparação, o tempo de desenvolvimento e o número de linhas de
código. Os resultados indicaram que houve menor esforço do desenvolvedor, respectivamente, na
versão que utilizou um banco de dados de objetos, seguida pela que utilizou um framework objetorelacional, um SGBD NoSQL e um SGBD relacional.
PALAVRAS-CHAVE: Orientação a Objetos; Framework de Persistência; SGBD Relacional; NoSQL.
Persistence in applications developed in the object-oriented paradigm – a case study
ABSTRACT: This article introduces a case study that compares different persistence technologies.
Four versions of the same object oriented application were analyzed in which some comparison
metrics were used as development time and the number of lines of code. The results showed that a
smaller effort was needed from the developer, respectively, in the object database version, followed by
the version that has used an object-relational framework, a NoSQL DBMS and a relational DBMS.
KEYWORDS: Object Orientation; Persistence Framework; Relational DBMS; NoSQL.
INTRODUÇÃO
Orientação a objetos (OO) é um paradigma emergente na indústria de software, que agrega
vantagens ao processo de desenvolvimento e, consequentemente, à qualidade do produto de software:
desenvolvimento modular, reuso, melhor organização e legibilidade do código e manutenibilidade. A
construção de sistemas OO inclui na definição de sua arquitetura as tecnologias que serão empregadas
no tratamento de persistência.
O uso de sistemas gerenciadores de bancos de dados relacionais exige o tratamento do gap
conceitual entre os paradigmas: o mapeamento de classes para relações e o tratamento das operações
CRUD (Create, Retrieve, Update e Delete), para armazenamento e recuperação de objetos em
memória secundária (YODER et al., 1998). A persistência em bancos de dados relacionais também
pode ser implementada com uso de frameworks objeto-relacionais, que tratam a diferença semântica
entre os paradigmas e disponibilizam uma interface com operações CRUD.
Em bancos de dados orientados a objetos é possível definir estruturas complexas de dados,
pelo uso de atributos de referência e tipos construtores (collection types – set, list, array e bag). Em
uma representação unificada de objetos, tais gerenciadores oferecem suporte à persistência por meio
do binding entre a linguagem de programação e o banco de dados (ELMASRI; NAVATHE, 2011).
As tecnologias NoSQL incluem soluções de armazenamento e processamento de alto volume
de dados, em uma arquitetura escalável, incluem mecanismos de inserção de dados de forma
incremental, eficiente e com suporte à função de persistência em cloud computing (VIEIRA, 2012).
Esse trabalho compara, em um estudo de caso, o esforço de desenvolvimento no uso das quatro
alternativas tecnológicas para persistência em uma aplicação OO.
MATERIAL E MÉTODOS
O processo desenvolvido incluiu a implementação de quatro versões de um mesmo sistema
orientado a objetos, com uso das seguintes ferramentas para persistência: (1) SGBD relacional
MySQL com acesso JDBC; (2) framework objeto-relacional JPA/Hibernate e MySQL; (3) SGBD
orientado a objetos Intersystems Caché e (4) Ferramenta NoSQL MongoDB.
A opção por JPA/Hibernate e MySQL deu-se à ampla utilização dessas ferramentas, enquanto
Mongo DB e Caché foram selecionados por serem avaliados como tecnologias inovadoras e
emergentes (FEINBERG et al., 2015).
Após ambientação e uso das ferramentas e desenvolvimento de um projeto piloto (GIMENEZ;
MORAIS, 2016), as quatro versões de uma mesma aplicação, foram desenvolvidas pelo pesquisador.
A aplicação inclui suporte às operações de coleta de materiais recicláveis, com funcionalidades para
cadastro de materiais, agentes ambientais, pontos de coleta, e registro de coletas, conforme
apresentado no diagrama de classes na Figura 1. A aplicação foi desenvolvida em Java, com uso da
IDE Netbeans, em uma interface Desktop orientada a eventos.
FIGURA 1. Modelo de Classes para o sistema alvo.
Foram utilizadas como métricas para comparação do esforço de desenvolvimento, com uso
das diferentes tecnologias em cada versão, o tempo dispendido e o volume total de linhas de código
escrito pelo desenvolvedor, excluindo-se o código gerado ou bibliotecas reutilizadas.
RESULTADOS E DISCUSSÃO
As quatro versões do sistema alvo foram implementadas nos meses de abril e maio de 2016,
na forma de um estudo de caso, em que foram registrados os tempos e número de linhas de código dos
artefatos desenvolvidos em cada versão. Inicialmente, foi desenvolvida uma interface comum,
utilizada em todas as versões, com o objetivo de uniformizar o tratamento das funcionalidades do
sistema.
A versão 1, com uso de MySQL, incluiu uma fase de mapeamento objeto-relacional e
implementação do banco de dados relacional e outra em que foram desenvolvidas as funcionalidades
de conexão e desenvolvimento e utilização das operações CRUD nas classes de domínio. A versão 2,
em MongoDB, iniciou com a criação do banco de dados, seguido pela criação das collections do
banco. A seguir, foram desenvolvidas as classes e métodos que realizam a conexão e as operações
CRUD com o SGBD.
A terceira versão para o sistema, desenvolvida com uso do framework objeto-relacional
JPA/Hibernate, incluiu uma única fase com três atividades: (1) Definição de acesso a dados, por meio
da parametrização da Unidade de Persistência; (2) Especificação das classes de entidades, por meio
das quais foram definidas as estruturas das classes, relacionamentos e atributos de referência e
mapeamento para tabelas e (3) Geração das classes Controllers, que implementam as operações
CRUD para cada classe.
A versão 4, em Caché, iniciou-se com a definição das classes de domínio no SGBDOO
(Sistema Gerenciador de Banco de Dados Orientado a Objetos), que disponibiliza o binding com java
por meio de geração de código, com classes representantes (padrão proxy) para uso na aplicação. Essas
classes disponibilizam toda a interface necessária para o desenvolvimento da aplicação.
As medidas coletadas no desenvolvimento das quatro versões da aplicação, com uso das
diferentes ferramentas para armazenamento e recuperação de objetos, são descritas na Tabela 1.
TABELA 1. Medidas de esforço observadas nas versões do sistema alvo.
Tecnologia de persistência
Tempo (minutos)
Linhas de Código
MySQL com JDBC
184,81
1115
MongoDB
136,48
721
Hibernate
126,03
607
Caché Intersystems
76,52
633
A primeira versão, com uso de SGBD relacional, apresentou maior esforço de
desenvolvimento, em tempo e volume de código, devido à necessidade de implementação das
operações CRUD nas classes de aplicação, que incluem as cláusulas SQL para armazenamento e
recuperação de objetos em tabelas.
Na versão 2, que utilizou o SGBD NoSQL Mongo DB, de modo semelhante à versão 1,
também foi necessário o desenvolvimento das operações CRUD nas classes, mas houve um pequeno
decréscimo de esforço, devido à semântica orientada a documentos.
Na terceira versão desenvolvida com uso do JPA/Hibernate observou-se considerável ganho
no esforço dispendido, devido principalmente ao mapeamento e geração de tabelas de modo
automático e disponibilização das operações CRUD nas classes controllers, geradas pelo framework.
Na versão 4, em Caché, observou-se o menor esforço, devido à representação unificada de
objetos na aplicação e no banco de dados e ao binding com java por meio de geração de código de
classes representantes (padrão proxy) para uso na aplicação. Essas classes disponibilizaram toda a
interface necessária para o desenvolvimento da aplicação.
CONCLUSÕES
Esse trabalho apresentou um estudo de caso de quatro versões de um mesmo sistema,
desenvolvido com diferentes tecnologias para persistência. As versões com uso de framework objetorelacional e banco de dados de objetos geraram menor volume de código desenvolvido e tempo
dispendido.
Deve-se observar, porém, as restrições inerentes à cada tecnologia, como a não garantia de
integridade de operações da ferramenta NoSQL, a ausência de padrão de interoperabilidade e
portabilidade com o uso do Caché. Espera-se que esse estudo ofereça uma visão comparativa das
tecnologias estudadas e auxilie profissionais no desenvolvimento de sistemas, mais especificamente no
que se refere ao armazenamento e recuperação de objetos em aplicações orientadas a objetos.
AGRADECIMENTOS
Ao órgão de fomento CNPQ pelo patrocínio da pesquisa de iniciação científica PIBIC/PIBIT.
Ao Instituto Federal de Educação, Ciência e Tecnologia de São Paulo, campus Catanduva por
todo seu corpo docente, estrutura e pela oportunidade de realização da pesquisa.
REFERÊNCIAS
D. FEINBERG et al. Magic Quadrant for Operational Database Management Systems.
Disponível
em:
<https://www.gartner.com/doc/reprints?id=1-2PO8Z2O&ct=151013&st=sb>,
Outubro/2015. Acesso em: 24 de agosto 2015.
ELMASRI, R.; NAVATHE, S. Sistemas de Banco de Dados 6ª Ed. Pearson Addison Wesley,
São Paulo, 2011.
GIMENEZ; MORAIS. Persistência em aplicações desenvolvidas no paradigma orientado a
objetos – um estudo de caso comparativo. 2016.
VIEIRA, M. R. et al. Bancos de Dados NoSQL: conceitos, ferramentas, linguagens e estudos
de casos no contexto de Big Data. Simpósio Brasileiro de Bancos de Dados, 2012.
YODER, et al. Connecting Business Objects to Relational Databases. Urbana 51, 2005.
Disponível em:
<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.7703&rep=rep1&type=pdf>.
Acesso
em: 20 de agosto de 2015
Download