Skip to main content
QUICK REVIEW

[論文レビュー] Static Code Analysis of Multilanguage Software Systems

Anas Shatnawi, Hafedh Mili|arXiv (Cornell University)|Jun 3, 2019
Software Engineering Research参考文献 20被引用数 4
ひとこと要約

本稿では、Java EEアプリケーションにおける5つの主要な依存関係同定の課題、特に言語間依存関係、隠れたコンテナーサービス、構成ファイルの解析を解決する静的コード解析手法を提案する。KDMメタモデルを活用し、MoDiscoにカスタムルールを拡張することで、Java、JSP、JSFコンポーネント間の依存関係を同定するDeJEEというツールを実装した。このツールは、MoDiscoに比べて100%の正確性と最大70.5%の高い再現率を達成した。

ABSTRACT

Identifying dependency call graphs of multilanguage software systems using static code analysis is challenging. The different languages used in developing today's systems often have different lexical, syntactical, and semantic rules that make thorough analysis difficult. Also, they offer different modularization and dependency mechanisms, both within and between components. Finally, they promote and--or require varieties of frameworks offering different sets of services, which introduce hidden dependencies, invisible with current static code analysis approaches. In this paper, we identify five important challenges that static code analysis must overcome with multilanguage systems and we propose requirements to handle them. Then, we present solutions of these requirements to handle JEE applications, which combine server-side Java source code with a number of client-side Web dialects (e.g., JSP, JSF) while relying on frameworks (e.g., Web and EJB containers) that create hidden dependencies. Finally, we evaluate our implementations of the solutions by developing a set of tools to analyze JEE applications to build a dependency call graph and by applying these tools on two sample JEE applications. Our evaluation shows that our tools can solve the identified challenges and improve the recall in the identification of multilanguage dependencies compared to standard JEE static code analysis and, thus, indirectly that the proposed requirements are useful to build multilanguage static code analysis.

研究の動機と目的

  • 多言語ソフトウェアシステム、特にJava EEアプリケーションにおける静的コード解析の5つの主要な課題を特定・解決すること。
  • 既存の単一言語および独立した言語解析ツールが、言語間依存関係やコンテナーサービス依存関係を漏れなく検出できないという限界を克服すること。
  • 言語に依存しないメタモデルを用いて、異種コンポーネント(Java、JSP、JSF)間の統一された依存関係コールグラフを構築すること。
  • ソースコードに明示されていないが、構成ファイルやコンテナーサービスを解析することで、依存関係検出の再現率を向上させること。
  • 実際のJEEアプリケーション(Java PetStoreおよびJSP Blog)を対象に実装と評価を行い、本手法の有効性を検証すること。

提案手法

  • 本手法は、OMGの知識発見メタモデル(KDM)を、プログラム要素と依存関係をモデル化するための言語に依存しない基盤として採用する。
  • カスタム変換ルールを定義し、多言語コード(Java、JSP、JSF)を解析・モデル化し、KDMモデルにマッピングする。
  • フレームワークの仕様書と文脈自由文法に基づいて、宣言的ルールを用いてコンテナーサービス依存関係を定式化する。
  • 構成ファイル(例:web.xml、faces-config.xml)を解析し、ソースコードに表現できない隠れた依存関係を抽出する。
  • EclipseプラグインとしてDeJEEツールを実装し、コンポーネント間の依存関係グラフを自動構築する。
  • Java用にKDMをサポートするMoDiscoを統合し、JSPおよびJSFコンポーネントの処理をカスタムパーサーとルールベースの依存関係推論で拡張する。

実験結果

リサーチクエスチョン

  • RQ1多言語ソフトウェアシステム、特にJava EEアプリケーションにおける静的コード解析において、主な課題は何であるか?
  • RQ2コンテナーサービスや構成ファイルによって抽象化された隠れた依存関係を、体系的に同定・モデル化する方法は何か?
  • RQ3統一されたKDMベースのモデルは、多言語システムにおける依存関係コールグラフの再現率と正確性をどの程度向上させ得るか?
  • RQ4MoDiscoなどの既存ツールと比較して、本手法は、コンponent間および言語間依存関係をどの程度効果的に検出できるか?
  • RQ5事前に見えなかった依存関係を検出することの実用的意義は何か?特に、プログラム理解とソフトウェア保守作業にどのような影響を与えるか?

主な発見

  • DeJEEツールは、多言語Java EEシステムの静的解析における5つの課題をすべて効果的に解決した。これには、言語間依存関係や隠れたコンテナーサービスが含まれる。
  • JSP BlogおよびJava PetStoreアプリケーションの両方において、DeJEEは依存関係検出で100%の正確性を達成した。
  • JSP Blogでは100%の再現率を達成したが、Java PetStoreでは高い再現率を達成し、MoDiscoを大きく上回った。
  • 2つの事例研究において、DeJEEはKDMエンティティインスタンスでMoDiscoに比べ70.5%、KDM関係インスタンスで58.5%の再現率向上を達成した。
  • 構成ファイルおよびコンテナーサービスの解析により、ソースコードに明示されていない依存関係を検出でき、実行時エラーのリスクを低減した。
  • Java、JSP、JSFのコンポーネントをKDMベースで統一することで、一貫性があり統合された依存関係コールグラフが構築可能となり、プログラム理解や保守作業に貢献した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。