JP6021109B2 - プログラム分析装置及び方法及びプログラム - Google Patents

プログラム分析装置及び方法及びプログラム Download PDF

Info

Publication number
JP6021109B2
JP6021109B2 JP2013105119A JP2013105119A JP6021109B2 JP 6021109 B2 JP6021109 B2 JP 6021109B2 JP 2013105119 A JP2013105119 A JP 2013105119A JP 2013105119 A JP2013105119 A JP 2013105119A JP 6021109 B2 JP6021109 B2 JP 6021109B2
Authority
JP
Japan
Prior art keywords
concept
program
formal
analysis
scenario
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013105119A
Other languages
English (en)
Other versions
JP2014225198A (ja
Inventor
剛志 大島
剛志 大島
俊介 宮田
俊介 宮田
星野 隆
隆 星野
敏 岡田
敏 岡田
広史 風戸
広史 風戸
元司 佐伯
元司 佐伯
晋平 林
晋平 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Tokyo Institute of Technology NUC
Original Assignee
Nippon Telegraph and Telephone Corp
Tokyo Institute of Technology NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp, Tokyo Institute of Technology NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013105119A priority Critical patent/JP6021109B2/ja
Publication of JP2014225198A publication Critical patent/JP2014225198A/ja
Application granted granted Critical
Publication of JP6021109B2 publication Critical patent/JP6021109B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、プログラム分析装置及び方法及びプログラムに係り、特に、形式概念分析と系列パターンマイニングを併用し、情報処理システムを構成する電子計算機向けのプログラムのソースコードのリバースエンジニアリングにおけるプログラム分析装置及び方法及びプログラムに関する。
様々な業務が電子計算機を利用した情報処理システムとして実現されている。これらの情報処理システムの動作は、プログラミング言語を使用したプログラムとして記述されている。プログラム言語で記述されたプログラムはソースコードと呼ばれる。
プログラミング言語は、電子計算機が解釈し実行することを目的としたものであるが、プログラムの保守や機能追加のための開発を実施する場合には、人間が既存のソースコードを読解し、プログラムの構造や処理の内容を理解する必要がある。係るプログラムを理解するための行為がリバースエンジニアリングである。
リバースエンジニアリングには様々な手法が存在するが、その中に形式概念分析を用いた手法が存在する。
形式概念分析(Formal Concept Analysis)は、数学的な束論(Lattice Theory)を応用した一分野である。オブジェクトの集合Gと、Gに属するオブジェクトが保有する属性の集合Mが有り、どのオブジェクトがどの属性を保有するのかを記述した対応表(形式文脈:Formal Context)が存在する場合に、Gの部分集合であるAとMの部分集合Bについて、Bの要素である属性の全てが、それぞれAの要素であるオブジェクトに保有され、かつ、Aの要素であるオブジェクトの全てに共通する(または、オブジェクトを共通して保有する)属性の集合がBに等しく、かつ、Bの要素である属性全てを保有するオブジェクトの集合がAに等しい、という規則を満たすAとBの組み合わせ(形式概念:Formal Concept)に分類する方法である。形式概念の分類にあたっては、ある形式概念(A1、B1)と別の形式概念(A2、B2)において、A2がA1の部分集合になっている場合には、B1はB2の部分集合になっており、(A1、B1)と(A2、B2)の間に半順序関係が定義できる。このような順序により関係づけられた形式概念の集合は、束の公理を満たすことから、数学的な束論の手法を適用することが可能になる。形式概念の集合を束として表現したものを、概念束(Concept Lattice)と呼ぶ。意味のわかりにくい形式文脈から、形式概念を抽出し、概念束を形成することで形式概念同士の関係を発見することが形式概念分析と呼ばれる手法である。
係る形式概念分析の手法により、ソースコードに含まれるプログラムの部品を分類することで、プログラムの構造や処理の内容を理解するリバースエンジニアリングを実施することが本発明の属する技術分野である。
形式概念分析の手法を利用して、リバースエンジニアリングを実施することの従来の技術としては、非特許文献1に示す技術が存在する。
当該技術では、プログラムを幾つかのシナリオに沿って起動した場合に、それらのシナリオに含まれるプログラムの特徴(Feature)を特定するとともに、その特徴を構成するプログラムの部品「モジュール」を特定する。モジュールとは、例えば手続き型言語における手続き(Procedure)や、オブジェクト指向言語におけるメソッド(Method)などである。
当該技術では、各々のシナリオをオブジェクトとし、シナリオを起動した場合に実行されるプログラムのモジュールを属性とみなして形式文脈を形成し、形式概念分析の手法を適用する。オブジェクトであるシナリオと、属性であるプログラムのモジュールとの間で形式概念を抽出し、概念束を形成することで、シナリオ群に含まれるプログラムの特徴(Feature)が形式概念分析の結果である形式概念として見つけ出せ、同時に概念であるところのプログラムの特徴が、どのような属性、すなわちプログラムのモジュールから構成されるのかを判別することができる。
更に本発明に関係するもう1つの背景技術に、系列パターンマイニングが存在する。系列パターンマイニング(Sequential Pattern Mining)は、非特許文献2により提唱された、順序を有する要素の列の集合から、頻出する要素の部分系列を検出する技術である。系列パターンマイニングを実施するためのアルゴリズムは、PrefixSpan(非特許文献3)、CloSpan(非特許文献4)、BIDE(非特許文献5)など複数が提唱されている。
系列パターンマイニングの手法を利用してリバースエンジニアリングを実施することの従来の技術としては非特許文献6が存在する。この技術は、ソフトウェアの複数の機能を実行した際の複数の実行トレースから、系列パターンマイニングを行ってモジュールの頻出系列を発見するというものである。この技術の問題点は頻出するものであれば全てのモジュールの頻出系列が結果として出力されるため、保守や理解の対象となるモジュールの頻出系列を見つけにくいということである。
Locating features in source code, Eisenbarth, T.; Koschke, R.; Simon, D.; IEEE Transactions on Software Engineering, Volume: 29 , Issue: 3, Digital Object Identifier: 10.1109/TSE.2003.1183929, Publication Year: 2003 , Page(s): 210 - 224. Mining sequential Patterns, Agrawal, R; Srikant, R.; 11th International Conference on Data Engineering (ICDE'95), Digital Object Identifier: 10.1109/ICDE.1995.380415, Publication Year: 1995 , Page(s): 3 - 14. PrefixSpan: mining sequential patterns efficiently by prefix-projected pattern growth, Pei, J.; Han, J.; Mortazavi-Asl, B.; Chen, Q.; Dayal, U.; Hsu, M.C.; 17th International Conference on Data Engineering (ICDE'01), Digital Object Identifier: 10.1109/ICDE.2001.914830, Publication Year: 2001, Page(s): 215 - 224. CloSpan: Mining Closed Sequential Patterns in Large Databases, X. Yan, J. Han, and R. Afshar,; SDM'03, San Francisco, CA, May 2003. BIDE: Efficient Mining of Frequent Closed Sequences, Wang, J.; Han, J.; 20th International Conference on Data Engineering (ICDE'04), Digital Object Identifier: 10.1109/ICDE.2004.1319986, Publication Year: 2004, Page(s): 79 - 90. Dynamic Analysis of Software Systems using Execution Pattern Mining, Hossein Safyallah and Kamran Sartipi ; Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC'06) Digital Object Identifier: 10. 1109/ICPC. 2006. 19, Publication Year: 2006, Page(s): 84 - 88.
非特許文献1により開示された従来技術では、プログラムを幾つかのシナリオに沿って動作させ、シナリオをオブジェクトとし、シナリオの中で実行されるプログラムの部品「モジュール」を属性とし、形式概念分析を行なうことにより、モジュールの部分集合が概念として抽出される。すなわち、シナリオの実行により個々のモジュールが起動されることだけしかわからない。このため、形式概念分析の手法を適用する目的である、プログラムの構造や処理の内容の理解に向けては限定的な情報が得られるに留まっている。したがって、抽出された特徴に含まれるモジュールについてそれぞれソースコードを読解し、関係を紐解く必要があった。
本発明は、上記の点に鑑みなされたもので、形式概念分析から得られる情報をより複雑なものとするとともに、抽出された特徴に関わるソースコード読解の手間を軽減することが可能なプログラム分析装置及び方法及びプログラムを提供することを目的とする。
上記の課題を解決するため、本発明(請求項1)は、プログラムの構造や処理の理解を支援するためのプログラム分析装置であって、
プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されている実行トレース記憶手段と、
前記シナリオをオブジェクトとし、前記トレース情報に出現するモジュールを属性とする形式文脈を抽出する形式文脈抽出手段と、
前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
前記概念束に含まれるモジュールを系列パターンマイニングの手法で分析し、モジュール間の依存関係を抽出する系列パターンマイニング手段と、を有する。
また、本発明(請求項2)は、前記系列パターンマイニング手段において、
前記概念束のうち理解したい形式概念を選択し、選択した該形式概念が関連するシナリオ群のトレース情報のみを入力として、該形式概念と関係するトレース情報と該トレース情報の部分系列となるモジュールとその頻出系列を出力する手段を含む。
情報システムの保守や機能拡充を実施する場合、その対象となる機能の実装箇所を特定し、それらの振舞いを素早く理解する必要が生じる。
上記のように本発明によれば、形式概念分析で特徴を抽出した後に、理解したい特徴が関係するシナリオのトレース情報のみを用いて系列パターンマイニングを実施するので、系列パターンマイニングを実施する際の入力の規模を削減することが可能となり、従来では系列パターンマイニングを適用することが出来ないような規模の実行トレースも解析可能となる。
従って、形式概念分析で抽出される特徴に含まれるモジュール間の実行順序関係を、ソースコードを読み解くことなく抽出でき、抽出された特徴に関わるソースコード読解の手間を軽減することが可能となる。特に近年の情報処理システムではオブジェクト指向言語が多用されており、従来の手続き型言語と比較して、理解したい機能に関係するモジュールがプログラム中に分散しているため、それらの特定や、それらの振舞い(実行順序)の理解が容易になるという効果が得られる。
また、Webフレームワークが使用されているようなプレゼンテーション層、アプリケーション層、データ層からなるWeb3層システムの理解に際しては、従来技術では出力できなかった、1つの機能に含まれるモジュール群の、プレゼンテーション層からアプリケーション層、アプリケーション層からデータ層、またはそれらの層を逆に跨ぐような実行順序関係を出力することが可能となる。従って、この様なWebアプリケーションの理解が容易になるという効果が得られる。
本発明の一実施の形態におけるプログラム分析装置の構成図である。 本発明の一実施の形態におけるプログラム分析装置の概要動作のフローチャートである。 本発明の一実施の形態における実行トレース記憶部の格納形式である。 本発明の一実施の形態におけるプログラム分析装置のステップ250の詳細なフローチャートである。 本発明の一実施の形態における分析の対象となるWebアプリケーションの例である。 本発明の一実施の形態におけるシナリオ実行により取得した実行トレース情報の例である。 本発明の一実施の形態における実行トレース情報から得られる形式文脈の例である。 本発明の一実施の形態における図7より得られる概念束の例である。 本発明の一実施の形態における実行トレースの部分系列の例である。 本発明の一実施の形態における図9の実行トレースの部分系列から得られる頻度2以上の部分系列である。 本発明の一実施の形態における図9の実行トレースからPrefixSpanにより得られる射影データベースである。 本発明の一実施の形態における図6の実行トレースからPrefixSpanにより得られる射影データベースである。
以下、図面と共に本発明の実施の形態を説明する。
本願発明では、前述の非特許文献1により開示された従来技術と同様、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるモジュールを特定する。シナリオをオブジェクト、実行されるモジュールを属性として形式文脈を作成する。この形式文脈に対し形式概念分析の手法を適用して、形式概念を抽出し、概念束および希薄な概念束を形成することで、プログラムの特徴としてモジュールの集合を見つけ出すことができる。そのモジュールの集合に系列パターンマイニングの手法を適用することにより、特徴に含まれるモジュールの実行順序の関係までを見つけ出すことを特徴とする。
最初に本明細書で用いる用語について説明する。
・機能:シナリオにより起動され、システム利用者が実施する操作を入力とし、その操作とプログラムにより記述された手順に従った処理が為され、その処理の結果が出力されるものをいう。例えば、ログイン機能の場合は、ユーザから入力されたID及びパスワードについて照合処理を行い、照合結果の出力や次の画面への移動を行う。
・理解したい機能:システム利用者が、目的を果たすためにシステム上で実施した操作により起動される、一連の機能のうち、選択した一機能を指す。
・形式概念分析(Formal Concept Analysis):数学の束論を応用した一分野(例えば、http://www.upriss.org.uk/fca/、http://en.wikipedia.org/wiki/Formal_concept_analysis参照)。
・オブジェクト:形式概念分析が分析の対象とする物事。非特許文献1、本実施の形態では、プログラムの機能を起動する入出力の集合(シナリオ)。
・属性:形式概念分析の対象であるオブジェクトが必ず保有する性質。本発明では、シナリオにより起動されるモジュール。実行トレースに出現したモジュールをオブジェクト(シナリオ)の属性として扱う。
・形式文脈:どのオブジェクトが、どの属性を保有するのかを記述した対応表。
・形式概念:形式概念分析により発見される、オブジェクトの部分集合が保有する属性の部分集合。本発明では、プログラムの機能を実現するモジュールを形式概念として発見する。
・概念束:形式概念を数学の束(そく)として表現したもの。
・希薄な概念束:概念束を、下位概念との属性の差分のみを記述する形で表現したもの。
・モジュール:プログラムを構成する部品。サブルーチンや、ブラウザに送信されるHTML文書などが代表例だが、これに限定されない。当明細書では、プログラムの実行に伴い起動される画面、処理、テーブルが含まれる。
・シナリオ:プログラムの入力装置の集合。本発明や従来技術では、プログラムの機能を起動し、モジュールのトレースを取得するために使用する。取得したシナリオによるトレース情報を形式概念分析のオブジェクトとして扱う。
・系列パターンマイニング:与えられた系列の集合から頻出する部分系列をパターンとして抽出する手法。系列の集合と、部分系列の最小出現頻度を入力とし、系列の集合内の最小出現頻度を満たす部分系列(頻出系列)が出力となる。
・系列:順序を有する要素の列。
・部分系列:系列からその一部の要素を抜き出し、順序を保ったまま並べた列。
・実行トレース:シナリオにより起動されたモジュールの情報が、起動された順に並んだ系列であり、シナリオを起動してログを録ることにより作成され、形式概念分析及び系列パターンマイニングの入力として使用される。
以下に、本実施の形態を詳細に説明する。
本発明では、
1) 理解の対象となるソースコード;
2) プログラムへの入力操作の集合であり、プログラムの典型的な機能を網羅するシナリオ群;
3) シナリオを起動した際に、実行されるモジュールの実行トレースを取得する手段;
4) シナリオをオブジェクトとし、シナリオにより実行されるモジュールを属性とする形式文脈を抽出する手段;
5) 形式文脈を形式概念分析の手法で分析する手段;
6) 理解したい形式概念を選択し、その形式概念に固有でない実行トレースを判別、除去する手段;
7) 系列パターンマイニングを実行するための手段;
を使用することが最良の形態である。1)に対し、2)を定義し、3)によりトレースを取得する。さらにトレースを用いて、4)としてシナリオをオブジェクト、シナリオ実行時に実行されるモジュールを属性とする形式文脈を構成する。これに対し5)を施して、6)により必要の無い情報を判別除去し、7)によりモジュール間の依存関係(実行順序)分析を行なうことで、本願発明が実施可能となる。
1)の理解の対象となるソースコードとして、例えば、Java(登録商標)やJavaScript(登録商標)などのプログラミング言語で記述されたWebアプリケーションのソースコードが該当する。
2)のシナリオ群として、例えば、1)のプログラムの操作説明書などを元に、プログラムが実現する機能を起動するための操作手順が該当する。
3)の依存関係を特定する手段としては、例えば、プログラムの実行を追跡(トレース)することにより、どのモジュールがいつ実行されたかを特定することが可能な、デバッガと呼ばれるツールが利用可能である。デバッガには様々なものが存在するが、例えばJava(登録商標)のデバッガであるjdbや、ウェブサイトのHTML、XML、JavaScript(登録商標)などの記述や修正、デバッグなどを行うことができるFirebugなどが知られている。
5)の形式概念分析の手法の例としては、形式概念分析を実施するためのツールが複数存在し、Concept Explorer(http://conexp.sourceforge.net/)、ToscanaJ(http://toscanaj.sourceforge.net/)はオープンソースプログラムとして公開されている。
図1は、本発明の一実施の形態におけるプログラム分析装置の構成を示す。
同図に示すプログラム分析装置100は、トレース部111、トレース結合部112、系列パターン抽出部113、形式文脈抽出部114、概念分析部115、部分系列抽出部116を有するCPU110、形式文脈記憶部121を格納したメモリ120、トレースファイルを格納した実行トレース記憶部131を有する磁気ディスク130、から構成される。
以下に、形式概念分析及び系列パターンマイニングを用いたプログラム分析装置の動作を説明する。
図2は、本発明の一実施の形態におけるプログラム分析装置の概要動作のフローチャートである。
ステップ210) CPU110のトレース部111において、解析対象プログラムの典型的な機能を網羅するシナリオ群(入力操作の集合)を解析対象プログラムに入力として与え、そのシナリオに沿ってプログラムを実行することで、その際に起動されるモジュールが判別され、シナリオ群の実行に関する各層でのトレース情報が磁気ディスク上の実行トレース記憶部131に出力される。なお、トレース部111として、Firebug等のデバッガを用いるものとする。また、本明細書では多層システムの簡単な例としてプレゼンテーション層、アプリケーション層、データ層からなるWeb3層システムを用いる。また、本明細書におけるシナリオとは、ユーザ情報登録、商品閲覧処理、商品購入処理を想定する。
ステップ220) ステップ210にて取得した、各層における実行トレース情報を入力とし、CPU110のトレース結合部112にて実行された時刻をもとに結合し、シナリオ実行時の各層の実行トレースを一つの実行トレースファイルに集約し、磁気ディスク130の実行トレース記憶部131に出力する。実行トレース記憶部131における格納形式の例を図3に示す。同図の実行トレース記憶部131には、シナリオを実行した際の実行トレースが格納されており、nは全シナリオ数、mは最も長い実行トレースの長さであり、bijはシナリオoiを実行した際に、j番目に実行されたモジュールを表す。
ステップ230) CPU110の形式文脈抽出部114において、ステップ220で作成した実行トレースを入力として、シナリオを「オブジェクト」、実行トレース中に出現するモジュールを「属性」として表にすることで、「形式文脈」が出力として得られる。形式文脈はメモリ120上の形式文脈記憶部121に出力する。
ステップ240) CPU110の概念分析部115は、ステップ230で形式文脈記憶部に出力された形式文脈を入力とし、形式概念分析を実施することで、出力として「概念束」を得る。ここで、概念分析部115として具体的には、Concept Explorer、Toscana-J等を用いる。
ステップ250) CPU110の部分系列抽出部116は、ステップ240にて得られた概念束のうち、人が理解したい特徴に相当する形式概念を選択するという操作と、実行トレースの集合を入力として、選択した形式概念に関係の無い実行トレースやその部分系列を判別、除去することで、選択した形式概念に含まれるモジュールのみが含まれる実行トレースの部分系列を実行トレース部分系列記憶部122上に出力として得ることができる。
ステップ260) CPU110の系列パターン抽出部113は、ステップ250にて得られた実行トレースの部分系列と、取出したい部分系列の最小出現頻度を入力として、系列パターンマイニングを実行し、理解したい特徴に相当する形式概念に含まれているモジュールの頻出系列を計算する。これにより、特徴とそれを実現するモジュールと、そのモジュールの実行順序を自動で出力することが可能となる。
次に、上記のステップ250の処理を詳細に説明する。
図4は、本発明の一実施の形態におけるプログラム分析装置のステップ250の詳細なフローチャートである。
ステップ310) 部分系列抽出部116は、ステップ240で得た概念束が入力されると、理解したい特徴に相当する形式概念を選択し、選択した形式概念に含まれるモジュールの集合と、選択した形式概念が関係するシナリオの集合を出力する。
ステップ320) 全ての実行トレースが入力されると、シナリオの順に、シナリオと対応する実行トレースを取出すループを実行し、実行トレースを内側のループに出力として渡す。
ステップ330)ステップ320で取出された実行トレースに対応するシナリオ、及びステップ310で選択した形式概念が関係するシナリオの集合が入力されると、形式概念が関係するシナリオの集合に、外側のループから渡された実行トレースに対応するシナリオが含まれるかを判定し、含まれていた場合は、外側ループから渡された実行トレースをステップ340のループに引渡す。そうでない場合は、ステップ340のループに入らずステップ320に戻り、次のシナリオを取出す。
ステップ340)ステップ330から実行トレースが渡されると、入力された実行トレースに含まれるモジュールを順に取り出すループを実行し、モジュールをループの内側のステップ350に出力として渡す。
ステップ350)ステップ340からモジュールが渡されると、入力がnullかどうかを判断し、入力がnullでない場合ステップ360にモジュールを渡す。入力がnullである場合は、ステップ340に戻り次のモジュールを取出す。
ステップ360)ステップ350からモジュールが入力されると、当該モジュールが、ステップ310で選択した形式概念に含まれるモジュールの集合に含まれるかどうかを判断し、含まれていた場合は、ステップ370へモジュールを渡す。含まれていなかった場合は、ステップ340に戻り次のモジュールを取出す。
ステップ370)ステップ360からモジュールが入力されると、入力されたモジュールを実行トレース部分系列記憶部122に書込む。
以下に具体的な例を示す。
図5に示すWebアプリケーション及びシナリオを以下に説明する。
このプログラムは、5つの画面(p1−p5)、5つのメソッド(m1−m5)、及び3つのテーブル(t1−t3)から構成される。
ユーザ情報登録シナリオ(o1)では、ログイン画面(p1)からユーザ情報登録画面(p5)に移動し、ログイン情報や商品送付先情報等を入力し登録ボタンを押下すると登録処理(m5)が実行され、ログイン情報テーブル(t1)及びユーザ情報テーブル(t3)に各情報が格納され、ログイン画面(p1)に戻る。
商品閲覧シナリオ(o2)では、ログイン画面(p1)から、ログインせずに商品一覧画面(p2)に遷移する。その際、商品一覧表示処理(m2)が商品情報を商品情報テーブル(t2)から呼出す。その後、商品情報一覧から任意の商品を選択しその詳細を表示する商品詳細画面(p3)に遷移する。その際、商品詳細表示処理(m3)が商品の詳細情報を商品情報テーブル(t2)から呼出す。
商品購入シナリオ(o3)では、ログイン画面(p1)からログインし商品一覧画面(p2)に遷移する。その際、ログイン処理(m1)がログイン情報テーブル(t1)からユーザのログイン情報を呼出してユーザの入力と照合し、更に商品一覧表示処理(m2)が商品情報テーブル(t2)から商品一覧情報を取得した後、商品一覧画面(p2)に遷移する。次に、商品一覧画面から任意の商品の「1クリック購入ボタン」を押下し購入完了画面(p4)に遷移する。その際、購入処理(m4)がユーザ情報テーブル(t3)からクレジットカード情報、送付先住所、氏名等を呼出し決済処理を行なう。
図5に示すようなWebアプリケーションに対し、前記の3つのシナリオを実行すると、図6のような実行トレース情報を取得することが出来る。シナリオをオブジェクト、モジュールを属性とすると、図6実行トレース情報から図7のような形式文脈を取得することができる。これに形式概念分析を施すことにより図8のような概念束が得られる。
図8中の丸aで示される形式概念に系列パターンマイニングを適用する例を以下に説明する。
この形式概念に相当する特徴には、ログイン画面(p1)、商品一覧画面(p2)、商品一覧表示処理(m2)、商品情報テーブル(t2)の計4つのモジュールが含まれる。また、この形式概念は商品閲覧シナリオ(o2)、及び商品購入シナリオ(o3)には固有な形式概念であるが、ユーザ情報登録シナリオ(o1)に固有な形式概念ではない。従って、図6に示す実行トレースからステップ250に従って、ユーザ情報登録シナリオ(o1)の実行トレースを判別、除去し、更に残った実行トレースから、以上4つのモジュール(p1,p2,m2,t2)以外のモジュールを判別、除去すると、図9に示すように実行トレースの部分系列が出力される。図9の例において、除去されたシナリオの実行トレースは斜字で示している。出力された実行トレースと、最小出現頻度=2という情報を入力として、例えば、非特許文献3のアルゴリズムを用いて系列パターンマイニングを実施すると図10のように結果の部分系列が出力される。前記の4つのモジュール(p1,p2,m2,t2)が含まれる部分系列として、<p1,m2,t2,p2> : 2 を見つけることができ、これらのモジュールはこの様な順序で実行されるという依存関係を知ることが出来る。なお、ここでは得られるモジュールの実行順序のパターンと、その頻度を用いて、「<パターン> : 頻度」と表記している。
前記の結果を得る際、非特許文献3を用いると具体的には以下の様な計算手順を踏むこととなる。なお、以下の具体的な手順は、非特許文献7(シーケンシャルパターンマイニングを用いたコーディングパターン抽出,石尾隆,伊達浩典,三宅達也,井上克郎,情報処理学会論文誌 Vol.50 No.2 860-871(Feb.2009))を参考にして説明する。最初に、図9に示す不要な実行トレースの部分系列を除去した後のo2、o3からなる実行トレースに出現する、各モジュールの出現回数(そのモジュールを含む実行トレースの数)を数え上げる。最小出現頻度(ここでは2回とする)以上のモジュールを長さ1のパターンとすると、<p1> : 2,<m2> : 2,<t2> : 2,<p2> : 2,が得られる。PrefixSpanでは、長さkのパターンから長さk+1のパターンを構築する手順を、新たなパターンが抽出されなくなるまで繰り返し実行する。長さkのパターンに対して射影データベースを作成する。これは実行トレースの各実行系列に対しパターンの最初の出現以降の要素の列だけを取出す操作である。例えば、前記のパターン<p1>に対する射影データベースは <m2,t2,p2,t2> と <m2,t2,p2> の2つの系列となる。次に、得られた射影データベース中の各モジュールの出現回数を数え、最低出現回数(ここでは2回)以上の配列に出現したモジュールを用いて長さk+1のパターンを構築する。先程の p1 に関する射影データベースでは、m2、t2、p2が2つの系列に出現していることから、<p1,t2> : 2,<p1,m2> : 2,<p1,p2> : 2というパターンが得られる。図9から得られる長さkのパターン(prefix)、それに関する射影、そして新たに得られる長さk+1のパターンを図11に示す。記号φは射影の結果が空であることを意味する。
なお、本発明のステップ250を踏まずに、図6に示す実行トレースを用いて系列パターンマイニング(PrefixSpan)を実施すると、図12のような射影データベースを作成する必要があり計算量が増加することがわかる。
入力の規模に対する系列パターンマイニングの時間計算量は、用いるアルゴリズムや実行トレース中のモジュール列の出現の仕方に依存するが、一般的に非特許文献4のFigure 8に示されるように、入力となる系列の数に対して非線型に増加することが知られている。従って、前記の目的を果たす際、本発明により多大な効果を期待することができる。
また、ここで特に対象WebアプリケーションにWebフレームワークが用いられていたとすると、<p1,m2>、<m2,t2>、<t2,p2>のような、画面−処理、処理−テーブル間の依存関係は先行技術では自動で抽出することはできず、人手でコードを読解することになる。
上記の図1に示すプログラム分析装置の各構成要素の動作をプログラムとして構築し、プログラム分析装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
情報処理システムを構成するプログラムの機能拡充や更改を実施する際、対象システムについて以下のような事項が想定される。
1)現行のプログラムについて正しく記述した最新のドキュメントが存在しない;
2)対象とする情報システムがミドルウエアやプラットフォーム製品を多用している;
以上の様な情報システムをリバースエンジニアリングを用いて理解する際には、対象システムのアプリケーション部分のトレース情報を取得しても、どのような仕組み・因果関係でアプリケーションが実行されるのか判らない場合がある。例えば、Webフレームワークを用いたシステムにおいて、画面‐メソッド間の依存関係をWebフレームワークが司っており、因果関係がソースコードを読解することでは判らない場合等が挙げられる。このような場合、保守者によるプログラムの構造や処理内容の理解を支援するために従来技術や、本発明を使用することが、産業上の利用方法として想定される。
最初に不完全な設計ドキュメントの記載や、それまで当該情報処理システムを使用していた利用者へのヒアリングなどを通じて、当該情報処理システムが有するであろう機能を利用するためのシナリオ群を作成する。
シナリオ群を実行し、形式概念分析の手法により、互いに関連するモジュールの集合をプログラムの特徴(Feature)として発見する。
プログラムの特徴として発見されたモジュール集合に、系列パターンマイニング手法を施すことにより、特徴を構成するモジュールの振舞いを理解することができる。
設計ドキュメントに記載されている機能に関わるモジュールの集合、及び振舞いが発見された場合には、ドキュメントに記載された機能の実装箇所が特定される、という効果が生じる。
モジュールの集合及び振舞いが発見されたが、現行と異なる設計ドキュメントに記載された機能とは無関係な場合は、新規に追加された機能及び振舞いであるため、設計ドキュメントへの追加を行なう。
このように、既存プログラムの保守にむけて形式概念分析、及び系列パターンマイニングの手法を利用することは、
1) 設計ドキュメントに記載された機能の、プログラムにおける実装箇所を特定する;
2) 特徴として得られたモジュールの実装状況の分析にもとづき、設計ドキュメントの修正に資することができる;
という効果を求める産業上の利用可能性がある。
100 プログラム分析装置
110 CPU
111 トレース部
112 トレース結合部
113 系列パターン抽出部
114 形式文脈抽出部
115 概念分析部
116 部分系列抽出部
120 メモリ
121 形式文脈記憶部
122 実行トレース部分系列記憶部
130 磁気ディスク
131 実行トレース記憶部

Claims (5)

  1. プログラムの構造や処理の理解を支援するためのプログラム分析装置であって、
    プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されている実行トレース記憶手段と、
    前記シナリオをオブジェクトとし、前記トレース情報に出現するモジュールを属性とする形式文脈を抽出する形式文脈抽出手段と、
    前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
    前記概念束に含まれるモジュールを系列パターンマイニングの手法で分析し、モジュール間の依存関係を抽出する系列パターンマイニング手段と、
    を有することを特徴とするプログラム分析装置。
  2. 前記系列パターンマイニング手段は、
    前記概念束のうち理解したい形式概念を選択し、選択した該形式概念が関連するシナリオ群のトレース情報のみを入力として、該形式概念と関係するトレース情報と該トレース情報の部分系列となるモジュールとその頻出系列を出力する手段を含む
    請求項1記載のプログラム分析装置。
  3. プログラムの構造や処理の理解を支援するためのプログラム分析方法であって、
    プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されている実行トレース記憶手段と、
    形式文脈抽出手段、概念分析手段、系列パターンマイニング手段を有する装置において、
    前記形式文脈抽出手段が、前記シナリオをオブジェクトとし、前記トレース情報に出現するモジュールを属性とする形式文脈を抽出する形式文脈抽出ステップと、
    前記概念分析手段が、前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析ステップと、
    前記系列パターンマイニング手段が、前記概念束に含まれるモジュールを系列パターンマイニングの手法で分析し、モジュール間の依存関係を抽出する系列パターンマイニングステップと、
    を行うことを特徴とするプログラム分析方法。
  4. 前記系列パターンマイニングステップにおいて、
    前記概念束のうち理解したい形式概念を選択し、選択した該形式概念が関連するシナリオ群のトレース情報のみを入力として、該形式概念と関係するトレース情報と該トレース情報の部分系列となるモジュールとその頻出系列を出力する
    請求項3記載のプログラム分析方法。
  5. コンピュータを、
    請求項1または2記載のプログラム分析装置の各手段として機能させるためのプログラム分析プログラム。
JP2013105119A 2013-05-17 2013-05-17 プログラム分析装置及び方法及びプログラム Active JP6021109B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013105119A JP6021109B2 (ja) 2013-05-17 2013-05-17 プログラム分析装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013105119A JP6021109B2 (ja) 2013-05-17 2013-05-17 プログラム分析装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2014225198A JP2014225198A (ja) 2014-12-04
JP6021109B2 true JP6021109B2 (ja) 2016-11-02

Family

ID=52123817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013105119A Active JP6021109B2 (ja) 2013-05-17 2013-05-17 プログラム分析装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6021109B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019075637A1 (zh) * 2017-10-17 2019-04-25 深圳中兴力维技术有限公司 输入输出请求行为的检测方法及装置、存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2008096632A1 (ja) * 2007-02-05 2010-05-20 日本電気株式会社 オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体
JP5045517B2 (ja) * 2008-03-25 2012-10-10 富士通株式会社 設計書作成プログラム、該装置、及び該方法

Also Published As

Publication number Publication date
JP2014225198A (ja) 2014-12-04

Similar Documents

Publication Publication Date Title
Moran et al. Machine learning-based prototyping of graphical user interfaces for mobile apps
US9928155B2 (en) Automated anomaly detection service on heterogeneous log streams
JP5725623B2 (ja) プログラム分析装置及び方法及びプログラム
JP5582540B2 (ja) グラフ構造を有するデータから頻度の高い部分構造を抽出する方法、その装置およびプログラム
Acher et al. Vivid: A variability-based tool for synthesizing video sequences
JP6021109B2 (ja) プログラム分析装置及び方法及びプログラム
Lenka et al. Comparative analysis on automated testing of web-based application
JP5447054B2 (ja) データ生成方法,データ生成装置,およびデータ生成プログラム
Wienke et al. Performance regression testing and run-time verification of components in robotics systems
Nabuco et al. Inferring ui patterns with inductive logic programming
Popp Comprehensive support of the lifecycle of machine learning models in model management systems
Gallina et al. Ontology-based identification of commonalities and variabilities among safety processes
Raigoza et al. Browser Performance of JavaScript Framework, SAPUI5 & jQuery
JP6287506B2 (ja) データベースアクセス制御プログラム、データベースアクセス制御方法、及び情報処理装置
Guo et al. A business process explorer: recovering and visualizing e-commerce business processes
JP2010287143A (ja) 記事整理システム
Moosavi et al. Indexing rich internet applications using components-based crawling
Jiang et al. Replacing code metrics in software fault prediction with early life cycle metrics
Dramski Missing data problem in the event logs of transport processes
Noughi et al. Conceptual interpretation of SQL execution traces for program comprehension
Cui et al. REMS: Recommending Extract Method Refactoring Opportunities via Multi-view Representation of Code Property Graph
Parulian et al. or2yw: Modeling and Visualizing OpenRefineHistories as YesWorkflow Diagrams
Dolques et al. Fixing Generalization Defects in UML Use Case Diagrams.
CN117406990B (zh) 页面生成方法、装置、电子设备及计算机可读存储介质
Zoppi et al. A tool for evolutionary threat analysis of smart grids

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160927

R150 Certificate of patent or registration of utility model

Ref document number: 6021109

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250