Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados.
Autor(a) principal: | |
---|---|
Data de Publicação: | 2013 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFCG |
Texto Completo: | http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351 |
Resumo: | Os procedimentos armazenados em bancos de dados são comumente utilizados por aplicações para acessar e manipular dados em bancos de dados. Se os procedimentos forem implementados de maneira ineficiente, esperas demasiadas podem ser repassadas para a camada de aplicação e acarretar perdas financeiras significativas para as empresas. Caso sejam implementados usando más práticas de programação, os procedimentos podem apresentar difícil legibilidade e entendimento. Considerando que uma parte considerável da lógica de negócio das aplicações pode ser desenvolvida na forma de procedimentos, a redução destes problemas utilizando inspeções manuais pode tornar-se um processo custoso, propenso a erros e desestimulante para os desenvolvedores. Neste trabalho, é proposta uma abordagem, baseada em análise estática automática de código-fonte, para verificação da conformidade de procedimentos de banco de dados com diretrizes pré-definidas de eficiência e qualidade. A abordagem proposta foi instanciada para uma linguagem de programação de banco de dados específica e avaliada de três maneiras. Primeiramente, foi medido o impacto da aplicação de diretrizes de eficiência no tempo de execução de procedimentos de banco de dados. Para as maiores cargas de trabalho testadas, as diretrizes investigadas acarretaram em melhorias superiores a 80%. Além disso, foi realizado um estudo de caso, utilizando procedimentos de banco de dados reais, no intuito de avaliar a eficiência (tempo de análise automática) e eficácia (quantidade de advertências reportadas) da abordagem proposta. Neste processo, foram reportadas 299 advertências após a análise dos procedimentos (∼2KLoC) selecionados e, para tal, foram necessários menos de 7 segundos para a realização da análise automática. Por fim, foram realizados experimentos, no contexto de um projeto industrial real, no intuito de comparar as características da análise realizada pela abordagem proposta com as realizadas de forma manual por desenvolvedores. Nestes experimentos, a abordagem automática apresentou eficiência e eficácia superiores em todos os cenários observados. |
id |
UFCG_4f8e54da1c54e00abdca33ae04614771 |
---|---|
oai_identifier_str |
oai:localhost:riufcg/12351 |
network_acronym_str |
UFCG |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository_id_str |
4851 |
spelling |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados.An approach to automatic static analysis of stored procedures in databases.Banco de DadosProcedimentos de Banco de DadosAnálise EstáticaAnálise de DesempenhoEficiênciaQualidade de CódigoDatabaseDatabase ProceduresStatic AnalysisPerformance AnalysisEfficiencyCode QualityCiência da ComputaçãoOs procedimentos armazenados em bancos de dados são comumente utilizados por aplicações para acessar e manipular dados em bancos de dados. Se os procedimentos forem implementados de maneira ineficiente, esperas demasiadas podem ser repassadas para a camada de aplicação e acarretar perdas financeiras significativas para as empresas. Caso sejam implementados usando más práticas de programação, os procedimentos podem apresentar difícil legibilidade e entendimento. Considerando que uma parte considerável da lógica de negócio das aplicações pode ser desenvolvida na forma de procedimentos, a redução destes problemas utilizando inspeções manuais pode tornar-se um processo custoso, propenso a erros e desestimulante para os desenvolvedores. Neste trabalho, é proposta uma abordagem, baseada em análise estática automática de código-fonte, para verificação da conformidade de procedimentos de banco de dados com diretrizes pré-definidas de eficiência e qualidade. A abordagem proposta foi instanciada para uma linguagem de programação de banco de dados específica e avaliada de três maneiras. Primeiramente, foi medido o impacto da aplicação de diretrizes de eficiência no tempo de execução de procedimentos de banco de dados. Para as maiores cargas de trabalho testadas, as diretrizes investigadas acarretaram em melhorias superiores a 80%. Além disso, foi realizado um estudo de caso, utilizando procedimentos de banco de dados reais, no intuito de avaliar a eficiência (tempo de análise automática) e eficácia (quantidade de advertências reportadas) da abordagem proposta. Neste processo, foram reportadas 299 advertências após a análise dos procedimentos (∼2KLoC) selecionados e, para tal, foram necessários menos de 7 segundos para a realização da análise automática. Por fim, foram realizados experimentos, no contexto de um projeto industrial real, no intuito de comparar as características da análise realizada pela abordagem proposta com as realizadas de forma manual por desenvolvedores. Nestes experimentos, a abordagem automática apresentou eficiência e eficácia superiores em todos os cenários observados.Stored Procedures are commonly used by applications to access and manipulate data in databases. If procedures are inefficiently implemented, excessive delays are passed to the application layer and can bring significant financial losses to enterprises. If procedures are implemented using bad programming practices, it may become hard for a developer to read and understand them. Considering that a significant part of the business logic of the applications can be implemented as stored procedures, the reduction of these problems using manual inspections may become a costly, error-prone and discouraging process to the developers. In this work, we propose an approach, based on static analysis of source code, to check the conformity of stored procedures with predefined efficiency and quality guidelines. The approach was instantiated to a specific database programming language and evaluated in three different ways. First, we measured the impact of the appliance of efficiency guidelines on the execution time of stored procedures. Considering the highest processing loads under test, the investigated guidelines led to optimization gains greater than 80%. Moreover, a case study, using real open source projects, was conducted to evaluate the efficacy (amount of reported warnings) and efficiency (automatic analysis time) of the proposed approach. In this process, 299 warnings were reported after the analysis of the selected procedures (∼2KLoC) and, for doing so, less than 7 seconds of automatic analysis were required. Finally, we performed experiments, in the context of an industrial project, in order to compare the automatic analysis with manual inspections performed by developers. In these experiments, the automatic approach presented a superior efficacy and efficiency in all observed treatments.Universidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGPIRES, Carlos Eduardo Santos.PIRES, C. E. S.http://lattes.cnpq.br/4986021622366786MASSONI, Tiago Lima.MASSONI, T. L.http://lattes.cnpq.br/3563923906851611NASCIMENTO FILHO, Dimas Cassimiro do.2013-03-012020-03-05T12:27:45Z2020-03-052020-03-05T12:27:45Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351NASCIMENTO FILHO, Dimas Cassimiro do. Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. 2013. 132f. (Dissertação) Mestrado em Ciência da Computação, Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Campina Grande - Paraíba - Brasil, 2013. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2022-03-21T20:18:07Zoai:localhost:riufcg/12351Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512022-03-21T20:18:07Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
dc.title.none.fl_str_mv |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. An approach to automatic static analysis of stored procedures in databases. |
title |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
spellingShingle |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. NASCIMENTO FILHO, Dimas Cassimiro do. Banco de Dados Procedimentos de Banco de Dados Análise Estática Análise de Desempenho Eficiência Qualidade de Código Database Database Procedures Static Analysis Performance Analysis Efficiency Code Quality Ciência da Computação |
title_short |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
title_full |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
title_fullStr |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
title_full_unstemmed |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
title_sort |
Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. |
author |
NASCIMENTO FILHO, Dimas Cassimiro do. |
author_facet |
NASCIMENTO FILHO, Dimas Cassimiro do. |
author_role |
author |
dc.contributor.none.fl_str_mv |
PIRES, Carlos Eduardo Santos. PIRES, C. E. S. http://lattes.cnpq.br/4986021622366786 MASSONI, Tiago Lima. MASSONI, T. L. http://lattes.cnpq.br/3563923906851611 |
dc.contributor.author.fl_str_mv |
NASCIMENTO FILHO, Dimas Cassimiro do. |
dc.subject.por.fl_str_mv |
Banco de Dados Procedimentos de Banco de Dados Análise Estática Análise de Desempenho Eficiência Qualidade de Código Database Database Procedures Static Analysis Performance Analysis Efficiency Code Quality Ciência da Computação |
topic |
Banco de Dados Procedimentos de Banco de Dados Análise Estática Análise de Desempenho Eficiência Qualidade de Código Database Database Procedures Static Analysis Performance Analysis Efficiency Code Quality Ciência da Computação |
description |
Os procedimentos armazenados em bancos de dados são comumente utilizados por aplicações para acessar e manipular dados em bancos de dados. Se os procedimentos forem implementados de maneira ineficiente, esperas demasiadas podem ser repassadas para a camada de aplicação e acarretar perdas financeiras significativas para as empresas. Caso sejam implementados usando más práticas de programação, os procedimentos podem apresentar difícil legibilidade e entendimento. Considerando que uma parte considerável da lógica de negócio das aplicações pode ser desenvolvida na forma de procedimentos, a redução destes problemas utilizando inspeções manuais pode tornar-se um processo custoso, propenso a erros e desestimulante para os desenvolvedores. Neste trabalho, é proposta uma abordagem, baseada em análise estática automática de código-fonte, para verificação da conformidade de procedimentos de banco de dados com diretrizes pré-definidas de eficiência e qualidade. A abordagem proposta foi instanciada para uma linguagem de programação de banco de dados específica e avaliada de três maneiras. Primeiramente, foi medido o impacto da aplicação de diretrizes de eficiência no tempo de execução de procedimentos de banco de dados. Para as maiores cargas de trabalho testadas, as diretrizes investigadas acarretaram em melhorias superiores a 80%. Além disso, foi realizado um estudo de caso, utilizando procedimentos de banco de dados reais, no intuito de avaliar a eficiência (tempo de análise automática) e eficácia (quantidade de advertências reportadas) da abordagem proposta. Neste processo, foram reportadas 299 advertências após a análise dos procedimentos (∼2KLoC) selecionados e, para tal, foram necessários menos de 7 segundos para a realização da análise automática. Por fim, foram realizados experimentos, no contexto de um projeto industrial real, no intuito de comparar as características da análise realizada pela abordagem proposta com as realizadas de forma manual por desenvolvedores. Nestes experimentos, a abordagem automática apresentou eficiência e eficácia superiores em todos os cenários observados. |
publishDate |
2013 |
dc.date.none.fl_str_mv |
2013-03-01 2020-03-05T12:27:45Z 2020-03-05 2020-03-05T12:27:45Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351 NASCIMENTO FILHO, Dimas Cassimiro do. Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. 2013. 132f. (Dissertação) Mestrado em Ciência da Computação, Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Campina Grande - Paraíba - Brasil, 2013. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351 |
url |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351 |
identifier_str_mv |
NASCIMENTO FILHO, Dimas Cassimiro do. Uma abordagem para análise estática automática de procedimentos armazenados em bancos de dados. 2013. 132f. (Dissertação) Mestrado em Ciência da Computação, Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Campina Grande - Paraíba - Brasil, 2013. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12351 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
instname_str |
Universidade Federal de Campina Grande (UFCG) |
instacron_str |
UFCG |
institution |
UFCG |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
_version_ |
1809744440267374592 |