Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4712512B2 - プログラム変換プログラム、プログラム変換装置、プログラム変換方法 - Google Patents
[go: Go Back, main page]

JP4712512B2 - プログラム変換プログラム、プログラム変換装置、プログラム変換方法 - Google Patents

プログラム変換プログラム、プログラム変換装置、プログラム変換方法 Download PDF

Info

Publication number
JP4712512B2
JP4712512B2 JP2005299891A JP2005299891A JP4712512B2 JP 4712512 B2 JP4712512 B2 JP 4712512B2 JP 2005299891 A JP2005299891 A JP 2005299891A JP 2005299891 A JP2005299891 A JP 2005299891A JP 4712512 B2 JP4712512 B2 JP 4712512B2
Authority
JP
Japan
Prior art keywords
program
argument
call
call destination
dedicated
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
JP2005299891A
Other languages
English (en)
Other versions
JP2007109044A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005299891A priority Critical patent/JP4712512B2/ja
Priority to US11/336,917 priority patent/US8209670B2/en
Publication of JP2007109044A publication Critical patent/JP2007109044A/ja
Application granted granted Critical
Publication of JP4712512B2 publication Critical patent/JP4712512B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、引数の内容により処理が異なるプログラムの解析の容易にするプログラム変換プログラム、プログラム変換装置、プログラム変換方法に関するものである。
企業の基幹業務をシステム化したような業務アプリケーションプログラムは、プログラムの規模が大きく、多くの人と時間を費やして開発されている。また、このようなプログラムは、長期にわたって保守、運用されており高い品質が要求されると共に、業務の変更などによる修正が頻繁に行われるという特徴を持つ。
このようなプログラムの保守については、いくつかの課題が存在する。まず、保守担当者の入れ替わりがあることから、属人的なスキルに頼ることができない。また、規模が大きいため、プログラムの全体像の把握が容易ではない。また、仕様書は、保守がおろそかになりプログラムの現状を正しく反映していないことが多い。更に、プログラムに修正を加える際には、修正による影響を知るために大規模なテストを行う必要がある。
これらの課題に対処するためには、プログラムを分析することによりプログラムの仕様書を生成する、あるいは、プログラム間の呼び出し関係やデータの関連などを抽出する、などの機能を持つリバースエンジニアリングツールが利用されている。例えば、プログラムの保守においてプログラムの処理内容を把握するために、プログラム内の処理経路やサブルーチンの呼び出し関係を呼び出し関係図として図示することが良く行われている、
図1は、アクセスルーチンを使用したプログラムの一例を示すソースコードである。このプログラムは、COBOL言語で書かれており、呼び出し元プログラムと呼び出し先プログラムからなる。ここで、呼び出し先プログラムはサブルーチンである。また、図19は、従来のリバースエンジニアリングツールにより表示される呼び出し関係図の一例を示す図である。この呼び出し関係図は、図1のプログラムのものであり、従来のリバースエンジニアリングツールにより得られるものである。
図1のプログラムは、あるファイルにアクセスする機能が呼び出し先プログラムの一つのサブルーチンで実現されており、読み込み処理と書き込み処理などの入出力処理が処理区分を示す引数KUBUNによって切り替わる。このような場合、単に呼び出し関係図を見るだけでは、そこで読み込みが行われるのか書き込みが行われるのか判断ができない。例えば、図19の呼び出し関係図からは、前処理からの呼び出しにおいてOPEN処理だけが実行されるということが判断できないため、人間が該当箇所のソースコードを見て確認する必要がある。
このような図は、サブルーチン内の処理が一定である場合は有用であるが、サブルーチン内の処理が引数などによって大きく変わるような場合、呼び出し関係図だけでは実際にどのような処理が実行されるのかを把握することができないという問題がある。また、従来の静的分析ツールは、呼び出し関係図の表示だけでなく、データの入出力の分析など、様々な用途に用いられているが、このツールだけでは、処理区分を持ったプログラムの処理内容の把握ができないという大きな問題があり、開発・保守作業を阻害する大きな原因となっていた。
なお、本発明の関連ある従来技術として、例えば、下記に示す特許文献1が知られている。このプログラム解析装置及びプログラム解析方法及び記録媒体は、上述した課題を解決するために、呼び出し箇所における引数の値が特定可能かどうかを分析し、その値の場合に実行される経路だけを抽出し、呼び出し関係図を表示する。
特開2002−215391号公報
しかしながら、上述した特許文献1の技術は、正確な構文解析に基づいた複雑な分析を行う必要がある。従って、呼び出し関係図生成ツール、プログラム仕様書生成ツール、プログラム・データ関連情報抽出ツール、プログラム・データ関連情報抽出ツールなどの既存のリバースエンジニアリングツールを改造して特許文献1の技術を組み込むことは容易ではなく、一般には用いられていない。
また、呼び出し関係図を表示することはできても、上述した他のリバースエンジニアリングツールを利用することはできない。
本発明は上述した問題点を解決するためになされたものであり、引数の内容により処理が異なるプログラムを、解析の容易なプログラムに変換するプログラム変換プログラム、プログラム変換装置、プログラム変換方法を提供することを目的とする。
上述した課題を解決するため、本発明は、呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換をコンピュータに実行させるプログラム変換プログラムであって、前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換えステップとをコンピュータに実行させるものである。
また、本発明に係るプログラム変換プログラムにおいて、前記呼び出し元プログラム書き換えステップは、前記呼び出し元プログラムにおいて前記呼び出し先プログラムの呼び出しに用いる引数の取り得る値を検出することにより、前記引数の取り得る値が限定できる場合、引数の取り得る値毎に対応する前記専用呼び出し先プログラムの呼び出しを行うように前記呼び出し箇所を書き換えることを特徴とするものである。
また、本発明に係るプログラム変換プログラムにおいて、前記専用呼び出し先プログラム生成ステップと前記呼び出し元書き換えステップは、前記引数と前記引数の内容に応じて生成される前記専用呼び出し先プログラム名を用いることを特徴とするものである。
また、本発明に係るプログラム変換プログラムにおいて、前記専用呼び出し先プログラム生成ステップは、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明に係るプログラム変換プログラムにおいて、前記引数の内容は、引数の値であり、前記呼び出し先プログラムは前記引数の値によって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明に係るプログラム変換プログラムにおいて、前記引数の内容は、引数のクラスであり、前記呼び出し先プログラムは前記引数のクラスによって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数のクラス毎の専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明は、呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換を行うプログラム変換装置であって、前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成部と、前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成部により生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換え部とを備えたものである。
また、本発明に係るプログラム変換装置において、前記呼び出し元プログラム書き換え部は、前記呼び出し元プログラムにおいて前記呼び出し先プログラムの呼び出しに用いる引数の取り得る値を検出することにより、前記引数の取り得る値が限定できる場合、引数の取り得る値毎に対応する前記専用呼び出し先プログラムの呼び出しを行うように前記呼び出し箇所を書き換えることを特徴とするものである。
また、本発明に係るプログラム変換装置において、前記専用呼び出し先プログラム生成部と前記呼び出し元書き換え部は、前記引数と前記引数の内容に応じて生成される前記専用呼び出し先プログラム名を用いることを特徴とするものである。
また、本発明に係るプログラム変換装置において、前記専用呼び出し先プログラム生成部は、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明に係るプログラム変換装置において、前記引数の内容は、引数の値であり、前記呼び出し先プログラムは前記引数の値によって処理が異なり、前記専用呼び出し先プログラム生成部は前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明に係るプログラム変換装置において、前記引数の内容は、引数のクラスであり、前記呼び出し先プログラムは前記引数のクラスによって処理が異なり、前記専用呼び出し先プログラム生成部は前記引数のクラス毎の専用呼び出し先プログラムを生成することを特徴とするものである。
また、本発明は、呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換を実行するプログラム変換方法であって、前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換えステップとを実行するものである。
本発明のプログラム変換を行うことにより、ソースコード上で処理内容が理解しやすくなる。更に、プログラム変換の結果は、既存の静的分析ツールに手を加えることなく利用でき、より処理内容が理解しやすくなる。
以下、本発明の実施の形態について図面を参照しつつ説明する。
実施の形態1.
本実施の形態では、COBOL言語で書かれたプログラムを変換するプログラム変換装置について説明する。
まず、本発明に係るプログラム変換装置の構成について説明する。
図2は、本発明に係るプログラム変換装置の構成の一例を示すブロック図である。このプログラム変換装置は、構文木生成部11、引数検出部12、専用ルーチン生成部13、専用ルーチン一覧記憶部14、呼び出し箇所検出部21、呼び出し箇所書き換え部22を備える。プログラム変換装置による変換前のプログラムの集合を変換前プログラム群、変換後のプログラムの集合を変換後プログラム群と呼ぶ。本実施の形態では、主に図1のプログラムを変換前プログラム群として説明する。
次に、本発明に係るプログラム変換装置の動作について説明する。
図3は、本発明に係るプログラム変換装置の動作の一例を示すフローチャートである。まず、構文木生成部11は、変換前プログラムを取得し、構文木を生成する(S10)。構文木生成部11は、パーサとも呼ばれ、構文解析を行うことにより、プログラム中の全ての文を構文木として表す。この構文木を用いることにより、引数検出部12と呼び出し箇所検出部21は、処理区分引数プログラム中の変数、文の情報を参照することができる。図4は、構文木の一例を示すフローチャートである。この構文木は、図1の呼び出し先プログラムについて生成されたものである。
次に、引数検出部12は、変換前プログラム群中の全てのプログラムから、処理区分引数、処理区分引数値、その処理区分引数を持つサブルーチンを検出する処理区分引数検出処理を行う(S11)。次に、専用ルーチン生成部13は、引数検出部12により抽出された全てのサブルーチン、処理区分引数、処理区分引数値について専用サブルーチン生成処理が終了したか否かの判断を行う(S12)。終了した場合(S12,Y)、処理S21へ移行する。一方、終了していない場合(S12,N)、専用ルーチン生成部13は、次のサブルーチン、処理区分引数、処理区分引数値について専用サブルーチン生成処理を行い(S13)、処理S12へ戻る。
次に、呼び出し箇所定数検出部21は、変換前プログラム群中の全てのプログラムから、専用ルーチン生成部13により生成された全ての専用サブルーチンについて呼び出し箇所を検出する呼び出し箇所検出処理を行う(S11)。次に、呼び出し箇所書き換え部22は、呼び出し箇所検出部21により検出された全ての呼び出し箇所について呼び出し箇所書き換え処理が終了したか否かの判断を行う(S22)。終了した場合(S22,Y)、このフローを終了する。一方、終了していない場合(S22,N)、呼び出し箇所書き換え部22は、次の専用サブルーチンについて呼び出し箇所書き換え処理を行い(S23)、処理S22へ戻る。
次に、処理区分引数検出処理について説明する。
処理区分引数検出処理として、引数検出部12は、サブルーチンにおいて引数の値がそのまま参照される場合に処理区分引数等の検出を行う処理区分引数検出処理と、サブルーチンにおいて引数の値が一旦別の変数に転送される場合に処理区分引数等の検出を行う第2の処理区分引数検出処理を行う。更に、引数の値に応じて別の変数の値を設定する場合を検出するようにしても良い。
図5は、本発明に係る第1の処理区分引数検出処理の動作の一例を示すフローチャートである。まず、引数検出部12は、引数のうち条件式で使われているものを抽出する(S31)。次に、引数検出部12は、抽出された引数のうち、プログラム内で値が変更されていないものを抽出する(S33)。次に、引数検出部12は、抽出された引数のうち、分岐経路の実行の有無が引数と定数との比較により決まるものを抽出する(S34)。次に、引数検出部12は、抽出された引数のうち、引数の影響を受ける分岐経路中でプログラム外に影響を与える処理が行われるものを抽出し(S35)、残った引数を処理区分引数とし、処理区分引数と共に、その処理区分引数の値、その処理区分引数を持つサブルーチンを出力し(S36)、このフローを終了する。
図6は、本発明に係る第2の処理区分引数検出処理の動作の一例を示すフローチャートである。まず、引数検出部12は、変数のうち条件式で使われているものを抽出する(S41)。次に、引数検出部12は、抽出された変数のうち、引数の値をそのまま設定しているものを抽出する(S42)。次に、引数検出部12は、抽出された変数のうち、プログラム内で値が変更されていないものを抽出する(S43)。次に、引数検出部12は、抽出された変数のうち、設定位置以降の分岐経路の実行の有無が変数と定数との比較により決まるものを抽出する(S44)。次に、引数検出部12は、抽出された変数のうち、変数の影響を受ける分岐経路中でプログラム外に影響を与える処理が行われるものを抽出し(S45)、残った変数の代入元の引数を処理区分引数とし、処理区分引数と共に、その処理区分引数の値、その処理区分引数を持つサブルーチンを出力し(S46)、このフローを終了する。
次に、専用サブルーチン生成処理について説明する。
ここで、引数検出部12により検出された処理区分引数を持つサブルーチンを変換前サブルーチンと呼ぶ。専用サブルーチン生成処理として、引数の値が処理区分として用いられている変換前サブルーチンから専用サブルーチンを生成する第1の専用サブルーチン生成処理と、引数の値がそのまま別の専用サブルーチンの引数として用いられている変換前サブルーチンから専用サブルーチンを生成する第2の専用サブルーチン生成処理が行われる。
図7は、本発明に係る第1の専用サブルーチン生成処理の動作の一例を示すフローチャートである。まず、専用ルーチン生成部13は、引数検出部12により出力された処理区分引数とその値を一つ選択する(S51)。次に、専用ルーチン生成部13は、対象となる変換前サブルーチン名の末尾に、処理区分引数名と値の組み合わせを付加し、専用サブルーチン名を生成する(S52)。次に、専用ルーチン生成部13は、選択した処理区分と値の下で、実行されない分岐経路を検索する(S53)。次に、専用ルーチン生成部13は、実行されない分岐経路の処理内容を空にする(S54)。次に、専用ルーチン生成部13は、分岐経路が1つだけになった条件文を取り除き、残った分岐経路だけの経路にする(S55)。次に、専用ルーチン生成部13は、専用ルーチン一覧記憶部14の専用ルーチン一覧にこの専用サブルーチンの情報を追加する(S56)。次に、専用ルーチン生成部13は、書き換えた内容を変換後プログラムとして出力し(S57)、このフローを終了する。
なお、このフローでは、分岐経路が一意に確定する場合に、条件文を取り除くようにしているが、条件文にも実行の副作用がある言語においては、取り除かない。
また、複数の処理区分を持ったサブルーチンの場合、それぞれの値の組み合わせに対応した専用サブルーチンを生成するが、実際に呼び出されるものだけを選択し、変換後プログラムとして出力することで変換後プログラムの生成量を削減するようにしても良い。
図8は、本発明に係る第1の専用サブルーチン生成処理における変換前プログラムと変換後プログラムの一例を示すソースコードである。この例において、変換前プログラムは図1の呼び出し先プログラムである。上述した第1の専用サブルーチン生成処理により、処理区分引数の値毎に実行する処理内容だけを表した専用サブルーチンが生成され、変換後プログラムとして出力される。
図9は、本発明に係る第2の専用サブルーチン生成処理の動作の一例を示すフローチャートである。ここで、専用サブルーチン生成処理の対象となる変換前サブルーチンを対象変換前サブルーチンと呼び、対象変換前サブルーチンの呼び出し先である変換前サブルーチンを呼び出し先変換前サブルーチンと呼び、呼び出し先変換前サブルーチンを元に生成された専用サブルーチンを呼び出し先専用サブルーチンと呼ぶ。
まず、専用ルーチン生成部13は、対象変換前サブルーチンが、呼び出し先専用サブルーチンの元となる呼び出し先変換前サブルーチンを呼び出しているか否かの判断を行う(S61)。呼び出し先変換前サブルーチンを呼び出していない場合(S61,N)、このフローを終了する。一方、呼び出し先変換前サブルーチンを呼び出している場合(S61,Y)、専用ルーチン生成部13は、対象変換前サブルーチンへの引数が呼び出し先専用サブルーチンの処理区分に渡されているか否かの判断を行う(S62)。
渡されていない場合(S62,N)、このフローを終了する。一方、渡されている場合(S62,Y)、専用ルーチン生成部13は、呼び出し先変換前サブルーチン名の末尾に、処理区分引数名と値の組み合わせを付加し、呼び出し先専用サブルーチン名を生成し(S63)、呼び出し先専用サブルーチン名を呼び出すように呼び出し箇所を書き換える(S64)。次に、専用ルーチン生成部13は、専用ルーチン一覧記憶部14の専用ルーチン一覧にこの専用サブルーチンの情報を追加する(S65)。次に、専用ルーチン生成部13は、書き換えた内容を変換後プログラムとして出力し(S66)、このフローを終了する。
図10は、本発明に係る第2の専用サブルーチン生成処理における変換前プログラムと変換後プログラムの一例を示すソースコードである。図10の変換前プログラムは、呼び出されるときに渡された引数を、そのまま図8の変換前プログラムを呼び出すときの引数として渡すものである。上述した第2の専用サブルーチン生成処理により、処理区分引数の値毎に、対応する専用サブルーチンを呼び出す専用サブルーチンが生成され、変換後プログラムとして出力される。
図11は、本発明に係る専用ルーチン一覧の一例を示す表である。専用ルーチン一覧記憶部14に記憶される専用ルーチン一覧は、ルーチン名、引数位置、値、書き換えルーチン名の項目を持ち、これらの項目は処理区分引数とその値毎に記憶される。ルーチン名は、変換前プログラムにおけるサブルーチン名を表す。引数位置は、呼び出し先プログラムにおける引数のうち対象となる処理区分引数の位置を表す。値は、対象となる処理区分引数の値を表す。書き換えルーチン名は、専用ルーチン生成部13により生成された、出力プログラムにおけるサブルーチン名を表す。
なお、サブルーチンのソースが得られない場合、あるいはサブルーチンが別言語で記述されており解析できない場合、ここまでの処理を行わずに、専用ルーチン一覧を外部で作成して与えることにより、以降の処理を行うようにしても良い。また、専用ルーチン一覧の内容を利用者に提示し、自動生成されたルーチン名の代わりに、利用者が内容を的確に表すルーチン名に変更した後で、以降の処理を行うようにしても良い。
次に、呼び出し箇所書き換え処理について説明する。
図12は、本発明に係る呼び出し箇所書き換え処理の動作の一例を示すフローチャートである。ここで、呼び出し箇所書き換え処理の対象となる変換前プログラムを対象変換前プログラムと呼び、対象変換前プログラムの呼び出し先である変換前サブルーチンを呼び出し先変換前サブルーチンと呼び、呼び出し先変換前サブルーチンを元に生成された専用サブルーチンを呼び出し先専用サブルーチンと呼ぶ。
まず、呼び出し箇所書き換え部22は、呼び出し箇所検出部21により検出された、呼び出し先変換前サブルーチンを呼び出している箇所のうち1箇所を選択する(S71)。次に、呼び出し箇所書き換え部22は、選択した呼び出し箇所から実行経路を遡り、呼び出し箇所における処理区分引数に該当する変数の取り得る値を求める(S72)。次に、呼び出し箇所書き換え部22は、その変数の取り得る値が有限個に確定するか否かの判断を行う(S73)。有限個に確定しない場合(S73,N)、処理S77へ移行する。一方、有限個に確定する場合(S73,Y)、呼び出し箇所書き換え部22は、その変数の取り得る値が1個に確定するか否かの判断を行う(S74)。
1個に確定する場合(S74,Y)、呼び出し箇所書き換え部22は、専用ルーチン一覧記憶部14に記憶された専用ルーチン一覧から、その変数の値に該当する専用サブルーチン名を取得する(S75)。次に、呼び出し箇所書き換え部22は、呼び出し箇所における呼び出し先変更前サブルーチン名を専用サブルーチン名に書き換え(S76)、変換後プログラムとして出力し(S77)、このフローを終了する。
図13は、本発明に係る呼び出し箇所書き換え処理により出力される変換後プログラムの第1の例を示すソースコードである。この図は、処理区分引数に該当する変数の取り得る値が1個に確定する場合を表す。
一方、1個に確定しない場合(S74,N)、呼び出し箇所書き換え部22は、専用ルーチン一覧記憶部14に記憶された専用ルーチン一覧から、その変数の値に該当する専用サブルーチン名を取得する(S78)。次に、呼び出し箇所書き換え部22は、呼び出し箇所をEVALUATE文に書き換え、各分岐内の処理で専用サブルーチンを呼び出す文を実行するように書き換え(S79)、処理S77へ移行する。
図14は、本発明に係る処理区分引数の値が複数個となる変換前プログラムの一例を示すソースコードである。図15は、本発明に係る呼び出し箇所書き換え処理により出力される変換後プログラムの一例を示すソースコードである。この例では、処理区分引数に該当する変数の取り得る値が2と3に限定できることから、分岐によりそれぞれの専用サブルーチンを呼び出す処理に書き換えている。更に、呼び出し箇所書き換え部22は、この図に示すように処理区分の値が変換後プログラム中のどこで設定されるのかをコメントとして付加しているが、付加しなくても良い。
図16は、本発明に係るプログラム変換装置により出力される変換後プログラムの一例を示すソースコードである。この変換後プログラムは、図1の変換元プログラムからプログラム変換装置により得られたものであり、呼び出し元プログラムである図13の変換後プログラムと呼び出し先プログラムである図8の変換後プログラムからなる。呼び出し先プログラムは、処理区分の値毎に専用サブルーチンとして表されたことにより、処理内容の把握が容易なプログラムとなっている。
また、呼び出し関係図生成ツールを用いてこの変換後プログラムから呼び出し関係図を作成することにより、処理内容の把握が容易な呼び出し関係図を生成することができる。図17は、本発明に係る変換後プログラムを呼び出し関係図生成ツールに入力して得られる呼び出し関係図の一例を示す図である。変換前プログラムから生成される呼び出し関係図である図19と比較すると、実行される処理内容だけが表されることにより、呼び出し関係図の無駄な表示が削減されると共に、処理内容の把握を容易にしている。
実施の形態2.
本実施の形態では、オブジェクト指向言語で書かれたプログラムを変換するプログラム変換装置について説明する。
図18は、オブジェクト指向言語で書かれたプログラムについて本発明に係るプログラム変換装置による変換結果の一例を示すソースコードである。この例では、オーバーライドと呼ばれる、スーパークラスのメソッドと同じ名前のメソッドをサブクラスに定義することで処理内容を切り替える手法に対して、本発明のプログラム変換装置を適用する場合について述べる。
図18の例において、スーパークラスfigureを継承したサブクラスCircle,Boxにおいてそれぞれ別の処理のDraw()メソッドが定義されている場合、AddFigure()から呼び出されるDraw()メソッドは、引数となるfのクラスに依存している。本実施の形態におけるプログラム変換装置は、実施の形態1における専用サブルーチンと同様、それぞれのクラスに対応する専用メソッドAddFigure(Circle f),AddFigure(Box f)を生成する。更に、実施の形態1における引数に該当する変数の値と同様、AddFigure()の呼び出し箇所において引数に該当する変数のクラスが特定可能である場合、対応する専用メソッドを呼び出すようにキャストを追加することにより、呼び出し先の処理内容の特定が可能となる。
このように、本発明のプログラム変換装置は、実施の形態1で述べたCOBOL言語だけでなく、実施の形態2で述べたオブジェクト指向言語など、他の言語に適用することが可能である。
更に、プログラム変換装置を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、プログラム変換プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、プログラム変換装置を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ROMやRAM等のコンピュータに内部実装される内部記憶装置、CD−ROMやフレキシブルディスク、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
なお、専用呼び出し先プログラム生成部は、実施の形態における引数検出部と専用ルーチン生成部に対応する。また、呼び出し元プログラム書き換え部は、実施の形態における呼び出し箇所検出部と呼び出し箇所書き換え部に対応する。また、専用呼び出し先プログラム生成ステップは、実施の形態における処理S11,S12,S13に対応する。また、呼び出し元プログラム書き換えステップは、実施の形態における処理S21,S22,S23に対応する。
(付記1) 呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換をコンピュータに実行させるプログラム変換プログラムであって、
前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、
前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換えステップと、
をコンピュータに実行させるプログラム変換プログラム。
(付記2) 付記1に記載のプログラム変換プログラムにおいて、
前記呼び出し元プログラム書き換えステップは、前記呼び出し元プログラムにおいて前記呼び出し先プログラムの呼び出しに用いる引数の取り得る値を検出することにより、前記引数の取り得る値が限定できる場合、引数の取り得る値毎に対応する前記専用呼び出し先プログラムの呼び出しを行うように前記呼び出し箇所を書き換えることを特徴とするプログラム変換プログラム。
(付記3) 付記1または付記2に記載のプログラム変換プログラムにおいて、
前記専用呼び出し先プログラム生成ステップと前記呼び出し元書き換えステップは、前記引数と前記引数の内容に応じて生成される前記専用呼び出し先プログラム名を用いることを特徴とするプログラム変換プログラム。
(付記4) 付記1乃至付記3のいずれかに記載のプログラム変換プログラムにおいて、
前記専用呼び出し先プログラム生成ステップは、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
(付記5) 付記1乃至付記4のいずれかに記載のプログラム変換プログラムにおいて、
前記引数の内容は、引数の値であり、前記呼び出し先プログラムは前記引数の値によって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
(付記6) 付記1乃至付記4のいずれかに記載のプログラム変換プログラムにおいて、
前記引数の内容は、引数のクラスであり、前記呼び出し先プログラムは前記引数のクラスによって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数のクラス毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
(付記7) 呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換を行うプログラム変換装置であって、
前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成部と、
前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成部により生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換え部と、
を備えてなるプログラム変換装置。
(付記8) 付記7に記載のプログラム変換装置において、
前記呼び出し元プログラム書き換え部は、前記呼び出し元プログラムにおいて前記呼び出し先プログラムの呼び出しに用いる引数の取り得る値を検出することにより、前記引数の取り得る値が限定できる場合、引数の取り得る値毎に対応する前記専用呼び出し先プログラムの呼び出しを行うように前記呼び出し箇所を書き換えることを特徴とするプログラム変換装置。
(付記9) 付記7または付記8に記載のプログラム変換装置において、
前記専用呼び出し先プログラム生成部と前記呼び出し元書き換え部は、前記引数と前記引数の内容に応じて生成される前記専用呼び出し先プログラム名を用いることを特徴とするプログラム変換装置。
(付記10) 付記7乃至付記9のいずれかに記載のプログラム変換装置において、
前記専用呼び出し先プログラム生成部は、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするプログラム変換装置。
(付記11) 付記7乃至付記10のいずれかに記載のプログラム変換装置において、
前記引数の内容は、引数の値であり、前記呼び出し先プログラムは前記引数の値によって処理が異なり、前記専用呼び出し先プログラム生成部は前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換装置。
(付記12) 付記7乃至付記10のいずれかに記載のプログラム変換装置において、
前記引数の内容は、引数のクラスであり、前記呼び出し先プログラムは前記引数のクラスによって処理が異なり、前記専用呼び出し先プログラム生成部は前記引数のクラス毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換装置。
(付記13) 呼び出し元プログラムと呼び出し先プログラムを含み、前記呼び出し元プログラムが前記呼び出し先プログラムの呼び出しに用いる引数の内容により前記呼び出し先プログラムの処理が異なるプログラム群の変換を実行するプログラム変換方法であって、
前記プログラム群から、前記呼び出し先プログラムと前記呼び出し先プログラムの処理を異ならせる引数と該引数の内容とを検出し、前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、
前記プログラム群から、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換える呼び出し元プログラム書き換えステップと、
を実行するプログラム変換方法。
(付記14) 付記13に記載のプログラム変換方法において、
前記呼び出し元プログラム書き換えステップは、前記呼び出し元プログラムにおいて前記呼び出し先プログラムの呼び出しに用いる引数の取り得る値を検出することにより、前記引数の取り得る値が限定できる場合、引数の取り得る値毎に対応する前記専用呼び出し先プログラムの呼び出しを行うように前記呼び出し箇所を書き換えることを特徴とするプログラム変換方法。
(付記15) 付記13または付記14に記載のプログラム変換方法において、
前記専用呼び出し先プログラム生成ステップと前記呼び出し元書き換えステップは、前記引数と前記引数の内容に応じて生成される前記専用呼び出し先プログラム名を用いることを特徴とするプログラム変換方法。
(付記16) 付記13乃至付記15のいずれかに記載のプログラム変換方法において、
前記専用呼び出し先プログラム生成ステップは、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするプログラム変換方法。
(付記17) 付記13乃至付記16のいずれかに記載のプログラム変換方法において、
前記引数の内容は、引数の値であり、前記呼び出し先プログラムは前記引数の値によって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換方法。
(付記18) 付記13乃至付記16のいずれかに記載のプログラム変換方法において、
前記引数の内容は、引数のクラスであり、前記呼び出し先プログラムは前記引数のクラスによって処理が異なり、前記専用呼び出し先プログラム生成ステップは前記引数のクラス毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換方法。
アクセスルーチンを使用したプログラムの一例を示すソースコードである。 本発明に係るプログラム変換装置の構成の一例を示すブロック図である。 本発明に係るプログラム変換装置の動作の一例を示すフローチャートである。 構文木の一例を示すフローチャートである。 本発明に係る第1の処理区分引数検出処理の動作の一例を示すフローチャートである。 本発明に係る第2の処理区分引数検出処理の動作の一例を示すフローチャートである。 本発明に係る第1の専用サブルーチン生成処理の動作の一例を示すフローチャートである。 本発明に係る第1の専用サブルーチン生成処理における変換前プログラムと変換後プログラムの一例を示すソースコードである。 本発明に係る第2の専用サブルーチン生成処理の動作の一例を示すフローチャートである。 本発明に係る第2の専用サブルーチン生成処理における変換前プログラムと変換後プログラムの一例を示すソースコードである。 本発明に係る専用ルーチン一覧の一例を示す表である。 本発明に係る呼び出し箇所書き換え処理の動作の一例を示すフローチャートである。 本発明に係る呼び出し箇所書き換え処理により出力される変換後プログラムの第1の例を示すソースコードである。 本発明に係る処理区分引数の値が複数個となる変換前プログラムの一例を示すソースコードである。 本発明に係る呼び出し箇所書き換え処理により出力される変換後プログラムの一例を示すソースコードである。 本発明に係るプログラム変換装置により出力される変換後プログラムの一例を示すソースコードである。 本発明に係る変換後プログラムを呼び出し関係図生成ツールに入力して得られる呼び出し関係図の一例を示す図である。 オブジェクト指向言語で書かれたプログラムについて本発明に係るプログラム変換装置による変換結果の一例を示すソースコードである。 従来のリバースエンジニアリングツールにより表示される呼び出し関係図の一例を示す図である。
符号の説明
11 構文木生成部、12 引数検出部、13 専用ルーチン生成部、14 専用ルーチン一覧記憶部、21 呼び出し箇所検出部、22 呼び出し箇所書き換え部。

Claims (8)

  1. 呼び出し元プログラムと、前記呼び出し元プログラムが呼び出しに用いる引数の内容により異なる処理を行う呼び出し先プログラムとを含むプログラム群の変換をコンピュータに実行させるプログラム変換プログラムであって、
    変換前のプログラム群をコンピュータの記憶装置から取得するステップと、
    取得した前記変換前のプログラム群から、前記呼び出し先プログラムの処理を異ならせる引数のうち、条件式で使用され、前記呼び出し先プログラム内で値が変更されておらず、分岐経路の実行の有無が該引数と定数との比較により決まり、該引数の影響を受ける分岐経路中で前記呼び出し先プログラム外に影響を与える処理が行われるものを処理区分引数としてその値と共に抽出し、その処理区分引数を持つ呼び出し先プログラムと共に検出する処理区分引数検出ステップと、
    前記処理区分引数検出ステップで検出した前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、
    前記変換前のプログラム群の呼び出し元プログラムの中の、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、呼び出し箇所における処理区分引数に該当する変数の取り得る値を求め、変数の取り得る値が有限個に確定しない場合は呼び出し場所を書き換えずに終了し、有限個に確定する場合は呼び出し箇所における呼び出し先変更前の呼び出し先プログラムを、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換えた変換後のプログラムを出力する呼び出し元プログラム書き換えステップと、
    をコンピュータに実行させるプログラム変換プログラム。
  2. 請求項1に記載のプログラム変換プログラムにおいて、
    前記専用呼び出し先プログラム生成ステップは、前記呼び出し先プログラムのプログラム名と、前記引数の名前と、前記引数の内容とを用いて前記専用呼び出し先プログラムのプログラム名を生成し、
    前記呼び出し元プログラム書き換えステップは、前記呼び出し箇所を前記専用呼び出し先プログラムのプログラム名に書き換えることを特徴とするプログラム変換プログラム。
  3. 請求項1または請求項2に記載のプログラム変換プログラムにおいて、
    前記専用呼び出し先プログラム生成ステップは、前記呼び出し先プログラムの内容のうち、前記引数の内容に従って実行されない処理を削除することにより前記専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
  4. 請求項1乃至請求項3のいずれかに記載のプログラム変換プログラムにおいて、
    前記引数の内容は、引数の値であり、前記専用呼び出し先プログラム生成ステップは前記引数の値毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
  5. 請求項1乃至請求項3のいずれかに記載のプログラム変換プログラムにおいて、
    前記引数の内容は、オブジェクト指向言語におけるスーパークラスであり、前記専用呼び出し先プログラム生成ステップは前記スーパークラスを承継したサブクラス毎の専用呼び出し先プログラムを生成することを特徴とするプログラム変換プログラム。
  6. 呼び出し元プログラムと、前記呼び出し元プログラムが呼び出しに用いる引数の内容により異なる処理を行う呼び出し先プログラムとを含むプログラム群の変換を行うプログラム変換装置であって、
    変換前のプログラム群がコンピュータの記憶装置から取得され、取得された前記変換前のプログラム群から、前記呼び出し先プログラムの処理を異ならせる引数のうち、条件式で使用され、前記呼び出し先プログラム内で値が変更されておらず、分岐経路の実行の有無が該引数と定数との比較により決まり、該引数の影響を受ける分岐経路中で前記呼び出し先プログラム外に影響を与える処理が行われるものを処理区分引数としてその値と共に抽出し、その処理区分引数を持つ呼び出し先プログラムと共に検出し、検出した前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成部と、
    前記変換前のプログラム群の呼び出し元プログラムの中の、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、呼び出し箇所における処理区分引数に該当する変数の取り得る値を求め、変数の取り得る値が有限個に確定しない場合は呼び出し場所を書き換えずに終了し、有限個に確定する場合は呼び出し箇所における呼び出し先変更前の呼び出し先プログラムを、前記専用呼び出し先プログラム生成部により生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換えた変換後のプログラムを出力する呼び出し元プログラム書き換え部と、
    を有するプログラム変換装置。
  7. 請求項6に記載のプログラム変換装置において、
    前記専用呼び出し先プログラム生成部は、前記呼び出し先プログラムのプログラム名と、前記引数の名前と、前記引数の内容とを用いて前記専用呼び出し先プログラムのプログラム名を生成し、
    前記呼び出し元プログラム書き換え部は、前記呼び出し箇所を前記専用呼び出し先プログラムのプログラム名に書き換えることを特徴とするプログラム変換装置。
  8. 呼び出し元プログラムと、前記呼び出し元プログラムが呼び出しに用いる引数の内容により異なる処理を行う呼び出し先プログラムとを含むプログラム群の変換をコンピュータが実行するプログラム変換方法であって、
    コンピュータが、
    変換前のプログラム群をコンピュータの記憶装置から取得するステップと、
    取得した前記変換前のプログラム群から、前記呼び出し先プログラムの処理を異ならせる引数のうち、条件式で使用され、前記呼び出し先プログラム内で値が変更されておらず、分岐経路の実行の有無が該引数と定数との比較により決まり、該引数の影響を受ける分岐経路中で前記呼び出し先プログラム外に影響を与える処理が行われるものを処理区分引数としてその値と共に抽出し、その処理区分引数を持つ呼び出し先プログラムと共に検出する処理区分引数検出ステップと、
    前記処理区分引数検出ステップで検出した前記呼び出し先プログラムの処理のうち引数の内容に応じた処理のみを実行するプログラムを専用呼び出し先プログラムとして、前記引数と前記引数の内容毎に生成する専用呼び出し先プログラム生成ステップと、
    前記変換前のプログラム群の呼び出し元プログラムの中の、前記呼び出し先プログラムを呼び出す呼び出し箇所を検出し、呼び出し箇所における処理区分引数に該当する変数の取り得る値を求め、変数の取り得る値が有限個に確定しない場合は呼び出し場所を書き換えずに終了し、有限個に確定する場合は呼び出し箇所における呼び出し先変更前の呼び出し先プログラムを、前記専用呼び出し先プログラム生成ステップにより生成された専用呼び出し先プログラムを呼び出すように、前記呼び出し箇所を書き換えた変換後のプログラムを出力する呼び出し元プログラム書き換えステップと、
    を実行するプログラム変換方法。
JP2005299891A 2005-10-14 2005-10-14 プログラム変換プログラム、プログラム変換装置、プログラム変換方法 Expired - Fee Related JP4712512B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005299891A JP4712512B2 (ja) 2005-10-14 2005-10-14 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
US11/336,917 US8209670B2 (en) 2005-10-14 2006-01-23 Program conversion program, program conversion apparatus and program conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005299891A JP4712512B2 (ja) 2005-10-14 2005-10-14 プログラム変換プログラム、プログラム変換装置、プログラム変換方法

Publications (2)

Publication Number Publication Date
JP2007109044A JP2007109044A (ja) 2007-04-26
JP4712512B2 true JP4712512B2 (ja) 2011-06-29

Family

ID=37949558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005299891A Expired - Fee Related JP4712512B2 (ja) 2005-10-14 2005-10-14 プログラム変換プログラム、プログラム変換装置、プログラム変換方法

Country Status (2)

Country Link
US (1) US8209670B2 (ja)
JP (1) JP4712512B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
US7979494B1 (en) 2006-11-03 2011-07-12 Quest Software, Inc. Systems and methods for monitoring messaging systems
JP5553070B2 (ja) 2009-07-02 2014-07-16 富士通株式会社 アルゴリズム選択プログラム、アルゴリズム選択装置及び方法
JP5425715B2 (ja) 2010-06-03 2014-02-26 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム実行方法、システム及びプログラム
JP5466601B2 (ja) 2010-08-31 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コード生成方法、システム及びプログラム
CN104572072B (zh) * 2014-12-01 2017-09-29 北京百度网讯科技有限公司 一种对基于mvc模式的程序的语言转换方法与设备
JP6863112B2 (ja) * 2017-06-15 2021-04-21 富士通株式会社 情報処理装置、コンパイラ方法、およびコンパイラプログラム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0423989A3 (en) * 1989-10-16 1992-09-23 Hewlett-Packard Company Software compiler and linker with improved line number table
JPH03144846A (ja) * 1989-10-31 1991-06-20 Yokogawa Hewlett Packard Ltd アプリケーション・入力サーバ連携方法
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
JPH05233239A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd プログラム自動生成装置
JPH05265726A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd プログラム自動生成装置
US6029002A (en) * 1995-10-31 2000-02-22 Peritus Software Services, Inc. Method and apparatus for analyzing computer code using weakest precondition
US5701490A (en) * 1996-01-16 1997-12-23 Sun Microsystems, Inc. Method and apparatus for compiler symbol table organization with no lookup in semantic analysis
JP3305949B2 (ja) * 1996-02-08 2002-07-24 富士通株式会社 プログラム解析装置
US6041177A (en) * 1997-02-26 2000-03-21 Fujitsu Limited Program analyzing apparatus which categorizes variables into domains and method thereof
JPH10254687A (ja) * 1997-03-11 1998-09-25 Canon Inc プログラム解析装置およびその解析方法
US5920722A (en) * 1997-09-23 1999-07-06 Sun Microsystems, Inc. System and process for efficiently determining absolute memory addresses for an intermediate code model
US5978587A (en) * 1997-11-13 1999-11-02 Unisys Corp. Method for propagating source code locations into objects in a compiler
US6351848B1 (en) * 1998-05-29 2002-02-26 Sun Microsystems, Inc. Unitary data structure systems, methods, and computer program products, for global conflict determination
JP4130713B2 (ja) * 1998-10-21 2008-08-06 松下電器産業株式会社 プログラム変換装置
US6829772B2 (en) * 1999-11-30 2004-12-07 Sun Microsystems, Inc. Apparatus and methods for communicating between resource domains
US6636880B1 (en) * 2000-09-18 2003-10-21 International Business Machines Corporation Automatic conversion of units in a computer program
JP2002215391A (ja) * 2000-11-20 2002-08-02 Fujitsu Ltd プログラム解析装置及びプログラム解析方法及び記録媒体
US7120902B2 (en) * 2000-12-04 2006-10-10 Hewlett-Packard Development Company, L.P. Method and apparatus for automatically inferring annotations
US7594220B2 (en) * 2001-08-14 2009-09-22 National Instruments Corporation Configuration diagram with context sensitive connectivity
JP4044756B2 (ja) * 2001-12-11 2008-02-06 松下電器産業株式会社 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
US7152229B2 (en) * 2002-01-18 2006-12-19 Symbol Technologies, Inc Workflow code generator
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
JP3494376B1 (ja) * 2002-12-05 2004-02-09 株式会社システムズ プログラム解析装置およびプログラム
JP4001286B2 (ja) * 2003-06-23 2007-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム保守支援装置、プログラム保守支援方法、およびプログラム
US20060075389A1 (en) * 2004-10-01 2006-04-06 Tomoaki Itoh Device and method for API specification verification, program for executing the method, and storage medium for storing the program
JP4783005B2 (ja) * 2004-11-25 2011-09-28 パナソニック株式会社 プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法

Also Published As

Publication number Publication date
JP2007109044A (ja) 2007-04-26
US8209670B2 (en) 2012-06-26
US20070089099A1 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
CN112631611B (zh) 一种智能庞氏骗局合约识别方法及装置
CN109426615A (zh) 过程间的空指针解引用检测方法、系统、设备以及介质
CN110750297B (zh) 一种基于程序分析和文本分析的Python代码参考信息生成方法
White et al. Reassert: Deep learning for assert generation
WO2025055531A1 (zh) 一种代码大模型的评测方法和装置
JP4712512B2 (ja) プログラム変換プログラム、プログラム変換装置、プログラム変換方法
CN112965909A (zh) 测试数据、测试用例生成方法及系统、存储介质
Klessa et al. Annotation Pro+ TGA: automation of speech timing analysis.
CN115309650A (zh) 模型处理方法以及装置
Beck et al. Method execution reports: generating text and visualization to describe program behavior
Hosseini et al. Compositional generalization for natural language interfaces to web apis
Aghajani Context-aware software documentation
CN113553266A (zh) 一种基于并行性检测模型的串行程序的并行性检测方法、系统、终端及可读存储介质
Savic et al. Language for use case specification
Zinemanas et al. DCASE-models: A Python library for computational environmental sound analysis using deep-learning models
CN113918159A (zh) 一种小程序转换方法、系统、设备及介质
KR102052338B1 (ko) 테스트케이스 설계 정보의 추적 분석을 위한 시각화 방법, 테스트케이스 생성 장치 및 컴퓨터 판독가능 기록매체
Aveledo et al. Responsibilities in the usability requirements elicitation process
CN117312438B (zh) 数据处理方法、电子设备及可读存储介质
Van Hoan et al. Arext: Automatic Regular Expression Testing Tool Based on Generating Strings With Full Coverage
JPWO2014136210A1 (ja) 実行フロー作成支援プログラム
Yang et al. Measuring abstractness for reverse engineering in a re-engineering tool
JP2019028958A (ja) 設計書学習装置および設計書学習方法
JP6828812B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN119537250A (zh) 一种单元测试文件的生成方法及装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110302

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110323

LAPS Cancellation because of no payment of annual fees