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

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

Info

Publication number
JP5725623B2
JP5725623B2 JP2012107121A JP2012107121A JP5725623B2 JP 5725623 B2 JP5725623 B2 JP 5725623B2 JP 2012107121 A JP2012107121 A JP 2012107121A JP 2012107121 A JP2012107121 A JP 2012107121A JP 5725623 B2 JP5725623 B2 JP 5725623B2
Authority
JP
Japan
Prior art keywords
program
concept
scenario
formal
module
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.)
Expired - Fee Related
Application number
JP2012107121A
Other languages
English (en)
Other versions
JP2013235398A (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 JP2012107121A priority Critical patent/JP5725623B2/ja
Publication of JP2013235398A publication Critical patent/JP2013235398A/ja
Application granted granted Critical
Publication of JP5725623B2 publication Critical patent/JP5725623B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム分析装置及び方法及びプログラムに係り、特に、形式概念分析を適用した情報処理システムを構成する電子計算機向けのプログラムのソースコードのリバースエンジニアリングにおけるプログラム分析装置及び方法及びプログラムに関する。
様々な業務が電子計算機を利用した情報処理システムとして実現されている。これらの情報処理システムの動作は、プログラミング言語を使用したプログラムとして記述されている。プログラム言語で記述されたプログラムはソースコードと呼ばれる。
プログラミング言語は、電子計算機が解釈し実行することを目的としたものであるが、プログラムの保守や機能追加のための開発を実施する場合には、人間が既存のソースコードを読解し、プログラムの構造や処理の内容を理解する必要がある。かかるプログラムを理解するための行為がリバースエンジニアリングである。
リバースエンジニアリングには様々な手法が存在するが、その中に形式概念分析を用いた手法が存在する。
形式概念分析(Formal Concept Analysis)は、数学的な束論(Lattice Theory)を応用した一分野である。オブジェクトの集合Gと、Gに属するオブジェクトが保有する属性の集合Mが有り、どのオブジェクトがどの属性を保有するのかを記述した対応表(形式文脈:Formal Context)が存在する場合に、Gの部分集合であるAとMの部分集合Bについて、Bの要素である属性の全てが、それぞれAの要素であるオブジェクトに保有され、かつAの要素以外のオブジェクトからは保有されない、という規則を満たすAとBの組み合わせ(形式概念:Formal Concept)に分類する方法である。形式概念の分類にあたっては、ある形式概念(A1、B1)と別の形式概念(A2、B2)において、A2がA1の部分集合になっている場合には、B2もB1の部分集合になっており、(A1、B1)と(A2、B2)の間に半順序関係が定義できる。このような順序により関係づけられた形式概念の集合は、束の公理を満たすことから、数学的な束論の手法を適用することが可能になる。形式概念の集合を束として表現したものを、概念束(Concept Latitce)と呼ぶ。意味のわかりにくい形式文脈から、形式概念を抽出し、概念束を形成することで形式概念同士の関係を発見することが形式概念分析と呼ばれる手法である。
係る形式概念分析の手法により、ソースコードに含まれるプログラムの部品を分類することで、プログラムの構造や処理の内容を理解するリバースエンジニアリングを実施することが本発明が属する技術分野である。
当該リバースエンジニアリングを実施することの従来の技術としては、非特許文献1に示す技術が存在する。
当該技術では、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるプログラムの部品「モジュール」を特定する。モジュールとは、例えば手続き型言語における手続き(Procedure)や、オブジェクト指向言語におけるメソッド(Method)などである。各々のシナリオをオブジェクトとし、シナリオを起動した場合に実行されるプログラムのモジュールを属性とみなして形式文脈を形成し、形式概念分析の手法を適用することを提案している。すなわち、オブジェクトであるシナリオと、属性であるプログラムモジュールとの間で形式概念を抽出し、概念束を形成することで、プログラムの特徴(Feature)を見つけ出せるとしている。
図1に、従来技術の処理のフローを示す。
ステップ1) プログラムを実行すると、実行されるモジュールが判別できるようなトレース手段を用意する。トレース手段としては例えば、gdb等がある。
ステップ2) プログラムの機能を起動する入力操作の集合(シナリオ)を、プログラムの典型的な機能を網羅するように用意し、実行してトレース群を取得する。ここでシナリオの例としては、登録処理、参照処理、削除処理等がある。
ステップ3) シナリオをオブジェクトとし、実行されるモジュールの出現を「属性」として、形式概念分析の入力である「形式文脈」とする。
ステップ4) 形式概念分析の手法を適用し、「概念束」を得る。ここで、形式概念分析の手法としては、Concept Explorer、Toscana-J等がある。
ステップ5) 概念束のノードに含まれるモジュールより、機能とそれを実現するモジュールを得る。
例えば、図2に示すようなプログラム1に対し、適当なシナリオ(登録、参照、削除)を定義すると、図3に示すような形式文脈が抽出される。これに対し、形式概念分析の手法を適用すると、図4に示す形式概念が抽出され、これに対する概念束を形成すると、図5が得られる。図5の概念束に対し、各ノードの概念間の差分を示す形で表現の変換を行なうと、希薄(sparse)な概念束として図6が得られる。この結果、
シナリオ1だけが有する特徴:{m、m
シナリオ2だけが有する特徴:{m
シナリオ3だけが有する特徴:{m、m
シナリオ2と3が共通に有する特徴:{m
シナリオ1、2、3が共通に有する特徴:{m、m、m
が抽出される。これにより、各モジュールがどのような状況において実行されるかを理解することができる。
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
しかしながら、非特許文献1により開示された従来技術では、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるプログラムの部品「モジュール」を属性としており、形式概念分析を行なうことにより、モジュールの部分集合が概念として抽出される。
ここで抽出される概念の中では、シナリオの起動により個々のモジュールが実行されることだけしかわからない。例えば、シナリオ1、2、3に共通する特徴:{m、m、m}が抽出されるが、特徴を構成する各々の属性であるモジュールのm、m、mがどのような関係にあるのかは判らない。このため、形式概念分析の手法を適用する目的である、プログラムの構造や処理の内容の理解に向けては限定的な情報が得られるに留まっている。したがって、抽出された特徴に含まれるモジュールについてそれぞれソースコードを読解し、関係を紐解く必要があった。
本発明は、上記の点に鑑みなされたもので、形式概念分析に得られる特徴から得られる情報をより複雑なものとするとともに、抽出された特徴に関わるソースコード読解の手間を軽減することが可能なプログラム分析装置及び方法及びプログラムを提供することを目的とする。
上記の課題を解決するため、本発明のプログラムの構造や処理の理解を支援するためのプログラム分析装置は、
プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段と、
理解の対象となるソースコードが入力されると、前記トレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定手段と、
前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出手段と、
前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
を有する。
上記のように本発明によれば、特徴に含まれるモジュールについてソースコードを読み解き、モジュールの関係を対応付けることなく、形式概念分析で得られる特徴からの情報をより複雑・高度なものとするとともに、抽出された特徴に関わるソースコード読解の手間を軽減することが可能となる。
従来技術の形式概念分析のフローチャートである。 分析対象となるプログラム1と、モジュール(m)の呼び出し関係の例である。 図2のプログラム1により抽出された形式文脈1の例である。 抽出された形式文脈1に対する形式概念1の例である。 形式概念から形成された概念束1の例である。 希薄な概念束1の例である。 本発明の一実施の形態におけるプログラム分析装置の構成図である。 本発明の一実施の形態におけるデータの流れを示す図である。 本発明の一実施の形態におけるプログラム分析装置の概要動作のフローチャートである。 本発明の一実施の形態における図9のS200の依存関係特定部120の詳細動作のフローチャートである。 本発明の一実施の形態における図10のアルゴリズムの例である。 本発明の一実施の形態における図9のS300の詳細動作のフローチャートである。 本発明の一実施の形態における図12のフローのアルゴリズムの例である。 本発明の一実施の形態における抽出された形式文脈2の例である。 本発明の一実施の形態における形式文脈2に対する形式概念2の例である。 本発明の一実施の形態における概念束2の例である。 本発明の一実施の形態における希薄な概念束2の例である。
以下、図面と共に本発明の実施の形態を説明する。
本願発明では、非特許文献1により開示された従来技術と同様、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるモジュールを特定するとともに、そのモジュールの依存関係も特定する。非特許文献1の手法ではシナリオをオブジェクト、実行されるモジュールを属性としたのに対し、本願発明では、シナリオをオブジェクト、実行されるモジュールとその依存関係を属性とし、形式文脈とすることを特徴とする。この形式文脈に対し、形式概念分析の手法を適用し、形式概念を抽出し、概念束および希薄な概念束を形成することで、プログラムの特徴として、モジュールの実行に加え、モジュール間の依存関係の集合を見つけ出すことを特徴とする。
最初に本明細書で用いる用語について説明する。
・形式概念分析(Formal Concept Analysis):数学の束論を応用した一分野(例えば、http://www.upriss.org.uk/fca/,http://en.wikipedia.org/wiki/Formal_concept_analysis参照)。
・オブジェクト:形式概念分析が分析の対象とする物事。非特許文献1、本実施の形態では、プログラムの機能を起動する入出力の集合(シナリオ)。
・属性:形式概念分析の対象であるオブジェクトが必ず保有する性質。本発明では、シナリオにより起動されるモジュールと、モジュールの依存関係。トレースに出現した依存関係をオブジェクト(シナリオ)の属性として扱う。従来技術では、シナリオにより起動されるモジュールであり、トレースに出現したモジュールを、オブジェクト(シナリオ)との属性として扱う。
・形式文脈:どのオブジェクトが、どの属性を保有するのかを記述した対応表。
・形式概念:形式概念分析により発見される、オブジェクトの部分集合が保有する属性の部分集合。本発明では、プログラムの機能を実現するモジュールとモジュール間の依存関係を、形式概念として発見する。従来技術では、プログラムの機能を実現するモジュールを形式概念として発見する。
・概念束:形式概念を数学の束(そく)として表現したもの。
・希薄な概念束:概念束を、下位ノードとの属性の差分のみを記述する形で表現したもの。
・モジュール:プログラムを構成する部品。サブルーチンや、ブラウザに送信されるHTML文書などが代表例だが、これに限定されない。
・シナリオ:プログラムの入力装置の集合。本発明や従来技術では、プログラムの機能を起動し、モジュールのトレースを取得するために使用する。取得したシナリオによるトレース情報を形式概念分析のオブジェクトとして扱う。
・依存関係:あるモジュールが起動されるために、必要な別モジュールが存在する場合、あるモジュールは別モジュールとの間に依存関係があると呼ぶ。あるモジュールの呼び出し元(Caller)は、典型的な依存元である。
・出現:シナリオのトレースに、あるモジュールが起動された事実や、依存関係が存在した事実が記録されている場合、そのモジュールや、依存関係が出現したと呼ぶ。
以下に、本実施の形態を詳細に説明する。
本発明では、
1) 理解の対象となるソースコード;
2) プログラムへの入力操作の集合であり、プログラムの典型的な機能を網羅するシナリオ群;
3) シナリオを起動した際に、実行されるモジュールとモジュールの依存関係を特定する手段;
4) シナリオをオブジェクトとし、シナリオにより実行されるモジュールとモジュールの依存関係を属性とする形式文脈を抽出する手段、
5) 形式文脈を形式概念分析の手法で分析する手段;
を使用することが最良の形態である。1)に対し、2)を定義し、3)により依存関係を特定する。さらに依存関係を用いて、4)としてシナリオをオブジェクト、実行されるモジュールとその依存関係を属性とする形式文脈を構成する。これに対し5)により分析を行なうことで、本願発明が実施可能となる。
1)の理解の対象となるソースコードとして、例えば、Cなどのプログラミング言語で記述されたソースコードが該当する。
2)のシナリオ群として、例えば、1)のプログラムの操作説明書などを元に、プログラムが実現する機能を起動するための操作手順が該当する。
3)の依存関係を特定する手段としては、例えば、プログラムの実行を追跡(トレース)することにより、モジュールの実行と、モジュールの呼び出し関係などの依存関係を特定することが可能な、デバッガと呼ばれるツールが利用可能である。デバッガには様々なものが存在するが、例えば広く普及しているUNIX(登録商標)−OSの上で使用可能なものとして、gdb、dbxなどが知られている。
5)の形式概念分析の手法の例としては、形式概念分析を実施するためのツールが複数存在し、Concept Explorer(http://conexp.sourceforge.net/)、ToscanaJ(http://toscanaj.sourceforge.net/)はオープンソースプログラムとして公開されている。
図7は、本発明の一実施の形態におけるプログラム分析装置の構成を示す。
同図に示す形式概念分析装置は、図8に示すトレース部110、依存関係特定部120、形式文脈抽出部130、概念分析部140を有するCPU100、トレースファイルを格納した実行トレース記憶部210を有する磁気ディスク200、依存元記憶部310と依存性記憶部320と属性記憶部330と形式文脈記憶部340を格納したメモリ300から構成される。
実行トレース記憶部210のトレースファイルA[i]には、トレースコードの列B[j]が格納されており、トレースファイルA[i]のj番目のトレースレコードB[j]にはj番目に実行されたモジュールの識別情報が記録されているものとする。なお、本実施の形態では、モジュールの識別情報を1…nの整数値について表すものとする。
メモリ300の依存元記憶部310は、モジュールの識別情報を1つ記憶するための変数Cを有するものとする。
依存性記憶部320には、依存性記録レコードD[i][j][k]が記録されるものとする。ここで、iは実行トレース記録ファイル210を指し示すために使用され(iは1…a)、j、kはモジュールを指し示すために使用される(j,kは0…m、値0は基点を意味する特殊な値とする)。依存性記録レコードD[i][j][k]はトレースファイルA[i]中に識別情報jで表されるモジュールの識別情報kで表されるモジュールへの依存関係の有無を表すために使用され、依存関係があれば値1、依存関係がなければ値0をとるものとする。
属性記録部330には、属性レコードE[i]が記録されるものとする。属性レコードE[i]はモジュール間の依存関係を形式概念分析の入力となる属性として管理するために使用する。各々が1つの文字列を記録し、例えば識別情報jで表されるモジュールの識別情報kで表される依存関係のためには、"k→j"のような文字列を格納する。
形式文脈記憶部340には、形式文脈記録レコードF[i][j]が記録されるものとする。ここで、iはトレースファイルを指し示すために使用され(iは1…a)、jは属性レコードを指し示すために使用される。形式文脈記録レコードF[i][j]は、トレースファイルA[i]中に、属性レコードE[j]に記録されたモジュールの依存関係の有無を表すために使用され、依存関係があれば値1、依存関係になければ値0をとるものとする。
以下に、形式概念分析装置の動作を説明する。
図9は、本発明の一実施の形態におけるプログラム分析装置の概要動作のフローチャートである。
ステップ100) CPU100のトレース部110において、解析対象プログラムの典型的な機能を網羅するシナリオ群(入力操作の集合)が解析対象プログラムに与えられることで、プログラムを実行すると実行されるモジュールとそのモジュールの依存元を判別し、シナリオ群の実行に関するトレース情報を実行トレース記録ファイル210に出力する。なお、トレース部110として、gdbやdbx等のデバッガを用いるものとする。また、本明細書におけるシナリオとは、登録処理、参照処理、削除処理を想定する。
ステップ200) 依存関係特定部120では、実行トレース記憶部210のトレースファイルを入力とし、シナリオを実行することにより実行されるモジュールとそのモジュールに関する依存関係を特定し、依存性記憶部320に格納する。
ステップ300) 形式文脈抽出部130において、シナリオを「オブジェクト」とし、モジュール間の依存関係の出現を「属性」として、形式概念分析の入力である「形式文脈」を抽出し、形式文脈記憶部340に出力する。
ステップ400) 概念分析部140は、ステップ300で形式文脈記憶部340に出力された形式文脈を入力とし、「概念束」を得る。ここで、概念分析部140として具体的には、Concept Explorer、ToscanaJ等を用いる。
ステップ500) 概念分析部140は、「概念束」のノードに含まれるモジュールと、その依存関係により、機能とそれを実現するモジュールの依存関係を出力する。
次に、上記のステップ300の処理を詳細に説明する。
図10は、本発明の一実施の形態における図9のステップ200の依存関係特定部120の詳細動作のフローチャートである。また、図11に当該フローのアルゴリズムの例を示す。
ステップ210) 依存性記憶部320の依存性記録レコードDを0に初期化する。
ステップ220) 実行トレース記憶部210の全トレースファイル(A[i])に対し、以下を繰り返す。
ステップ230) 全てのトレースレコードBi[j]に対し、以下を繰り返す。
ステップ240) トレースレコードBi[j]の値がbで、トレースレコードBi [j-1]の値がaの場合、依存性記憶部320の依存性記録レコードD[i][a][b]を1にする。
図12は、本発明の一実施の形態における図9のステップ300の形式文脈抽出部130の詳細動作のフローチャートである。また、図13に当該フローのアルゴリズムの例を示す。
ステップ310) 形式文脈記憶部340の全ての形式文脈レコードF[i][j]を0に初期化する。
ステップ320) カウンタxを1にする。
ステップ330) 全てのj=1…nに対し、以下を繰り返す。
ステップ340) 全てのk=1…nに対し、以下を繰り返す。
ステップ350) 全てのi=1…mに対し、以下を繰り返す。
ステップ360) 依存性記憶部320の依存性記録レコードD[i][j][k]から、値が1であるもののみ抽出する。j,kの組み合わせが新たに発生する度に、
・カウンタxを1加算し、
・属性記憶部330の属性レコードE[x]を文字列"j→k"とし、
・形式文脈記憶部340の形式文脈レコードF[i][x]を1とする。
以下に具体的な例を示す。
モジュール間の依存関係として、モジュールの呼び出し関係を使用した例を示す。
従来技術の例示として、図2に示した「プログラム1」に対し、従来技術を示すために使用したのと同一のシナリオ(登録、参照、削除)を定義すると、モジュールの実行及び、その依存関係により、形式文脈抽出部130により、図14に示すような形式文脈2が抽出される。従来技術が実行されるモジュールのみを属性としているのに対し、本願発明ではその依存関係を組み合わせて属性とすることにより、図2に示したプログラム1の形式文脈は、従来技術においては図3に示すとおり9種類の属性が存在したが、図14では12種類の属性が存在する。これは図3において、モジュールm6の実行は属性a6として管理されていたのに対し、図14においてはモジュールm6の実行は呼び出し元との依存関係により属性a6とa7の2つに分別され、同様に図3において、モジュールmの実行は属性aとして管理されていたのに対し、図14においてはモジュールmの実行は呼び出し元との依存関係により属性aとa10、a11の3つに分別されることに起因する。このように本願発明によると形式文脈は従来技術による形式文脈より詳細化されることになる。図14の形式文脈2に対し、概念分析部140において、形式概念分析の手法を適用すると、図15に示す形式概念が抽出され、これに対する概念束を形成すると、図16が得られ、これに対し希薄な概念束を形成すると図17が得られる。この結果、
シナリオ1だけが有する特徴:{m→m、m→m、m→m
シナリオ2だけが有する特徴:{m→m、m→m}、
シナリオ3だけが有する特徴:{m→m、m→m、m→m、m→m
シナリオ2と3に共通する特徴:{m→m
シナリオ1、2、3に共通する特徴:{s→m、m→m
が抽出される。各特徴に含まれる属性は、依存関係をもとにグループ化することができ、グループ化を行なうと、
シナリオ1だけが有する特徴:{m→m→m→m
シナリオ2だけが有する特徴:{m→m→m
シナリオ3だけが有する特徴:{m→m→m、m→m→m→m
シナリオ2と3に共通する特徴:{m→m
シナリオ1、2、3に共通する特徴:{s→m、m→m}、
のような、モジュールの実行と、実行されるモジュール間の依存関係を、モジュールのソースコードを読解すること無く得ることが出来る。
上記の図8に示すCPU100の各構成要素の動作をプログラムとして構築し、形式概念分析装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
情報処理システムを構成するプログラムの開発においては、保守等において人間が使用するためにプログラムの処理内容を自然言語で記述した設計ドキュメントが作成されることが多い。しかしながら、情報処理システムの保守などによりプログラムが変更されても、設計ドキュメントが同期して変更されない場合も多く、後になって別の保守者が保守を実施する場合には不完全な設計ドキュメントを参照しながら、プログラムの構造や処理内容を理解することが求められることになる。このような場合に、保守者によるプログラムの構造や処理内容の理解を支援するために従来技術や、本発明を使用することが、産業上の利用方法として想定される。
最初に不完全な設計ドキュメントの記載や、それまで当該情報処理システムを使用していた利用者へのヒアリングなどを通じて、当該情報処理システムが有するであろう機能を利用するためのシナリオ群を作成する。
シナリオ群を実行し、形式概念分析の手法により、互いに関連するモジュールの集合をプログラムの特徴(Feature)として発見する。
不完全な設計ドキュメントに記載されていた機能に関わるモジュールの集合が発見された場合には、ドキュメントに記載された機能の実装箇所が特定される、という効果が生じる。
モジュールの集合が発見されたが、不完全な設計ドキュメントに記載された機能とは無関係な場合は、新規に追加された機能であるため、設計ドキュメントへの追加を行なう。
このように、既存プログラムの保守にむけて形式概念分析の手法を利用することは、
1) 設計ドキュメントに記載された機能の、プログラムによる実装箇所を特定する;
2) 特徴として得られたモジュールの実装状況の分析にもとづき、設計ドキュメントを修正に資することができる;
という効果を求める産業上の利用可能性がある。
100 CPU
110 トレース部
120 依存関係特定部
130 形式文脈抽出部
140 概念分析部
200 磁気ディスク
210 実行トレース記憶部
300 メモリ
310 依存元記憶部
320 依存性記憶部
330 属性記憶部
340 形式文脈記憶部

Claims (8)

  1. プログラムの構造や処理の理解を支援するためのプログラム分析装置であって、
    プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段と、
    理解の対象となるソースコードが入力されると、前記トレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定手段と、
    前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出手段と、
    前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
    を有することを特徴とするプログラム分析装置。
  2. 前記概念分析手段は、
    前記概念束を、各ノードの概念間の差分を示す形の表現変換を行うことにより希薄な概念束を生成する手段を含む
    請求項1記載のプログラム分析装置。
  3. 前記概念分析手段は、
    前記シナリオの特徴に含まれる属性を、依存関係に基づいてグループ化する手段を含む
    請求項1または2記載のプログラム分析装置。
  4. 前記シナリオが入力されると、該シナリオに関するトレース情報をトレースファイル記憶手段に格納するトレース手段を
    更に有する請求項1記載のプログラム分析装置。
  5. プログラムの構造や処理の理解を支援するためのプログラム分析方法であって、
    依存関係特定手段が、理解の対象となるソースコードが入力されると、プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定ステップと、
    形式文脈抽出手段が、前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出ステップと、
    概念分析手段が、前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析ステップと、
    を行うことを特徴とするプログラム分析方法。
  6. 前記概念分析ステップにおいて、
    前記概念束を、各ノードの概念間の差分を示す形の表現変換を行うことにより希薄な概念束を生成する
    請求項5記載のプログラム分析方法。
  7. 前記シナリオが入力されると、該シナリオに関するトレース情報をトレースファイル記憶手段に格納するトレースステップを
    更に行う請求項5記載のプログラム分析方法。
  8. コンピュータを、
    請求項1乃至4のいずれか1項に記載のプログラム分析装置の各手段として機能させるためのプログラム分析プログラム。
JP2012107121A 2012-05-08 2012-05-08 プログラム分析装置及び方法及びプログラム Expired - Fee Related JP5725623B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012107121A JP5725623B2 (ja) 2012-05-08 2012-05-08 プログラム分析装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012107121A JP5725623B2 (ja) 2012-05-08 2012-05-08 プログラム分析装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2013235398A JP2013235398A (ja) 2013-11-21
JP5725623B2 true JP5725623B2 (ja) 2015-05-27

Family

ID=49761482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012107121A Expired - Fee Related JP5725623B2 (ja) 2012-05-08 2012-05-08 プログラム分析装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5725623B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391584A (zh) * 2017-06-22 2017-11-24 中南大学 基于形式概念格的分面搜索方法及***

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671917B1 (en) 2014-07-23 2020-06-02 Hrl Laboratories, Llc System for mapping extracted Neural activity into Neuroceptual graphs
US10360506B2 (en) 2014-07-23 2019-07-23 Hrl Laboratories, Llc General formal concept analysis (FCA) framework for classification
EP3172701A4 (en) * 2014-07-23 2018-03-28 HRL Laboratories LLC A general formal concept analysis (fca) framework for classification
US10546233B1 (en) 2014-07-23 2020-01-28 Hrl Laboratories, Llc Method and system to predict and interpret conceptual knowledge in the brain

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010147010A1 (ja) * 2009-06-17 2010-12-23 日本電気株式会社 モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391584A (zh) * 2017-06-22 2017-11-24 中南大学 基于形式概念格的分面搜索方法及***
CN107391584B (zh) * 2017-06-22 2020-12-11 中南大学 基于形式概念格的分面搜索方法及***

Also Published As

Publication number Publication date
JP2013235398A (ja) 2013-11-21

Similar Documents

Publication Publication Date Title
US9767008B2 (en) Automatic test case generation
CA2713247C (en) Integration environment generator
Miles et al. Prime: A methodology for developing provenance-aware applications
US9569177B2 (en) Service extraction and application composition
US9037595B2 (en) Creating graphical models representing control flow of a program manipulating data resources
JP5725623B2 (ja) プログラム分析装置及び方法及びプログラム
EP3234851B1 (en) A system and method for facilitating static analysis of software applications
Sivanandan Agile development cycle: Approach to design an effective Model Based Testing with Behaviour driven automation framework
CN110019116B (zh) 数据追溯方法、装置、数据处理设备及计算机存储介质
US20170193375A1 (en) Rule guided fabrication of structured data and messages
Sarjoughian et al. EMF-DEVS modeling.
WO2015154474A1 (zh) 一种查询界面的生成方法及装置
US20180025162A1 (en) Application program analysis apparatus and method
CN111966718B (zh) 用于应用***的数据传播追踪的***及方法
JP2017522639A5 (ja)
Kamimori et al. Automatic method of generating a web prototype employing live interactive widget to validate functional usability requirements
Mohite et al. Analysis of System Requirements by Aspects-J Methodology
Mayer et al. On the applicability of workflow management systems for the preservation of business processes
Miksa et al. VPlan–ontology for collection of process verification data
Geepalla et al. Transformation of spatio-temporal role based access control specification to alloy
JP6021109B2 (ja) プログラム分析装置及び方法及びプログラム
Gao et al. Generating open api usage rule from error descriptions
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
Weiss et al. Introducing the QCEP-testing system for executable acceptance test driven development of complex event processing applications
Quéval et al. Extracting the Architecture of Microservices: An Approach for Explainability and Traceability

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140616

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150224

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: 20150324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150327

R150 Certificate of patent or registration of utility model

Ref document number: 5725623

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees