JPH05289862A - Program maintenance supporting device - Google Patents
Program maintenance supporting deviceInfo
- Publication number
- JPH05289862A JPH05289862A JP4095573A JP9557392A JPH05289862A JP H05289862 A JPH05289862 A JP H05289862A JP 4095573 A JP4095573 A JP 4095573A JP 9557392 A JP9557392 A JP 9557392A JP H05289862 A JPH05289862 A JP H05289862A
- Authority
- JP
- Japan
- Prior art keywords
- program
- source code
- model
- unit
- correction
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は、プログラム保守支援装
置に係り、特に、通常のプログラミング言語で記述され
た一般的な計算機プログラムにおいて、そのソースコー
ドの分析,修正,改良等のソフトウェア保守作業を効率
的に行なうことができるプログラム保守支援装置に関す
る。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a program maintenance support device, and more particularly to software maintenance work such as analysis, modification and improvement of the source code of a general computer program written in an ordinary programming language. The present invention relates to a program maintenance support device that can be efficiently performed.
【0002】[0002]
【従来の技術】従来より利用されている計算機プログラ
ムの保守に関わる技法や技術としては、以下のようなも
のがある。 標準的なプログラミング技法を採用する。 ドキュメントやコメントの整備を徹底する。 ソースコードを印字出力したリストを用いて人間がプ
ログラムを分析する。 プログラムのコンパイル時や実行時に、エラーの発生
箇所および関連情報を印字出力する。 プログラムの実行を逐次トレースし、必要に応じて関
連情報を印字出力する。 プログラムで定義ないしは利用されている関数や変数
の一覧表を作成し印字出力する。 前記の一覧表をデータベースとして、関数や変数の
名前で検索する機能を設け、要求に応じてソースコード
の該当箇所を印字出力ないしは画面表示する。2. Description of the Related Art There are the following techniques and technologies related to the maintenance of computer programs that have been conventionally used. Adopt standard programming techniques. Thoroughly maintain documents and comments. A human analyzes the program using the printed list of source code. Prints out the location of an error and related information when compiling or executing a program. The execution of the program is traced sequentially and the related information is printed out if necessary. Create and print out a list of functions and variables defined or used in the program. Using the above list as a database, a function for searching by the name of a function or variable is provided to print out or display the relevant part of the source code on demand.
【0003】[0003]
【発明が解決しようとする課題】計算機のプログラムに
ついては、同じ結果を得るためにも多様な手順が存在し
得るので、特にプログラムの保守や改良を行う人間と設
計者とが異なる場合には、プログラム中の処理、関数、
変数などの意味の把握が困難な点が保守上の問題のひと
つとなる。この点に関しては、標準的なプログラミング
技法の採用やドキュメント化の徹底(前記、)など
が推奨されているが、プログラム作成段階に手間が集中
する他、既存のプログラムやラピッドプロトタイピング
と呼ばれる逐次的な開発技法を採用した場合には適用で
きないという難点があり、問題を解決するには至ってい
ない。With respect to a computer program, various procedures may exist in order to obtain the same result. Therefore, especially when a person who maintains or improves the program is different from a designer. Processing in the program, functions,
One of the problems in maintenance is that it is difficult to understand the meaning of variables. Regarding this point, it is recommended to adopt standard programming techniques and thorough documentation (above), but in addition to concentrating effort on the program creation stage, existing programs and sequential programming called rapid prototyping are recommended. However, there is a problem that it cannot be applied when adopting various development techniques, and the problem has not been solved yet.
【0004】既存プログラムの保守を行う上で、最も基
本的かつ広く使われている方法として、リストを分析す
る(前記)という手段があるが、プログラムが大きい
場合には、関数や変数の種類が多くかつ複雑に関連し合
うため、それらが処理過程でどのように推移しているか
が難解であり、この点が、やはり保守上の問題として挙
げられる。プログラムのコンパイルや実行時のエラー情
報、トレース情報の出力(前記、)などは、関数や
変数の関係を動的に分析する手段ではあるが、主にデバ
ッグ作業が対象であり、正常に動作するプログラムの改
良や設計変更などに伴う作業の支援には不向きである。The most basic and widely used method for maintaining an existing program is to analyze a list (described above), but if the program is large, the types of functions and variables are It is difficult to understand how they change in the process because they are related in many and complicated ways, and this is also a maintenance problem. Although error information at the time of compiling a program and execution, output of trace information (above, etc.) is a means of dynamically analyzing the relationship between functions and variables, it is mainly used for debugging work and operates normally. It is not suitable for supporting work associated with program improvements and design changes.
【0005】これらに対して、プログラムで使用されて
いる関数や変数の一覧を作成し、それらの情報をデータ
ベースとして保守に活用する(前記、)という方法
は、プログラム構造の静的な分析に基づくもので、基本
的にはプログラムの改良や設計変更に対しても有効な手
段と考えられる。しかしながら従来技術では、主に関数
や変数の関係を文法的に分析した情報を利用し、プログ
ラムの全体構成に関わる情報が不充分なため、改良箇所
の具体的なプログラム修正のような下流作業には適用で
きるが、改良設計や設計変更などの上流作業には、充分
な効果を発揮できないという問題があった。On the other hand, a method of creating a list of functions and variables used in a program and utilizing the information as a database for maintenance (above) is based on a static analysis of the program structure. Basically, it is considered to be an effective means for program improvement and design change. However, in the conventional technology, the information mainly related to the grammatical analysis of the relationships between functions and variables is used, and the information related to the overall structure of the program is insufficient. Can be applied, but there was a problem that it could not exert sufficient effect on upstream work such as improved design and design change.
【0006】本発明は、このような点を考慮してなされ
たもので、既存プログラムのソースコードの分析,修
正,改良等のソフトウェア保守作業を機械化し、作業の
効率化を図ることができるプログラム保守支援装置を提
供することを目的とする。The present invention has been made in consideration of the above points, and is a program capable of mechanizing software maintenance work such as analysis, correction, and improvement of the source code of an existing program to improve work efficiency. An object is to provide a maintenance support device.
【0007】[0007]
【課題を解決するための手段】本発明は、前記目的を達
成する手段として、既存プログラムのソースコードを記
憶するソースコード記憶手段と;ソースコードを、予め
定められた分割単位に分割するとともに、各分割単位を
処理単位に分割するプログラム分析手段と;各処理単位
が指示する処理の内容を、属性項目別に分けるととも
に、各属性項目に属性項目の値を対応させて中間データ
ベースを作成する中間データベース作成手段と;中間デ
ータベースを記憶する中間データベース記憶手段と;処
理単位相互の参照関係を付加して中間データベースを再
構成し、プログラムモデルを作成するモデル作成手段
と;プログラムモデルを記憶するモデル記憶手段と;入
力手段から入力される条件に基づきプログラムモデルを
検索し、前記既存プログラムを分析する検索手段と;検
索手段での分析結果を出力する出力手段と;前記入力手
段から入力される修正プログラムを記憶する修正プログ
ラム記憶手段と;修正プログラムを前記プログラムモデ
ルの内容と照合し、修正プログラムの分析・評価を行な
う修正プログラム分析・評価手段と;修正プログラムが
整合する場合に、前記ソースコードを修正するソースコ
ード修正手段と;をそれぞれ設けるようにしたことを特
徴とする。The present invention, as means for achieving the above object, includes source code storage means for storing the source code of an existing program; the source code is divided into predetermined division units, and A program analysis unit that divides each division unit into processing units; an intermediate database that divides the content of the processing instructed by each processing unit by attribute item and creates an intermediate database by associating each attribute item with the value of the attribute item Creating means; intermediate database storing means for storing an intermediate database; model creating means for creating a program model by reconstructing the intermediate database by adding reference relationships between processing units; model storing means for storing a program model And; searching for the program model based on the conditions input from the input means, Search means for analyzing the RAM; output means for outputting the analysis result by the search means; correction program storage means for storing the correction program input from the input means; and the correction program against the contents of the program model. A modification program analysis / evaluation means for analyzing / evaluating the modification program; and a source code modification means for modifying the source code when the modification programs match, respectively.
【0008】[0008]
【作用】本発明に係るプログラム保守支援装置において
は、既存プログラムのソースコードだけから、その内容
を文法的、構造的に分析したプログラムモデルが作成さ
れる。このプログラムモデルは、所定の条件に基づき検
索され、既存プログラムの分析結果として出力される。In the program maintenance support device according to the present invention, the program model is created by grammatically and structurally analyzing the contents of the existing program only from the source code. This program model is searched based on a predetermined condition and is output as the analysis result of the existing program.
【0009】一方、プログラムの内容を修正する場合に
は、まず修正プログラムがプログラムモデルの内容と照
合され、修正プログラムの分析・評価が行なわれる。そ
して、整合すると判断された場合に、ソースコードが修
正される。On the other hand, when modifying the contents of the program, the modification program is first collated with the content of the program model, and the modification program is analyzed and evaluated. Then, when it is determined that they match, the source code is modified.
【0010】[0010]
【実施例】以下、本発明を図面を参照して説明する。DESCRIPTION OF THE PREFERRED EMBODIMENTS The present invention will be described below with reference to the drawings.
【0011】図1は、本発明に係るプログラム保守支援
装置の一例を示す全体構成図であり、このプログラム保
守支援装置は、通常のプログラミング言語(例えばFO
RTRANやLISP)で記述された一般的な計算機プ
ログラム(元プログラム)のソースコードを記憶するソ
ースコード記憶手段1、プログラム分析手段2および中
間データベース作成手段3を備えている。FIG. 1 is an overall configuration diagram showing an example of a program maintenance support apparatus according to the present invention. This program maintenance support apparatus uses an ordinary programming language (for example, FO).
A source code storage unit 1 for storing the source code of a general computer program (original program) written in RTRAN or LISP, a program analysis unit 2, and an intermediate database creation unit 3 are provided.
【0012】前記プログラム分析手段2は、ソースコー
ドを、予め定められた分割単位に分割するとともに、各
分割単位を処理単位に分割するようになっており、また
中間データベース作成手段3は、各処理単位が指示する
処理の内容を、属性項目別に分けるとともに、各属性項
目に属性項目の値を対応させて中間データベースを作成
するようになっている。そして、作成された中間データ
ベースは、中間データベース記憶手段4に記憶されるよ
うになっているとともに、モデル作成手段5で再構成さ
れてプログラムモデルが作成されるようになっている。The program analysis means 2 divides the source code into predetermined division units and also divides each division unit into processing units, and the intermediate database creating means 3 divides each processing. The contents of the process instructed by the unit are divided for each attribute item, and the value of the attribute item is associated with each attribute item to create an intermediate database. The created intermediate database is stored in the intermediate database storage means 4 and is reconstructed by the model creating means 5 to create a program model.
【0013】すなわち、モデル作成手段5は、処理単位
相互の参照関係を付加して前記中間データベースを再構
成し、前記ソースコードのみに基づくプログラムモデル
を作成するようになっており、作成されたプログラムモ
デルは、モデル記憶手段6に記憶されるようになってい
る。That is, the model creating means 5 is adapted to add the reference relationships among the processing units to reconfigure the intermediate database and create a program model based only on the source code. The model is stored in the model storage means 6.
【0014】一方、図1に示す入力手段7からは、検索
手段8に対し所定の条件が入力されるようになってお
り、検索手段8は、この条件に基づきプログラムモデル
を検索し、前記元プログラムを分析するようになってい
る。そして、その分析結果は、出力手段9に出力される
ようになっている。On the other hand, a predetermined condition is inputted from the input means 7 shown in FIG. 1 to the search means 8. The search means 8 searches the program model based on this condition, It is designed to analyze programs. The analysis result is output to the output means 9.
【0015】前記入力手段7からはまた、修正プログラ
ムが入力されるようになっており、この修正プログラム
は、図1に示すように、修正プログラム記憶手段10に
記憶されるとともに、修正プログラム分析・評価手段1
1において、プログラムモデルの内容と照合され、修正
プログラムの分析・評価が行なわれるようになってい
る。そして、修正プログラムが整合する場合には、修正
手段12によりソースコードが修正されるようになって
いる。A correction program is also input from the input means 7, and the correction program is stored in the correction program storage means 10 as shown in FIG. Evaluation means 1
1, the contents of the program model are collated, and the correction program is analyzed and evaluated. When the correction programs match, the correction means 12 corrects the source code.
【0016】図2は、図1に示すプログラム保守支援装
置を、処理の流れにそった機能ブロックで表現した機能
ブロック図であり、このプログラム保守支援装置は、プ
ログラムモデルPMを構築するモデル構築部20と、構
築されたモデルを応用するモデル応用部30とから構成
され、モデル構築部20は、プログラム読み込み部2
1、プログラム分析部22、中間格納部23およびモデ
ル作成部24を備え、またモデル応用部30は、一括検
索部31、対話検索部32、修正仮入力部33およびプ
ログラム修正部34を備えている。FIG. 2 is a functional block diagram in which the program maintenance support device shown in FIG. 1 is represented by functional blocks according to the flow of processing. This program maintenance support device is a model construction unit for constructing a program model PM. 20 and a model application unit 30 that applies the constructed model. The model construction unit 20 includes a program reading unit 2
1, a program analysis unit 22, an intermediate storage unit 23, and a model creation unit 24, and the model application unit 30 includes a collective search unit 31, a dialogue search unit 32, a correction temporary input unit 33, and a program correction unit 34. ..
【0017】プログラム読み込み部21は、ソースコー
ド全体を一度に読み込むのではなく、さまざまなプログ
ラミング言語(以下単に「言語」と記載する)における
プログラムの分割単位(例えば、FORTRANにおけ
るサブルーチンや関数、LISPにおける関数やマクロ
など)で作業領域へ読み込むようになっており、一旦作
業領域に読み込まれたソースコードは、作業領域上でさ
らに各言語における処理単位(例えば、LISPにおい
ては1対の「(」と「)」、FORTRANでは1ステ
ートメントなど)に分割されるようになっている。そし
て、テキストデータとして読み込まれたソースコード
は、使用されている言語の基本的な処理単位にまで分割
された後、プログラム分析部22に引き渡されるように
なっている。The program reading unit 21 does not read the entire source code at once, but divides a program in various programming languages (hereinafter simply referred to as "language") (for example, subroutines and functions in FORTRAN, in LISP). It is designed to be read into the work area by a function, macro, etc., and the source code once read into the work area is further processed in the work area in each language (for example, a pair of “(” in LISP). ")", One statement in FORTRAN, etc.). Then, the source code read as text data is divided into basic processing units of the language used and then delivered to the program analysis unit 22.
【0018】プログラム分析部22は、前記プログラム
読み込み部21で分割された各処理単位に対して、使用
されている言語の基本仕様に基づく分析を行うようにな
っている。実際の手順として、まず各処理単位は、その
処理の機能別(例えば、FORTRANでは代入変数や
宣言文の種別、LISPでは関数別など)に応じて分類
され、さらに各機能ごとに引き数、オプション、使用さ
れている外部関数などの詳細に分析されるようになって
いる。そして、このようにして得られた分析結果は、順
次中間格納部23に送られて整理された上、必要な情報
とともに格納されるようになっている。The program analysis unit 22 is adapted to analyze each processing unit divided by the program reading unit 21 based on the basic specifications of the language used. As an actual procedure, each processing unit is first classified according to the function of the processing (for example, the type of assignment variable or declaration statement in FORTRAN, the function in LISP, etc.), and the arguments and options for each function. , Has been analyzed in detail such as the external functions used. Then, the analysis results obtained in this way are sequentially sent to the intermediate storage unit 23, arranged and stored together with necessary information.
【0019】中間格納部23は、前記分析結果を、各分
割単位の名称を付けたフレーム内の属性項目およびさら
にそれ以下の詳細項目などに分類して格納するようにな
っている。ここで格納されるのは、該当する分割単位に
おいて、値が変更された変数、値は変更されず使用され
た変数、呼び出された関数、使用された特殊な制御処
理、各種統計結果など、プログラムの保守上に不可欠な
情報である。The intermediate storage unit 23 is adapted to store the analysis results by classifying them into attribute items in the frame with names of the respective division units and further detailed items below the attribute items. What is stored here is a program such as a variable whose value has been changed, a variable whose value has not been changed, a function that has been called, a special control process that has been used, various statistical results, etc., in the corresponding division unit. This is essential information for maintenance of.
【0020】また、前記モデル作成部24は、それまで
の処理によって生成された中間データベースのフレーム
中の各属性項目に格納された分析情報を相互に照合する
事により、関数や変数間の呼び合い関係やループなど、
元プログラムの構造に関わる情報を抽出するようになっ
ている。さらに、このようにして抽出した関係情報を、
すでに存在しているフレームおよび必要に応じて作成し
た新しいフレームのツリーないしはネットワーク関係と
して中間データベースに追加するようになっている。Further, the model creating section 24 collates the analysis information stored in each attribute item in the frame of the intermediate database generated by the processing up to now with each other, so that the functions and variables can be called. Relationships, loops, etc.
It is designed to extract information related to the structure of the original program. Furthermore, the relational information extracted in this way is
It is designed to add to the intermediate database as a tree or network relationship of existing frames and new frames created as needed.
【0021】このように、元プログラムの処理単位毎の
分析結果をフレーム形式に整理したデータベースに、新
たに元プログラムの構造に関する情報を付加したもの
を、本発明では「プログラムモデル」と呼ぶ。なおここ
での「モデル」とは、さまざまな内部データを有する多
数の構成要素から成り、かつ構成要素どうしが相互に関
係付けられて全体としてひとつの構造を表現する情報の
集合体を意味する。なお、この「プログラムモデル」
は、元プログラムの構成、内部で使用されている関数や
変数、関数や変数相互の呼び合い関係などをフレーム構
造のデータベースとして格納したもので、独立したファ
イルとして利用・保存が可能である。In the present invention, the database in which the analysis result for each processing unit of the original program is arranged in the frame format and the information about the structure of the original program is newly added is called a "program model" in the present invention. It should be noted that the “model” here means a set of information which is composed of a large number of constituent elements having various internal data, and in which the constituent elements are associated with each other to represent one structure as a whole. In addition, this "program model"
Is a frame-structured database that stores the structure of the original program, the functions and variables used internally, and the relationships between functions and variables, and can be used and saved as an independent file.
【0022】前記モデル応用部30の一括検索部31
は、前記「プログラムモデル」の情報を与えられた条件
によって検索し出力するようになっているが、後述する
対話検索部32と異なり、一括して与えられる条件に基
づいて「プログラムモデル」を検索し、その結果をドキ
ュメントとして出力するようになっている。一方、対話
検索部32は、対話的に与えられた条件に基づいて「プ
ログラムモデル」を検索し、その結果を逐次画面を通じ
て出力するようになっている。これらの機能により、ユ
ーザは既存のプログラムの内容を自由に検索・分析する
ことができる。Collective search section 31 of the model application section 30
Is configured to search for and output the information of the "program model" according to a given condition. However, unlike the interactive search unit 32 described later, the "program model" is searched based on the condition given collectively. Then, the result is output as a document. On the other hand, the dialogue retrieval unit 32 retrieves a "program model" based on a condition given interactively and sequentially outputs the result through a screen. With these functions, the user can freely search and analyze the contents of the existing program.
【0023】また、前記修正仮入力部33では、まず前
記の各機能を駆使して、ユーザがプログラムの修正箇所
や設計変更方針を固めた後に、具体的なプログラムの修
正箇所と修正内容を入力するようになっている。この入
力情報は、直接元プログラムの修正に利用されるのでは
なく一旦作業領域に保存された上で、「プログラムモデ
ル」の内容と照合され、関数や変数の誤りや既存部分と
の構成上の矛盾の有無などが確認されるようになってい
る。仮入力した修正内容に、上記のような問題が発見さ
れた場合には、関連する情報を出力すると同時に、仮入
力された修正内容に「不適」、逆に問題が発見されなか
ったものには「適」のマークが付与されるようになって
いる。また「不適」とされた修正内容については、必要
に応じてその内容を作業領域から除去ないしは再入力す
ることができるようになっている。また、前記プログラ
ム修正部34は、先の処理で仮入力・確認された修正内
容に基づき、元プログラムの修正を行なうようになって
いる。そして、これら両部33,34が提供する機能に
より、ユーザが意図した元プログラムの変更や修正は、
全体に組み込まれる前に、文法的あるいは構造的な誤り
がないことを確認した上で、実際の元プログラムに組み
込むことができるようになっている。Further, in the temporary correction input section 33, the user first makes full use of the above-mentioned functions to fix the correction point of the program and the design change policy, and then inputs the concrete correction point and the correction content of the program. It is supposed to do. This input information is not directly used to modify the original program, but is first saved in the work area and then collated with the contents of the "program model" to check for errors in functions and variables or in the configuration of existing parts. The existence of inconsistencies has been confirmed. If any of the above problems are found in the tentatively entered corrections, the related information will be output, and at the same time, the tentatively entered corrections will be "unsuitable", and conversely no problems will be found. The mark "appropriate" is given. Further, as for the correction contents made "inappropriate", the contents can be removed from the work area or re-inputted as necessary. Further, the program modifying section 34 is adapted to modify the original program based on the modification contents temporarily input / confirmed in the previous process. Then, by the functions provided by the both units 33 and 34, the change or modification of the original program intended by the user is
Before being incorporated into the whole, it can be incorporated into the actual original program after confirming that there is no grammatical or structural error.
【0024】図3は、図2に示すプログラム保守支援装
置のハードウェア構成を示すもので、このプログラム保
守支援装置は、処理用の中央処理装置41、データ入出
力用のキーボード42、マウス43、CRT44、およ
びプリンタ45、磁気ディスク等の外部記憶装置46等
で構成され、基本的な計算機(ワークステーション)構
成で実現されている。FIG. 3 shows the hardware configuration of the program maintenance support device shown in FIG. 2. This program maintenance support device includes a central processing unit 41 for processing, a keyboard 42 for data input / output, a mouse 43, It is composed of a CRT 44, a printer 45, an external storage device 46 such as a magnetic disk, and the like, and is realized by a basic computer (workstation) structure.
【0025】なお、このプログラム保守支援装置は、必
ずしも対象とする元プログラムが動作する計算機と同一
である必要はないが、元プログラムのソースプログラム
がテキストデータとして読み込むことができる必要があ
る。The program maintenance support apparatus does not necessarily have to be the same as the computer on which the target original program operates, but the source program of the original program must be able to read it as text data.
【0026】図4および図5は、図2に示すモデル構築
部20およびモデル応用部30における処理の流れをそ
れぞれ示すもので、以下、図4および図5を参照して、
これら両部20,30の動作を説明する。FIGS. 4 and 5 show the flow of processing in the model construction unit 20 and the model application unit 30 shown in FIG. 2, respectively. Hereinafter, referring to FIGS. 4 and 5,
The operation of both parts 20 and 30 will be described.
【0027】まず、モデル構築部20においては、ステ
ップS1でソースコードを分割単位で読み込み、ステッ
プS2でソースコードをすべて読み込んだか否かを判別
する。終了していない場合には、ステップS3で処理単
位を分離するとともに、ステップS4で処理単位の分析
を行ない、ステップS5で中間データベースとして保存
した後、ステップS3に戻る。First, the model construction unit 20 reads the source code in units of division in step S1, and determines in step S2 whether or not all the source code has been read. If the processing has not been completed, the processing units are separated in step S3, the processing units are analyzed in step S4, stored as an intermediate database in step S5, and the process returns to step S3.
【0028】これを繰返し、ステップS6で処理単位の
分離が終了したと判断したならば、ステップS1に戻っ
て分割単位の読み込みを行なう。When it is judged in step S6 that the separation of the processing units is completed by repeating this, the process returns to step S1 to read the division units.
【0029】一方、ステップS2でソースコードをすべ
て読み込んだと判断したならば、ステップS7で中間デ
ータベースを読み込み、ステップS8で情報分析を行な
うとともに、ステップS9で情報整理を行ない、最後に
ステップS10で中間データベースを再構成する。これ
により、プログラムモデルPMが作成される。On the other hand, if it is determined in step S2 that all the source codes have been read, the intermediate database is read in step S7, information analysis is performed in step S8, information is organized in step S9, and finally in step S10. Reconfigure the intermediate database. As a result, the program model PM is created.
【0030】また、モデル応用部30においては、まず
ステップS11で検索なのか修正なのかを判別し、検索
の場合には、ステップS12で一括なのか対話的なのか
を判別する。そして、一括の場合には、ステップS13
で条件を入力するとともに、ステップS14で検索を実
行し、ステップS15でその結果の情報を出力する。一
方、対話的の場合には、ステップS16で条件を入力す
るとともに、ステップS17で検索を実行し、ステップ
S18でその結果を画面等に出力する。そして、ステッ
プS19で検索が終了か否かを判別し、検索を続行する
場合には、ステップS16に戻る。In the model application section 30, first, it is determined in step S11 whether it is a search or a correction, and if it is a search, in step S12 it is determined whether it is a batch or an interactive mode. Then, in the case of batch, step S13
While inputting the conditions in step S14, the search is executed in step S14, and the information of the result is output in step S15. On the other hand, in the interactive case, the condition is input in step S16, the search is executed in step S17, and the result is output to the screen or the like in step S18. Then, in step S19, it is determined whether or not the search is completed, and if the search is to be continued, the process returns to step S16.
【0031】前記ステップS11で修正と判断した場合
には、ステップS20でプログラム修正部を仮入力する
とともに、ステップS21で修正部分割単位を合成し、
ステップS22で修正部分割単位を分析する。そして、
ステップS23で修正部分割単位にフレームを作成す
る。When it is determined that the correction is made in step S11, the program correction section is temporarily input in step S20, and the correction section division units are combined in step S21.
In step S22, the correction unit division unit is analyzed. And
In step S23, a frame is created for each correction copy division unit.
【0032】これと並行して、ステップS24でオリジ
ナル中間データベースを再構築した後、ステップS25
で修正モデルを合成するとともに、ステップS26で修
正モデルを分析し、ステップS27で修正内容を評価す
る。そして、整合している場合には、ステップS28で
ソースコードを修正する。In parallel with this, after rebuilding the original intermediate database in step S24, step S25
In step S26, the correction model is analyzed, the correction model is analyzed, and the correction content is evaluated in step S27. If they match, the source code is modified in step S28.
【0033】なお、図5に示すプログラム修正において
は、分割単位全体を入力して行なう場合を示したが、特
定の処理単位だけを入力したり、特定の変数や関数だけ
を入力して修正することも可能である。In the program modification shown in FIG. 5, the case where the entire division unit is input is shown, but only the specific processing unit is input, or only the specific variable or function is input to modify. It is also possible.
【0034】次に、本発明に係るプログラム保守支援方
法の詳述を、手続型言語と呼ばれるFORTRAN、お
よび関数型言語と呼ばれるLISPで記述された2種類
の典型的なプログラムを想定して説明する。Next, the program maintenance support method according to the present invention will be described in detail by assuming two typical programs described in FORTRAN called a procedural language and LISP called a functional language. ..
【0035】図6は、前記各言語で記述された典型的な
ソースコードの構成をそれぞれ示すもので、まずこれを
言語で記述されたプログラムの特徴を簡単に説明する。FIG. 6 shows the structure of typical source code written in each of the aforementioned languages. First, the features of the program written in the language will be briefly described.
【0036】FORTRANは、ひとつのプログラムに
対して、単一のメインプログラムと任意のサブルーチン
や関数などが定義される。これらメインプログラム、サ
ブルーチン、関数などが、本発明のプログラム読み込み
部21の1回の処理で読み込まれるプログラム分割単位
に相当する。さらにこれらの分割単位はいずれも、基本
的には1行(ライン)ずつ独立した処理単位(ステート
メント)から構成される。FORTRANプログラムの
実行に際しては、まず無条件にメインプログラムに起動
がかかり、メインプログラムを構成する処理単位が順次
実行される。処理単位を実行する間に別のサブルーチン
や関数が使用された場合には、該当するサブルーチンや
関数に実行が移り、その中の処理単位が全て実行される
と呼び出し元に戻るという作業が順次繰り返される。こ
の作業は、多重の入れ子構造に対しても同様に実行さ
れ、プログラムの終了が明示的に宣言された処理単位を
実行するか、メインプログラムの処理単位が最後まで実
行された時点で、プログラムは正常終了する。In FORTRAN, a single main program and arbitrary subroutines and functions are defined for one program. These main programs, subroutines, functions, etc. correspond to the program division unit read by the program reading unit 21 of the present invention in one processing. Furthermore, each of these division units basically consists of independent processing units (statements) for each line (line). When executing the FORTRAN program, first, the main program is unconditionally activated, and the processing units constituting the main program are sequentially executed. If another subroutine or function is used during the execution of a processing unit, execution proceeds to the corresponding subroutine or function, and when all the processing units in that subroutine are executed, the process of returning to the caller is repeated. Be done. This work is similarly performed for multiple nested structures, and when the end of the program executes the explicitly declared processing unit, or when the processing unit of the main program is executed to the end, the program Normal termination.
【0037】一方、LISPは、すべての処理が独立し
た関数またはマクロ関数の形で定義され、これが本発明
のプログラム読み込み部21の1回の処理で読み込まれ
るプログラム分割単位に相当する。LISPにおけるあ
らゆる処理は、個々には「空白」で区切られ、全体とし
ては1対の「(」と「)」で囲まれた任意の数の文字列
(関数名、変数名、数字など)から成る「S式」と呼ば
れる表現形態を基本単位として記述される。関数定義そ
のものも「S式」の形を取って記述されるが、その中に
は任意の数の処理単位が「S式」定義される。また「S
式」自体は、実行の結果として値を返す事ができるの
で、各処理単位の引き数として別の処理単位を記述して
入れ子構造を構成する場合もある。LISPプログラム
の実行に際しては、まず最初にユーザからの入力または
なんらかの自動的な仕組みにより、最初に実行すべき関
数名が指定される。同関数の実行過程では、定義された
処理単位が順次実行されるが、入れ子構造になった処理
単位や別の関数に遭遇した場合には、そちらの処理単位
へ流れが移る。最終的には、プログラムの終了が明示的
に宣言された処理単位を実行するか、起動された関数の
処理単位が最後まで実行された時点で、プログラムは正
常終了する。On the other hand, the LISP is defined in the form of independent functions or macro functions for all the processes, and this corresponds to a program division unit read in one process of the program reading unit 21 of the present invention. All processes in LISP are separated from each other by "blank", and as a whole, from an arbitrary number of character strings (function name, variable name, number, etc.) enclosed by a pair of "(" and ")". It is described by using an expression form called "S-expression" as a basic unit. The function definition itself is described in the form of "S-expression", but an arbitrary number of processing units are defined in the "S-expression". In addition, "S
Since the expression itself can return a value as a result of execution, another processing unit may be described as an argument of each processing unit to form a nested structure. When the LISP program is executed, the function name to be executed first is designated by the input from the user or some automatic mechanism. In the execution process of the function, defined processing units are sequentially executed, but when a processing unit having a nested structure or another function is encountered, the flow shifts to that processing unit. Finally, the program terminates normally when the termination of the program executes the explicitly declared processing unit or when the processing units of the invoked function have been executed to the end.
【0038】次に、前記2種類の典型的なプログラムを
例に採り、本発明に係るプログラム保守支援方法に適用
した場合の作用について説明する。 <手順1>まずプログラム読み込み部21が機能し、対
象とするソースコードをテキストデータとして読み込
む。1回の処理で読み込む分割単位は、先にも説明した
通り、FORTRANの場合はメインプログラムかサブ
ルーチンか関数、LISPの場合は関数かマクロ関数で
ある。これらの分割単位の範囲は、FORTRANにお
いては「PROGRAM」…「END」/「SUBRO
UTINE」…「RETURN」/「FUNCTIO
N」…「RETURN」、LISPでは「(DEFU
N」…「)」/「(DEFMACRO」…「)」などの
文字列や記号の組み合わせを識別子として判定できる。
また、この分割単位の読み込みと範囲判定の処理過程
で、分割単位を構成する基本処理単位についても、並行
して判定が可能である。この場合の範囲は、FORTR
ANの場合は行の継続宣言がなければ1行単位、LIS
Pの場合は「S式」単位である。このようにして読み込
まれたソースコードの一部(分割単位の名称:X)は、
以下の手順で処理単位ごとに取り出せるよう、作業変数
T(X,i)[i:1〜X中の処理単位の数]に分割し
て格納される。一旦作業変数Tに格納されたソースコー
ドの一部は、処理単位T(X,i)ごとにプログラム分
析部22に送られ手順2/手順3が繰り返される。 <手順2>プログラム分析部22において、各処理単位
T(X,i)は、元プログラムのプログラミング言語の
文法/構文に応じて決められた基準に従って分析され
る。分析の基準は、対象とする言語ならびに支援したい
作業範囲や応用機能などにより多様の形が考えられる。
しかしながら大半のプログラムにおいて、その保守に際
して最も重要となるのは、関数、変数およびプログラミ
ング言語やオペレーティングシステムが独自に設定して
いる命令の使用方法などである。そこで最も基本的な分
析基準として、本例では「関数」・「変数」・「命令」
について分析する場合について次に説明する。Next, taking the above-mentioned two types of typical programs as an example, the operation when applied to the program maintenance support method according to the present invention will be described. <Procedure 1> First, the program reading unit 21 functions to read the target source code as text data. As described above, the division unit read in one process is the main program or subroutine or function in the case of FORTRAN, and the function or macro function in the case of LISP. The range of these division units is "PROGRAM" ... "END" / "SUBRO" in FORTRAN.
"UTINE" ... "RETURN" / "FUNCTION"
N "..." RETURN ", in LISP" (DEFU
A combination of character strings or symbols such as "N" ... ")" / "(DEFMACRO" ... ")" can be determined as the identifier.
Further, in the process of reading the division unit and the range determination process, it is possible to determine the basic processing units constituting the division unit in parallel. The range in this case is FORTR
In the case of AN, if there is no line continuation declaration, line by line, LIS
In the case of P, the unit is “S formula”. Part of the source code read in this way (division unit name: X) is
It is divided into work variables T (X, i) [i: 1 to the number of processing units in X] and stored so that each processing unit can be extracted by the following procedure. A part of the source code once stored in the work variable T is sent to the program analysis unit 22 for each processing unit T (X, i), and procedure 2 / procedure 3 is repeated. <Procedure 2> In the program analysis unit 22, each processing unit T (X, i) is analyzed according to a criterion determined according to the grammar / syntax of the programming language of the original program. Various types of analysis criteria can be considered depending on the target language, the work range to be supported, the applied functions, and the like.
However, in most programs, the most important factor in maintaining them is the use of functions, variables, and instructions set by the programming language and operating system. Therefore, as the most basic analysis criteria, in this example, "function", "variable", "instruction"
The case of analyzing will be described below.
【0039】まず対象となる処理単位Tについて、それ
が指示する処理の内容を「関数の定義」、「変数の定
義」、「命令の実行」に分けて、そのそれぞれについて
定義されている関数や変数、あるいは使用されている命
令の名称を抽出する。さらに関数や変数については、そ
の定義の内容で使用されている関数や変数(「使用関
数」、「使用変数」)を整理する他、命令についても、
引き数として関数、変数あるいは別の命令が使用されて
いるかどうかを判定してそれらを整理する。なお、これ
ら「関数」・「変数」・「命令」ならびにその引き数な
どの識別には、対象としているプログラムが記述されて
いる言語の文法に基づいて、あらかじめ識別ルールを抽
出しておく必要がある。このようにして得られた分析結
果は、そのまま手順3に送られる。 <手順3>中間格納部23では、手順2で得られた処理
単位ごとの分析結果を整理し、順次フレーム形式のデー
タベースに格納する。分析データを格納するフレーム
は、手順1で読み込んだ分割単位ごとに独立に作成され
る。本例では、そのフレームの名称を、分割単位の名称
と同じXと定める。またフレームX中には、先の分析項
目に従って各プログラミング言語で文法的に規定されて
いる宣言、定義、制御などの各種の基本命令(例えば、
FORTRANではCOMMON,IF,DO,GOT
O…、LISPではDOLIST、CAR、CDR、S
ETQ…、など)、ならびに分割単位X中で新たに定義
ないしは値の代入されている変数に対応する属性項目S
(X,j)[j:X内で使用されている命令と定義され
ている変数の合計]を定義する。本例では、これら属性
項目の具体的な名称として、各命令ならびに変数の名称
と同じ名称を使用する。このようにして定義した属性項
目には、分割単位X中で各命令/変数が使用/定義され
ている処理単位を示すユニークな番号(T(X,i)の
i:FORTRANの場合はライン番号、LISPの場
合は「)」の番号に相当する)を格納する。また各処理
単位T(X,i)は、その中でさらに他の命令を用いた
り、外部で定義された関数や変数を利用している事が普
通であり、これのような呼び合い関係は、プログラムの
保守上非常に重要な情報である。そこで各属性項目S
(X,j)には、その値として、各命令や変数が定義さ
れている場所iと共に、T(X,i)中で使用あるいは
参照されているX外部の関数、変数、命令などの情報も
格納する。本例では、具体的にはS(X,j)の値とし
て場所iを格納、さらにS(X,j)に外部関数、外部
変数、外部命令などに対応する詳細項目E(S,k)
[k:注目する外部データタイプ]を定義し、それらの
中に該当する関数、変数、命令などの名称を保存する方
法をとる。これらにより、分割単位Xについては、その
中で実行される処理の種類、箇所、各処理中で参照され
る外部の項目などの情報が、すべて各フレームに明示的
に保存される。手順2/手順3は、手順1で読み込まれ
た分割単位X中のすべての処理単位が分析されるまで繰
り返される。 <手順4>上記手順1〜3が、対象とするプログラムの
ソースコード全体に対してすべて完了した時点で、モデ
ル作成部24は、作成された中間データベースの内容を
再構成して「プログラムモデル」を作成する。本手順の
直前の中間データベースは、元プログラム全体を網羅す
る分割単位ごとのフレームX(m)[m:全分割単位
数]が、互いに独立に存在する平坦な構造をしている。
モデル作成部24では、まず各フレームXの属性項目S
および詳細項目Eをすべて検索、分割単位X中で定義な
らびに参照されるすべてのデータタイプを抽出し、新た
な属性項目IN(X,k)とEX(X,k)[k:注目
する外部参照データタイプ、詳細項目Eに同じ」を作成
して情報を保存する。再度フレームXの属性項目INを
すべて検索し、元プログラム中で定義されている関数や
変数とそれぞれ同名のフレームF(n)[n:関数の総
数]、V(p)[p:変数の総数]を新たに作成、各関
数や変数がどの分割単位で定義/再定義されているかを
格納する。続いて再度フレームXの属性項目EXをすべ
て検索し、F、Vに含まれるものについては、関数や変
数がどの分割単位で参照されているかの情報を、各フレ
ームF、Vに新たな属性項目を作成して保存する。さら
にF、Vに含まれないものについては、それぞれの関数
や変数と同名のフレームEF(q)[q:関数の総
数]、EV(r)[r:変数の数]を新たに作成、各関
数や変数がどの分割単位で参照されているかの情報を保
存する。これらの処理の結果、前記のように相互に独立
なフレームXの集合として構成されていた中間データベ
ースには、新しい属性項目IN、EXならびに新しいフ
レームF、V、EF、EVが追加される。この新しいデ
ータベースの各フレームX、F、V、EF、EVは、相
互の参照関係を示す情報を属性項目として明示的に内蔵
しており、その意味でこのデータベースはプログラムの
構造を表現する「モデル」(「プログラムモデル」)と
称される。「プログラムモデル」の構成例を図7に示
す。 <手順5>手順1〜4までの処理により、元プログラム
のソースコードから生成した「プログラムモデル」は、
独立したデータファイルとして、ソースコードと共に管
理し必要に応じて利用する事が可能である。本発明は、
元プログラムの保守支援を目的としており、この「プロ
グラムモデル」を利用した具体的な支援の内容として
は、ソースコードの分析と実際の修正の2点が挙げられ
る。これらの内容の作業は、一連の作業として実施され
る場合もあるが、基本的には、必要に応じて独立に利用
できる機能として実現される方が効率的である。ここで
説明する手順は、先の「プログラムモデル」に格納され
た元プログラムのソースコード分析結果を検索する機能
を提供するものであり一括検索部31と対話検索部32
の2つの部分から構成されるが、これらは手順1〜4と
は異なり、基本的にそれぞれ単独で機能する。一括検索
部31は、その名称の通りひとまとまりの検索条件を設
定してプログラム全体を一括して検索してその情報を出
力する機能であり、基本的にバッチ方式で出力形式もプ
リンタなどによる印字出力が主体となる。これに対し
て、対話検索部32は、検索条件や検索範囲を対話的に
入力しその結果を逐次出力する機能を提供する。このよ
うな逐次型対話方式のため、必然的に入力手段としては
CRT画面上の表示を通じてキーボードないしはマウス
のようなデバイス、出力手段としてはCRT画面とプリ
ンタないしはハードコピーという構成をとる。First, regarding the target processing unit T, the contents of the processing instructed by it are divided into "function definition", "variable definition", and "instruction execution", and the functions defined for each are Extract the variable or the name of the instruction used. Furthermore, regarding functions and variables, in addition to organizing the functions and variables used in the contents of their definitions (“used functions”, “used variables”),
Determine if a function, variable or another instruction is used as an argument and sort them out. In order to identify these "functions", "variables", "instructions" and their arguments, it is necessary to extract identification rules in advance based on the grammar of the language in which the target program is written. is there. The analysis result thus obtained is directly sent to the procedure 3. <Procedure 3> In the intermediate storage unit 23, the analysis results for each processing unit obtained in Procedure 2 are organized and sequentially stored in the frame format database. A frame for storing analysis data is created independently for each division unit read in step 1. In this example, the name of the frame is defined as X, which is the same as the name of the division unit. Further, in the frame X, various basic commands such as declarations, definitions, and controls that are grammatically defined in each programming language according to the above analysis items (for example,
For FORTRAN, COMMON, IF, DO, GOT
O ..., LISP DOLIST, CAR, CDR, S
ETQ ..., etc.) and the attribute item S corresponding to the variable whose value is newly defined or assigned in the division unit X.
Define (X, j) [j: sum of variables defined as instructions used in X]. In this example, the same names as the names of the commands and variables are used as the specific names of these attribute items. The attribute item thus defined is a unique number indicating the processing unit in which each instruction / variable is used / defined in the division unit X (i: FORTRAN of T (X, i): line number in the case of i: FORTRAN). , LISP) is stored. In addition, each processing unit T (X, i) normally uses other commands in it or uses functions or variables defined externally. , This is very important information for the maintenance of the program. Therefore, each attribute item S
In (X, j), as its value, information such as a position i where each instruction or variable is defined and a function, variable, or instruction outside X used or referenced in T (X, i) Also store. In this example, specifically, the location i is stored as the value of S (X, j), and the detailed item E (S, k) corresponding to an external function, an external variable, an external instruction, or the like is stored in S (X, j).
[K: External data type of interest] is defined, and the names of corresponding functions, variables, instructions, etc. are stored in them. As a result, with respect to the division unit X, information such as the type and location of the process executed therein and external items referred to in each process are all explicitly stored in each frame. The procedure 2 / procedure 3 is repeated until all the processing units in the division unit X read in the procedure 1 are analyzed. <Procedure 4> When the above Procedures 1 to 3 are all completed for the entire source code of the target program, the model creating unit 24 reconstructs the contents of the created intermediate database to create a “program model”. To create. The intermediate database immediately before this procedure has a flat structure in which the frames X (m) [m: total number of division units] for each division unit covering the entire original program exist independently of each other.
In the model creating section 24, first, the attribute item S of each frame X
And all detailed items E are searched, all data types defined and referenced in the division unit X are extracted, and new attribute items IN (X, k) and EX (X, k) [k: external reference of interest Data type, same as detailed item E ”is created and information is saved. All the attribute items IN of the frame X are searched again, and the frames and the functions and variables defined in the original program have the same names as F (n) [n: the total number of functions] and V (p) [p: the total number of variables, respectively. ], And stores in which division unit each function or variable is defined / redefined. Then, all the attribute items EX of the frame X are searched again, and for the items included in F and V, information on which division unit the function or variable is referred to is newly added to each frame F and V. Create and save. For those not included in F and V, new frames EF (q) [q: total number of functions] and EV (r) [r: number of variables] having the same names as the respective functions and variables are created. Saves information about in which unit a function or variable is referenced. As a result of these processes, new attribute items IN, EX and new frames F, V, EF, EV are added to the intermediate database, which has been configured as a set of mutually independent frames X as described above. Each frame X, F, V, EF, and EV of this new database explicitly contains information indicating a mutual reference relationship as an attribute item, and in this sense, this database represents a "model" that represents the structure of a program. ”(“ Program model ”). A configuration example of the "program model" is shown in FIG. <Procedure 5> The “program model” generated from the source code of the original program by the processing of steps 1 to 4 is
It can be managed as an independent data file together with the source code and used as needed. The present invention is
The purpose is to support the maintenance of the original program, and the specific contents of the support using this "program model" are the analysis of the source code and the actual modification. The work of these contents may be carried out as a series of work, but it is basically more efficient to realize it as a function that can be used independently as needed. The procedure described here provides a function of searching the source code analysis result of the original program stored in the above-mentioned “program model”, and the collective search unit 31 and the interactive search unit 32.
However, unlike steps 1 to 4, each of them basically functions independently. The batch search section 31 is a function that sets a search condition for a group as its name suggests, searches the entire program in a batch, and outputs the information. Basically, the output format is a batch method and printing is performed by a printer or the like. Output is the main subject. On the other hand, the interactive search unit 32 provides a function of interactively inputting a search condition and a search range and sequentially outputting the result. Due to such a sequential interactive method, a device such as a keyboard or a mouse is inevitably used as an input means through a display on a CRT screen, and a CRT screen and a printer or a hard copy is used as an output means.
【0040】このように、一括検索部31と対話検索部
32は、上記のような方式ならびに使用するデバイス構
成などに差はあるものの、機能的にはいずれも「プログ
ラムモデル」の内容を検索して情報を提供するという意
味では等価である。さらにこれらの機能は「プログラム
モデル」の内容だけでなく、特に前記手順1の逆をたど
る事により元プログラムのソースコードの該当箇所を指
示する事も可能である。これらの機能と「プログラムモ
デル」やソースコードを用いて提供できる情報について
以下にいくつかの具体例を示す。 プログラム内部で定義されている関数名と外部で定義
されている関数名の一覧 プログラム内部で定義されている変数名と外部で定義
されている変数名の一覧 特定関数の定義箇所およびその中で使用している関数
名や変数名の一覧 特定の関数を使用している関数名や変数名、使用箇所
の一覧 特定の命令や宣言を使用している関数名や変数名、使
用箇所の一覧 上記の条件の組み合わせ、あるいはその発生箇所の一
覧 <手順6>手順5は、独立に「プログラムモデル」の検
索を行う機能を提供するが、手順6/手順7は、これら
の機能を利用したソースコードの分析に基づいて、改良
や修正の方針、設計変更内容などが固まった後の、具体
的なプログラム修正作業を支援する機能を提供する。修
正仮入力部33は、人間がソースコードの修正箇所と修
正内容について原案を固めて具体的にそのプログラムの
一部を入力する段階の作業を支援する。As described above, the batch search unit 31 and the interactive search unit 32 both functionally search the contents of the "program model", although there is a difference in the above-mentioned method and the device configuration to be used. Are equivalent in that they provide information. Further, these functions are not limited to the contents of the "program model", and in particular, by tracing the reverse of the procedure 1, it is possible to instruct the relevant portion of the source code of the original program. Some specific examples of these functions and information that can be provided by using the "program model" and the source code are shown below. List of function names defined inside the program and function names defined outside The list of variable names defined inside the program and variable names defined outside The location of the specific function and its use List of function names and variable names that use specific functions Function names and variable names that use a specific function, list of used areas Function names and variable names that use a specific instruction or declaration, list of used areas Combination of conditions or list of locations where they occur <Procedure 6> Procedure 5 provides a function to search for "program model" independently, but Procedure 6 / Procedure 7 does not include source code that uses these functions. Based on the analysis, it provides the function to support the concrete program modification work after the improvement and modification policy and the design change content are fixed. The temporary correction input unit 33 supports the work at the stage where a person fixes the original part of the source code and the contents of the correction and specifically inputs a part of the program.
【0041】修正や追加の形態として大きく分けると、
特定の分割単位全体を入力する、特定の処理単位だけを
入力する、特定の変数や関数だけを入力するなどが考え
られる。分割単位全体を入力する場合には、まずキーボ
ードを介して、通常のエディタなどと同様にコードを作
業領域に入力、これを既存のプログラム分割単位と同等
に、手順1〜3に沿って処理し独立した「分割単位フレ
ーム」を作成する。これを、元プログラムの中間データ
ベースに追加して手順4を実行すれば、修正部分を、元
プログラムに実際には入力しない(仮入力状態)で、修
正した時と同じ「プログラムモデル」を合成する事がで
きる。これと手順5を用いて、あらかじめ修正部を入力
した場合の構造的や文法的な問題を洗い出す事ができ
る。When broadly classified as modifications and additions,
It is possible to input the entire specific division unit, input only the specific processing unit, or input only the specific variable or function. When inputting the entire division unit, first enter the code into the work area via the keyboard as in a normal editor, and process it in the same way as the existing program division unit according to steps 1 to 3. Create an independent "divided unit frame". If this is added to the intermediate database of the original program and step 4 is executed, the same “program model” as when the correction is made is synthesized without actually inputting the corrected portion (temporary input state) into the original program. I can do things. Using this and procedure 5, it is possible to identify structural and grammatical problems when the correction part is input in advance.
【0042】また処理単位だけを入力する場合も、挿
入、修正ないしは削除する処理単位を含む分割単位全体
を元プログラムから抜き出し作業領域に保存し、これに
対して部分的な修正を加える事により、先の場合と同じ
手順で、事前に仮入力部を含む全体的な「プログラムモ
デル」を合成できる。なおこれらの処理には、元プログ
ラムの中間データベースを用いるが、これは別途保存あ
るいは再度作成しなくても、「プログラムモデル」の分
割単位フレームXを抽出し、これから属性項目INとE
Xを除去する事により簡単に再生できる。Also when inputting only the processing unit, the entire division unit including the processing unit to be inserted, modified or deleted is extracted from the original program and stored in the work area, and a partial correction is made to this. By the same procedure as in the previous case, the entire “program model” including the temporary input part can be synthesized in advance. Although the intermediate database of the original program is used for these processes, the division unit frame X of the "program model" is extracted from the intermediate database of the original program, and the attribute items IN and E
It can be easily reproduced by removing X.
【0043】この他に、特定の関数や変数のみを入れ替
えるような場合には、仮入力部を含む「プログラムモデ
ル」を合成しなおす必要はなく、元の「プログラムモデ
ル」で新しい関数や変数で置換する関数や変数を検索す
る事で、同等の効果が得られる。In addition to this, when only a specific function or variable is replaced, it is not necessary to resynthesize the "program model" including the temporary input part, and the original "program model" can be replaced with a new function or variable. The same effect can be obtained by searching the function or variable to be replaced.
【0044】以上のような処理により、あらかじめ文法
上や構造上の観点から問題の有無を検討し、問題のない
事を確認したプログラム仮修正部については、作業領域
の内容に「確認済み/適」に相当する情報を付加して保
存し、手順7に引き継ぐ。またそれ以外については、作
業領域に残したまま確認処理を待つか、必要に応じて作
業領域から抹消する事ができる。 <手順7>前記の通り、手順6により文法上ならびに構
造上の問題の有無を確認したプログラム修正の仮入力部
については、修正箇所ならびに修正内容が作業領域中に
保存されている。プログラム修正部34は、この内容に
基づいて実際のソースコード修正を施す機能を提供す
る。ただ本発明は、プログラムの修正作業については、
その修正内容に対して主に文法上ないしは構造上の確認
手段を提供するものであり、プログラムの修正方針や設
計変更の内容までの検証を行うものではないため、確認
済みの仮入力部についても、その内容が必ず正しい事を
保証するものではない。これに対しては、元プログラム
のソースコードに対して、仮入力された修正を直接施す
のではなく、ソースコードを一旦別ファイルにコピーし
た後に修正を施す事により、元プログラムを保護する事
ができる。またこれ以外に、修正内容により変更される
元のプログラム内容を、作業領域中に保存して元プログ
ラムを直接変更する方法なども考えられる。By the above processing, the existence of a problem is examined in advance from the viewpoint of grammar and structure, and it is confirmed that there is no problem. Is added and saved, and the procedure is taken over to step 7. Other than that, it is possible to wait for confirmation processing while leaving it in the work area, or delete it from the work area if necessary. <Procedure 7> As described above, with respect to the temporary input part of the program modification, which has been confirmed in step 6 as to whether there is a grammatical or structural problem, the modified part and the modified content are stored in the work area. The program correction section 34 provides a function of actually correcting the source code based on this content. However, the present invention relates to the work of modifying the program,
Since it mainly provides grammatical or structural confirmation means for the correction contents, and does not verify the program's correction policy or the contents of design changes, it is possible to confirm the provisional input part as well. , It does not guarantee that the contents are correct. To prevent this, it is possible to protect the original program by copying the source code once to another file and then modifying the source code of the original program, instead of directly applying the temporarily entered modification. it can. In addition to this, a method of directly modifying the original program by saving the original program content modified by the modification content in the work area is also conceivable.
【0045】このように、本実施例によれば、以下のよ
うな効果が得られる。As described above, according to this embodiment, the following effects can be obtained.
【0046】すでに存在するプログラムのソースコード
だけから、その内容を文法的、構造的に分析した「プロ
グラムモデル」を自動的に作成する事ができる。A "program model" can be automatically created by grammatically and structurally analyzing the contents of the existing source code of the program.
【0047】「プログラムモデル」を用いて、その内容
をあらかじめ指定した条件に基づいて一括検索しその結
果を出力する事ができる。この出力結果はプログラムの
分析ドキュメントとして利用できる。By using the "program model", the contents can be collectively searched based on a predesignated condition and the result can be output. This output result can be used as an analysis document of the program.
【0048】「プログラムモデル」を用いてその内容を
対話的に条件に指定しながら検索する事ができる。これ
を利用することにより修正したい関数や変数の、使用さ
れている箇所、参照している内部または外部の関数や変
数、影響をおよぼす範囲、その前後のプログラムの構造
などを容易に探索する事ができる。It is possible to perform a search while interactively designating the contents as conditions using the "program model". By using this, it is possible to easily search the used part of the function or variable to be modified, the referenced internal or external function or variable, the range of influence, the structure of the program before and after it. it can.
【0049】「プログラムモデル」から作成した分析ド
キュメントや対話的なソースコードの分析機能によりプ
ログラムの保守や改良の立案、検討が容易に行える。こ
れらの作業は従来は出力されたソースコードのリストを
用いて人間が手作業でおこなっていたものである。With the analysis document created from the "program model" and the interactive source code analysis function, the maintenance and improvement of the program can be easily planned and studied. Conventionally, these tasks are manually performed by humans using the output source code list.
【0050】立案したプログラム修正内容を仮入力し、
これを利用してソースコードを変更する前に修正後の
「プログラムモデル」だけを合成する事により、ソース
コード自体を変更せずに修正内容と元のソースコードの
文法上や構造上の不整合などを評価する事ができる。Temporarily input the contents of the planned program correction,
By using this to synthesize only the modified "program model" before changing the source code, the contents of the modification and the original source code are not syntactically and structurally inconsistent without changing the source code itself. Can be evaluated.
【0051】仮入力部に不整合が発見された場合は、こ
の仮入力部だけを繰り返して修正や評価を行う事ができ
る。これにより大規模なプログラムの修正作業に際し
て、部分的な修正内容の文法上や構造上の問題を洗い出
すために全体に組み込んで試験する必要がなくなり作業
が効率化される。When a mismatch is found in the temporary input section, only this temporary input section can be repeatedly corrected and evaluated. As a result, when a large-scale program is modified, it is not necessary to test it by incorporating it into the whole in order to identify grammatical and structural problems of the partial modification, and the work is streamlined.
【0052】小さな修正が多数ある場合には、それぞれ
の修正箇所について前記手段であらかじめ文法上や構造
上の問題の有無を確認し、最後に一括してソースコード
に組み込む事ができる。特にコンパイルやリンクなどに
時間のかかる大型プログラムについては、あらかじめ文
法上や構造上を済ませたうえで動的な試験に入る事がで
き、保守作業の効率化がはかれる。When a large number of small corrections are made, it is possible to check the existence of grammatical or structural problems in advance by means of the above-mentioned means for each correction point, and finally to incorporate them into the source code all together. Especially for large programs that take a long time to compile and link, you can enter dynamic tests after completing the grammar and structure in advance, and the efficiency of maintenance work can be improved.
【0053】なお、前記実施例においては、プログラム
の構造として主に関数や変数間の参照関係に注目してソ
ースコードを分析する場合を示したが、この他にも、プ
ログラムの構造として処理の流れのループや分岐に注目
する場合には、ループや分岐を定義する宣言や命令をフ
レームX中で検索して独立したフレーム(例えば、ルー
プ1、ループ2…、分岐1、分岐2…、など)を生成、
ループの範囲や分岐先などの関連情報をフレームXの属
性項目として格納する事なども可能である。In the above embodiment, the case where the source code is analyzed focusing on the reference relation between the functions and variables has been shown as the structure of the program. When focusing on a loop or branch of a flow, a declaration or instruction that defines the loop or branch is searched in the frame X and independent frames (for example, loop 1, loop 2, ..., Branch 1, branch 2, ... )Generate a,
It is also possible to store related information such as the loop range and branch destination as attribute items of the frame X.
【0054】また、前記実施例においては、「プログラ
ムモデル」として、X、F、V、EF、EVなど元プロ
グラムの分割単位、関数、変数などに関わる情報だけを
フレームとして格納し、分析に用いた処理単位Tについ
ては、特に格納しないという方法について説明したが、
これは、各処理単位の内容はソースコードに対応するの
で、処理単位T(X,i)の示す場所(分割単位Xのi
番目)がわかれば、別途保存されているソースコードの
ファイルから随時抽出する事が可能なためである。しか
しこの他に、処理単位Tを、X、F、V、EF、EVな
どと共にそのまま「プログラムモデル」に格納する方法
も考えられる。この場合、「プログラムモデル」本体は
大きくなるが、ソースコードファイルは不要となり、
「プログラムモデル」の独立性が増すので、ファイルの
管理上有利である。さらに、「プログラムモデル」の検
索により得られた分析結果などから、即座に対応する処
理単位の内容(コードの内容)を出力できる点で応用上
も利点がある。また、「プログラムモデル」が処理単位
をすべて内蔵すると、それらを集めれば、必要に応じて
元プログラムや修正プログラムのソースコードを合成す
る事が可能である。これを利用して、元プログラムの処
理単位と修正に関わる処理単位をそれぞれ管理する事に
より、変更の結果いくつかの異なったバージョンを持つ
ようなプログラムのソースコードの管理にも効果があ
る。Further, in the above-mentioned embodiment, as the "program model", only information relating to division units, functions, variables, etc. of the original program such as X, F, V, EF, EV is stored as a frame for use in analysis. Regarding the processing unit T, which has been described above, the method of not storing it has been described.
This is because the content of each processing unit corresponds to the source code, so that the location indicated by the processing unit T (X, i) (i of the division unit X is
This is because it is possible to extract from the separately stored source code file as needed. However, in addition to this, a method in which the processing unit T is directly stored in the “program model” together with X, F, V, EF, EV, etc. is also conceivable. In this case, the main body of the "program model" will be large, but the source code file will not be needed,
This increases the independence of the "program model", which is advantageous in file management. Further, there is an advantage in application in that the contents of the corresponding processing unit (contents of the code) can be immediately output from the analysis result obtained by searching the "program model". Further, if the "program model" incorporates all processing units, it is possible to synthesize the source code of the original program or the modification program as needed by collecting them. By using this, by managing the processing unit of the original program and the processing unit related to the modification respectively, it is effective in managing the source code of the program that has several different versions as a result of the change.
【0055】[0055]
【発明の効果】以上説明したように、本発明によれば、
既存プログラムのソースコードの分析,修正,改良等の
ソフトウェア保守作業を機械化し、作業の効率化を図る
ことができる。As described above, according to the present invention,
The software maintenance work such as analysis, modification, and improvement of the source code of the existing program can be mechanized to improve the work efficiency.
【図1】本発明に係るプログラム保守支援装置の一例を
示す全体構成図。FIG. 1 is an overall configuration diagram showing an example of a program maintenance support device according to the present invention.
【図2】図1の装置を処理の流れにそった機能ブロック
で表現した機能ブロック図。FIG. 2 is a functional block diagram in which the apparatus of FIG. 1 is represented by functional blocks according to a processing flow.
【図3】図2の装置のハードウェア構成図。FIG. 3 is a hardware configuration diagram of the apparatus of FIG.
【図4】図2のモデル構築部における処理の流れを示す
フローチャート。FIG. 4 is a flowchart showing the flow of processing in the model building unit in FIG.
【図5】図2のモデル応用部における処理の流れを示す
フローチャート。5 is a flowchart showing the flow of processing in the model application unit of FIG.
【図6】典型的なプログラムの構成例を示す説明図。FIG. 6 is an explanatory diagram showing a configuration example of a typical program.
【図7】プログラムモデルの構成を示す説明図。FIG. 7 is an explanatory diagram showing the structure of a program model.
1 ソースコード記憶手段 2 プログラム分析手段 3 中間データベース作成手段 4 中間データベース記憶手段 5 モデル作成手段 6 モデル記憶手段 7 入力手段 8 検索手段 9 出力手段 10 修正プログラム記憶手段 11 修正プログラム分析・評価手段 12 ソースコード修正手段 20 モデル構築部 21 プログラム読み込み部 22 プログラム分析部 23 中間格納部 24 モデル作成部 30 モデル応用部 31 一括検索部 32 対話検索部 33 修正仮入力部 34 プログラム修正部 1 Source Code Storage Means 2 Program Analysis Means 3 Intermediate Database Creation Means 4 Intermediate Database Storage Means 5 Model Creation Means 6 Model Storage Means 7 Input Means 8 Search Means 9 Output Means 10 Correction Program Means Means 11 Correction Program Analysis / Evaluation Means 12 Sources Code correction means 20 Model construction unit 21 Program reading unit 22 Program analysis unit 23 Intermediate storage unit 24 Model creation unit 30 Model application unit 31 Batch search unit 32 Dialog search unit 33 Temporary correction input unit 34 Program correction unit
Claims (1)
ソースコード記憶手段と;ソースコードを、予め定めら
れた分割単位に分割するとともに、各分割単位を処理単
位に分割するプログラム分析手段と;各処理単位が指示
する処理の内容を、属性項目別に分けるとともに、各属
性項目に属性項目の値を対応させて中間データベースを
作成する中間データベース作成手段と;中間データベー
スを記憶する中間データベース記憶手段と;処理単位相
互の参照関係を付加して中間データベースを再構成し、
プログラムモデルを作成するモデル作成手段と;プログ
ラムモデルを記憶するモデル記憶手段と;入力手段から
入力される条件に基づきプログラムモデルを検索し、前
記既存プログラムを分析する検索手段と;検索手段での
分析結果を出力する出力手段と;前記入力手段から入力
される修正プログラムを記憶する修正プログラム記憶手
段と;修正プログラムを前記プログラムモデルの内容と
照合し、修正プログラムの分析・評価を行なう修正プロ
グラム分析・評価手段と;修正プログラムが整合する場
合に、前記ソースコードを修正するソースコード修正手
段と;を具備することを特徴とするプログラム保守支援
装置。1. Source code storage means for storing a source code of an existing program; program analysis means for dividing a source code into predetermined division units and each division unit into processing units; The contents of the process designated by the unit are divided according to attribute items, and an intermediate database creating unit that creates an intermediate database by associating each attribute item with a value of the attribute item; an intermediate database storing unit that stores the intermediate database; Reconfigure the intermediate database by adding reference relationships between units,
Model creating means for creating a program model; model storing means for storing the program model; retrieving means for retrieving the program model based on conditions input from the input means and analyzing the existing program; analysis by the retrieving means Output means for outputting the result; correction program storage means for storing the correction program input from the input means; correction program analysis for collating the correction program with the contents of the program model and analyzing / evaluating the correction program A program maintenance support device comprising: an evaluation unit; and a source code correction unit that corrects the source code when the correction programs match.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4095573A JPH05289862A (en) | 1992-04-15 | 1992-04-15 | Program maintenance supporting device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4095573A JPH05289862A (en) | 1992-04-15 | 1992-04-15 | Program maintenance supporting device |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05289862A true JPH05289862A (en) | 1993-11-05 |
Family
ID=14141338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4095573A Pending JPH05289862A (en) | 1992-04-15 | 1992-04-15 | Program maintenance supporting device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05289862A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006085585A (en) * | 2004-09-17 | 2006-03-30 | Fujitsu Ltd | Source code search program and search table creation program |
-
1992
- 1992-04-15 JP JP4095573A patent/JPH05289862A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006085585A (en) * | 2004-09-17 | 2006-03-30 | Fujitsu Ltd | Source code search program and search table creation program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698682B1 (en) | Computerized software development environment with a software database containing atomic expressions | |
US6038378A (en) | Method and apparatus for testing implementations of software specifications | |
US5361357A (en) | Method and apparatus for optimizing computer file compilation | |
US20030221184A1 (en) | Template-based application development system | |
JPS6195458A (en) | Testing method of graphic program | |
JP3871832B2 (en) | Data processing program automatic generation system and method, and computer-readable recording medium | |
KR20020070809A (en) | Optimizing Post-Link Code | |
Zhang et al. | Automated extraction of grammar optimization rule configurations for metamodel-grammar co-evolution | |
US8065606B1 (en) | System and method for automating document generation | |
Ferenc et al. | Extracting Facts with Columbus from C++ Code. | |
US7308677B2 (en) | Program generating apparatus, program generating method and program generator | |
JPH05289862A (en) | Program maintenance supporting device | |
Lieberherr et al. | Tools for preventive software maintenance | |
CN114296779A (en) | SPA-based code editing method and system | |
Andrews et al. | The formal definition of Modula-2 and its associated interpreter | |
GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
Petitpierre | Bottom up creation of a DSL using templates and JSON | |
JPH0667871A (en) | Automatic program updating system | |
JPH06290039A (en) | Method for changing program | |
JP3584204B2 (en) | Automatic source program converter | |
JPH05134854A (en) | Software development supporting device | |
JPH09204301A (en) | Program generation system | |
Nejmeh et al. | A survey of program design languages (PDLs) | |
Gannod et al. | A suite of tools for facilitating reverse engineering using formal methods | |
JPH0793144A (en) | Program analyzer |