JP3694872B2 - Dependent subroutine search support device - Google Patents
Dependent subroutine search support device Download PDFInfo
- Publication number
- JP3694872B2 JP3694872B2 JP26798999A JP26798999A JP3694872B2 JP 3694872 B2 JP3694872 B2 JP 3694872B2 JP 26798999 A JP26798999 A JP 26798999A JP 26798999 A JP26798999 A JP 26798999A JP 3694872 B2 JP3694872 B2 JP 3694872B2
- Authority
- JP
- Japan
- Prior art keywords
- subroutine
- call flow
- flow graph
- subroutines
- candidate
- 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
Images
Landscapes
- Stored Programmes (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、サブルーチンの従属関係の分析を支援する従属サブルーチン探索支援装置に関する。
【0002】
【従来の技術】
コンピュータのプログラムは通常互いに呼び出し合うサブルーチンの集まりとして定義される。サブルーチンの中には、あるサブルーチンに従属した機能を持つものがある。例えば、データベースをアクセスするためのサブルーチンAを呼び出すときには、排他処理を目的としたサブルーチンBを前後に呼ぶ必要がある。このような関係のサブルーチンBはサブルーチンAに従属していると考えることができる。
【0003】
コンピュータプログラムのメンテナンス作業では、このように注目しているサブルーチンに従属しているサブルーチンを知っておくことが重要となる。しかし、古いプログラムに関しては、こうした情報を記載しておくドキュメントがプログラムの実体とずれていたり、あるいは記載漏れや紛失などによって十分揃っていない場合がある。そのような場合、従来はサブルーチン間の従属関係を調べるためにプログラムの膨大なソースコードを手作業で分析する必要があった。
【0004】
【発明が解決しようとする課題】
上記のようにドキュメントが不十分なプログラムのサブルーチンの従属関係を手作業で分析することは、作業効率が悪く、しかも分析誤りが生じ易く、信頼性に欠けるという問題がある。
【0005】
本発明の目的は、ドキュメントが不十分なプログラムのサブルーチンの従属関係分析を半自動化し、注目しているサブルーチンに従属するサブルーチンを探索する際の作業効率を向上させ、かつ信頼性の高い分析結果を得、プログラムのメンテナンス等の効率化に貢献することができる従属サブルーチン探索支援装置を提供することにある。
【0006】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、プログラムのソースコードからコールフローグラフと逆コールフローグラフを生成するコールフロー解析手段と、生成されたコールフローグラフと逆コールフローグラフから注目するサブルーチンに対して従属するサブルーチンの候補を抽出する候補サブルーチン抽出手段とを備えることを特徴とする。
【0007】
【発明の実施の形態】
以下、本発明の従属サブルーチン探索支援装置について図面に示す実施形態に基づいて詳細に説明する。
図1は、本発明の従属サブルーチン探索支援装置の実施形態を示す機能ブロック図である。この実施形態の従属サブルーチン探索支援装置は、プログラムのソースコード103からコールフローグラフ104と逆コールフローグラフ105を生成するコールフロー解析装置101と、生成されたコールフローグラフ104と逆コールフローグラフ105から、注目するサブルーチンに対して従属するサブルーチンの候補106を抽出する候補サブルーチン抽出装置102とから構成されている。
【0008】
図2は、コールフロー解析装置101の詳細を示すブロック図である。
図2に示すようにコールフロー解析装置101は、プログラムソースコード103の構文を解析するための構文解析装置1011、この構文解析装置1011による構文解析結果からサブルーチンの呼び出し関係を分析し、コールフローグラフを生成するコールフローグラフ生成装置1012、生成されたコールフローグラフから逆コールフローグラフを生成する逆コールフローグラフ生成装置1013を備える。
【0009】
図3は、候補サブルーチン抽出装置102の詳細を示すブロック図である。図3に示すように候補サブルーチン抽出装置102は、ルートサブルーチン選択装置1021、候補サブルーチン刻印装置1022、候補サブルーチン選別装置1023を備える。
【0010】
図4は、コールフロー解析装置101の動作の詳細を示すフローチャートである。このフローチャートに示すように、コールフロー解析装置101は、まず、分析対象のプログラムソースコード103を構文解析する(ステップ401)。その解析結果は、プログラムソースコード103に含まれるサブルーチンの構文木となる。このステップは構文解析装置1011によって実行される。続いて、分析対象のソースプログラム103に含まれる各サブルーチンの構文木からサブルーチン呼び出し文を抽出し、サブルーチンを頂点とし、呼び出し関係を辺とする有向グラフ(コールフローグラフ)の隣接行列を作成する(ステップ402)。このステップはコールフローグラフ生成装置1012によって実行される。さらに、生成したコールフローグラフの各辺の始点と終点を逆にした有向グラフ(逆コールフローグラフ)の隣接行列を作成する(ステップ403)。このステップは逆コールフローグラフ生成装置1013によって実行される。
【0011】
図5は、プログラムソースコード103の一例であり、サブルーチンP00,p10、P20,P01,P02,P03,P04,P05PEX,PDBを含んでいる。この例で示すプログラムは、データベースアクセスに伴う排他処理を行っているものとする。PDBがデータベースアクセスのサブルーチンであり、PEXが排他処理サブルーチンである。ここでは、不十分なドキュメントしか揃っていないため、PDBがデータベースアクセスのサブルーチンであることが分かっているが、PEXが排他処理サブルーチンであることは分かっていないものとする。また、排他処理サブルーチンは1つであることは分かっているものと仮定する。
【0012】
図6は、図5に示したプログラムソースコード103から、図4のステップ401と402の処理によって作成したコールフローグラフを表す隣接行列である。図6の行と列の交点に○があるところに辺がある。
【0013】
図7は同じコールフローグラフ701をダイアグラム形式で記述したものである。さらに図8は、図4のステップ403の処理によって作成した逆コールフローグラフ801をダイアグラム形式で記述したものである。
【0014】
図9は、候補サブルーチン抽出装置102の動作の詳細を示すフローチャートである。候補サブルーチン抽出装置102では、まず、ユーザが注目サブルーチンを指定する(ステップ901)。続いて、注目サブルーチンを直接あるいは間接に呼んでいるルートサブルーチン(注目ルートサブルーチン)の一覧を作成する(ステップ902)。この2つのステップの処理はルートサブルーチン選択装置1021によって実行される。次に、各注目ルートサブルーチンから直接あるいは間接に呼び出されているコールフローグラフ上のサブルーチンに印を付ける(ステップ903)。このステップの処理は候補サブルーチン刻印装置1022によって実行される。最後に、全てのルートサブルーチンの刻印が付いているサブルーチンを選別し、候補サブルーチンとする(ステップ904)。このステップの処理は候補サブルーチン選別装置1023によって実行される。
【0015】
図10は、図7のコールフローグラフ701から、図9の処理によって、排他処理サブルーチンである可能性があるサブルーチンを絞り込んだ様子を表している。まず、ステップ901において、注目サブルーチンとしてデータベースアクセスサブルーチンPDBを指定する。続いて、ステップ902において、ルートサブルーチン選択装置1021が、PDBを直接あるいは間接に呼び出している注目ルートサブルーチンP00とP20を選択する。続いて、ステップ903において、まず、注目ルートサブルーチンP00によって直接あるいは間接に呼び出されているコールフローグラフ上のサブルーチンに印を付け(図10では実線の下線で示している)、また注目ルートサブルーチンP20によって直接あるいは間接に呼び出されているコールフローグラフ上のサブルーチンに印を付ける(図10では点線の下線で示している)。最後に、ステップ904において、ルートサブルーチンP00とP20の両方の刻印が付いているサブルーチンを選別し、PEX、P05を候補サブルーチンとする。ここで、注目サブルーチンであるPDBは既知であるので除外される。この後は、PEX、P05の各々のソースコードを目視で調べることにより、PEXが求める排他処理サブルーチンであることが確認される。
【0016】
なお、探索の対象となる従属サブルーチンの数が不明であり、複数の可能性がある場合、図9のフローチャートのステップ904において、いずれか1つの注目ルートサブルーチンの刻印が付いているサブルーチンを候補サブルーチンとして抽出すればよい。
【0017】
また、上記実施形態において、コールフローグラフあるいは逆コールフローグラフは解析担当者が確認可能な形態で表示装置または印刷装置に出力されることは言うまでもない。また、注目サブルーチンについても下線でなく、網掛け表示、フリッカ表示、色分け表示などの各種の形態で報知することができる。
【0018】
【発明の効果】
以上説明したように本発明によれば、プログラムのソースコード中の注目するサブルーチンに従属するサブルーチンの候補を効率的に絞り込むことができ、信頼性の高い分析結果を得ることができる。したがって、ドキュメント等が不十分なプログラムの保守作業の効率向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の実施形態を示す機能ブロック図である。
【図2】コールフロー解析装置の詳細構成を示すブロック図である。
【図3】候補サブルーチン抽出装置の詳細構成を示すブロック図である。
【図4】コールフロー解析装置の動作の詳細を示すフローチャートである。
【図5】プログラムのソースコードの一例を示す図である。
【図6】コールフローグラフを表す隣接行列の一例を示す図である。
【図7】ダイアグラム形式で記述したコールフローグラフの一例を示す図である。
【図8】ダイアグラム形式で記述した逆コールフローグラフの一例を示す図である。
【図9】候補サブルーチン抽出装置の動作の詳細を示すフローチャートである。
【図10】コールフローグラフへの従属サブルーチン候補の刻印の一例を示す図である。
【符号の説明】
101…コールフロー解析装置、102…候補サブルーチン抽出装置、103…プログラムソースコード、104…コールフローグラフ、105…逆コールフローグラフ、106…従属するサブルーチンの候補、1011…構文解析装置、1012…コールフローグラフ生成装置、1013…逆コールフローグラフ生成装置、1021…ルートサブルーチン選択装置、1022…候補サブルーチン刻印装置、1023…候補サブルーチン選別装置。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a subordinate subroutine search support apparatus that supports analysis of subordinate dependency relationships.
[0002]
[Prior art]
A computer program is usually defined as a collection of subroutines that call each other. Some subroutines have functions dependent on a subroutine. For example, when calling the subroutine A for accessing the database, it is necessary to call the subroutine B for exclusive processing before and after. Subroutine B having such a relationship can be considered to be subordinate to subroutine A.
[0003]
In the maintenance work of a computer program, it is important to know the subroutines that are subordinate to the subroutines that are focused on in this way. However, with respect to old programs, there are cases where documents for storing such information are out of alignment with the actual program, or are not fully prepared due to omission or loss of description. In such a case, conventionally, it has been necessary to manually analyze the enormous source code of the program in order to examine the dependency relationship between the subroutines.
[0004]
[Problems to be solved by the invention]
As described above, manually analyzing the dependency relationship of subroutines in a program with insufficient documentation has a problem that work efficiency is low, analysis errors are likely to occur, and reliability is lacking.
[0005]
The object of the present invention is to semi-automate the dependency analysis of subroutines of programs with insufficient documents, improve the work efficiency when searching for subroutines subordinate to the subroutine of interest, and obtain highly reliable analysis results. Another object of the present invention is to provide a subordinate subroutine search support apparatus that can contribute to the efficiency of program maintenance and the like.
[0006]
[Means for Solving the Problems]
In order to achieve the above object, the present invention provides a call flow analysis means for generating a call flow graph and a reverse call flow graph from a source code of a program, and a subroutine to be noted from the generated call flow graph and reverse call flow graph. And a candidate subroutine extracting means for extracting a candidate of a subordinate subroutine.
[0007]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, a dependent subroutine search support device of the present invention will be described in detail based on embodiments shown in the drawings.
FIG. 1 is a functional block diagram showing an embodiment of a dependent subroutine search support apparatus of the present invention. The dependent subroutine search support device of this embodiment includes a call
[0008]
FIG. 2 is a block diagram showing details of the call
As shown in FIG. 2, the call
[0009]
FIG. 3 is a block diagram showing details of the candidate
[0010]
FIG. 4 is a flowchart showing details of the operation of the call
[0011]
FIG. 5 shows an example of the
[0012]
FIG. 6 is an adjacency matrix representing a call flow graph created by the processing of
[0013]
FIG. 7 describes the same
[0014]
FIG. 9 is a flowchart showing details of the operation of the candidate
[0015]
FIG. 10 shows a state in which subroutines that may be exclusive processing subroutines are narrowed down from the
[0016]
If the number of subordinate subroutines to be searched is unknown and there are a plurality of possibilities, in
[0017]
In the above embodiment, needless to say, the call flow graph or reverse call flow graph is output to the display device or the printing device in a form that can be confirmed by the person in charge of analysis. Also, the notice subroutine can be notified in various forms such as shaded display, flicker display, and color-coded display instead of underlining.
[0018]
【The invention's effect】
As described above, according to the present invention, it is possible to efficiently narrow down subroutine candidates subordinate to the subroutine of interest in the source code of the program, and obtain highly reliable analysis results. Therefore, it is possible to improve the efficiency of maintenance work for programs with insufficient documents and the like.
[Brief description of the drawings]
FIG. 1 is a functional block diagram showing an embodiment of the present invention.
FIG. 2 is a block diagram showing a detailed configuration of a call flow analysis apparatus.
FIG. 3 is a block diagram showing a detailed configuration of a candidate subroutine extraction apparatus.
FIG. 4 is a flowchart showing details of the operation of the call flow analysis apparatus.
FIG. 5 is a diagram illustrating an example of a source code of a program.
FIG. 6 is a diagram illustrating an example of an adjacency matrix representing a call flow graph.
FIG. 7 is a diagram showing an example of a call flow graph described in a diagram format.
FIG. 8 is a diagram illustrating an example of a reverse call flow graph described in a diagram format.
FIG. 9 is a flowchart showing details of the operation of the candidate subroutine extraction apparatus.
FIG. 10 is a diagram illustrating an example of marking of a dependent subroutine candidate on a call flow graph.
[Explanation of symbols]
DESCRIPTION OF
Claims (1)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26798999A JP3694872B2 (en) | 1999-09-22 | 1999-09-22 | Dependent subroutine search support device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26798999A JP3694872B2 (en) | 1999-09-22 | 1999-09-22 | Dependent subroutine search support device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001092652A JP2001092652A (en) | 2001-04-06 |
JP3694872B2 true JP3694872B2 (en) | 2005-09-14 |
Family
ID=17452373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP26798999A Expired - Fee Related JP3694872B2 (en) | 1999-09-22 | 1999-09-22 | Dependent subroutine search support device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3694872B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2434664A (en) * | 2006-01-25 | 2007-08-01 | Voxsurf Ltd | Configuration and analysis of an interactive voice system |
US9218169B2 (en) | 2013-11-19 | 2015-12-22 | Google Inc. | Callpath finder |
-
1999
- 1999-09-22 JP JP26798999A patent/JP3694872B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001092652A (en) | 2001-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102830975B (en) | A kind of assembly language is to the code conversion method of higher level lanquage and device | |
US20030219149A1 (en) | System and methods for extracting semantics from images | |
US20040030542A1 (en) | Apparatus for and method of performing translation, and computer product | |
CN111400724A (en) | Operating system vulnerability detection method, system and medium based on code similarity analysis | |
CN103294594A (en) | Test based static analysis misinformation eliminating method | |
CN109308254A (en) | A kind of test method, device and test equipment | |
CN104714882A (en) | Code information processing method and device | |
JPH0683598A (en) | Job flow specification automatic generating method | |
CN101288071A (en) | Method and computer unit for determining computer service names | |
CN116934256A (en) | Evaluation method, supervision method and system based on marking points of frame selection marking technology | |
JP3694872B2 (en) | Dependent subroutine search support device | |
JP4853342B2 (en) | Control device for instrument analysis and control program | |
CN109086985A (en) | Professional test information management system towards spacecraft | |
CN109101355B (en) | Processor debugging method for extracting error site characteristic test excitation | |
CN116149668A (en) | Application program generation method, device, equipment and storage medium | |
CN109710808A (en) | A kind of analytic method of XML file, system, device and readable storage medium storing program for executing | |
US8402445B2 (en) | Program translation method and notifying instruction inserting method | |
CN106021380A (en) | Method and device for compiling aircraft technical publication based on maintenance engineering analysis data | |
CN111831535A (en) | Code positioning method and device of test case and computer storage medium | |
JP2020198023A (en) | Information processing apparatus, method, and program | |
Jürgens et al. | Modeling the interactive patent retrieval process: an adaptation of Marchionini's information seeking model | |
CN112612705B (en) | Method for accurately positioning and displaying interface coverage rate report | |
JP6790199B2 (en) | Code reading support device, code reading support method, and code reading support program | |
CN110618809B (en) | Front-end webpage input constraint extraction method and device | |
TWI293737B (en) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050411 |
|
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: 20050617 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050617 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080708 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110708 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |