JPH05181652A - プログラムリバース装置 - Google Patents

プログラムリバース装置

Info

Publication number
JPH05181652A
JPH05181652A JP4000696A JP69692A JPH05181652A JP H05181652 A JPH05181652 A JP H05181652A JP 4000696 A JP4000696 A JP 4000696A JP 69692 A JP69692 A JP 69692A JP H05181652 A JPH05181652 A JP H05181652A
Authority
JP
Japan
Prior art keywords
module
data flow
data
outputting
source 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
Application number
JP4000696A
Other languages
English (en)
Inventor
Masanori Koizumi
昌紀 小泉
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP4000696A priority Critical patent/JPH05181652A/ja
Publication of JPH05181652A publication Critical patent/JPH05181652A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 ソースプログラムからモジュール関係とデー
タフローのうち、特定の領域固有な部分に関連した情報
を抽出し、それに対して問い合わせることができる機能
を有するプログラムリバース装置を提供する。 【構成】 本発明のプログラムリバース装置は、ソース
プログラムを構文解析し構文解析木を出力する構文解析
手段1と、ソースプログラムに対して注目する領域固有
の視点を格納した領域知識格納手段3と、構文解析木と
領域知識格納手段を用いてモジュール階層関係を出力す
るモジュール関係解析手段2と、構文解析木からデータ
フローを出力するデータフロー解析手段4と、問い合わ
せ文を与えると、モジュール階層関係とデータフローを
参照して問い合わせ結果を出力する問い合わせ手段5と
から構成される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプログラムリバース装置
に関する。
【0002】
【従来の技術】近年、既存のソフトウェアを新規開発す
るよりも保守改造する要求が急速に増大している。ソフ
トウェア開発者と管理者は異なることが多いので、ドキ
ュメントが不備・標準化されず、ベテラン技術者が長期
間担当することになる。また、企業環境の変化が激し
く、これに応じてソフトウェアに対する緊急の修正要求
が多いなどの問題が顕在化している。
【0003】保守改造を行うためには、まず対象となる
ソフトウェアから修正に必要な情報を抽出する必要があ
る。この抽出作業は従来人手で行われていたが、対象と
なるソフトウェアが大規模化,複雑化すると人手では抽
出作業に対処することが難しい。
【0004】計算機を用いて、ソースプログラムからよ
り高レベルの情報を抽出することを支援する技術は、
「プログラムリバース」技術と呼ばれている。従来のプ
ログラムリバース装置の一例を図3に示す。プログラム
リバース装置は、ある特定のプログラミング言語で記述
されたソースプログラムを構文解析し構文解析木を出力
する構文解析手段21と、構文解析木からモジュール階
層関係を解析するモジュール関係解析手段22と、構文
解析木から制御フローを解析する制御フロー解析手段2
3と、問い合わせ文を与えると、モジュール階層関係と
制御フローを参照して問い合わせ結果を出力する問い合
わせ手段24とから構成されている。
【0005】
【発明が解決しようとする課題】まず、ソースプログラ
ムの中でプログラミング言語本来の機能の実現している
部分を領域独立の部分、ある特定のライブラリ変数,ラ
イブラリモジュールを用いている部分を領域固有の部分
と呼ぶことにする。例えば、画面上に部品を配置するプ
ログラムは、画面上に部品を配置するライブラリモジュ
ール,ライブラリ変数を用いて実現されている。プログ
ラムのうち、ライブラリモジュールを用いずに数値計算
を行う部分は領域独立の部分であり、ライブラリモジュ
ールを用いて画面を生成するモジュールは領域固有の部
分である。
【0006】上述した従来の技術は、ある特定のプログ
ラミング言語で記述されたソースプログラムに関して領
域固有の部分を特別に扱わない。すなわち、ソースプロ
グラムを与えるとモジュール関係に関する情報と制御フ
ローに関する情報を選別なく出力する。
【0007】しかし、このような技術には次のような問
題点がある。まず、利用者の目的はある特定の情報を抽
出することであるが、従来の技術には領域知識が含まれ
ない。よって、利用者は、プログラムリバース装置が出
力した情報から、領域固有の部分を選別しなければなら
なかった。例えば、画面上に部品を配置するプログラム
では、画面上に部品を配置するライブラリを用いている
部分を利用者が選別しなければならなかった。これは、
規模の大きなプログラムをリバースするとリバースされ
た情報が膨大になり深刻な問題となる。
【0008】また、通常の手続き型プログラミング言語
では、構文要素は、関数・手続きなどのモジュールに関
する部分,分岐文,繰り返し文などの制御フローに関す
る部分,変数宣言文・代入文などのデータフローに関す
る部分の3つに大別できる。従来の方法が扱うのはこの
うちモジュールに関する部分と制御フローに関する部分
であり、データフローに関する情報を扱っていない。し
かし、領域固有の情報はライブラリ変数,ライブラリモ
ジュールに関係するのでデータフローに関する情報は扱
わなければならない。例えば、画面上に部品を配置する
プログラムでは、画面情報が格納された変数を追跡する
といった機能はデータフローに関する部分を用いて実現
される。
【0009】本発明の目的は、ソースプログラムからモ
ジュール関係とデータフローのうちある領域固有な部分
に関連した情報を出力する機能を有するプログラムリバ
ース装置を提供することにある。
【0010】
【課題を解決するための手段】第1の発明のプログラム
リバース装置は、ソースプログラムを構文解析し構文解
析木を出力する構文解析手段と、前記ソースプログラム
に対して注目する領域固有の視点を格納した領域知識格
納手段と、前記構文解析木と前記領域知識格納手段を用
いてモジュール階層関係を出力するモジュール関係解析
手段と、前記構文解析木からデータフローを出力するデ
ータフロー解析手段と、問い合わせ文を与えると、前記
モジュール階層関係と前記データフローを参照して問い
合わせ結果を出力する問い合わせ手段とから成ることを
特徴とする。
【0011】第2の発明のプログラムリバース装置は、
ソースプログラムを構文解析し構文解析木を出力する構
文解析手段と、前記ソースプログラムに対して注目する
領域固有の視点を格納した領域知識格納手段と、前記構
文解析木と前記領域知識格納手段を用いてモジュール階
層関係を出力するモジュール関係解析手段と、前記構文
解析木からデータフローを出力するデータフロー解析手
段と、前記モジュール階層関係と前記データフローを参
照してモジュールの引数を伝播させ、データを伝播させ
たモジュールを出力するデータ伝播手段と、他のアプリ
ケーションの入力となるデータ形式を定めたデータ形式
変換規則格納手段と、前記データ形式変換規則格納手段
を参照して前記データを伝播させたモジュールのデータ
形式を変換するデータ形式変換手段とから成ることを特
徴とする。
【0012】
【作用】第1の発明であるプログラムリバース装置は、
ソースプログラムからモジュール関係とデータフローの
うち、特定の領域固有な部分に関連した情報を抽出す
る。領域固有の部分は領域知識格納手段中に蓄積されて
いて、モジュール関係とデータフローから自動的に領域
固有の部分を選別するので、利用者は問い合わせ結果か
ら領域固有の部分を選別する必要がない。
【0013】第2の発明であるプログラムリバース装置
は、ソースプログラムからモジュール関係とデータフロ
ーのうち、特定の領域固有な部分に関連した情報を抽出
する。領域固有の部分は領域知識格納手段中に蓄積され
ていて、モジュール関係とデータフローから自動的に領
域固有の部分を選別し、それを他のソフトウェアに入力
可能なデータ形式に変換するので、利用者は新たにデー
タを入力する必要がない。
【0014】
【実施例】第1の発明について図面を参照して説明す
る。図1は第1の発明のプログラムリバース装置の一実
施例を示す構成図である。このプログラムリバース装置
は、ソースプログラムを構文解析し構文解析木を出力す
る構文解析手段1と、ソースプログラムに対して注目す
る領域固有の視点を格納した領域知識格納手段3と、構
文解析木と領域知識格納手段3を用いてモジュール階層
関係を出力するモジュール関係解析手段2と、構文解析
木からデータフローを出力するデータフロー解析手段4
と、問い合わせ文を与えると、モジュール階層関係とデ
ータフローを参照して問い合わせ結果を出力する問い合
わせ手段5とから構成されている。
【0015】図4のフローチャートを参照して、図1の
実施例の処理の流れについて説明する。
【0016】ステップA1 構文解析手段1は、ソース
プログラムを構文要素を構文解析し構文解析木を出力す
る。ここで、構文解析木はソースプログラム中に出現す
る構文要素の関係を表したものである。構文要素は、関
数・手続きなどのモジュールに関する部分,分岐文・繰
り返し文などの制御フローに関する部分,変数宣言文・
代入文などのデータフローに関する部分の3つに大別で
きる。
【0017】ステップA2 モジュール関係解析手段2
は、構文解析木の中でモジュールの定義とモジュールの
呼び出しを順にたどり、モジュール階層関係を求める。
このモジュール階層関係のうち、領域知識格納手段3中
のライブラリモジュールと合致するモジュールにはマー
ク付けしておく。
【0018】ステップA3 データフロー解析手段4
は、構文解析木の中でデータフローに関する部分を解析
する。変数宣言文が出現するとデータフローに型を付
け、代入文が出現するとデータフローに値を付ける。
【0019】ステップA4 問い合わせ手段5は、問い
合わせ文を与えると、モジュール階層関係とデータフロ
ーを参照して問い合わせ結果を出力する。
【0020】第1の発明の例として、画面上に部品を配
置するライブラリを用いてC言語で記述されたプログラ
ムに限定し、リバースの過程を具体的に説明する。説明
のために単純な例として、次のプログラムを考える。こ
のプログラムは、画面上の位置(0,100)と位置
(100,100)に幅100のボタンを配置するプロ
グラムである。ここで、Widgetは部品を表す領域
固有の型、makebuttonはボタンを生成する領
域固有モジュールである。 main() { int x1,x2; widget button1,button2; x1=0; x2=100; button1=foo(x1); button2=foo(x2); } widget foo(x) { return bar(x,100); } widget bar(x,y) { widget coo; coo=makebutton( XPOS,x, YPOS,y, WIDTH,100, ); return coo; } ステップA1 構文解析手段1は、mainなどのモジ
ュールとx1などの変数が含んだ構文解析木を生成す
る。
【0021】ステップA2 モジュール関係解析手段2
は、(main,foo,bar,makebutto
n)なるモジュール階層関係を生成し、makebut
tonの箇所にマーク付けする。
【0022】ステップA3 データフロー解析手段4
は、モジュールmainの中を例にとるとx1,x2,
button1,button2に関するデータフロー
を生成する。
【0023】ステップA4 問い合わせ手段5は例え
ば、「変数button1が格納している値はどの領域
固有モジュールの返り値か?」という問い合わせに対し
て、button1に関するデータフローと(mai
n,foo,bar,makebutton)なるモジ
ュール階層関係を参照して、「変数button1が格
納している値はモジュールmakebuttonの返り
値である」という問い合わせ結果を生成する。
【0024】第2の発明について図面を参照して説明す
る。図2は第2の発明のプログラムリバース装置の一実
施例を示す構成図である。このプログラムリバース装置
は、ソースプログラムを構文解析し構文解析木を出力す
る構文解析手段11と、ソースプログラムに対して注目
する領域固有の視点を格納した領域知識格納手段13
と、構文解析木と領域知識格納手段を用いてモジュール
階層関係を出力するモジュール関係解析手段12と、構
文解析木からデータフローを出力するデータフロー解析
手段14と、モジュール階層関係とデータフローを参照
してモジュールの引数を伝播させ、データを伝播させた
モジュールを出力するデータ伝播手段15と、他のアプ
リケーションの入力となるデータ形式を定めたデータ形
式変換規則格納手段16と、データ形式変換規則格納手
段を参照してデータを伝播させたモジュールのデータ形
式を変換するデータ形式変換手段17とから構成されて
いる。
【0025】図5のフローチャートを参照して、図2の
実施例の処理の流れについて説明する。
【0026】ステップB1 構文解析手段11は、ソー
スプログラムを構文要素を構文解析し構文解析木を出力
する。ここで、構文解析木はソースプログラム中に出現
する構文要素の関係を表したものである。構文要素は、
関数・手続きなどのモジュールに関する部分,分岐文・
繰り返し文などの制御フローに関する部分,変数宣言文
・代入文などのデータフローに関する部分の3つに大別
できる。
【0027】ステップB2 モジュール関係解析手段1
2は、構文解析木の中でモジュールの定義とモジュール
の呼び出しを順にたどり、モジュール階層関係を求め
る。このモジュール階層関係のうち、領域知識格納手段
13中のライブラリモジュールと合致するモジュールに
はマーク付けしておく。
【0028】ステップB3 データフロー解析手段14
は、構文解析木の中でデータフローに関する部分を解析
する。変数宣言文が出現するとデータフローに型を付
け、代入文が出現するとデータフローに値を付ける。
【0029】ステップB4 データ伝播手段15は、モ
ジュール階層関係とデータフローを参照してモジュール
の引数を伝播させ、データを伝播させたモジュールを出
力する。ここで、データ伝播手段15の処理の流れは図
6に示す通りである。
【0030】ステップC1 まず、モジュール階層関係
から、葉が領域固有のモジュールに合致するパスを見つ
ける。この時領域知識格納手段13を参照する。
【0031】ステップC2 次に、そのパスについて親
モジュールで確定した引数の値を子モジュールに伝播す
る。
【0032】ステップC3 そして、領域固有モジュー
ル(パスの葉の部分)の引数の値を確定させる。
【0033】ステップC4 ソースプログラム中の親モ
ジュールの位置に引数の値が確定した領域固有モジュー
ルを埋め込む。
【0034】ステップB5 データ形式変換手段17
は、データを伝播させたモジュールを他のソフトウェア
に入力可能なデータに変換する。
【0035】第1の発明と同じ例を用いて第2の発明を
具体的に説明する。
【0036】ステップB1 構文解析手段11は、ma
inなどのモジュールとx1などの変数が含んだ構文解
析木を生成する。
【0037】ステップB2 モジュール関係解析手段1
2は、(main,foo,bar,makebutt
on)なるモジュール階層関係を生成し、makebu
ttonの箇所にマークを付ける。
【0038】ステップB3 データフロー解析手段は、
モジュールmainの中を例にとるとx1,x2,bu
tton1,button2に関するデータフローを生
成する。
【0039】ステップB4 データ伝播手段は以下の処
理を行う。
【0040】ステップC1 モジュール階層関係から、
葉が領域固有のモジュールに合致するパスとして(ma
in,foo,bar,makebutton)を得
る。
【0041】ステップC2 ステップC1で得られたパ
スについて親モジュールで確定した引数の値を子モジュ
ールに伝播し、fooの引数はfoo(0)に、bar
の引数はbar(0,100)と確定する。
【0042】ステップC3 領域固有モジュールmak
ebuttonの引数の値を確定させる。makebu
ttonの引数はmakebutton(XPOS,
0,YPOS,100,WIDTH,100)と確定す
る。
【0043】ステップC4 ソースプログラム中の親モ
ジュールのfoo(x1)の位置に引数の値が確定した
領域固有モジュールmakebutton(XPOS,
0,YPOS,100,WIDTH,100)を埋め込
む。
【0044】ステップB5 リバース装置が出力するデ
ータを受け取るソフトウェアとして、画面上に部品を配
置する簡易言語を仮定する。この簡易言語が受け取るデ
ータ形式は図7に示すように、属性と値の組からなる。
【0045】データ形式変換手段17は、HEIGHT
のデフォルト値50を埋め込み、データ伝播手段が出力
したデータ形式を図7で示したデータに変換することに
より、以下のデータを出力する。このデータは、画面上
の位置(0,100)と位置(100,100)に幅1
00高さ50のボタンを配置することを表現している。 (button XPOS 0 YPOS 100 WIDTH 100 HEIGHT 50 ) (button XPOS 100 YPOS 100 WIDTH 100 HEIGHT 50 )
【発明の効果】以上に説明したように、第1の発明は、
ソースプログラムからモジュール関係とデータフローの
うち、特定の領域固有な部分に関連した情報を抽出し、
それに対して問い合わせることができる機能を有する。
【0046】第2の発明は、ソースプログラムからモジ
ュール関係とデータフローのうち、特定の領域固有な部
分に関連した情報を抽出し、それを他のソフトウェアに
入力可能なデータに変換できる機能を有する。
【図面の簡単な説明】
【図1】第1の発明の一実施例を示す構成図である。
【図2】第2の発明の一実施例を示す構成図である。
【図3】従来の一例を示す構成図である。
【図4】図1の実施例における処理の流れを表すフロー
チャートである。
【図5】図2の実施例における処理の流れを表すフロー
チャートである。
【図6】図2の実施例におけるデータ伝播手段の例であ
る。
【図7】図2の実施例において、他のソフトウェアの入
力となるデータ形式の一例である。
【符号の説明】
1,11 構文解析手段 2,12 モジュール関係解析手段 3,13 領域知識格納手段 4,14 データフロー解析手段 5 問い合わせ手段 15 データ伝播手段 16 データ形式変換規則格納手段 17 データ形式変換手段

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】ソースプログラムを構文解析し構文解析木
    を出力する構文解析手段と、 前記ソースプログラムに対して注目する領域固有の視点
    を格納した領域知識格納手段と、 前記構文解析木と前記領域知識格納手段を用いてモジュ
    ール階層関係を出力するモジュール関係解析手段と、 前記構文解析木からデータフローを出力するデータフロ
    ー解析手段と、 問い合わせ文を与えると、前記モジュール階層関係と前
    記データフローを参照して問い合わせ結果を出力する問
    い合わせ手段とから成ることを特徴とするプログラムリ
    バース装置。
  2. 【請求項2】ソースプログラムを構文解析し構文解析木
    を出力する構文解析手段と、 前記ソースプログラムに対して注目する領域固有の視点
    を格納した領域知識格納手段と、 前記構文解析木と前記領域知識格納手段を用いてモジュ
    ール階層関係を出力するモジュール関係解析手段と、 前記構文解析木からデータフローを出力するデータフロ
    ー解析手段と、 前記モジュール階層関係と前記データフローを参照して
    モジュールの引数を伝播させ、データを伝播させたモジ
    ュールを出力するデータ伝播手段と、 他のアプリケーションの入力となるデータ形式を定めた
    データ形式変換規則格納手段と、 前記データ形式変換規則格納手段を参照して前記データ
    を伝播させたモジュールのデータ形式を変換するデータ
    形式変換手段とから成ることを特徴とするプログラムリ
    バース装置。
JP4000696A 1992-01-07 1992-01-07 プログラムリバース装置 Pending JPH05181652A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4000696A JPH05181652A (ja) 1992-01-07 1992-01-07 プログラムリバース装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4000696A JPH05181652A (ja) 1992-01-07 1992-01-07 プログラムリバース装置

Publications (1)

Publication Number Publication Date
JPH05181652A true JPH05181652A (ja) 1993-07-23

Family

ID=11480932

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4000696A Pending JPH05181652A (ja) 1992-01-07 1992-01-07 プログラムリバース装置

Country Status (1)

Country Link
JP (1) JPH05181652A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756731A (ja) * 1993-08-17 1995-03-03 Nec Corp プログラム解析装置
JP2016051367A (ja) * 2014-09-01 2016-04-11 日本電気通信システム株式会社 データ解析装置、データ解析方法、および、プログラム。

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756731A (ja) * 1993-08-17 1995-03-03 Nec Corp プログラム解析装置
JP2016051367A (ja) * 2014-09-01 2016-04-11 日本電気通信システム株式会社 データ解析装置、データ解析方法、および、プログラム。

Similar Documents

Publication Publication Date Title
US11036614B1 (en) Data control-oriented smart contract static analysis method and system
EP3745256B1 (en) External code integrations within a computing environment
JP2004505379A (ja) Xmlロボット
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
CN115639980A (zh) 一种低代码平台可拖拽的前端逻辑编排方法及装置
CN110109671A (zh) 一种webpack标签尺寸样式转换方法及装置
US8700374B1 (en) System and method of using an active link in a state programming environment to locate an element in a graphical programming environment
JPH1165832A (ja) ソースコード変換方法及び記録媒体
JPH08292881A (ja) プログラム影響範囲表示装置
JP2004185508A (ja) プログラム解析装置およびプログラム
Wipliez et al. Code generation for the MPEG reconfigurable video coding framework: From CAL actions to C functions
JPH05181652A (ja) プログラムリバース装置
AU631128B2 (en) Software agent used to provide instruction to a user for a plurality of computer applications
JPH10187461A (ja) 言語処理方式
Kacsuk et al. The GRED graphical editor for the GRADE parallel program development environment
JP3003459B2 (ja) プログラム作成支援装置
CN117573106A (zh) 前端h5项目构建方法、装置、设备及存储介质
EP0202007A2 (en) A generator of program generators
KR100249517B1 (ko) 서비스 개발 환경 시스템에서의 코드 생성 방법
CN114968334A (zh) 工作流的流转控制方法、装置及电子设备
KR960018928A (ko) 실행 모듈들간의 시그널 정보 획득을 위한 장치
CN114064773A (zh) 一种数据转换方法、装置、计算机设备及存储介质
CN115480755A (zh) 一种逻辑结构建模方法、系统、电子设备及存储介质
CN114564186A (zh) 图形化编程模块控制硬件的实现方法
CN116932819A (zh) 一种数据流程的控制方法、系统、设备及介质

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees