JP5725623B2 - Program analysis apparatus and method, and program - Google Patents
Program analysis apparatus and method, and program Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title description 24
- 238000004458 analytical method Methods 0.000 claims description 51
- 230000006870 function Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 16
- 238000000605 extraction Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 description 9
- 230000010365 information processing Effects 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000004907 flux Effects 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、プログラム分析装置及び方法及びプログラムに係り、特に、形式概念分析を適用した情報処理システムを構成する電子計算機向けのプログラムのソースコードのリバースエンジニアリングにおけるプログラム分析装置及び方法及びプログラムに関する。 The present invention relates to a program analysis apparatus, method, and program, and more particularly to a program analysis apparatus, method, and program in reverse engineering of a source code of a program for an electronic computer constituting an information processing system to which formal concept analysis is applied.
様々な業務が電子計算機を利用した情報処理システムとして実現されている。これらの情報処理システムの動作は、プログラミング言語を使用したプログラムとして記述されている。プログラム言語で記述されたプログラムはソースコードと呼ばれる。 Various tasks are realized as an information processing system using an electronic computer. The operations of these information processing systems are described as programs using a programming language. A program written in a programming language is called source code.
プログラミング言語は、電子計算機が解釈し実行することを目的としたものであるが、プログラムの保守や機能追加のための開発を実施する場合には、人間が既存のソースコードを読解し、プログラムの構造や処理の内容を理解する必要がある。かかるプログラムを理解するための行為がリバースエンジニアリングである。 The programming language is intended to be interpreted and executed by an electronic computer, but when developing programs to maintain programs and add functions, humans read and understand existing source code. It is necessary to understand the structure and contents of processing. The act of understanding such a program is reverse engineering.
リバースエンジニアリングには様々な手法が存在するが、その中に形式概念分析を用いた手法が存在する。 There are various methods for reverse engineering, among them methods using formal concept analysis.
形式概念分析(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)と呼ぶ。意味のわかりにくい形式文脈から、形式概念を抽出し、概念束を形成することで形式概念同士の関係を発見することが形式概念分析と呼ばれる手法である。 Formal concept analysis is a field that applies mathematical theory theory (Lattice Theory). If there is a set G of objects and a set M of attributes held by objects belonging to G, and there is a correspondence table (formal context: Formal Context) describing which objects have which attributes, the G part For a subset B of sets A and M, A that satisfies the rule that all of the attributes that are elements of B are held by the object that is an element of A, and are not held by objects other than the elements of A And a combination of B and B (Formal Concept). When classifying formal concepts, if A2 is a subset of A1 in one formal concept (A1, B1) and another formal concept (A2, B2), B2 is also a subset of B1. A partial order relationship can be defined between (A1, B1) and (A2, B2). Since a set of formal concepts related by such an order satisfies the axiom of the bundle, it is possible to apply a mathematical bundle theory method. A representation of a set of formal concepts as a bundle is called a concept lattice. Extracting formal concepts from a formal context whose meaning is difficult to understand and forming a concept bundle to discover the relationship between formal concepts is a technique called formal concept analysis.
係る形式概念分析の手法により、ソースコードに含まれるプログラムの部品を分類することで、プログラムの構造や処理の内容を理解するリバースエンジニアリングを実施することが本発明が属する技術分野である。 The technical field to which the present invention belongs is to perform reverse engineering for understanding the structure of the program and the contents of the processing by classifying the program parts included in the source code by the method of formal concept analysis.
当該リバースエンジニアリングを実施することの従来の技術としては、非特許文献1に示す技術が存在する。
As a conventional technique for performing the reverse engineering, there is a technique shown in Non-Patent
当該技術では、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるプログラムの部品「モジュール」を特定する。モジュールとは、例えば手続き型言語における手続き(Procedure)や、オブジェクト指向言語におけるメソッド(Method)などである。各々のシナリオをオブジェクトとし、シナリオを起動した場合に実行されるプログラムのモジュールを属性とみなして形式文脈を形成し、形式概念分析の手法を適用することを提案している。すなわち、オブジェクトであるシナリオと、属性であるプログラムモジュールとの間で形式概念を抽出し、概念束を形成することで、プログラムの特徴(Feature)を見つけ出せるとしている。 In this technique, when a program is started according to some scenarios, a program component “module” to be executed by the activation of the scenario is specified. The module is, for example, a procedure in a procedural language or a method in an object-oriented language. It is proposed that each scenario be an object, a module of a program executed when the scenario is activated is regarded as an attribute, a formal context is formed, and a formal concept analysis method is applied. In other words, a feature of a program can be found by extracting a formal concept between a scenario that is an object and a program module that is an attribute and forming a concept bundle.
図1に、従来技術の処理のフローを示す。 FIG. 1 shows a processing flow of the conventional technique.
ステップ1) プログラムを実行すると、実行されるモジュールが判別できるようなトレース手段を用意する。トレース手段としては例えば、gdb等がある。 Step 1) Prepare a tracing means that can determine the module to be executed when the program is executed. Examples of the tracing means include gdb.
ステップ2) プログラムの機能を起動する入力操作の集合(シナリオ)を、プログラムの典型的な機能を網羅するように用意し、実行してトレース群を取得する。ここでシナリオの例としては、登録処理、参照処理、削除処理等がある。 Step 2) A set of input operations (scenarios) for starting the program functions is prepared so as to cover typical functions of the program, and executed to obtain a trace group. Examples of scenarios include registration processing, reference processing, and deletion processing.
ステップ3) シナリオをオブジェクトとし、実行されるモジュールの出現を「属性」として、形式概念分析の入力である「形式文脈」とする。 Step 3) Assuming that the scenario is an object, the appearance of the module to be executed is “attribute”, and “formal context” which is the input of formal concept analysis.
ステップ4) 形式概念分析の手法を適用し、「概念束」を得る。ここで、形式概念分析の手法としては、Concept Explorer、Toscana-J等がある。 Step 4) Apply a formal concept analysis method to obtain a “concept bundle”. Here, there are Concept Explorer, Toscana-J, etc. as methods of formal concept analysis.
ステップ5) 概念束のノードに含まれるモジュールより、機能とそれを実現するモジュールを得る。 Step 5) A function and a module that realizes the function are obtained from the modules included in the nodes of the concept bundle.
例えば、図2に示すようなプログラム1に対し、適当なシナリオ(登録、参照、削除)を定義すると、図3に示すような形式文脈が抽出される。これに対し、形式概念分析の手法を適用すると、図4に示す形式概念が抽出され、これに対する概念束を形成すると、図5が得られる。図5の概念束に対し、各ノードの概念間の差分を示す形で表現の変換を行なうと、希薄(sparse)な概念束として図6が得られる。この結果、
シナリオ1だけが有する特徴:{m2、m5}
シナリオ2だけが有する特徴:{m3}
シナリオ3だけが有する特徴:{m4、m7}
シナリオ2と3が共通に有する特徴:{m6}
シナリオ1、2、3が共通に有する特徴:{m1、m8、m9}
が抽出される。これにより、各モジュールがどのような状況において実行されるかを理解することができる。
For example, if an appropriate scenario (registration, reference, deletion) is defined for the
Features that only
Features that only
Features that only
Features common to
Features common to
Is extracted. This makes it possible to understand under what circumstances each module is executed.
しかしながら、非特許文献1により開示された従来技術では、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるプログラムの部品「モジュール」を属性としており、形式概念分析を行なうことにより、モジュールの部分集合が概念として抽出される。
However, in the prior art disclosed in Non-Patent
ここで抽出される概念の中では、シナリオの起動により個々のモジュールが実行されることだけしかわからない。例えば、シナリオ1、2、3に共通する特徴:{m1、m8、m9}が抽出されるが、特徴を構成する各々の属性であるモジュールのm1、m8、m9がどのような関係にあるのかは判らない。このため、形式概念分析の手法を適用する目的である、プログラムの構造や処理の内容の理解に向けては限定的な情報が得られるに留まっている。したがって、抽出された特徴に含まれるモジュールについてそれぞれソースコードを読解し、関係を紐解く必要があった。
Among the concepts extracted here, only the individual modules are executed by starting the scenario. For example, the features common to the
本発明は、上記の点に鑑みなされたもので、形式概念分析に得られる特徴から得られる情報をより複雑なものとするとともに、抽出された特徴に関わるソースコード読解の手間を軽減することが可能なプログラム分析装置及び方法及びプログラムを提供することを目的とする。 The present invention has been made in view of the above points, and can make information obtained from features obtained by formal concept analysis more complicated and reduce the effort of reading source code related to the extracted features. It is an object of the present invention to provide a possible program analysis apparatus, method and program.
上記の課題を解決するため、本発明のプログラムの構造や処理の理解を支援するためのプログラム分析装置は、
プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段と、
理解の対象となるソースコードが入力されると、前記トレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定手段と、
前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出手段と、
前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
を有する。
In order to solve the above problems, a program analysis apparatus for supporting an understanding of the structure and processing of the program of the present invention,
Trace file storage means that is a set of input operations to a program and that stores trace information relating to the execution of a scenario group that covers typical functions of the program;
When the source code to be understood is input, the trace information is read from the trace file storage means, and the dependency specifying means for specifying the module executed when the scenario is started and the dependency relation of the module;
Formal context extraction means for extracting a formal context having the scenario as an object and the dependency of the module as an attribute;
A concept analysis means for analyzing the formal context by a formal concept analysis method and generating a concept bundle;
Have
上記のように本発明によれば、特徴に含まれるモジュールについてソースコードを読み解き、モジュールの関係を対応付けることなく、形式概念分析で得られる特徴からの情報をより複雑・高度なものとするとともに、抽出された特徴に関わるソースコード読解の手間を軽減することが可能となる。 As described above, according to the present invention, the source code is read and interpreted for the module included in the feature, and the information from the feature obtained by the formal concept analysis is made more complicated and sophisticated without associating the relationship of the module. It is possible to reduce the trouble of reading the source code related to the extracted features.
以下、図面と共に本発明の実施の形態を説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
本願発明では、非特許文献1により開示された従来技術と同様、プログラムを幾つかのシナリオに沿って起動した場合に、シナリオの起動により実行されるモジュールを特定するとともに、そのモジュールの依存関係も特定する。非特許文献1の手法ではシナリオをオブジェクト、実行されるモジュールを属性としたのに対し、本願発明では、シナリオをオブジェクト、実行されるモジュールとその依存関係を属性とし、形式文脈とすることを特徴とする。この形式文脈に対し、形式概念分析の手法を適用し、形式概念を抽出し、概念束および希薄な概念束を形成することで、プログラムの特徴として、モジュールの実行に加え、モジュール間の依存関係の集合を見つけ出すことを特徴とする。
In the present invention, as in the prior art disclosed in
最初に本明細書で用いる用語について説明する。 First, terms used in this specification will be described.
・形式概念分析(Formal Concept Analysis):数学の束論を応用した一分野(例えば、http://www.upriss.org.uk/fca/,http://en.wikipedia.org/wiki/Formal_concept_analysis参照)。 -Formal Concept Analysis: A field that applies mathematics bundle theory (eg http://www.upriss.org.uk/fca/, http://en.wikipedia.org/wiki/Formal_concept_analysis) reference).
・オブジェクト:形式概念分析が分析の対象とする物事。非特許文献1、本実施の形態では、プログラムの機能を起動する入出力の集合(シナリオ)。
• Object: Things that formal concept analysis analyzes.
・属性:形式概念分析の対象であるオブジェクトが必ず保有する性質。本発明では、シナリオにより起動されるモジュールと、モジュールの依存関係。トレースに出現した依存関係をオブジェクト(シナリオ)の属性として扱う。従来技術では、シナリオにより起動されるモジュールであり、トレースに出現したモジュールを、オブジェクト(シナリオ)との属性として扱う。 ・ Attribute: The property that an object that is the object of formal concept analysis must possess. In the present invention, the module activated by the scenario and the module dependency. Dependencies that appear in the trace are handled as attributes of the object (scenario). In the prior art, a module that is activated by a scenario, and a module that appears in the trace is handled as an attribute with an object (scenario).
・形式文脈:どのオブジェクトが、どの属性を保有するのかを記述した対応表。 -Formal context: A correspondence table that describes which object has which attribute.
・形式概念:形式概念分析により発見される、オブジェクトの部分集合が保有する属性の部分集合。本発明では、プログラムの機能を実現するモジュールとモジュール間の依存関係を、形式概念として発見する。従来技術では、プログラムの機能を実現するモジュールを形式概念として発見する。 Formal concept: A subset of attributes held by a subset of objects discovered by formal concept analysis. In the present invention, the module that realizes the function of the program and the dependency relationship between the modules are discovered as a formal concept. In the prior art, a module that realizes a program function is found as a formal concept.
・概念束:形式概念を数学の束(そく)として表現したもの。 -Concept bundle: A formal concept expressed as a bundle of mathematics.
・希薄な概念束:概念束を、下位ノードとの属性の差分のみを記述する形で表現したもの。 -Sparse concept bundle: A concept bundle expressed in a form that describes only the attribute difference from the lower node.
・モジュール:プログラムを構成する部品。サブルーチンや、ブラウザに送信されるHTML文書などが代表例だが、これに限定されない。 Module: A part that constitutes a program. Typical examples include subroutines and HTML documents sent to the browser, but this is not a limitation.
・シナリオ:プログラムの入力装置の集合。本発明や従来技術では、プログラムの機能を起動し、モジュールのトレースを取得するために使用する。取得したシナリオによるトレース情報を形式概念分析のオブジェクトとして扱う。 Scenario: A set of program input devices. In the present invention and the prior art, it is used to activate a program function and acquire a module trace. The trace information according to the acquired scenario is handled as an object of formal concept analysis.
・依存関係:あるモジュールが起動されるために、必要な別モジュールが存在する場合、あるモジュールは別モジュールとの間に依存関係があると呼ぶ。あるモジュールの呼び出し元(Caller)は、典型的な依存元である。 Dependency: A certain module is called as having a dependency relationship with another module when there is another module necessary for the module to be activated. The caller of a module is a typical dependency.
・出現:シナリオのトレースに、あるモジュールが起動された事実や、依存関係が存在した事実が記録されている場合、そのモジュールや、依存関係が出現したと呼ぶ。 Appearance: When the fact that a certain module is activated or the fact that a dependency exists is recorded in the trace of the scenario, it is said that the module or dependency has appeared.
以下に、本実施の形態を詳細に説明する。 Hereinafter, this embodiment will be described in detail.
本発明では、
1) 理解の対象となるソースコード;
2) プログラムへの入力操作の集合であり、プログラムの典型的な機能を網羅するシナリオ群;
3) シナリオを起動した際に、実行されるモジュールとモジュールの依存関係を特定する手段;
4) シナリオをオブジェクトとし、シナリオにより実行されるモジュールとモジュールの依存関係を属性とする形式文脈を抽出する手段、
5) 形式文脈を形式概念分析の手法で分析する手段;
を使用することが最良の形態である。1)に対し、2)を定義し、3)により依存関係を特定する。さらに依存関係を用いて、4)としてシナリオをオブジェクト、実行されるモジュールとその依存関係を属性とする形式文脈を構成する。これに対し5)により分析を行なうことで、本願発明が実施可能となる。
In the present invention,
1) Source code to be understood;
2) A set of scenarios that cover a typical function of a program, which is a set of input operations to the program;
3) Means for specifying the module to be executed and the dependency relationship between the modules when the scenario is activated;
4) Means for extracting a formal context having a scenario as an object and a module executed by the scenario and its dependency as an attribute,
5) Means for analyzing formal contexts using formal concept analysis techniques;
It is the best form to use. For 1), define 2) and specify the dependency by 3). Further, by using the dependency relationship, as 4), a formal context having a scenario as an object, a module to be executed and its dependency as an attribute is constructed. On the other hand, the present invention can be implemented by performing the analysis according to 5).
1)の理解の対象となるソースコードとして、例えば、Cなどのプログラミング言語で記述されたソースコードが該当する。 As the source code to be understood in 1), for example, source code written in a programming language such as C is applicable.
2)のシナリオ群として、例えば、1)のプログラムの操作説明書などを元に、プログラムが実現する機能を起動するための操作手順が該当する。 The scenario group 2) corresponds to, for example, an operation procedure for starting a function realized by the program based on the operation manual of the program 1).
3)の依存関係を特定する手段としては、例えば、プログラムの実行を追跡(トレース)することにより、モジュールの実行と、モジュールの呼び出し関係などの依存関係を特定することが可能な、デバッガと呼ばれるツールが利用可能である。デバッガには様々なものが存在するが、例えば広く普及しているUNIX(登録商標)−OSの上で使用可能なものとして、gdb、dbxなどが知られている。 The means for specifying the dependency in 3) is called a debugger that can specify the dependency such as the module execution and the module calling relation by tracing (tracing) the execution of the program. Tools are available. Various debuggers exist, and gdb, dbx, and the like are known as those that can be used on, for example, the widely used UNIX (registered trademark) -OS.
5)の形式概念分析の手法の例としては、形式概念分析を実施するためのツールが複数存在し、Concept Explorer(http://conexp.sourceforge.net/)、ToscanaJ(http://toscanaj.sourceforge.net/)はオープンソースプログラムとして公開されている。 As an example of the formal concept analysis method of 5), there are several tools for conducting formal concept analysis, such as Concept Explorer (http://conexp.sourceforge.net/), ToscanaJ (http: // toscanaj. sourceforge.net/) is released as an open source program.
図7は、本発明の一実施の形態におけるプログラム分析装置の構成を示す。 FIG. 7 shows the configuration of the program analysis apparatus according to the embodiment of the present invention.
同図に示す形式概念分析装置は、図8に示すトレース部110、依存関係特定部120、形式文脈抽出部130、概念分析部140を有するCPU100、トレースファイルを格納した実行トレース記憶部210を有する磁気ディスク200、依存元記憶部310と依存性記憶部320と属性記憶部330と形式文脈記憶部340を格納したメモリ300から構成される。
The formal concept analysis apparatus shown in FIG. 8 includes a
実行トレース記憶部210のトレースファイルA[i]には、トレースコードの列Bi[j]が格納されており、トレースファイルA[i]のj番目のトレースレコードBi[j]にはj番目に実行されたモジュールの識別情報が記録されているものとする。なお、本実施の形態では、モジュールの識別情報を1…nの整数値について表すものとする。
The trace file A [i] of the execution
メモリ300の依存元記憶部310は、モジュールの識別情報を1つ記憶するための変数Cを有するものとする。
The dependency
依存性記憶部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をとるものとする。
It is assumed that the
属性記録部330には、属性レコードE[i]が記録されるものとする。属性レコードE[i]はモジュール間の依存関係を形式概念分析の入力となる属性として管理するために使用する。各々が1つの文字列を記録し、例えば識別情報jで表されるモジュールの識別情報kで表される依存関係のためには、"k→j"のような文字列を格納する。
It is assumed that an attribute record E [i] is recorded in the
形式文脈記憶部340には、形式文脈記録レコードF[i][j]が記録されるものとする。ここで、iはトレースファイルを指し示すために使用され(iは1…a)、jは属性レコードを指し示すために使用される。形式文脈記録レコードF[i][j]は、トレースファイルA[i]中に、属性レコードE[j]に記録されたモジュールの依存関係の有無を表すために使用され、依存関係があれば値1、依存関係になければ値0をとるものとする。
In the format
以下に、形式概念分析装置の動作を説明する。 The operation of the formal concept analyzer will be described below.
図9は、本発明の一実施の形態におけるプログラム分析装置の概要動作のフローチャートである。 FIG. 9 is a flowchart of an outline operation of the program analysis apparatus according to the embodiment of the present invention.
ステップ100) CPU100のトレース部110において、解析対象プログラムの典型的な機能を網羅するシナリオ群(入力操作の集合)が解析対象プログラムに与えられることで、プログラムを実行すると実行されるモジュールとそのモジュールの依存元を判別し、シナリオ群の実行に関するトレース情報を実行トレース記録ファイル210に出力する。なお、トレース部110として、gdbやdbx等のデバッガを用いるものとする。また、本明細書におけるシナリオとは、登録処理、参照処理、削除処理を想定する。
Step 100) In the
ステップ200) 依存関係特定部120では、実行トレース記憶部210のトレースファイルを入力とし、シナリオを実行することにより実行されるモジュールとそのモジュールに関する依存関係を特定し、依存性記憶部320に格納する。
Step 200) The dependency
ステップ300) 形式文脈抽出部130において、シナリオを「オブジェクト」とし、モジュール間の依存関係の出現を「属性」として、形式概念分析の入力である「形式文脈」を抽出し、形式文脈記憶部340に出力する。
Step 300) In the formal
ステップ400) 概念分析部140は、ステップ300で形式文脈記憶部340に出力された形式文脈を入力とし、「概念束」を得る。ここで、概念分析部140として具体的には、Concept Explorer、ToscanaJ等を用いる。
Step 400) The
ステップ500) 概念分析部140は、「概念束」のノードに含まれるモジュールと、その依存関係により、機能とそれを実現するモジュールの依存関係を出力する。
Step 500) The
次に、上記のステップ300の処理を詳細に説明する。
Next, the process of
図10は、本発明の一実施の形態における図9のステップ200の依存関係特定部120の詳細動作のフローチャートである。また、図11に当該フローのアルゴリズムの例を示す。
FIG. 10 is a flowchart of detailed operation of the dependency
ステップ210) 依存性記憶部320の依存性記録レコードDを0に初期化する。
Step 210) The dependency record D in the
ステップ220) 実行トレース記憶部210の全トレースファイル(A[i])に対し、以下を繰り返す。
Step 220) The following is repeated for all trace files (A [i]) in the execution
ステップ230) 全てのトレースレコードBi[j]に対し、以下を繰り返す。 Step 230) Repeat for all trace records Bi [j].
ステップ240) トレースレコードBi[j]の値がbで、トレースレコードBi [j-1]の値がaの場合、依存性記憶部320の依存性記録レコードD[i][a][b]を1にする。 Step 240) If the value of the trace record B i [j] is b and the value of the trace record B i [j−1] is a, the dependency record record D [i] [a] [ b] is set to 1.
図12は、本発明の一実施の形態における図9のステップ300の形式文脈抽出部130の詳細動作のフローチャートである。また、図13に当該フローのアルゴリズムの例を示す。
FIG. 12 is a flowchart of detailed operation of the formal
ステップ310) 形式文脈記憶部340の全ての形式文脈レコードF[i][j]を0に初期化する。
Step 310) Initialize all format context records F [i] [j] in the format
ステップ320) カウンタxを1にする。 Step 320) The counter x is set to 1.
ステップ330) 全てのj=1…nに対し、以下を繰り返す。 Step 330) Repeat for all j = 1... N.
ステップ340) 全てのk=1…nに対し、以下を繰り返す。 Step 340) Repeat for all k = 1... N.
ステップ350) 全てのi=1…mに対し、以下を繰り返す。 Step 350) Repeat for all i = 1.
ステップ360) 依存性記憶部320の依存性記録レコードD[i][j][k]から、値が1であるもののみ抽出する。j,kの組み合わせが新たに発生する度に、
・カウンタxを1加算し、
・属性記憶部330の属性レコードE[x]を文字列"j→k"とし、
・形式文脈記憶部340の形式文脈レコードF[i][x]を1とする。
Step 360) From the dependency record D [i] [j] [k] in the
-
The attribute record E [x] in the
The format context record F [i] [x] in the format
以下に具体的な例を示す。 Specific examples are shown below.
モジュール間の依存関係として、モジュールの呼び出し関係を使用した例を示す。 An example of using a module call relationship as a dependency relationship between modules is shown.
従来技術の例示として、図2に示した「プログラム1」に対し、従来技術を示すために使用したのと同一のシナリオ(登録、参照、削除)を定義すると、モジュールの実行及び、その依存関係により、形式文脈抽出部130により、図14に示すような形式文脈2が抽出される。従来技術が実行されるモジュールのみを属性としているのに対し、本願発明ではその依存関係を組み合わせて属性とすることにより、図2に示したプログラム1の形式文脈は、従来技術においては図3に示すとおり9種類の属性が存在したが、図14では12種類の属性が存在する。これは図3において、モジュールm6の実行は属性a6として管理されていたのに対し、図14においてはモジュールm6の実行は呼び出し元との依存関係により属性a6とa7の2つに分別され、同様に図3において、モジュールm8の実行は属性a8として管理されていたのに対し、図14においてはモジュールm8の実行は呼び出し元との依存関係により属性a9とa10、a11の3つに分別されることに起因する。このように本願発明によると形式文脈は従来技術による形式文脈より詳細化されることになる。図14の形式文脈2に対し、概念分析部140において、形式概念分析の手法を適用すると、図15に示す形式概念が抽出され、これに対する概念束を形成すると、図16が得られ、これに対し希薄な概念束を形成すると図17が得られる。この結果、
シナリオ1だけが有する特徴:{m1→m2、m2→m5、m5→m8}
シナリオ2だけが有する特徴:{m1→m3、m3→m6}、
シナリオ3だけが有する特徴:{m1→m4、m4→m6、m4→m7、m7→m8}
シナリオ2と3に共通する特徴:{m6→m8}
シナリオ1、2、3に共通する特徴:{s→m1、m8→m9}
が抽出される。各特徴に含まれる属性は、依存関係をもとにグループ化することができ、グループ化を行なうと、
シナリオ1だけが有する特徴:{m1→m2→m5→m8}
シナリオ2だけが有する特徴:{m1→m3→m6}
シナリオ3だけが有する特徴:{m1→m4→m6、m1→m4→m7→m8}
シナリオ2と3に共通する特徴:{m6→m8}
シナリオ1、2、3に共通する特徴:{s→m1、m8→m9}、
のような、モジュールの実行と、実行されるモジュール間の依存関係を、モジュールのソースコードを読解すること無く得ることが出来る。
As an example of the prior art, if the same scenario (registration, reference, deletion) used to show the prior art is defined for “
Features that
Features that
Features that
Features common to
Features common to
Is extracted. The attributes included in each feature can be grouped based on the dependency relationship.
Features that
Features that
Features that
Features common to
Features common to
As described above, the module execution and the dependency relationship between the modules to be executed can be obtained without reading the module source code.
上記の図8に示すCPU100の各構成要素の動作をプログラムとして構築し、形式概念分析装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
The operation of each component of the
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。 The present invention is not limited to the above-described embodiments, and various modifications and applications can be made within the scope of the claims.
情報処理システムを構成するプログラムの開発においては、保守等において人間が使用するためにプログラムの処理内容を自然言語で記述した設計ドキュメントが作成されることが多い。しかしながら、情報処理システムの保守などによりプログラムが変更されても、設計ドキュメントが同期して変更されない場合も多く、後になって別の保守者が保守を実施する場合には不完全な設計ドキュメントを参照しながら、プログラムの構造や処理内容を理解することが求められることになる。このような場合に、保守者によるプログラムの構造や処理内容の理解を支援するために従来技術や、本発明を使用することが、産業上の利用方法として想定される。 In the development of a program constituting an information processing system, a design document in which the processing contents of the program are described in a natural language is often created for use by humans for maintenance or the like. However, even if the program is changed due to maintenance of the information processing system, etc., the design document is often not changed synchronously. If another maintenance person performs maintenance later, refer to the incomplete design document. However, it is required to understand the structure and processing contents of the program. In such a case, it is assumed as an industrial utilization method that the conventional technique or the present invention is used to assist the maintenance person in understanding the program structure and processing contents.
最初に不完全な設計ドキュメントの記載や、それまで当該情報処理システムを使用していた利用者へのヒアリングなどを通じて、当該情報処理システムが有するであろう機能を利用するためのシナリオ群を作成する。 Create a scenario group to use the functions that the information processing system will have through first describing incomplete design documents and interviewing users who have used the information processing system until then. .
シナリオ群を実行し、形式概念分析の手法により、互いに関連するモジュールの集合をプログラムの特徴(Feature)として発見する。 The scenario group is executed, and a set of modules related to each other is discovered as a feature of the program by a method of formal concept analysis.
不完全な設計ドキュメントに記載されていた機能に関わるモジュールの集合が発見された場合には、ドキュメントに記載された機能の実装箇所が特定される、という効果が生じる。 When a set of modules related to the function described in the incomplete design document is found, there is an effect that the mounting location of the function described in the document is specified.
モジュールの集合が発見されたが、不完全な設計ドキュメントに記載された機能とは無関係な場合は、新規に追加された機能であるため、設計ドキュメントへの追加を行なう。 If a set of modules is found but is not related to the function described in the incomplete design document, it is a newly added function, and is added to the design document.
このように、既存プログラムの保守にむけて形式概念分析の手法を利用することは、
1) 設計ドキュメントに記載された機能の、プログラムによる実装箇所を特定する;
2) 特徴として得られたモジュールの実装状況の分析にもとづき、設計ドキュメントを修正に資することができる;
という効果を求める産業上の利用可能性がある。
In this way, using formal concept analysis techniques to maintain existing programs
1) Specify the location where the function described in the design document is implemented by the program;
2) Based on the analysis of the module mounting status obtained as a feature, the design document can be contributed to corrections;
There is an industrial applicability that demands that effect.
100 CPU
110 トレース部
120 依存関係特定部
130 形式文脈抽出部
140 概念分析部
200 磁気ディスク
210 実行トレース記憶部
300 メモリ
310 依存元記憶部
320 依存性記憶部
330 属性記憶部
340 形式文脈記憶部
100 CPU
DESCRIPTION OF
Claims (8)
プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段と、
理解の対象となるソースコードが入力されると、前記トレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定手段と、
前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出手段と、
前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析手段と、
を有することを特徴とするプログラム分析装置。 A program analyzer for supporting understanding of the structure and processing of a program,
Trace file storage means that is a set of input operations to a program and that stores trace information relating to the execution of a scenario group that covers typical functions of the program;
When the source code to be understood is input, the trace information is read from the trace file storage means, and the dependency specifying means for specifying the module executed when the scenario is started and the dependency relation of the module;
Formal context extraction means for extracting a formal context having the scenario as an object and the dependency of the module as an attribute;
A concept analysis means for analyzing the formal context by a formal concept analysis method and generating a concept bundle;
A program analysis apparatus comprising:
前記概念束を、各ノードの概念間の差分を示す形の表現変換を行うことにより希薄な概念束を生成する手段を含む
請求項1記載のプログラム分析装置。 The concept analysis means includes
2. The program analysis apparatus according to claim 1, further comprising means for generating a sparse concept bundle by performing expression conversion of the concept bundle in a form indicating a difference between concepts of each node.
前記シナリオの特徴に含まれる属性を、依存関係に基づいてグループ化する手段を含む
請求項1または2記載のプログラム分析装置。 The concept analysis means includes
3. The program analysis apparatus according to claim 1, further comprising means for grouping attributes included in the features of the scenario based on a dependency relationship.
更に有する請求項1記載のプログラム分析装置。 2. The program analysis apparatus according to claim 1, further comprising a trace unit that stores trace information related to the scenario in a trace file storage unit when the scenario is input.
依存関係特定手段が、理解の対象となるソースコードが入力されると、プログラムへの入力操作の集合であり、該プログラムの典型的な機能を網羅するシナリオ群の実行に関するトレース情報が格納されているトレースファイル記憶手段からトレース情報を読み出し、前記シナリオを起動した際に実行されるモジュールと該モジュールの依存関係を特定する依存関係特定ステップと、
形式文脈抽出手段が、前記シナリオをオブジェクトとし、前記モジュールの依存関係を属性とする形式文脈を抽出する形式文脈抽出ステップと、
概念分析手段が、前記形式文脈を形式概念分析の手法で分析し、概念束を生成する概念分析ステップと、
を行うことを特徴とするプログラム分析方法。 A program analysis method for supporting understanding of the structure and processing of a program,
When the source code to be understood is input, the dependency specifying means is a set of input operations to the program, and trace information relating to execution of a scenario group covering typical functions of the program is stored. A dependency specifying step for reading the trace information from the trace file storage means, and specifying the module executed when the scenario is activated and the dependency relationship of the module;
A formal context extraction step for extracting a formal context having the scenario as an object and the module dependency as an attribute; and
A concept analysis step in which a concept analysis means analyzes the formal context by a formal concept analysis method to generate a concept bundle;
The program analysis method characterized by performing.
前記概念束を、各ノードの概念間の差分を示す形の表現変換を行うことにより希薄な概念束を生成する
請求項5記載のプログラム分析方法。 In the concept analysis step,
The program analysis method according to claim 5, wherein a sparse concept bundle is generated by performing expression conversion of the concept bundle in a form indicating a difference between concepts of each node.
更に行う請求項5記載のプログラム分析方法。 6. The program analysis method according to claim 5, wherein when the scenario is input, a trace step of storing trace information regarding the scenario in a trace file storage means is further performed.
請求項1乃至4のいずれか1項に記載のプログラム分析装置の各手段として機能させるためのプログラム分析プログラム。 Computer
The program analysis program for functioning as each means of the program analysis apparatus of any one of Claims 1 thru | or 4.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012107121A JP5725623B2 (en) | 2012-05-08 | 2012-05-08 | Program analysis apparatus and method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012107121A JP5725623B2 (en) | 2012-05-08 | 2012-05-08 | Program analysis apparatus and method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013235398A JP2013235398A (en) | 2013-11-21 |
JP5725623B2 true JP5725623B2 (en) | 2015-05-27 |
Family
ID=49761482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012107121A Expired - Fee Related JP5725623B2 (en) | 2012-05-08 | 2012-05-08 | Program analysis apparatus and method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5725623B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391584A (en) * | 2017-06-22 | 2017-11-24 | 中南大学 | Facet searching method and system based on formal notion lattice |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10546233B1 (en) | 2014-07-23 | 2020-01-28 | Hrl Laboratories, Llc | Method and system to predict and interpret conceptual knowledge in the brain |
US10671917B1 (en) | 2014-07-23 | 2020-06-02 | Hrl Laboratories, Llc | System for mapping extracted Neural activity into Neuroceptual graphs |
WO2016043846A2 (en) * | 2014-07-23 | 2016-03-24 | Hrl Laboratories Llc | A general formal concept analysis (fca) framework for classification |
US10360506B2 (en) | 2014-07-23 | 2019-07-23 | Hrl Laboratories, Llc | General formal concept analysis (FCA) framework for classification |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010147010A1 (en) * | 2009-06-17 | 2010-12-23 | 日本電気株式会社 | Module classification analysis system, module classification analysis method, and module classification analysis program |
-
2012
- 2012-05-08 JP JP2012107121A patent/JP5725623B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391584A (en) * | 2017-06-22 | 2017-11-24 | 中南大学 | Facet searching method and system based on formal notion lattice |
CN107391584B (en) * | 2017-06-22 | 2020-12-11 | 中南大学 | Formal concept lattice-based facet search method and system |
Also Published As
Publication number | Publication date |
---|---|
JP2013235398A (en) | 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 | |
JP5725623B2 (en) | Program analysis apparatus and method, and program | |
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 (en) | Data tracing method, device, data processing equipment and computer storage medium | |
US20170193375A1 (en) | Rule guided fabrication of structured data and messages | |
WO2015154474A1 (en) | Query interface generation method and device | |
US20180025162A1 (en) | Application program analysis apparatus and method | |
CN111966718B (en) | System and method for data propagation tracking of application systems | |
Silva et al. | Capturing provenance for runtime data analysis in computational science and engineering applications | |
JP2017522639A5 (en) | ||
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 (en) | Program analysis apparatus and method, and program | |
Gao et al. | Generating open api usage rule from error descriptions | |
KR101673151B1 (en) | Method and Apparatus for Analyzing Relationship Change of Program Source and DB Schema | |
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 | |
JP2013235350A (en) | Design support device and method for controlling the same |
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 |