JP2009042951A - プログラム中のデータ抽出方法及び装置 - Google Patents
プログラム中のデータ抽出方法及び装置 Download PDFInfo
- Publication number
- JP2009042951A JP2009042951A JP2007206047A JP2007206047A JP2009042951A JP 2009042951 A JP2009042951 A JP 2009042951A JP 2007206047 A JP2007206047 A JP 2007206047A JP 2007206047 A JP2007206047 A JP 2007206047A JP 2009042951 A JP2009042951 A JP 2009042951A
- Authority
- JP
- Japan
- Prior art keywords
- program
- insertion point
- external
- information
- external program
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】既存システム資産に対する外部プログラムの追加を行う作業を支援するシステムの提供。
【解決手段】データフロー解析により外部プログラム挿入ポイント候補を絞り込む。プログラムに対し外的要因となるデータに対して一時的、または恒常的に変更を加えることができる、トランザクションデータに注目する。・外部プログラム挿入ポイント候補の絞込みの観点1.GUIを呼び出す記述2.サブプログラムを呼び出している記述2.1 GUIを呼び出す記述がある2.2 ファイル形式のデータを参照している2.3 DBに格納されたデータを参照している3.ミドルウェアプログラムを呼び出している記述3.1 GUIを呼び出す記述がある3.2 ファイル形式のデータを参照している3.3 DBに格納されたデータを参照している
【選択図】図1
【解決手段】データフロー解析により外部プログラム挿入ポイント候補を絞り込む。プログラムに対し外的要因となるデータに対して一時的、または恒常的に変更を加えることができる、トランザクションデータに注目する。・外部プログラム挿入ポイント候補の絞込みの観点1.GUIを呼び出す記述2.サブプログラムを呼び出している記述2.1 GUIを呼び出す記述がある2.2 ファイル形式のデータを参照している2.3 DBに格納されたデータを参照している3.ミドルウェアプログラムを呼び出している記述3.1 GUIを呼び出す記述がある3.2 ファイル形式のデータを参照している3.3 DBに格納されたデータを参照している
【選択図】図1
Description
本発明は、該当プログラムの解析方法と、該当プログラムに対し、外部プログラムを挿入する作業を支援するシステムに関する。
従来より、情報システムで使用されているプログラムの解析を行うことにより、情報システムの理解を支援するリバースエンジニアリング支援システムは、広く使用されている。但し、リバースエンジニアリング支援システムは、対象プログラムの解析を行うことを目的としており、対象プログラムの内容に処理の追加を行いたい場合、人が対象プログラムにハードコーディングする必要があった。また、対象プログラム中で利用するデータの異常を検出する場合、BAM(business activity monitoring)が広く知られている。しかし、BAMが検知するトランザクションデータと、プログラムの仕様との付け合せは人手に頼らなければならないのが現状である。
例えば、既存システムに対しデータに変更を加え得るポイントとして、個々のプログラムに対するトランザクションが考えられる。この際、必要に応じて目的のデータを特定し、どのようなデータがプログラムに取り込まれているかチェックする必要がある。このため、プログラム中から、任意のデータに対して関連のある記述を抽出し、該当データに外的要因となる部分を抽出する必要がある。
任意データに関連のある記述をプログラム中から抽出する方法として、特許文献1に記載されている。これは、プログラム中の起点(データ)情報を元にして、その起点(データ)に影響を与えている若しくは与えられているプログラムの一部分を特定する方法として、プログラム解析技術を説明している。この技法は、プログラム中の記述間の関連を依存グラフと呼ばれるグラフに纏め、この依存グラフから起点(データ)として指定した記述に影響を与えている記述、若しくは影響を与えられている記述を抽出する技法である。プログラム解析では記述間の関連をデータ依存関連によって抽出しており、データ依存とは、ある記述で更新したデータを他の記述で参照している関係を示している。
該当プログラムに対し、外部プログラムを挿入する方法のひとつとして、アスペクト指向プログラミングが考えられる。アスペクト指向プログラミングでは、既存プログラムに対して手を加えることなく、外部プログラムの追加・変更を可能とする。アスペクト指向プログラミングとは、アスペクトというモジュール機構を持ち、ロギングやセキュリティ機能などのモジュール間を横断する関心事(これまで外部プログラムと説明した)をアスペクトとして記述できる。つまり、ここで利用するアスペクトの持つポイントカット+アドバイス機構(この機構は、アスペクトが対象プログラムとは別の部分で挙動を変更・追加することを可能にするものであり、具体的には、言語に定義されているジョインポイントというプログラム実行中の「動作の時点」に対し、ポイントカットとはジョインポイントが満たすべき条件を記述し、アドバイスとは変更・追加すべき挙動を記述することで上記を実現するものである。)を利用して、実行中の既存プログラム中に散在している、プログラム解析で明らかとなった外部プログラム挿入ポイントに対し、アスペクトとして記述した関心事(外部プログラム)を織り込むことが可能である。
従来の方法では、該当プログラムに対し外部プログラムを挿入するには、人がプログラムを読んで人が外部プログラム挿入ポイントを見つけ出し、人が外部プログラムを挿入する。といった、人手に頼る方法しかなかった。また、法改正、コンプライアンスに関する規制、ITを利用した犯罪の増加等の情勢を受け、企業の持つシステム(プログラム)に対しチェック機能等を組み込むため、外部プログラムを挿入したいという課題がある。
また、外部プログラムの購入ポイントを決定する際にも、外部プログラムの挿入ポイント部分にあたる該当プログラムのソースコードを羅列するのみでは、ユーザは適切に挿入ポイントの判断ができない。例えば、複雑な条件が絡んだ処理がある場合などユーザが判断を下すことが難しいためである。
本発明では、既存システムに対し、前述のデータフロー解析を実施することによって、外部プログラムの挿入ポイントを更に絞り込んだ後、後述の観点に沿って更に外部プログラムの挿入ポイントを絞り込むことで、外部プログラム挿入の要・不要判定支援を可能とする。また、アスペクト指向プログラミングを用いることで人手に頼らず、対象プログラムにも一切手を加えることなく、外部プログラムを織り込むことを可能とする。
データフロー解析により外部プログラム挿入ポイント候補を絞り込んだ後に、予め外部記憶装置に格納された下記の観点からポイントの絞込みを実施することで、外部プログラムの挿入ポイントを絞り込むことを可能とする。下記の観点の前提としては、プログラムに対し外的要因となるデータに対して一時的、または恒常的に変更を加えることができるポイントを、外部プログラムの挿入ポイントとして注目している。
・外部プログラム挿入ポイント候補の絞込みの観点
1.GUIを呼び出す記述
2.サブプログラムを呼び出している記述
2.1サブプログラムは、GUIを呼び出す記述がある
2.2サブプログラムは、ファイル形式のデータを参照している
2.3サブプログラムは、DBに格納されたデータを参照している
3.ミドルウェアプログラムを呼び出している記述
3.1ミドルウェアプログラムは、GUIを呼び出す記述がある
3.2ミドルウェアプログラムは、ファイル形式のデータを参照している
3.3ミドルウェアプログラムは、DBに格納されたデータを参照している
次に、前述のユーザインタフェースの課題では、ユーザが外部プログラムの挿入ポイントを設定するために、絞り込んだ挿入ポイントと、そのポイントの記述が影響する、また影響を受ける範囲の記述を画面表示するユーザインタフェースを提供する。このユーザインタフェースによって、複雑な条件が絡む処理においても、外部プログラムの挿入ポイントにある記述がどのような処理を行っているか、ユーザの理解を支援するとともに、外部プログラム挿入の判断を支援することを可能とする。
・外部プログラム挿入ポイント候補の絞込みの観点
1.GUIを呼び出す記述
2.サブプログラムを呼び出している記述
2.1サブプログラムは、GUIを呼び出す記述がある
2.2サブプログラムは、ファイル形式のデータを参照している
2.3サブプログラムは、DBに格納されたデータを参照している
3.ミドルウェアプログラムを呼び出している記述
3.1ミドルウェアプログラムは、GUIを呼び出す記述がある
3.2ミドルウェアプログラムは、ファイル形式のデータを参照している
3.3ミドルウェアプログラムは、DBに格納されたデータを参照している
次に、前述のユーザインタフェースの課題では、ユーザが外部プログラムの挿入ポイントを設定するために、絞り込んだ挿入ポイントと、そのポイントの記述が影響する、また影響を受ける範囲の記述を画面表示するユーザインタフェースを提供する。このユーザインタフェースによって、複雑な条件が絡む処理においても、外部プログラムの挿入ポイントにある記述がどのような処理を行っているか、ユーザの理解を支援するとともに、外部プログラム挿入の判断を支援することを可能とする。
本発明を用いて、外部プログラムの挿入ポイントの選定において、外部プログラム挿入ポイントの候補を絞り込むことが可能である。
以下、本発明の実施例について、図面を用いて詳細に説明する。
図1は、外部プログラム挿入ポイント選定支援システム全体構成図を示している。システムはバス等の接続手段で接続されたCPU101と、ディスプレイ装置102と、キーボード103と、マウス等の指示装置104と、外部記憶装置113、メモリ112、ハードディスク105と、ハードディスク上に置かれたプログラム106〜111からなる。また、外部記憶装113上に示した114〜120とは外部記憶装置上に置かれたデータである。なお、対象プログラム114は、解析対象とするプログラムである。メモリ112では、必要に応じてプログラムやデータを呼び出し利用する。
図2に記載されているフローチャートを用いて、外部プログラム挿入ポイント選定支援システムの機能について説明する。外部プログラム挿入ポイント選定支援システムの機能は、プログラム解析部106と、外部プログラム挿入ポイント候補の抽出部107と、外部プログラム挿入ポイント候補の関連ロジック抽出部108と、外部プログラム挿入ポイント候補・関連ロジックの表示部109と、アスペクトの生成部110と、アスペクト織り込み部111の機能からユーザに機能を指定させ、その機能を実行する。
プログラム解析部106は、キーボード103や指示部104からユーザによって指定されたプログラム名とをキーとして、解析対象のプログラム114を検索し、解析するプログラムを取得する。そして、データフロー解析技術を用いて、任意データに関連する記述をプログラム中から抽出し、抽出結果をプログラム解析情報115に与える(ステップ201)。
外部プログラム挿入ポイント候補の抽出部107は、外部プログラムの挿入ポイント候補の抽出機能202を実行することで、プログラム解析部でデータフロー解析技術を用いて抽出した、任意データに関連する記述の中から、外部要因の影響を受ける記述を抽出することで、外部プログラムの挿入ポイントを絞り込む。ここで抽出した記述は、挿入ポイント候補情報116に与える。なお、外部プログラムの挿入ポイント候補の抽出機能202については、以下で詳細に説明する(ステップ202)。
外部プログラム挿入ポイント候補の関連記述抽出部108は、外部プログラムの挿入ポイント候補の抽出機能202にて抽出し、挿入ポイント候補情報116に与えた記述部位に対して、それぞれ前後のコンテクストを抽出し、外部プログラム挿入ポイント候補と共に、挿入ポイントに関する表示情報117に与える(ステップ203)。
外部プログラムの挿入ポイント候補・関連記述の表示部109は、外部プログラムの挿入ポイント候補の抽出機能202を実行した結果である挿入ポイント候補情報116と、挿入ポイント候補情報116を元に、外部プログラム挿入ポイント候補の関連記述抽出部108を実行することで得た、挿入ポイントに関する表示情報117を対応付けてディスプレイ装置102に表示する。この際、挿入ポイント候補情報116に対し、挿入ポイントに関する表示情報117について、メイン−サブプログラム間の階層関係を残して、メインプログラムのソースコードに関連するサブプログラムのソースコードを格納した形で表示する。サブプログラムのソースコードは、ユーザの必要に応じて表示する。以下で詳細に説明する(ステップ204)。
ディスプレイ装置102に表示した外部プログラム挿入ポイント候補を元に、ユーザが外部プログラムの挿入ポイントを決定し、これを挿入ポイント決定情報118に与える。また、ディスプレイ装置102に表示した結果に対して、ユーザに再度、プログラム解析機能を実行させるかを選択させる(ステップ205)。
挿入ポイントの決定情報118を元に、アスペクトを生成する。つまり、アスペクト指向プログラミングにおいて、決定した挿入ポイントをポイントカット対象とし、ユーザによるアドバイスの実装を行う。つまりアドバイスは、外部プログラムのプログラムソースを記述することである(ステップ206)。
アスペクト指向によるウィーバ技術を用いて、アスペクト119を対象プログラム106に織り込む。アスペクトを織り込んだソースを外部プログラム織り込み後プログラム120に与える(ステップ207)。
上記ステップ201〜207をユーザが再度、プログラム解析機能の実行を選択している間、繰り返し行い、プログラム解析機能の終了を選択したときに、アスペクトの生成機能と、アスペクトの織り込み機能を実行して装置を終了する。
次に、図3に記載されているフローチャートに沿って、外部プログラム挿入ポイント選定支援システムのプログラム解析部106の機能について説明する
まず前提として、ユーザの指定を受けて本発明装置が対象のプログラムを選定する。ここで、「プログラム」とは、ジョブ制御言語の記述、汎用プログラム言語で書かれたソースプログラムの全体、または、関数、手続きなどその一部分等、手続きを定義する任意のもので良い。特に、実行時の環境や、入力データの値によって決まるプログラム中の特定の実行文の系列を、「プログラム」としても良い。対象プログラムはプログラム解析部に読み込み、構文解析を実施する(ステップ301〜302)。
まず前提として、ユーザの指定を受けて本発明装置が対象のプログラムを選定する。ここで、「プログラム」とは、ジョブ制御言語の記述、汎用プログラム言語で書かれたソースプログラムの全体、または、関数、手続きなどその一部分等、手続きを定義する任意のもので良い。特に、実行時の環境や、入力データの値によって決まるプログラム中の特定の実行文の系列を、「プログラム」としても良い。対象プログラムはプログラム解析部に読み込み、構文解析を実施する(ステップ301〜302)。
構文解析結果を基に、制御依存・データ依存によるプログラム依存グラフを生成する。このプログラム依存グラフを基に、任意データに対するデータフロー解析を実施するものである。本発明では、この段階でサブプログラム毎のデータフローサマリ情報と、外部プログラム挿入可否判断情報を加えることで、後工程である任意データを指定してデータ依存をたどってノード(記述文)をマーキングする作業(ステップ304〜ステップ305)を簡略化することが可能である(ステップ303)。
ステップ303の詳細を以下の図13〜図16を用いて説明する。先ず、図13において、対象プログラム114より、該当するプログラムを呼び出す(ステップ1301)。次に該当プログラムについて、サブプログラムの呼び出し関係を分析する(ステップ1302)。ここまでの作業は通常のデータフロー解析の前処理と相違は無い。これに加え、データフローサマリ情報と外部プログラム挿入可否判断情報をサブプログラムごとに加える。
先ず、サブプログラムの呼び出し関係の中で、呼び出し関係の子供側の端となるプログラムから順番に呼び出す(ステップ1303)。
次に、サブプログラム毎にUSE/DEFINEチェーンとデータフローサマリ情報を作成する。(ステップ1304)データフローサマリ情報は、プログラム解析情報114に格納する。
USE/DEFINEチェーンについては、図15を用いて解説する。図15において、仮に親プログラムA(1501)中の、“C=U”(1502)という記述文の“C”に関連して、“B=C+Z”という記述文がある。この関係において、“C=U”(1502)という記述文の“C”を“DEFINE”、“B=C+Z”という記述文の中の“C”を“USE”と定義する。USE/DEFINEチェーンとは、図15中の矢印の連携を意味している。USE/DEFINEチェーンを作成することで、サブプログラム中のデータフローサマリ情報を定義することができ、図15において、例えばサブプログラムB(1505)の入力となる“P=XX”(1507)の“XX”と、USE/DEFINEチェーンを辿って出力となる、“YY=E”(1508)の“YY”をデータフローサマリ情報と定義することができる。このデータフローサマリ情報“XX,YY”(1506)は、親プログラムであるプログラムA(1501)中の記述、“Call B (X,Y)”(1504)の“X,Y”に代入することができる。以上によって、ステップ1402の後工程となる、図3の任意データを指定してデータ依存をたどってノード(記述文)をマーキングする作業(ステップ304〜ステップ305)の際、必要に応じてサブプログラムのデータ依存の調査作業を省略し、親プログラムにデータフローサマリ情報を代入することで、普段であればサブプログラム全てのデータ依存を辿る作業を簡略化することが可能である。上記について図15を用いて説明するならば、プログラムA(1501)の“C=U”(1502)という記述文の“C”についてデータフロー解析を行う場合、“Call B (X,Y)”(1504)において、サブプログラムB(1508)のプログラムソースのデータフロー解析を行わずに、サブプログラムB(1508)のデータフローサマリ情報を参照することで、データフロー解析をプログラムA(1501)の“D=Y”(1509)に続けることができる。
次に、図13に戻り、外部プログラム挿入可否判断情報を作成する。これは、後工程である図3の任意データを指定してデータ依存をたどってノード(記述文)をマーキングする(ステップ304〜ステップ305)の作業の際、サブプログラム中に外部プログラム挿入ポイントが存在するか判定を行い、存在しないプログラムの作業を削除するために必要である(ステップ1305)。
外部プログラム挿入可否判断情報は、予め外部記憶装置に格納された外部プログラム挿入ポイント候補の絞込みの観点から設定する。図14に示すように、ここでは該当するサブプログラムについて“GUIを呼び出す命令文があるか”(ステップ1401)、“DB形式のデータを参照しているか”(ステップ1402)、“ファイルに格納されたデータを参照しているか”(ステップ1403)の判定を行い、上記のいずれかの条件が当てはまる場合は、該当するサブプログラムに対して“○”のフラグを記録してプログラム解析情報114に格納する(ステップ1404)。逆に、上記のいずれの条件も当てはまらない場合は、該当するサブプログラムに“×”のフラグを記録してプログラム解析情報114に格納する(ステップ1405)。
上記の“○,×”フラグの利用方法については、データ依存をたどってノード(記述文)をマーキングするステップ305にて説明する。
ステップ304では、挿入する外部プログラムの目的に応じて、外部プログラム挿入箇所を絞り込むためにデータフロー解析を実施することを目的に、ユーザが任意データを指定する。任意データとは、対象プログラム中に記述されたステートメントの抜粋と、データフロー解析の始点と終点である。任意データの指定は、ユーザの指定に応じて、本発明装置が図6のユーザ設定値入力画面を用いて行う。先ずユーザは予めチェックしておいた対象プログラムの中から、外部プログラム挿入のためのデータフロー解析の基準となるステートメントを、外部プログラム挿入のための任意データ(ステートメント変数)の入力6101に記述する。次に、同様にしてデータフロー解析始点の入力6102、データフロー解析終点の入力6103を入力する(ステップ304)。
ステップ304では、挿入する外部プログラムの目的に応じて、外部プログラム挿入箇所を絞り込むためにデータフロー解析を実施することを目的に、ユーザが任意データを指定する。任意データとは、対象プログラム中に記述されたステートメントの抜粋と、データフロー解析の始点と終点である。任意データの指定は、ユーザの指定に応じて、本発明装置が図6のユーザ設定値入力画面を用いて行う。先ずユーザは予めチェックしておいた対象プログラムの中から、外部プログラム挿入のためのデータフロー解析の基準となるステートメントを、外部プログラム挿入のための任意データ(ステートメント変数)の入力6101に記述する。次に、同様にしてデータフロー解析始点の入力6102、データフロー解析終点の入力6103を入力する(ステップ304)。
ユーザの指定した任意データとプログラム依存グラフを基に、データ依存をたどってノード(記述文)をマーキングする(ステップ305)。
ステップ305において、外部プログラム挿入可否判断情報を用いて、作業対象のプログラムを特定する。図16はデータフロー解析対象の任意データの存在するプログラムA(1601)と、例えばCall文によって親子関係にあるサブプログラムB(1603)、サブプログラムC(1606)、サブプログラムD(1607)、サブプログラムE(1609)、サブプログラムF(1611)がある。先ず、外部プログラム挿入可否判断情報のフラグが“×”となっているサブプログラムD(1607)、サブプログラムE(1609)、サブプログラムF(1611)は作業対象外となります。作業は、外部プログラム挿入可否判断情報のフラグが“○”となっている親プログラムのプログラムA(1601)からスタートし、サブプログラムB(1603)、サブプログラムC(1606)へマーキング作業を進めます。この際、プログラムBでは、“Call D(V,W)”(1605)にて、外部プログラム挿入可否判断情報のフラグが“×”となっている
サブプログラムD(1607)を呼び出していますが、サブプログラムD(1607)のデータフローサマリ情報(VV,WW)を“Call D(V,W)”(1605)に代入して、サブプログラムB(1603)のマーキング作業を進めます。
サブプログラムD(1607)を呼び出していますが、サブプログラムD(1607)のデータフローサマリ情報(VV,WW)を“Call D(V,W)”(1605)に代入して、サブプログラムB(1603)のマーキング作業を進めます。
マーキングしたソースコードを表示し、ユーザの確認を取得する(ステップ306〜307)。
最後に、マーキングしたソースコードをプログラム解析情報115に格納する。(ステップ308)
次に、図7のメニュー画面を用いて、外部プログラム挿入ポイント選定支援システムの機能を具体的に説明する。
次に、図7のメニュー画面を用いて、外部プログラム挿入ポイント選定支援システムの機能を具体的に説明する。
図7メニュー画面では、先ず、本発明装置はユーザのプログラム解析機能実行7101の選択を受け付け、プログラム解析部106を起動してプログラム解析結果を作成し、その結果をプログラム解析情報115に登録する。プログラム解析結果を図12に示す。ここでは、図8に示す対象プログラムの例から、任意データを“I−FILE”とした場合、“I−FILE”を入力データとしてプログラム解析を行う。図9に視覚的に示した記述部位がプログラム解析の結果であり、これをプログラム解析情報115に格納する。
次に、ユーザには外部プログラム挿入候補の抽出7102を選択させ、外部プログラム挿入ポイントの抽出部107を起動させ、外部プログラムの挿入ポイントを絞り込む。つまりここでは、プログラム解析情報115に蓄積したプログラム解析の結果、抽出した記述部位の中から、GUIを呼び出す記述、サブプログラムを呼び出している記述、ミドルウェアプログラムを呼び出している記述を抽出することで、外部プログラムの挿入ポイントを絞り込む。外部プログラムの挿入ポイントを絞り込んだ結果を、挿入ポイント候補情報116に格納する。
3つ目に、ユーザに、外部プログラムの挿入ポイント候補の関連記述抽出7103を選択させ、外部プログラム挿入ポイント候補の関連記述抽出部108を起動させ、外部プログラム挿入ポイント候補として抽出した挿入ポイント候補情報116の個々に対し、前後10行(仮)のコンテクストを抽出し、挿入ポイント候補情報116の個々と紐付けて、挿入ポイントに関する表示情報117に格納する。
4つ目に、ユーザに、外部プログラムの挿入ポイント候補・関連記述の表示7104を選択させ、外部プログラムの挿入ポイント候補・関連記述の表示部109を起動させ、ユーザに対し、挿入ポイント候補情報116から外部プログラムの挿入ポイント候補と、挿入ポイントに関する表示情報117から外部プログラム挿入ポイント候補の関連記述を表示する。ユーザには一旦、外部プログラムの挿入ポイント候補をプログラムの記述順に表示した画面、図10を確認し、必要に応じて、外部プログラムの挿入ポイント候補の関連記述を表示した画面、図11を確認する。外部プログラムの挿入ポイント候補の関連記述の表示は、図10の“PERFORM K = 1 VARYING K BY 1 UNTIL K > MAX”10101のように、外部プログラムの挿入ポイント候補の個々を選択することで、ネストされていた図11外部プログラムの挿入ポイント候補の関連記述を画面表示する。外部プログラムの挿入ポイント候補が対象プログラム外でも発生する場合は、同様に、挿入ポイント候補の関連記述を画面表示する。
5つ目に、ユーザに、アスペクトの生成7105を選択させ、アスペクト生成部110を起動させ、外部プログラム挿入の目的にあわせアスペクトを生成する。アスペクトに記述する外部プログラム自体はアドバイスとしてユーザが書く。生成したアスペクトは、アスペクト119に格納する。
最後に、ユーザに、アスペクトの織り込み7105を選択させ、アスペクトの織り込み部を起動する。ここでは、対象プログラム114とアスペクト119を入力として、対象プログラム114にアスペクト119を織り込んだプログラムソースを生成する。生成したプログラムソースは、外部プログラム織り込み後プログラム120に格納する。
次に、図1〜図12を参照して、本実施形態における外部プログラム挿入ポイント選定支援システムについて詳細に説明する。
ユーザの入力に応じてプログラム解析機能106を起動し、対象となる図8のプログラムを選択して、データフロー解析を実行して、図12のプログラム解析情報を作成する(ステップ201)。
ユーザは、外部プログラム挿入ポイント抽出機能107を起動する。ここでは、図4のステップ401で、プログラム解析情報115より、任意のデータに関する記述部分を取り込む。任意のデータに関する記述部分に対しては、外部プログラムの挿入ポイントの判定を行うため、ここでは、プログラム解析情報115より任意のデータに関する記述部分を1行毎に取り込む(ステップ401)。
ステップ402では、プログラム解析情報115より取り込んだデータの中で、GUIを呼び出す記述を抽出する。この抽出結果は、人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ402)。
ステップ403では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出している記述を抽出している。この処理以降では、サブプログラムの中でデータに対する変更可能箇所を検索する(ステップ403)。
ステップ404では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出し、且つ、サブプログラムの中でGUIを呼び出す記述を抽出する。この抽出結果は、人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ404)。
ステップ404では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出し、且つ、サブプログラムの中でGUIを呼び出す記述を抽出する。この抽出結果は、人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ404)。
ステップ405では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出し、且つ、サブプログラムの中でDBにアクセスして、データを取得している記述を抽出する。この抽出結果は、DBを介して人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ405)。
ステップ406では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出し、且つ、サブプログラムの中でファイルに格納されたデータを参照している記述を抽出する。この抽出結果は、ファイルを介して人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ406)。
ステップ408では、プログラム解析情報115より取り込んだデータの中で、サブプログラムを呼び出しはせず、ミドルウェアを呼び出す記述を抽出する(ステップ408)。
ステップ409では、プログラム解析情報115より取り込んだデータの中で、ミドルウェアプログラムの中でGUIを呼び出す記述を抽出する。この抽出結果は、人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ409)。
ステップ410では、プログラム解析情報115より取り込んだデータの中で、ミドルウェアプログラムの中でDBにアクセスして、データを取得している記述を抽出する。この抽出結果は、DBを介して人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ410)。
ステップ411では、プログラム解析情報115より取り込んだデータの中で、ミドルウェアプログラムの中でファイルに格納されたデータを参照している記述を抽出する。この抽出結果は、ファイルを介して人の入力によるデータ変更の可能性があるため、外部プログラム挿入ポイントとして挿入ポイント候補情報116に格納する(ステップ411)。
ステップ407、312では、上記401〜406、408〜411の処理の結果、プログラム解析情報115より絞り込んだ、外部プログラム挿入ポイントして挿入ポイント候補を、外部プログラム挿入ポイントして挿入ポイント候補情報116に格納する。(ステップ407、312)
次に、図2に戻り、外部プログラム挿入ポイント候補の関連記述の抽出機能203を起動する。ここでは、前述の通り、外部プログラム挿入ポイントして挿入ポイント候補情報116に格納した、記述の個々に対する前後のコンテクストを抽出し、挿入ポイントに関する表示情報117に格納する。
次に、図2に戻り、外部プログラム挿入ポイント候補の関連記述の抽出機能203を起動する。ここでは、前述の通り、外部プログラム挿入ポイントして挿入ポイント候補情報116に格納した、記述の個々に対する前後のコンテクストを抽出し、挿入ポイントに関する表示情報117に格納する。
ユーザは、外部プログラム挿入ポイント候補・関連記述の表示機能204を起動する。図5のステップ501では、挿入ポイント候補情報117を取り込み(ステップ501)、その中で、外部プログラム挿入のポイントとなる記述を表示する(ステップ502)。
表示した記述のうち、詳細情報を確認したい物がある場合は(ステップ503)、外部プログラムの挿入ポイントの記述に関連のあるロジックを挿入ポイントに関する表示情報118から取り込み(ステップ504)、対象の記述の表示画面に展開する(ステップ505)。
表示した記述のうち、詳細情報を確認したい物がある場合は(ステップ503)、外部プログラムの挿入ポイントの記述に関連のあるロジックを挿入ポイントに関する表示情報118から取り込み(ステップ504)、対象の記述の表示画面に展開する(ステップ505)。
最後に、他に命令文の詳細情報の確認が必要ないかを判定する。詳細情報の確認が必要である間、繰り返してステップ502〜ステップ505を実施し、必要がなくなれば処理を終了する(ステップ506)。
次に、ユーザにアスペクトの生成7105を選択させ、アスペクト生成部110を起動させ、外部プログラム挿入の目的にあわせアスペクトを生成する。生成したアスペクトは、アスペクト119に格納する。
最後に、ユーザに、アスペクトの織り込み7105を選択させ、アスペクトの織り込み部を起動する。ここでは、対象プログラム114とアスペクト119を入力として、対象プログラム114にアスペクト119を織り込んだプログラムソースを生成する。生成したプログラムソースは、外部プログラム織り込み後プログラム120に格納する。
Claims (7)
- 所定の機能を実行するプログラムに追加的機能を実行する外部プログラムを挿入する箇所の選定を支援する外部プログラム挿入ポイント選定支援装置において、
前記プログラムおよび当該プログラム中に記述されたステートメントから当該プログラム中の当該ステートメントが記述された部分を判別する情報を含むプログラム解析情報を作成するプログラム解析情報作成部と、
前記作成されたプログラム解析情報と、予め設定された外部要因の影響を受けるステートメント情報とから、当該プログラム中の前記判別されたステートメントが記述された部分の中から、外部要因の影響を受けるステートメントの記述部分を外部プログラム挿入ポイントとして抽出し、抽出された前記外部プログラム挿入ポイントを含む外部プログラム挿入ポイント情報を生成する外部プログラム挿入ポイント情報生成部と、
を有することを特徴とする外部プログラム挿入ポイント選定支援装置。 - 請求項1に記載の外部プログラム挿入ポイント選定支援装置において、
前記生成した外部プログラム挿入ポイント情報を基に、挿入ポイントの前後の関連記述情報を抽出する関連記述情報抽出部と、
前記抽出した関連記述情報を表示する表示部と、
を有することを特徴とした外部プログラム挿入ポイント選定支援装置。 - 請求項1または2に記載の外部プログラム挿入ポイント選定支援装置において、
前記生成した外部プログラム挿入ポイント情報を基に、当該外部プログラム挿入ポイント情報の示すポイントへ前記外部プログラムを挿入する、外部プログラム挿入処理部を有することを特徴とした外部プログラム挿入ポイント選定支援装置。 - 請求項1乃至3のいずれか1項に記載の外部プログラム挿入ポイント選定支援装置において、
前記予め設定された外部要因の影響を受けるステートメント情報は、プログラムに対し、データのインプットを示すステートメントであり、
外部プログラム挿入ポイント情報生成部は、当該ステートメント情報を基に外部プログラム挿入ポイント情報を生成することを特徴とした外部プログラム挿入ポイント選定支援装置。 - 請求項1乃至4のいずれか1項に記載の外部プログラム挿入ポイント選定支援装置において、
前記予め設定された外部要因の影響を受けるステートメント情報は、
プログラム中からGUIを呼び出し、人がデータを入力する機構を示すステートメントであり、
外部プログラム挿入ポイント情報生成部は、当該ステートメント情報を基に外部プログラム挿入ポイント情報を生成することを特徴とした外部プログラム挿入ポイント選定支援装置。 - 請求項1乃至5のいずれか1項に記載の外部プログラム挿入ポイント選定支援装置において、
前記予め設定された外部要因の影響を受けるステートメント情報は、
プログラム中から、ミドルウェアプログラムを呼び出す機構と、ミドルウェアプログラム中から、人がデータを入力する機構を示すステートメントであり、
外部プログラム挿入ポイント情報生成部は、当該ステートメント情報を基に外部プログラム挿入ポイント情報を生成することを特徴とした外部プログラム挿入ポイント選定支援装置。 - 請求項1乃至6のいずれか1項に記載の外部プログラム挿入ポイント選定支援装置において、
前記予め設定された外部要因の影響を受けるステートメント情報は、
プログラム中から、サブプログラムを呼び出す機構と、サブプログラム中から、人がデータを入力する機構を示すステートメントであり、
外部プログラム挿入ポイント情報生成部は、当該ステートメント情報を基に外部プログラム挿入ポイント情報を生成することを特徴とした外部プログラム挿入ポイント選定支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007206047A JP2009042951A (ja) | 2007-08-08 | 2007-08-08 | プログラム中のデータ抽出方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007206047A JP2009042951A (ja) | 2007-08-08 | 2007-08-08 | プログラム中のデータ抽出方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009042951A true JP2009042951A (ja) | 2009-02-26 |
Family
ID=40443645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007206047A Pending JP2009042951A (ja) | 2007-08-08 | 2007-08-08 | プログラム中のデータ抽出方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009042951A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011121873A1 (ja) * | 2010-03-30 | 2011-10-06 | 日本電気株式会社 | プログラム処理方法、プログラム処理装置、およびコンピュータプログラム |
JP2017004282A (ja) * | 2015-06-11 | 2017-01-05 | 日本電気通信システム株式会社 | プログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01316842A (ja) * | 1988-06-16 | 1989-12-21 | Fujitsu Ltd | バッチプログラム・デバッグツール |
JP2000112743A (ja) * | 1998-09-30 | 2000-04-21 | Hitachi Software Eng Co Ltd | プログラム修正情報管理方法 |
JP2004094374A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Comware Corp | ロギングシステム |
JP2005258944A (ja) * | 2004-03-12 | 2005-09-22 | Internatl Business Mach Corp <Ibm> | プログラム解析装置、その解析方法及びプログラム |
-
2007
- 2007-08-08 JP JP2007206047A patent/JP2009042951A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01316842A (ja) * | 1988-06-16 | 1989-12-21 | Fujitsu Ltd | バッチプログラム・デバッグツール |
JP2000112743A (ja) * | 1998-09-30 | 2000-04-21 | Hitachi Software Eng Co Ltd | プログラム修正情報管理方法 |
JP2004094374A (ja) * | 2002-08-29 | 2004-03-25 | Ntt Comware Corp | ロギングシステム |
JP2005258944A (ja) * | 2004-03-12 | 2005-09-22 | Internatl Business Mach Corp <Ibm> | プログラム解析装置、その解析方法及びプログラム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011121873A1 (ja) * | 2010-03-30 | 2011-10-06 | 日本電気株式会社 | プログラム処理方法、プログラム処理装置、およびコンピュータプログラム |
US9342382B2 (en) | 2010-03-30 | 2016-05-17 | Nec Corporation | Program processing method, program processing apparatus, and computer program |
JP2017004282A (ja) * | 2015-06-11 | 2017-01-05 | 日本電気通信システム株式会社 | プログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9015666B2 (en) | Updating product documentation using automated test scripts | |
US9098626B2 (en) | Method and system for log file processing and generating a graphical user interface based thereon | |
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
US8713532B2 (en) | Debugging using code analysis | |
KR101623174B1 (ko) | 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
JP2008191963A (ja) | ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム | |
US8959479B2 (en) | Presenting a custom view in an integrated development environment based on a variable selection | |
CN101960419B (zh) | 为嵌入式设备构建操作系统镜像的系统和方法 | |
JPH08241191A (ja) | Gui自動評価装置 | |
JP2007241426A (ja) | アプリケーションの障害原因の特定作業支援システム | |
JP2010102620A (ja) | ユーザ操作シナリオ生成装置、方法およびプログラム | |
JP2009042951A (ja) | プログラム中のデータ抽出方法及び装置 | |
CN111460235A (zh) | 图谱数据的处理方法、装置、设备及存储介质 | |
JP2009230420A (ja) | ソースコード品質管理装置 | |
JP2006209179A (ja) | モデル差分検出ツール | |
US11609772B2 (en) | Dynamically generating guided tours for software | |
JP4977681B2 (ja) | データパターン/テストデータ生成・蓄積方法及びシステム | |
US9015658B2 (en) | Automatic program generation device and automatic program generation method | |
JP6097231B2 (ja) | プログラム生成装置および方法 | |
CN113807698A (zh) | 一种工单生成方法、装置、电子设备及可读存储介质 | |
JP4835791B2 (ja) | Gui評価システム、gui評価方法およびgui評価用プログラム | |
JP2007213487A (ja) | アスペクト生成方法及び装置 | |
CN105359111A (zh) | 用户界面检查方法、设备及程序 | |
JP4641238B2 (ja) | アプリケーション動作追跡支援装置 | |
US10642915B2 (en) | System and method for automatic advancement of navigation through a user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Effective date: 20100901 Free format text: JAPANESE INTERMEDIATE CODE: A711 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101221 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110412 |