JP2001325100A - プログラム解析装置 - Google Patents

プログラム解析装置

Info

Publication number
JP2001325100A
JP2001325100A JP2000141403A JP2000141403A JP2001325100A JP 2001325100 A JP2001325100 A JP 2001325100A JP 2000141403 A JP2000141403 A JP 2000141403A JP 2000141403 A JP2000141403 A JP 2000141403A JP 2001325100 A JP2001325100 A JP 2001325100A
Authority
JP
Japan
Prior art keywords
variable
program
variables
function
relation
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.)
Withdrawn
Application number
JP2000141403A
Other languages
English (en)
Inventor
Soichi Matsui
聡一 松井
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000141403A priority Critical patent/JP2001325100A/ja
Publication of JP2001325100A publication Critical patent/JP2001325100A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 C/C++言語で記述されたプログラムに対
して、変数の影響度、及び、プログラムの複雑度や独立
性を求める。 【解決手段】 ソースファイル解析部100は、C/C
++言語で記述されたソースファイルからソースファイ
ル中の関数及び変数の使用関係を解析することで、個々
の変数の使用関係を示す使用関係情報を作成し、使用関
係統合部101は、この使用関係情報を統合すること
で、統合関係情報を作成し、クラス定義部102は、こ
の統合関係情報から独立性の高い関数、変数の集まりで
あるクラスを統合関係情報に追加し、メトリクス算出部
103は、クラスの定義が追加された統合関係情報から
変数と変数の影響度、関数と関数の影響度、プログラム
の複雑度、プログラムの独立性を算出することで、変数
の影響度、及び、プログラムの複雑度や独立性を求めら
れるようにした。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、関数を定義でき
る手続型言語(一例として、C/C++言語)で作成さ
れたプログラムを理解、保全する際、この作業を支援す
る装置に関するものである。
【0002】
【従来の技術】これまでのC言語プログラムを理解する
環境としては、次のような環境、ソフトウェアツールが
あった。 (1)コールツリー生成ツール (2)ドキュメント生成ツール (3)プログラム分析ツール
【0003】上記のうち、(1)は、関数の呼び出し
(コール)関係をツリー構造に表示して、関数間の関係
の理解を助けるためのツールである。(2)は、プログ
ラムを解析して、プログラム中で使用されている、関数
や変数の定義、定義場所、使用場所の情報を抽出し、こ
れを元にドキュメントを生成するツールである。
【0004】この、(1)や(2)のツールを使用して
も、関数呼び出しで引数の形で渡される変数について、
その影響を調べることはできなかった。(3)は、特願
平7−257583において、プログラム分析装置とし
て存在している。この装置では、プログラム(関数)の
接続関係から、変数の影響を分析している。しかし、こ
の装置では、記述能力の高いC/C++言語においての
プログラムの接続関係が得られない。
【0005】
【発明が解決しようとする課題】従来のCプログラム開
発環境では、プログラム中に使用されている変数の詳細
な関係、及び、この関係に基づく変数の影響度を求める
ことができなかった。また、変数の影響度から算出され
るべきである、プログラムの複雑度や独立性の算出も行
なえなかった。
【0006】この発明は、上記の課題を解消するために
なされたもので、手続型言語、一例として、C/C++
言語で記述されたプログラムを解析し、プログラム中で
使用されている変数の関係を詳細に分析して、変数の影
響度を求めることを目的とする。更に、求めた影響度か
ら、プログラムの複雑度や独立性を求めることを目的と
する。
【0007】
【課題を解決するための手段】この発明に係るプログラ
ム解析装置は、関数を定義できる手続き型言語で記述さ
れたプログラムのソースファイルを記憶するソースファ
イル記憶部と、上記ソースファイル記憶部からソースフ
ァイルを読み込み、ソースファイルのプログラムに記述
された関数によって使用されている複数の変数の関係を
使用関係として解析し、解析された使用関係を使用関係
情報として定義するソースファイル解析部と、上記使用
関係情報を記憶する使用関係情報記憶部と、上記使用関
係情報記憶部に記憶された使用関係情報を読み込み、使
用関係情報に定義された使用関係を変数毎に統合した統
合関係情報を作成する使用関係統合部と、上記統合関係
情報を記憶する統合関係情報記憶部とを備えたことを特
徴とする。
【0008】上記プログラム解析装置は、さらに、上記
統合関係情報記憶部から統合関係情報を読み込み、読み
込んだ統合関係情報から、関数の独立性と変数の独立性
とを表わすクラスを定義し、定義されたクラスを上記統
合関係情報に追加するクラス定義部を備えたことを特徴
とする。
【0009】上記プログラム解析装置は、さらに、上記
クラス定義部によって定義されたクラスを追加された統
合関係情報から、プログラムの性質を表わす数値を算出
するメトリクス算出部を備えたことを特徴とする。
【0010】上記プログラムの性質を表わす数値は、変
数と変数との影響度と、関数と関数との影響度と、プロ
グラムの複雑度と、プログラムの独立性とのいずれかを
含むことを特徴とする。
【0011】上記ソースファイル解析部は、一の変数X
が、他の変数Yを右辺値として含む条件式以外の代入式
の左辺値である場合、変数代入関係という使用関係情報
を定義することを特徴とする。
【0012】上記ソースファイル解析部は、if−el
se文のブロックの中において、条件式以外の代入式の
左辺値で一の変数X、または、加算または減算のいずれ
か一方の演算子が作用している一の変数Xとのいずれか
一方の変数Xが存在し、かつ、if 文の条件式に他の
変数Yが存在する場合、変数Xから変数Yへのif文関
係という使用関係情報を定義することを特徴とする。
【0013】上記ソースファイル解析部は、switc
h文のブロックの中において、条件式以外の代入式の左
辺値で一の変数X、または、加算または減算のいずれか
一方の演算子が作用している変数Xとのいずれか一方の
変数Xが存在し、かつ、switch文の条件式に他の
変数Yが存在する場合、変数Xから変数Yへのswit
ch文関係という使用関係情報を定義することを特徴と
する。
【0014】上記ソースファイル解析部は、一の変数X
のアドレスまたは参照のいずれか一方が、一の関数Fの
引数に使用され、かつ、上記関数F内において、渡され
たアドレスの先のデータまたは参照のいずれか一方が条
件式以外の代入式の左辺値である変数X、または、加算
または減算のいずれか一方の演算子演算子が作用してい
る変数Xとのいずれか一方の変数Xとして扱われている
場合、関数Fにおける変数Xの参照引数関係という使用
関係情報を定義することを特徴とする。
【0015】上記ソースファイル解析部は、引数を伴っ
て、一の関数Fを呼び出している場合、引数となった変
数Xに対応する、関数Fの仮引数となった変数Yに対
し、変数Xから変数Yへの引数関係という使用関係情報
を作成することを特徴とする。
【0016】上記ソースファイル解析部は、一の関数F
を呼び出し、かつ、上記関数Fの戻り値を一の変数Xに
代入し、かつ、呼び出した関数Fの戻り値を表す式中
に、他の変数Yが含まれている場合、変数Xから変数Y
への戻り値関係という使用関係情報を定義することを特
徴とする。
【0017】上記使用関係統合部は、使用関係情報か
ら、変数を二次元のグラフ上に配置し、配置された変数
を端点とし、端点と端点とを矢印で結んで使用関係を表
わし、さらに、変数が使用されている関数ごとに、関数
によって使用されている変数を包含するような閉曲線を
生成して、統合関係情報を作成することを特徴とする。
【0018】上記クラス定義部は、任意の変数を1つ以
上の関数が変更している場合、上記任意の変数と、上記
任意の変数を変更する関数は一つのクラスであるという
定義に基づいてクラス定義を行なうことを特徴とする。
【0019】上記メトリクス算出部は、グラフ上の変数
にあたる端点について、端点と端点間との距離を定義
し、この距離から、変数と変数との影響度を算出するこ
とを特徴とする。
【0020】上記メトリクス算出部は、グラフ上の変数
を包含する閉曲線について、閉曲線間の距離を定義し、
この閉曲線間の距離から、関数と関数との影響度を算出
することを特徴とする。
【0021】上記メトリクス算出部は、グラフ上の矢印
と閉曲線とに基づいてグラフの複雑度を定義し、このグ
ラフの複雑度から、プログラムの複雑度を算出すること
を特徴とする。
【0022】上記メトリクス算出部は、上記グラフの複
雑度からプログラムに含まれる、関数と変数との数と、
クラス定義部で定義したクラス定義の数から、プログラ
ムの独立性を算出することを特徴とする。
【0023】上記関数を定義できる手続き型言語は、C
言語とC++言語とのいずれかであることを特徴とす
る。
【0024】
【発明の実施の形態】実施の形態1.この実施の形態で
は、関数を定義できる手続き型言語として、C/C++
言語(以下、「C/C++」ともいう)を一例に説明す
る。図1は、この発明に係るプログラム解析装置に関わ
る装置の構成の一例を表わす。図1のプログラム解析装
置1は、以下の構成を備える。
【0025】入出力装置2は、ユーザによって、データ
の入出力を行う。ソースファイル記憶部3Mは、関数を
定義できる手続き型言語としてで記述されたプログラム
のソースファイルを記憶する。ソースファイル記憶部3
Mに記憶されているプログラムのソースファイルをソー
スプログラム3と表わす。
【0026】ソースファイル解析部100は、ソースフ
ァイル記憶部3Mからソースプログラム3を読み込み、
ソースプログラム3に記述された関数によって使用され
ている複数の変数の関係を使用関係として解析し、解析
された使用関係を使用関係情報として定義する。使用関
係情報記憶部104Mは、ソースファイル解析部100
で定義された使用関係情報を記憶する。使用関係情報記
憶部104Mに記憶されている使用関係情報を使用関係
情報104と表わす。
【0027】使用関係統合部101は、使用関係情報記
憶部104Mに記憶された使用関係情報を読み込み、使
用関係情報に定義された使用関係を変数毎に統合した統
合関係情報を作成する。統合関係情報記憶部105M
は、使用関係統合部101で統合された統合関係情報を
記憶する。統合関係情報記憶部105Mに記憶されてい
る統合関係情報を統合関係情報105と表わす。
【0028】クラス定義部102は、統合関係情報記憶
部105Mから統合関係情報105を読み込み、読み込
んだ統合関係情報105から、関数の独立性と変数の独
立性とを表わすクラスを定義し、定義されたクラスを上
記統合関係情報105に追加する。
【0029】メトリクス算出部103は、クラス定義部
102によって定義されたクラスを追加された統合関係
情報から、プログラムの性質を表わす数値を算出する。
メトリクス記憶部106Mは、メトリクス算出部103
で算出されたメトリクスを記憶する。メトリクス記憶部
106Mに記憶されているメトリクスをメトリクス10
6と表わす。
【0030】このプログラム解析装置は、計算機上で実
現される。計算機は、入出力装置(キーボード、マウス
など)、表示装置(CRTなど)、及び、記憶装置を備
える。
【0031】次に、このプログラムの解析装置の動作を
説明する。図2は、プログラム解析装置の動作手順を表
すフローチャートである。
【0032】本実施の形態において、ソースファイル解
析部100は、図3に一例として示す解析対象となるソ
ースプログラム3をC言語またはC++言語の文法に従
って解析して、図4に示すような使用関係情報104を
生成する(ステップS200)。
【0033】使用関係情報には、次の6種類の使用関係
がある。ただし、以下の説明に使用する変数X,Y,
A,R及び関数Fは任意のものである。
【0034】(1)変数代入関係:変数Xが、変数Yを
右辺値として含む条件式以外の代入式の左辺値である場
合、変数Xを関係先、変数Yを関係元とする使用関係。 (2)if文関係:if−else文のブロックの中
に、条件式以外の代入式の左辺値である変数X、また
は、前置もしくは後置の++演算子または−−演算子が
作用している変数Xが存在し、かつ、if 文の条件式
に変数Yが存在する場合、変数Xを関係先、変数Yを関
係元とする使用関係。
【0035】(3)switch文関係:switch
文のブロックの中に、条件式以外の代入式の左辺値であ
る変数X、または、前置もしくは後置の++演算子また
は−−演算子が作用している変数Xが存在し、かつ、s
witch文の条件式に変数Yが存在する場合、変数X
を関係先、変数Yを関係元とする使用関係。 (4)参照引数関係:変数XのアドレスAまたは参照R
が、関数Fの引数Yに使用され、かつ、関数F内におい
て、渡されたアドレスAの先のデータである変数Xまた
は、参照Rが、条件式以外の代入式の左辺値である変
数、または、前置もしくは後置の++演算子または−−
演算子が作用している変数として扱われている場合、変
数Xを関係先、変数Yを関係元とする使用関係。
【0036】(5)引数関係:引数Xを伴って、関数F
を呼び出している場合、引数となった変数Xに対応す
る、関数Fの仮引数がYである場合、変数Xを関係先、
変数Yを関係元とする使用関係。 (6)戻り値関係:関数Fを呼び出し、かつ、関数Fの
戻り値を変数Xに代入し、かつ、呼び出した関数Fのr
eturn文の戻り値を表す式中に、変数Yが含まれて
いる場合、変数Xを関係先、変数Yを関係元とする使用
関係。
【0037】図3は、C言語によって記述されたプログ
ラムであって、解析対象のソースファイルの例である。
同図には、2つの関数f()とg()と、グローバル変
数zが存在し、これらはすべて解析対象である。同図に
おいて、関数f()の中で関数g()を呼び出してい
る。
【0038】図3の例では、ソースファイル2はC言語
で記述された1つのプログラムファイルとしているが、
ソースファイル解析部100が解析できるファイルの数
に制限はない。また、ソースファイルの種類としては、
C言語によって記述されたものの他に、C++言語によ
って記述されたものも解析することができる。
【0039】図4は、生成された使用関係情報104の
例である。使用関係情報104に含まれる情報は、関係
先の変数名、関係元の関数名、使用関係の種類を一組と
したものである。図4の例では、12個の使用関係が作
成されている。また、関数のローカル変数及び、仮引数
の前には、関数の名前を“:”で区切って「関数名
+“:”+変数名」の形式で記述してある。一方、グロ
ーバル変数は、変数名だけを記述してある。
【0040】使用関係統合部101は、使用関係情報1
04に含まれている各使用関係について、統合関係情報
に、関係元の変数及び、関係先の変数を配置する(ステ
ップS201)。
【0041】更に、使用関係統合部101は、上記統合
関係情報の配置した変数について、関係元の変数から関
係先の変数に向かって使用関係を表す矢印を引く(ステ
ップS202)。
【0042】使用関係情報に含まれる全ての使用関係に
ついて、変数の配置及び、使用関係を表す矢印を引き統
合関係情報が作成する(ステップS203)。この後、
使用関係統合部101は、解析対象となったファイルに
含まれる全ての関数について、この関数のローカル変数
または、仮引数を全て包含する関数曲線を上記統合関係
情報に追加する(ステップS204)。
【0043】図5は、使用関係統合部によって生成され
た統合関係情報105の例である。使用関係統合部によ
って生成される統合関係情報105に含まれる情報は、
関係先の変数名、関係元の変数名、関係を表す矢印と、
変数を包含する関数曲線から構成される。図5の例で
は、7個の変数と、12個の使用関係と、2個の関数曲
線が作成されている。
【0044】クラス定義部102は、図6のフローチャ
ートに示すクラス定義の手順に従って、使用関係統合部
101によって作成された統合関係情報105にクラス
情報を追加する(ステップS205)。
【0045】図6の例では、統合関係情報に含まれるグ
ローバル変数にあたる全ての端点及び、関数曲線をそれ
ぞれクラス曲線で包含する(ステップS300)。そこ
で、全てのグローバル変数にあたる端点について(ステ
ップS301)、この変数が関係先となっている使用関
係を抽出し(ステップS302)、抽出した使用関係の
関係元である変数を包含するクラス曲線と、ステップS
301において対象となっているグローバル変数を包含
するクラス曲線を1つのクラス曲線に統合する(ステッ
プS303)。
【0046】図7は、クラス定義部によってクラス情報
が追加された統合関係情報105の例である。具体的に
は、図6のS300の処理を図5へ行ったものである。
クラス定義部によって生成される統合関係情報105に
含まれる情報は、使用関係統合部に生成される統合関係
情報及び、クラスを破線で表すクラス曲線から構成され
る。図7の例では、図5の統合関係情報に、2個のクラ
ス曲線が追加されている。関数曲線及びクラス曲線は、
その区別が可能であれば、線の種類は任意である。
【0047】メトリクス算出部103は、最終的にクラ
ス定義部に生成された統合関係情報105より、以下の
(1)変数間の影響度、(2)関数間の影響度、(3)
プログラムの複雑度、(4)プログラムの独立性の4種
類のメトリクス106を作成する(ステップS20
6)。以下に、上記(1)〜(4)について順に説明す
る。
【0048】(1)変数間の影響度:統合関係情報にお
ける変数にあたる矢印の端点について、その間に引かれ
ている矢印を利用して、隣接する端点間の距離を定義
し、この距離から、変数間の影響度を算出する。隣接す
る端点間の距離は、事前に定義しておく。この事前に定
義される端点間の距離は、解析対象となるプログラム毎
に自由に定義可能である。
【0049】図8が、事前に定義される端点間の距離で
ある。図8の例では、端点間の矢印である使用関係の種
類と、端点である関係先の変数と、関係元の変数の定義
されている場所より、端点間の距離を定義している。
【0050】また、本実施の形態では、2つの変数の間
に引かれている矢印毎に求められた2つの変数の間の距
離の合計を変数間の影響度として定義した。この、端点
間の距離から変数間の影響度を求める方法も自由に定義
可能である。
【0051】図9が、図7の統合関係情報と図8の定義
された端点間の距離から得られた、変数間の影響度であ
る。
【0052】(2)関数間の影響度:統合関係情報にお
ける、関数にあたる関数曲線ついて、関数曲線間の距離
を定義し、この距離から、関数間の影響度を算出する。
関数曲線間の距離は、事前に定義しておく。この事前に
定義される関数曲線間の距離は、解析対象となるプログ
ラム毎に自由に定義可能である。
【0053】図10が、事前に定義される関数Aと関数
B(関数A、関数Bは、ある関数を一例として)の関数
曲線間の距離を求めるフローチャートである。図10の
例では、一方の変数xが関数曲線Aに含まれ、かつ、も
う一方の変数yが関数曲線Bに含まれ、かつ、変数xと
変数yの間に使用関係がある変数xと変数yの組合わせ
の集合RVabを抽出し(ステップS400)、抽出し
た全ての使用関係RVabの個々の関数の組の個々の変
数間の影響度を求め、その合計を関数曲線Aと関数曲線
Bの距離とする(ステップS401)。
【0054】また、本実施の形態では、求めた関数曲線
間の距離を関数間の影響度として定義した。この関数曲
線間の距離から関数間の影響度を求める方法も自由に定
義可能である。
【0055】図7の統合関係情報と図9の変数間の影響
度及び、図10の定義された関数閉曲線間の距離から関
数f()と関数g()の影響度は、18(g:in_x
とf:x)+8(f:y[]とg:ret)=26と求
められる。
【0056】(3)プログラムの複雑度:統合関係情報
における変数にあたる矢印の端点、変数と変数の関係に
あたる端点間の矢印、関数にあたる関数閉曲線、クラス
にあたる、クラス閉曲線から、グラフの複雑度を定義
し、この複雑度から、プログラムの影響度を算出する。
グラフの複雑度は、事前に定義しておく。この事前に定
義されるグラフの複雑度は、解析対象となるプログラム
毎に自由に定義可能である。
【0057】本実施の形態では、グラフの複雑度は、グ
ラフに含まれる隣接する変数の距離の合計とするという
定義を行なった。また、本実施の形態では、グラフの複
雑度をプログラムの複雑度として定義した。この、グラ
フの複雑度からプログラムの複雑度を求める方法も自由
に定義可能である。
【0058】図7の統合関係情報と上記で定義したグラ
フの複雑度から図3のプログラムの複雑度は、7+4+
6+18+10+5+4+8=62と求められる。
【0059】(4)プログラムの独立性:統合関係情報
に含まれる変数にあたる端点の数、変数の使用関係にあ
たる矢印の数、関数にあたる関数曲線の数、及びクラス
にあたるクラス曲線の数から、プログラムの独立性を定
義し算出する。
【0060】このプログラムの独立性は、事前に定義し
ておく。この事前に定義されるプログラムの独立性は、
解析対象となるプログラム毎に自由に定義可能である。
本実施の形態では、プログラムの独立性は、 プログラムの独立性=(グラフ中の変数にあたる端点の
数+グラフ中の関数曲線の数)/クラス曲線の数 とするという定義を行なった。
【0061】図7の統合関係情報と上記で定義されたプ
ログラムの独立性の定義から図3のプログラムの独立性
は、(7+2)/2=4.5と求められる。
【0062】実施の形態2.上記実施の形態の例では、
図6のステップS303の処理の結果は、S300の結
果である図7と同じであったため、図11にその一例を
示す。図11の矢印の上がステップS303の処理前で
あり、下がステップS303の処理後の結果である。図
11の場合は、グローバル変数zについてクラスが統合
される結果となった。
【0063】実施の形態3.上記実施の形態1では、使
用関係として、変数代入関係、if文関係、switc
h文関係、参照引数関係、引数関係、戻り値関係を一例
として説明したが、これらに限られるわけではない。上
記以外の使用関係を含めてもかまわない。
【0064】また、メトリクスとして、変数間の影響
度、関数間の影響度、プログラムの複雑度、プログラム
の独立性を一例として説明した。上記以外のメトリクス
を含めてもかまわない。さらに、上記実施の形態では、
手続き型言語の一例として、C/C++言語の場合を説
明したが、これに限られるわけではない。この他の関数
を定義できる手続き型言語であってもよい。
【0065】
【発明の効果】以上に説明したように、この発明によれ
ば、C/C++言語で記述されたプログラム中で使用さ
れている変数の影響度を求めることが可能となる。
【0066】また、求めた影響度から、プログラムの複
雑度や独立性を求めることが可能となる。
【図面の簡単な説明】
【図1】 本発明の実施のプログラム解析装置の構成図
である。
【図2】 本発明の実施の形態1のプログラム解析装置
の動作手順を表すフローチャートである。
【図3】 本発明の実施の形態1のソースファイルの例
を示す図である。
【図4】 本発明の実施の形態1の使用関係情報の例を
示す図である。
【図5】 本発明の実施の形態1の統合関係情報の例を
示す図である。
【図6】 本発明の実施の形態1のクラス定義の手順を
表すフローチャートである。
【図7】 本発明の実施の形態1のクラス定義後の統合
関係情報の例を示す図である。
【図8】 本発明の実施の形態1の端点間の距離の定義
である。
【図9】 本発明の実施の形態1の変数間の影響度であ
る。
【図10】 本発明の実施の形態1の関数曲線間の距離
を求めるフローチャートである。
【図11】 図6のステップS303の処理前と処理後
の状況の一例を示した図である。
【符号の説明】
1 プログラム解析装置、2 入出力装置、3 ソース
プログラム、3M ソースファイル記憶部、100 ソ
ースファイル解析部、101 使用関係統合部、102
クラス定義部、103 メトリクス算出部、104
使用関係情報、104M 使用関係情報記憶部、105
統合関係情報、105M 統合関係情報記憶部、10
6 メトリクス、106M メトリクス記憶部。

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 関数を定義できる手続き型言語で記述さ
    れたプログラムのソースファイルを記憶するソースファ
    イル記憶部と、 上記ソースファイル記憶部からソースファイルを読み込
    み、ソースファイルのプログラムに記述された関数によ
    って使用されている複数の変数の関係を使用関係として
    解析し、解析された使用関係を使用関係情報として定義
    するソースファイル解析部と、 上記使用関係情報を記憶する使用関係情報記憶部と、 上記使用関係情報記憶部に記憶された使用関係情報を読
    み込み、使用関係情報に定義された使用関係を変数毎に
    統合した統合関係情報を作成する使用関係統合部と、 上記統合関係情報を記憶する統合関係情報記憶部とを備
    えたことを特徴とするプログラム解析装置。
  2. 【請求項2】 上記プログラム解析装置は、さらに、 上記統合関係情報記憶部から統合関係情報を読み込み、
    読み込んだ統合関係情報から、関数の独立性と変数の独
    立性とを表わすクラスを定義し、定義されたクラスを上
    記統合関係情報に追加するクラス定義部を備えたことを
    特徴とする請求項1記載のプログラム解析装置。
  3. 【請求項3】 上記プログラム解析装置は、さらに、上
    記クラス定義部によって定義されたクラスを追加された
    統合関係情報から、プログラムの性質を表わす数値を算
    出するメトリクス算出部を備えたことを特徴とする請求
    項2記載のプログラム解析装置。
  4. 【請求項4】 上記プログラムの性質を表わす数値は、
    変数と変数との影響度と、関数と関数との影響度と、プ
    ログラムの複雑度と、プログラムの独立性とのいずれか
    を含むことを特徴とする請求項3記載のプログラム解析
    装置。
  5. 【請求項5】 上記ソースファイル解析部は、一の変数
    Xが、他の変数Yを右辺値として含む条件式以外の代入
    式の左辺値である場合、変数代入関係という使用関係情
    報を定義することを特徴とする請求項1記載のプログラ
    ム解析装置。
  6. 【請求項6】 上記ソースファイル解析部は、if−e
    lse文のブロックの中において、条件式以外の代入式
    の左辺値で一の変数X、または、加算または減算のいず
    れか一方の演算子が作用している一の変数Xとのいずれ
    か一方の変数Xが存在し、かつ、if 文の条件式に他
    の変数Yが存在する場合、変数Xから変数Yへのif文
    関係という使用関係情報を定義することを特徴とする請
    求項1記載のプログラム解析装置。
  7. 【請求項7】 上記ソースファイル解析部は、swit
    ch文のブロックの中において、条件式以外の代入式の
    左辺値で一の変数X、または、加算または減算のいずれ
    か一方の演算子が作用している変数Xとのいずれか一方
    の変数Xが存在し、かつ、switch文の条件式に他
    の変数Yが存在する場合、変数Xから変数Yへのswi
    tch文関係という使用関係情報を定義することを特徴
    とする請求項1記載のプログラム解析装置。
  8. 【請求項8】 上記ソースファイル解析部は、一の変数
    Xのアドレスまたは参照のいずれか一方が、一の関数F
    の引数に使用され、かつ、上記関数F内において、渡さ
    れたアドレスの先のデータまたは参照のいずれか一方が
    条件式以外の代入式の左辺値である変数X、または、加
    算または減算のいずれか一方の演算子演算子が作用して
    いる変数Xとのいずれか一方の変数Xとして扱われてい
    る場合、関数Fにおける変数Xの参照引数関係という使
    用関係情報を定義することを特徴とする請求項1記載の
    プログラム解析装置。
  9. 【請求項9】 上記ソースファイル解析部は、引数を伴
    って、一の関数Fを呼び出している場合、引数となった
    変数Xに対応する、関数Fの仮引数となった変数Yに対
    し、変数Xから変数Yへの引数関係という使用関係情報
    を作成することを特徴とする請求項1記載のプログラム
    解析装置。
  10. 【請求項10】 上記ソースファイル解析部は、一の関
    数Fを呼び出し、かつ、上記関数Fの戻り値を一の変数
    Xに代入し、かつ、呼び出した関数Fの戻り値を表す式
    中に、他の変数Yが含まれている場合、変数Xから変数
    Yへの戻り値関係という使用関係情報を定義することを
    特徴とする請求項1記載のプログラム解析装置。
  11. 【請求項11】 上記使用関係統合部は、使用関係情報
    から、変数を二次元のグラフ上に配置し、配置された変
    数を端点とし、端点と端点とを矢印で結んで使用関係を
    表わし、さらに、変数が使用されている関数ごとに、関
    数によって使用されている変数を包含するような閉曲線
    を生成して、統合関係情報を作成することを特徴とする
    請求項3記載のプログラム解析装置。
  12. 【請求項12】 上記クラス定義部は、任意の変数を1
    つ以上の関数が変更している場合、上記任意の変数と、
    上記任意の変数を変更する関数は一つのクラスであると
    いう定義に基づいてクラス定義を行なうことを特徴とす
    る請求項11記載のプログラム解析装置。
  13. 【請求項13】 上記メトリクス算出部は、グラフ上の
    変数にあたる端点について、端点と端点間との距離を定
    義し、この距離から、変数と変数との影響度を算出する
    ことを特徴とする請求項12記載のプログラム解析装
    置。
  14. 【請求項14】 上記メトリクス算出部は、グラフ上の
    変数を包含する閉曲線について、閉曲線間の距離を定義
    し、この閉曲線間の距離から、関数と関数との影響度を
    算出することを特徴とする請求項13記載のプログラム
    解析装置。
  15. 【請求項15】 上記メトリクス算出部は、グラフ上の
    矢印と閉曲線とに基づいてグラフの複雑度を定義し、こ
    のグラフの複雑度から、プログラムの複雑度を算出する
    ことを特徴とする請求項14記載のプログラム解析装
    置。
  16. 【請求項16】 上記メトリクス算出部は、上記グラフ
    の複雑度からプログラムに含まれる、関数と変数との数
    と、クラス定義部で定義したクラス定義の数から、プロ
    グラムの独立性を算出することを特徴とする請求項15
    記載のプログラム解析装置。
  17. 【請求項17】 上記関数を定義できる手続き型言語
    は、C言語とC++言語とのいずれかであることを特徴
    とする請求項1記載のプログラム解析装置。
JP2000141403A 2000-05-15 2000-05-15 プログラム解析装置 Withdrawn JP2001325100A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000141403A JP2001325100A (ja) 2000-05-15 2000-05-15 プログラム解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000141403A JP2001325100A (ja) 2000-05-15 2000-05-15 プログラム解析装置

Publications (1)

Publication Number Publication Date
JP2001325100A true JP2001325100A (ja) 2001-11-22

Family

ID=18648525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000141403A Withdrawn JP2001325100A (ja) 2000-05-15 2000-05-15 プログラム解析装置

Country Status (1)

Country Link
JP (1) JP2001325100A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146842A (ja) * 2004-11-25 2006-06-08 Hitachi Ltd ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法
JP2006343867A (ja) * 2005-06-07 2006-12-21 Canon Inc オブジェクト指向プログラミング生成装置および情報処理方法
JP2010257091A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd 危険度判定プログラム、危険度判定装置及び方法
WO2012011145A1 (ja) * 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法
US8307326B2 (en) 2007-07-19 2012-11-06 Fujitsu Limited Method and apparatus for supporting application enhancement
JP2017004282A (ja) * 2015-06-11 2017-01-05 日本電気通信システム株式会社 プログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラム
WO2018150505A1 (ja) * 2017-02-16 2018-08-23 三菱電機株式会社 規模算出装置及び規模算出プログラム
US11086604B2 (en) 2017-11-21 2021-08-10 Mitsubishi Electric Corporation Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4688478B2 (ja) * 2004-11-25 2011-05-25 株式会社日立製作所 ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法
JP2006146842A (ja) * 2004-11-25 2006-06-08 Hitachi Ltd ストレージ装置のソフトウェア開発支援システム及びソフトウェア開発支援方法
JP2006343867A (ja) * 2005-06-07 2006-12-21 Canon Inc オブジェクト指向プログラミング生成装置および情報処理方法
US8307326B2 (en) 2007-07-19 2012-11-06 Fujitsu Limited Method and apparatus for supporting application enhancement
JP2010257091A (ja) * 2009-04-23 2010-11-11 Fujitsu Ltd 危険度判定プログラム、危険度判定装置及び方法
WO2012011145A1 (ja) * 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP5516736B2 (ja) * 2010-07-20 2014-06-11 株式会社日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
US9170805B2 (en) 2010-07-20 2015-10-27 Hitachi, Ltd. Software maintenance supporting device for analyzing relationships between variables
EP2597566A4 (en) * 2010-07-20 2017-01-04 Hitachi, Ltd. Software maintenance supporting device and electronic control device verified by the same
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法
JP2017004282A (ja) * 2015-06-11 2017-01-05 日本電気通信システム株式会社 プログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラム
WO2018150505A1 (ja) * 2017-02-16 2018-08-23 三菱電機株式会社 規模算出装置及び規模算出プログラム
GB2573417A (en) * 2017-02-16 2019-11-06 Mitsubishi Electric Corp Scale calculation device and scale calculation program
GB2573417B (en) * 2017-02-16 2021-11-24 Mitsubishi Electric Corp Scale calculation apparatus and scale calculation program
US11086604B2 (en) 2017-11-21 2021-08-10 Mitsubishi Electric Corporation Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium

Similar Documents

Publication Publication Date Title
EP3631618B1 (en) Automated dependency analyzer for heterogeneously programmed data processing system
US7428536B2 (en) Apparatus and method for providing a condition builder interface
JP4786268B2 (ja) コンパイル装置
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
US20060195828A1 (en) Instruction generator, method for generating instructions and computer program product that executes an application for an instruction generator
Hoschele et al. Mining input grammars with AUTOGRAM
JP2001325100A (ja) プログラム解析装置
CN115017516A (zh) 一种基于符号执行的模糊测试方法
CN113760266B (zh) 一种功能模块文件的创建方法、创建装置和电子设备
JP2008510230A (ja) 非循環命令パターンの認識の方法
JP2011096082A (ja) プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置
JP4319706B2 (ja) プログラム開発支援ツール
JP4996262B2 (ja) プログラム部品化支援装置
US20100306751A1 (en) Execution result caching and searching
JPH06348475A (ja) ポインタ解析システム
JPH064280A (ja) ウィズィウィグ式エディターでオブジェクトをユーザ制御する機能を備えたグラフィカル・ユーザ・インターフェース
Irwin et al. Parsing and semantic modelling for software engineering applications
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法
JP5091520B2 (ja) ハイブリッドモデルシミュレーション装置
JP4371000B2 (ja) Idlコンパイル装置、idlコンパイル方法及びidlコンパイラ
JP2000293410A (ja) プロファイラ
CN117827209A (zh) 函数调用显示方法、装置、存储介质及计算机设备
JP2006202134A (ja) プロファイル情報収集方法および装置
CN114265582A (zh) 一种领域特定语言设计方法、装置、设备及存储介质

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20051018

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070807