忍者ブログ
情報処理試験など、理系の試験対策、関連知識、日記などです

A Static Code Smell Detector for SQL Queries Embedded in Java Code

公開されている

A Static Code Smell Detector for SQL Queries Embedded in Java Code

のキモ部分を読んで、勉強してみたいと思います。

間違いなどあたら、ごめんなさい



概要

データベースは情報システムの中で、中心的な役割を果たしている。

データそのものに加え、データ操作、すなわりアプリケーションと、

データベースの連携もまた重要である。

データベースとアプリケーションの連携のレイヤは、信頼性が高く、

効率が良いものである必要がある。

SQLは、データベースの操作の主要言語であり、

アプリケーションの中に、Query Stringを埋め込むことが、よく行われる。

しかし、Javaを含む多くの言語では、組み込みqueryは、複数の操作に変換される

ことが多く、データベースへ最終的に送られるSQLが開発者によく分からないことがある。

そのため、この部分が、falut-proneであったり、データベースの非効率な利用

すなわち、code smellになることがある。

この論文では、Javaに埋め込まれているcode smellを識別するツールを示す。

このツールは、SQL文の静的解析とデータベースのスキーマ、データを組み合わせて

分析する。

Javaのコードから、SQLコードを抽出するアルゴリズムを使い、SQLのパーサーを

利用し、code smellを検出する発見器を実装する。

1.概要

複雑で規模の大きな情報システムの中で、データベースは中心的な役割を示す。

データベースには、クリティカルな役割が多く、可用性や応答時間に大きな影響を示す。

アプリケーションとデータベースは、相互に依存するが、独立して進歩してきたため、

データベースを操作するコードの複雑性は、増加した。

一方、この機能の信頼性、堅牢性、効率は大変重要である。

SQLは、データベースとのやり取りを行う最も広く使われている方法である。

調査では、SQLは、2番目に人気がある。1番目は、JavaScriptで、

3番目は、Javaである。

ポピュラーなデータベースアクセス技術もSQLに依存している。

例えば、Java用のORマッパー Hibernateは、JDBCを使い、

内部では、SQLを利用している。

GitHubのプロジェクトの調査では、Javaプロジェクトでは、JDBC ,Hibernate, JPAが

データベースとのコミュニケーションに広く使われ、中でもJDBCが高い割合で使われていた。

データベースへのアクセス技術は、多くの点で開発者を助ける。

Javaのクラスとデータベースのエンティティ間のリンク(ORM)、

クエリーの再利用(prepared statement)などである。

しかし、開発者はデータベースへ実際に送られるSQLが分からなくなる。

最悪の場合、正しくない、あるいは、非効率的なデータベースの利用

につながる(code smell)。

コードに組み込まれたqueryを分析することは、困難ではあるが、

便益も多い。このために、静的な解析が行われる。

これは

(1)アプリケーションのコードから、Queryを抽出する

(2)smellを識別する

ことが行われる。

PR