Skip to main content
QUICK REVIEW

[論文レビュー] Program slicing techniques and its applications

N. Sasirekha, A. Edwin Robert|arXiv (Cornell University)|Aug 5, 2011
Software Testing and Debugging Techniques被引用数 8
ひとこと要約

本論文は、静的スライシング、動的スライシング、条件スライシング、準静的スライシングを含むプログラムスライシング技術について包括的なサーベイを提示し、デバッグ、保守、テストなどのソフトウェア工学タスクへの応用を示している。Javaを用いて実装された本研究では、前方スライシングおよび後方スライシングの手法を概説し、データフローおよび制御フローに基づいて関連するプログラムコンポONENTを特定するための構文的・意味的解析の重要性を強調している。

ABSTRACT

Program understanding is an important aspect in Software Maintenance and Reengineering. Understanding the program is related to execution behaviour and relationship of variable involved in the program. The task of finding all statements in a program that directly or indirectly influence the value for an occurrence of a variable gives the set of statements that can affect the value of a variable at some point in a program is called a program slice. Program slicing is a technique for extracting parts of computer programs by tracing the programs' control and data flow related to some data item. This technique is applicable in various areas such as debugging, program comprehension and understanding, program integration, cohesion measurement, re-engineering, maintenance, testing where it is useful to be able to focus on relevant parts of large programs. This paper focuses on the various slicing techniques (not limited to) like static slicing, quasi static slicing, dynamic slicing and conditional slicing. This paper also includes various methods in performing the slicing like forward slicing, backward slicing, syntactic slicing and semantic slicing. The slicing of a program is carried out using Java which is a object oriented programming language.

研究の動機と目的

  • ソフトウェア保守およびリエンジニアリングに適用可能なさまざまなプログラムスライシング技術を分析・分類すること。
  • スライシングがデータフローおよび制御依存関係に基づいて関連するコードセグメントを隔離することで、プログラムの理解をどのように向上させるかを調査すること。
  • 静的スライシング、動的スライシング、前方スライシング、後方スライシング、構文的スライシング、意味的スライシングといった異なるスライシング手法の有効性を、特定の変数に影響を与えるプログラムコンポーネントに焦点を当てて評価すること。
  • デバッグ、テスト、凝集度測定、プログラム統合におけるスライシングの実用的応用を示すこと。
  • Javaにおけるオブジェクト指向の原則を用いたスライシングの体系的アプローチを提供することにより、実世界のソフトウェア解析に応用可能であることを示すこと。

提案手法

  • 実行せずにデータ依存関係および制御依存関係に基づいてプログラムステートメントを分析する静的スライシングの適用。
  • 実際の実行時のデータフローアウトプットをトレースすることで、特定の実行ポイントにおける変数に影響を与えるステートメントを同定する動的スライシングの適用。
  • 変数の出現点からその定義ステートメントへと遡る依存関係をトレースする後方スライシングの使用。
  • 与えられたポイント以降に変数の値に影響を与える可能性のあるすべてのステートメントを特定する前方スライシングの使用。
  • ソースコードの構造に基づく構文的スライシングと、プログラムの意味的性質および実行コンテキストに基づく意味的スライシングの実装。
  • オブジェクト指向的構成要素がスライシングの正確性および関連性に与える影響を評価するために、Javaプログラムにおけるスライシング分析の実施。

実験結果

リサーチクエスチョン

  • RQ1ソフトウェア保守の過程で、静的スライシングと動的スライシングは、関連するプログラムコンポーネントを隔離する能力においてどのように異なるか?
  • RQ2条件スライシングおよび準静的スライシングは、大規模なソフトウェアシステムのデバッグおよびテストにおいて、実用的な利点をどのようにもたらすか?
  • RQ3構文的スライシングと意味的スライシングは、オブジェクト指向プログラムにおけるプログラム理解をどの程度向上させるか?
  • RQ4スライシング技術は、リエンジニアリングプロセスにおける凝集度測定およびプログラム統合をどのように向上させるか?
  • RQ5Javaのようなオブジェクト指向言語に適用された従来のスライシング技術に、どのような制限があるか?

主な発見

  • データフローおよび制御依存関係をトレースすることにより、プログラムスライシングは関連するコードセグメントを効果的に隔離し、デバッグおよび保守の効率を顕著に向上させる。
  • 実際のプログラム実行中に関連するステートメントを同定する際、動的スライシングは静的スライシングよりもより正確な結果を提供する。
  • 後方スライシングは、変数の値をその元になる場所へと遡ることで、デバッグにおいて特に効果的である。
  • 前方スライシングは、データ値がプログラム内でどのように伝搬されるかを理解するのを支援し、テストおよび影響分析に役立つ。
  • 意味的スライシングは、プログラム動作の文脈に配慮した分析を行うため、複雑なオブジェクト指向プログラムでは構文的スライシングを上回る性能を示す。
  • スライシング技術をソフトウェア保守ワークフローに統合することで、大規模なコードベースの理解および修正に要する時間と作業量が削減される。

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

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

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

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