JPH11219289A - Object-oriented program quality evaluation device - Google Patents
Object-oriented program quality evaluation deviceInfo
- Publication number
- JPH11219289A JPH11219289A JP10020616A JP2061698A JPH11219289A JP H11219289 A JPH11219289 A JP H11219289A JP 10020616 A JP10020616 A JP 10020616A JP 2061698 A JP2061698 A JP 2061698A JP H11219289 A JPH11219289 A JP H11219289A
- Authority
- JP
- Japan
- Prior art keywords
- program
- class
- module
- oriented
- information
- 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 technology for evaluating the quality of an object-oriented program in order to improve the quality of the object-oriented program. The present invention relates to an object-oriented program quality evaluation device having means for evaluating the usage status of templates and templates, and means for evaluating dependencies between modules.
【0002】[0002]
【従来の技術】オブジェクト指向によるプログラム開発
は,継承による再利用やデータ抽象化による部品化の効
果などから近年急速に普及している。しかし,オブジェ
クト指向プログラムは,従来のプログラムに比べて複雑
な構造になるため,品質の高いプログラムを開発するに
は,品質評価尺度を定め,それを自動的に計測すること
が求められている。2. Description of the Related Art Object-oriented program development has rapidly become widespread in recent years due to the effects of reuse by inheritance and the effect of componentization by data abstraction. However, object-oriented programs have a more complicated structure than conventional programs. Therefore, in order to develop a high-quality program, it is necessary to determine a quality evaluation scale and automatically measure it.
【0003】オブジェクト指向プログラムは,継承機能
やメッセージ通信による相互作用など,従来の手続き型
のプログラムを評価する枠組みでは捉え切れない構造に
よって記述されている。したがって,行数,ループの
数,手続きの呼出しなどの従来の評価尺度だけでは不十
分であり,独自の品質評価尺度が必要とされている。[0003] An object-oriented program is described by a structure that cannot be grasped by a conventional framework for evaluating a procedural program, such as an inheritance function and interaction by message communication. Therefore, conventional evaluation measures such as the number of lines, the number of loops, and the number of calls to a procedure are not sufficient, and a unique quality evaluation measure is required.
【0004】オブジェクト指向プログラムの品質評価の
メトリクス(品質評価尺度)は,いくつか提案されてい
る。例えば,以下のような文献に記載されている。 ・Shyam R. Chidamber and Chris F. Kemerer,”A Metr
ics Suite for ObjectOriented Design”,IEEE trans o
n SE, Vol.20, No.6, pp476-493,1994 ・Mark Lorentz and Jeff Kidd. ”Object-Oriented So
ftware Metrics”, Prentice Hall,1994, (羽生田訳
オブジェクト指向ソフトウェアメトリクス)[0004] Some metrics (quality evaluation scale) for quality evaluation of object-oriented programs have been proposed. For example, it is described in the following documents.・ Shyam R. Chidamber and Chris F. Kemerer, ”A Metr
ics Suite for ObjectOriented Design ”, IEEE trans o
n SE, Vol.20, No.6, pp476-493,1994 ・ Mark Lorentz and Jeff Kidd. ”Object-Oriented So
ftware Metrics ”, Prentice Hall, 1994, (Translated by Hanyuda
Object-oriented software metrics)
【0005】[0005]
【発明が解決しようとする課題】これらの文献で提唱さ
れている従来の品質評価方法では,クラスのメンバ数等
のサイズ,継承による再利用の情報,クラスが他のクラ
スに依存している割合,クラス内での結合度などがメト
リクスとして用いられている。しかし,クラスの再利用
の評価は継承の面に限られており,委譲による再利用の
評価が行われていない。オブジェクト指向プログラムで
は,継承に比べて定義の柔軟性が高い委譲による再利用
の評価は,プログラムの品質評価のためには重要であ
る。According to the conventional quality evaluation methods proposed in these documents, the size such as the number of members of a class, information on reuse by inheritance, and the ratio of a class depending on another class , The degree of connection within a class, etc. are used as metrics. However, evaluation of class reuse is limited to inheritance, and reuse evaluation by delegation has not been performed. In object-oriented programs, the evaluation of reuse by delegation, which has more flexible definition than inheritance, is important for evaluating the quality of a program.
【0006】また,これらの従来方法は,一般的なオブ
ジェクト指向言語の特徴のみに対応するものであり,プ
ログラム言語による相違,例えば汎化型(generic type)
の機能を持つオブジェクト指向言語や,非オブジェクト
指向定義の存在を許容するオブジェクト指向言語などを
考慮に入れておらず,実質的な基準としては問題があ
る。[0006] Further, these conventional methods correspond only to the characteristics of general object-oriented languages, and differ depending on the programming language, for example, a generic type.
It does not take into account an object-oriented language having the function of, or an object-oriented language that allows the existence of non-object-oriented definitions, and has problems as a practical standard.
【0007】さらに,従来のメトリクスは,クラスを単
位として,その構造や他のクラスとの関係を論じるもの
であり,複数のクラスからなるモジュール(クラスライ
ブラリ,フレームワーク)間の関係を評価する手段は用
意されていない。Further, the conventional metrics are for discussing the structure and the relationship with other classes in units of classes, and are means for evaluating the relationship between modules (class libraries, frameworks) comprising a plurality of classes. Is not provided.
【0008】また,従来のメトリクスでは,システム定
義クラスについても特に考慮していないので,システム
の依存性,移植性を評価することができない。本発明
は,従来用いられていなかったメトリクスとして,委譲
によるクラスの再利用の評価,汎化型の機能や非オブジ
ェクト指向定義の存在等の特定の言語の機能の評価,ま
た,複数クラスからなるモジュールの間の関係の評価を
行う手段を用意することにより,実際に使用するプログ
ラム言語に則した評価を可能にし,また,システム定義
のクラスや汎化型(クラステンプレート)を識別する手
段を用意することにより,システムクラスの継承/参照
回数を測定して特定のシステムへの依存度を評価できる
ようにすることを目的とする。Further, in the conventional metrics, since the system definition class is not particularly considered, it is not possible to evaluate the dependence and portability of the system. The present invention includes, as metrics that have not been used in the past, evaluation of class reuse by delegation, evaluation of functions of a specific language such as the existence of generalized type functions and non-object-oriented definitions, and includes multiple classes. Provision of means for evaluating the relationship between modules enables evaluation in accordance with the programming language actually used, and provides means for identifying system-defined classes and generalized types (class templates) By doing so, it is an object of the present invention to measure the number of inheritances / references of a system class and evaluate the dependence on a specific system.
【0009】[0009]
【課題を解決するための手段】図1は,本発明の原理説
明図である。オブジェクト指向プログラム1は,複数の
ファイルに定義された複数のクラス定義や関数定義から
なるオブジェクト指向言語で記述されている評価対象の
プログラムである。FIG. 1 is a diagram illustrating the principle of the present invention. The object-oriented program 1 is an evaluation target program described in an object-oriented language including a plurality of class definitions and function definitions defined in a plurality of files.
【0010】構文解析部2は,オブジェクト指向プログ
ラム1のモジュールを入力し,その構文を解析して,構
文解析情報3を出力する手段である。メトリクス計測部
4は,構文解析情報3をもとにその入力モジュールの種
々のメトリクス情報を作成し,モジュール単位メトリク
ス情報5を出力する手段である。特に,メトリクス計測
部4は,入力モジュールのクラスのメンバとメッセージ
送信の関係を調べてクラス間の委譲による再利用の数を
測定し,または,入力モジュールが汎化型の機能を持つ
オブジェクト指向プログラム言語で記述されている場合
に,汎化型の定義数と使用状況を測定し,または,入力
モジュールがクラス外に関数等を定義できる折衷型のオ
ブジェクト指向プログラム言語で記述されている場合
に,非オブジェクト指向の定義サイズを測定し,オブジ
ェクト指向の定義のサイズとの比率を算出して,その結
果をモジュール単位メトリクス情報5として出力する。The syntax analyzer 2 is a means for inputting a module of the object-oriented program 1, analyzing the syntax, and outputting syntax analysis information 3. The metric measurement unit 4 is a means for creating various metric information of the input module based on the syntax analysis information 3 and outputting the metric information per module 5. In particular, the metric measuring unit 4 examines the relationship between the members of the class of the input module and the message transmission to measure the number of reuses by delegation between the classes, or the object-oriented program in which the input module has a general-purpose function. If it is described in a language, measure the number of generalized types defined and their usage, or if the input module is described in an eclectic object-oriented programming language that can define functions, etc. outside the class, The size of the non-object-oriented definition is measured, the ratio to the size of the object-oriented definition is calculated, and the result is output as the module unit metrics information 5.
【0011】モジュール間参照解析部6は,モジュール
単位メトリクス情報5を受け取り,2以上のモジュール
間の関係についての種々のメトリクス情報を作成し,モ
ジュール間メトリクス情報7を出力する手段である。The inter-module reference analysis unit 6 is a means for receiving the module-unit metric information 5, creating various metric information on the relationship between two or more modules, and outputting the inter-module metric information 7.
【0012】特に,モジュール間参照解析部6は,複数
のクラスから構成されるモジュール(クラスライブラ
リ,フレームワーク)が,それを使用する他のプログラ
ムで継承されている回数をモジュール中のクラスごとに
測定し,または,複数のクラスから構成されるモジュー
ルが,それを使用する他のクラス中で委譲により再利用
されている回数をモジュール中のクラスごとに測定し,
または,複数のクラスから構成されるモジュールが,そ
れを使用する他のクラス中で継承または委譲以外で使用
されている回数をモジュール中のクラスごとに測定し,
または,入力モジュールのシステム定義のライブラリク
ラスや汎化型(クラステンプレート)を識別することに
より,各クラスがどの程度特定のシステムに依存してい
るかを測定し,その結果をモジュール間メトリクス情報
7として出力する。In particular, the inter-module reference analysis unit 6 determines, for each class in a module, the number of times that a module (class library, framework) composed of a plurality of classes is inherited by another program using the module. Measure the number of times a module consisting of multiple classes is reused by delegation in other classes that use it, for each class in the module,
Or, for each class in the module, measure the number of times that a module composed of multiple classes is used in other classes that use it for purposes other than inheritance or delegation.
Or, by identifying the system-defined library class and generalized type (class template) of the input module, measure how much each class depends on a specific system, and use the result as inter-module metric information 7. Output.
【0013】グラフ表示部8は,本発明の範囲外である
が,モジュール単位メトリクス情報5またはモジュール
間メトリクス情報7を処理して,表示装置でのグラフ表
示等により,これらの情報を視覚化するものである。The graph display unit 8 is outside the scope of the present invention, but processes the module-unit metrics information 5 or the inter-module metrics information 7 and visualizes the information by a graph display or the like on a display device. Things.
【0014】本発明は,以下のように作用する。構文解
析部2により,オブジェクト指向プログラム1のモジュ
ールを入力し,解析する。定義されているクラスについ
ては,その名前と定義位置とそのスーパークラスの情報
を検出し,クラスの各メンバ変数については,名前,
型,定義位置の情報を検出する。クラスの各メソッドに
ついては,名前,引数の型,戻り値の型,定義位置の情
報を検出して,その手続きの構造も解析する。これらの
情報は,構文解析情報3としてまとめられる。The present invention operates as follows. The syntax analysis unit 2 inputs and analyzes the module of the object-oriented program 1. For the defined class, the information of its name, definition position, and its superclass is detected. For each member variable of the class, the name,
Detects type and definition position information. For each method in the class, it detects information about the name, argument types, return type, and definition location, and also analyzes the structure of the procedure. These pieces of information are summarized as syntax analysis information 3.
【0015】入力モジュールが汎化型の機能を持つオブ
ジェクト指向プログラム言語で記述されている場合に
は,それもクラスと同様に解析し,構文解析情報3とす
る。また,入力プログラムがクラス外に関数等を定義で
きる折衷型のオブジェクト指向プログラム言語で記述さ
れており,クラス外に関数定義や変数定義がある場合に
は,それぞれについて名前や型を記録し,関数について
はメソッド同様に手続き構造を解析し,これらも構文解
析情報3とする。If the input module is described in an object-oriented programming language having a generalized type function, it is also analyzed in the same way as a class, and is used as syntax analysis information 3. In addition, the input program is described in an eclectic object-oriented programming language that can define functions and the like outside the class. If there is a function definition or variable definition outside the class, the name and type are recorded for each, and the function , The procedure structure is analyzed in the same manner as the method, and these are also used as the syntax analysis information 3.
【0016】メトリクス計測部4は,構文解析情報3か
ら,クラス,汎化型,関数などの継承/参照関係を解析
し,モジュール単位メトリクス情報5を作成する。モジ
ュール間参照解析部6は,モジュール単位メトリクス情
報5を受けて,どのモジュールが他のどのモジュールで
定義されたクラスを参照しているかなどを解析し,モジ
ュール間メトリクス情報7を作成する。The metric measuring unit 4 analyzes inheritance / reference relations of classes, generalization types, functions, and the like from the syntax analysis information 3 and creates module unit metric information 5. The inter-module reference analysis unit 6 receives the module-based metric information 5 and analyzes which module refers to a class defined by which other module, and creates inter-module metric information 7.
【0017】モジュール単位メトリクス情報5またはモ
ジュール間メトリクス情報7を,必要に応じてグラフ表
示部8に渡し,グラフ表示等の視覚化を行うことによ
り,ユーザに対して有用なプログラムの品質評価結果を
知らせることができる。The module unit metric information 5 or the inter-module metric information 7 is passed to a graph display unit 8 as necessary, and visualization of a graph display or the like is performed. I can let you know.
【0018】[0018]
【発明の実施の形態】オブジェクト指向プログラミング
言語の一つである「C++」により記述されたプログラ
ムについての例を取り上げて,本発明の実施の形態を説
明する。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the present invention will be described by taking an example of a program described in "C ++" which is one of the object-oriented programming languages.
【0019】以下の説明では,「C++」言語での用語
を用いて説明するので,一般的なオブジェクト指向プロ
グラムにおける用語とは異なった表現となる。一般用語
と「C++」言語の用語の対応関係は,次のとおりであ
る。In the following description, the description will be made using terms in the "C ++" language, so that the expressions are different from the terms in a general object-oriented program. The correspondence between general terms and terms in the "C ++" language is as follows.
【0020】一般用語「メンバ変数」は,C++言語で
は「データメンバ」である。一般用語「メソッド」は,
C++言語では「メンバ関数」である。一般用語「スー
パークラス」は,C++言語では「ベースクラス」であ
る。The general term "member variable" is a "data member" in the C ++ language. The general term "method"
It is a "member function" in the C ++ language. The general term "superclass" is "base class" in the C ++ language.
【0021】一般用語「サブクラス」は,C++言語で
は「派生クラス」である。一般用語「汎化型」は,C+
+言語では「クラステンプレート」である。 〔1〕構文解析情報 まず,構文解析部2の出力であるプログラムの構文情報
を保持する構文解析情報3について説明する。構文解析
情報3の構造は,名前情報,構文情報の2つの部分から
なる。The general term "subclass" is a "derived class" in the C ++ language. The general term "generalized type" is C +
In a + language, it is a "class template". [1] Syntax Analysis Information First, the syntax analysis information 3 that holds the syntax information of the program, which is the output of the syntax analysis unit 2, will be described. The structure of the syntax analysis information 3 includes two parts, name information and syntax information.
【0022】図2は,構文解析部2に入力される入力プ
ログラム例,図3は,図2に示す入力プログラム例の構
文解析の結果の名前情報の構造例を示す。名前情報は,
プログラム中に現れるクラス名,変数名(データメンバ
名を含む),関数名(メンバ関数名を含む),クラステ
ンプレート等がどのように関係し,どのように定義され
ているかなどの情報を,表にして保持するものである。
また,関数については,次に述べる構文情報へのポイン
タも保持する。FIG. 2 shows an example of an input program input to the syntax analysis unit 2, and FIG. 3 shows an example of the structure of name information resulting from the syntax analysis of the input program example shown in FIG. Name information is
Information such as how class names, variable names (including data member names), function names (including member function names), class templates, etc. that appear in the program are related and defined. And hold it.
The function also holds a pointer to syntax information described below.
【0023】図4は,構文解析部2に入力される入力プ
ログラム例を示し,図5は,図4に示す入力プログラム
例の構文解析の結果の構文情報の例を示す。構文情報
は,図4に示すような入力プログラムに対して,図5に
示すように,プログラムの手続き部分の構文を木構造で
表現したものである。木構造の各ノードは,その種別
(文の種別と式の種別)と,それを構成する下位構造へ
のポインタを持っている。終端ノードは,変数名,関数
名,定数,演算子である。FIG. 4 shows an example of an input program input to the syntax analyzer 2, and FIG. 5 shows an example of syntax information resulting from the syntax analysis of the example of the input program shown in FIG. The syntax information expresses the syntax of the procedure part of the program in a tree structure as shown in FIG. 5 for the input program shown in FIG. Each node of the tree structure has its type (sentence type and expression type) and a pointer to the lower-level structure that constitutes it. Terminal nodes are variable names, function names, constants, and operators.
【0024】なお,以上のような構文情報を構成する手
法は,コンパイラ等で用いられる公知の技術と同様であ
る。 〔2〕モジュール単位メトリクス情報 メトリクス計測部4は,構文解析情報3を受けて,クラ
ス,グローバル関数,クラステンプレートについて,そ
れぞれ次のような情報を抽出し,モジュール単位メトリ
クス情報5を作成し出力する。The technique for constructing the syntax information as described above is the same as a known technique used in a compiler or the like. [2] Module unit metrics information The metrics measurement unit 4 receives the syntax analysis information 3, extracts the following information for each of the class, global function, and class template, and creates and outputs module unit metrics information 5. .
【0025】 クラスに対するモジュール単位メトリ
クス情報 モジュール内で定義された各クラスについては,以下の
情報を取り出す。 ・クラス名 ・定義ファイル名 ・データメンバの数 ・メンバ関数の数 ・メンバ関数に含まれる文の数 ・ベースクラス一覧 ・委譲による再利用クラス一覧 ・それ以外の参照クラス一覧 ・システムクラス利用一覧(システム名称と数のペア) メトリクス情報のうち,定義ファイル名についてはファ
イルから検出し,データメンバの数,メンバ変数の数は
カウントする。メンバ関数の文の数は,構文解析して文
となっているものをカウントする。ベースクラス一覧
は,構文解析情報3にあるベースクラス情報を単純に読
み出して登録する。Module-based metric information for classes For each class defined in a module, the following information is extracted. -Class name-Definition file name-Number of data members-Number of member functions-Number of statements included in member functions-Base class list-List of reused classes by delegation-List of other reference classes-List of system class usage ( (Pair of system name and number) Of the metric information, the definition file name is detected from the file, and the number of data members and the number of member variables are counted. The number of statements of the member function is counted by analyzing the syntax. In the base class list, the base class information in the syntax analysis information 3 is simply read and registered.
【0026】委譲による利用クラスについては,以下の
ようにして求める。あるクラスAにおいて,クラスBの
インスタンスであるデータメンバbを持ち,それにアク
セスするクラスAのメンバ関数の処理が,以下のような
場合,クラスAはクラスBを委譲によって再利用してい
るとみなし,クラスAのメトリクス情報にクラスBを加
える。The use class by delegation is obtained as follows. If a class A has a data member b that is an instance of the class B, and the processing of the member function of the class A that accesses it is as follows, it is considered that the class A reuses the class B by delegation. , Class B is added to the metric information of class A.
【0027】・bが非ポインタメンバである場合に,re
turn b.f(),b.f() のどちらかだけ。 ・bがポインタメンバである場合に,return b->f() ,
b->f()のどちらかだけ。If b is a non-pointer member, re
Only turn bf () or bf (). • If b is a pointer member, return b-> f (),
Only one of b-> f ().
【0028】それ以外の参照クラス一覧には,委譲に該
当するものを除く,メンバの宣言に使われるクラス,メ
ンバ関数のパラメタ,戻り値,ローカル変数で使われる
クラスを登録する。メンバ宣言,パラメタ,戻り値は,
構文解析情報3の名前情報から取得する。ローカル変数
のクラスは,メンバ関数の構文情報をたどり,その中の
宣言文を検出して,そこで使われているクラスを登録す
る。In the other reference class list, classes used in member declaration, parameters of member functions, return values, and classes used in local variables are registered, excluding classes corresponding to delegation. Member declaration, parameters and return value are
It is obtained from the name information of the syntax analysis information 3. The class of the local variable follows the syntax information of the member function, detects the declaration statement in it, and registers the class used there.
【0029】システムクラス利用一覧は,上記の3つの
クラス一覧に含まれるクラスで,定義ファイル名がシス
テム名ごとに予め指定されたディレクトリにあるものを
カウントすることで設定する。The system class usage list is set by counting the classes included in the above-mentioned three class lists and having a definition file name in a directory specified in advance for each system name.
【0030】図6は,クラスについてのモジュール単位
メトリクス情報の例を示し,特に図6(A)は入力例,
図6(B)はその入力例のクラスのモジュール単位メト
リクス情報の例を示す。FIG. 6 shows an example of the module unit metric information for the class. FIG.
FIG. 6B shows an example of the module unit metric information of the class of the input example.
【0031】入力モジュールは,ファイルC.hとファ
イルC.ccからなる。このモジュールにおいて,クラ
スAとクラスBは,それぞれ,ファイル「A.h」,フ
ァイル「B.h」に定義されているものとする。この場
合には,モジュール単位メトリクス情報は,図6(B)
に示すように,クラス名=C,定義ファイル名=C.
h,データメンバ数=2,メンバ関数の数=3,メンバ
関数の文の数=3,ベースクラス一覧=A,委譲による
利用クラス一覧=Bとなる。The input module is a file C. h and file C. cc. In this module, the class A and the class B are defined in the file “Ah” and the file “Bh”, respectively. In this case, the module unit metric information is as shown in FIG.
, The class name = C, the definition file name = C.
h, number of data members = 2, number of member functions = 3, number of statements of member functions = 3, base class list = A, use class list by delegation = B.
【0032】 グローバル関数に対するモジュール単
位メトリクス情報 モジュール内で定義された各グローバル関数について
は,以下の情報を取り出す。For each global function defined in the module, the following information is extracted.
【0033】・関数名 ・定義ファイル名 ・関数のシグネチャ(引数の型を含む関数の名前) ・文の数 ・参照クラス一覧 ・システムクラス利用一覧(システム名称と数のペア) 図7は,グローバル関数についてのモジュール単位メト
リクス情報の例を示す図である。Function name Definition file name Function signature (function name including argument type) Number of statements Reference class list System class usage list (system name / number pair) FIG. 9 is a diagram illustrating an example of module-based metric information on a function.
【0034】図7(A)は,入力例を示し,図7(B)
は,この入力例のグローバル関数のモジュール単位メト
リクス情報の例を示している。このモジュールにおい
て,クラスAとクラスBは,それぞれ,ファイル「A.
h」,ファイル「B.h」に定義されているものとす
る。FIG. 7A shows an input example, and FIG.
Shows an example of the module unit metric information of the global function in this input example. In this module, the class A and the class B correspond to the file “A.
h ", and the file" B.h ".
【0035】この場合の参照クラス一覧は,パラメタ,
戻り値,ローカル変数で利用するクラスの一覧になり,
A,Bとなる。その結果,モジュール単位メトリクス情
報は,関数名=f,定義ファイル名=func.cc,
関数のシグネチャ=voidf(int,A*,B
*),文の数=3,参照クラス一覧=A,Bとなる。The list of reference classes in this case includes parameters,
List of classes used for return value and local variables
A and B. As a result, the module unit metric information is: function name = f, definition file name = func. cc,
Function signature = voidf (int, A *, B
*), Number of sentences = 3, list of reference classes = A, B.
【0036】また,その他のグローバル定義(変数,t
ypedef,列挙型)については,以下の情報を取り
出す。 ・名前 ・定義ファイル名 ・種別 ・参照クラス一覧(型宣言で使われているクラス) ・システムクラス利用一覧(システム名称と数のペア) 図8は,グローバル定義についてのモジュール単位メト
リクス情報の例を示す図である。Further, other global definitions (variable, t
ypedef, enumerated type), the following information is extracted.・ Name ・ Definition file name ・ Type ・ Reference class list (class used in type declaration) ・ System class usage list (pair of system name and number) Figure 8 shows an example of module unit metric information for global definition FIG.
【0037】図8(A)は,入力例を示し,図8(B)
は,この入力例のグローバル定義の変数の場合のモジュ
ール単位メトリクス情報の例を示している。この場合に
は,名前=global_ap,定義ファイル名=gl
obal.h,種別=変数,参照クラス一覧=Aとな
る。FIG. 8A shows an input example, and FIG.
Shows an example of the module unit metric information in the case of the globally defined variable in this input example. In this case, name = global_ap, definition file name = gl
obal. h, type = variable, reference class list = A.
【0038】図8(C)は,図8(A)に示す入力例の
グローバル定義のtypedefの場合のモジュール単
位メトリクス情報の例を示す。この場合には,名前=b
p_t,定義ファイル名=global.h,種別=t
ypedef,参照クラス一覧=Bとなる。FIG. 8C shows an example of the module unit metric information in the case of the global definition typedef of the input example shown in FIG. 8A. In this case, name = b
p_t, definition file name = global. h, type = t
ypedef, reference class list = B.
【0039】 クラステンプレートに対するモジュー
ル単位メトリクス情報 モジュール内で定義された各クラステンプレートについ
ては,以下の情報を取り出す。Module-based metric information for class templates The following information is extracted for each class template defined in the module.
【0040】・クラステンプレート名 ・定義ファイル名 ・データメンバ数 ・メンバ関数の数 ・メンバ関数に含まれる文の数 ・ベースクラス一覧 ・委譲による利用クラス一覧 ・それ以外の参照クラス一覧 ・システムクラス利用一覧(システム名称と数のペア) ・モジュール内での被参照位置一覧(クラス名,関数シ
グネチャ,その他の名前など) なお,クラステンプレートを含めて,メトリクスの測定
を行う場合には,他の種類のメトリクス情報を含めて種
々のクラス一覧の部分にクラステンプレート名を含むこ
とになる。-Class template name-Definition file name-Number of data members-Number of member functions-Number of statements included in member functions-Base class list-List of classes used by delegation-List of reference classes other than that-Use of system classes List (pair of system name and number)-List of referenced positions in the module (class name, function signature, other names, etc.) When measuring metrics, including class templates, use other types. The class template names will be included in the various class list parts including the metric information.
【0041】図9は,クラステンプレートについてのモ
ジュール単位メトリクス情報の例を示す図である。図9
(A)は,入力例を示し,図9(B)は,この入力例の
クラステンプレートのモジュール単位メトリクス情報の
例を示す。FIG. 9 is a diagram showing an example of module unit metric information for a class template. FIG.
FIG. 9A shows an input example, and FIG. 9B shows an example of module unit metric information of the class template of the input example.
【0042】この場合には,クラステンプレート名=T
emp,定義ファイル名=Temp.h,データメンバ
数=2,メンバ関数の数=3,メンバ関数の文の数=
3,ベースクラス一覧=A,委譲による利用クラス一覧
=B,被参照位置一覧=void f(),Cとなる。In this case, class template name = T
emp, definition file name = Temp. h, number of data members = 2, number of member functions = 3, number of statements of member functions =
3, base class list = A, use class list by delegation = B, referenced position list = void f (), C.
【0043】また,クラステンプレートの実引数にモジ
ュール内のクラスが使われている場合には,その宣言を
含む定義のメトリクス情報に,そのクラスを参照してい
るという情報も登録する。すなわち,例えば入力モジュ
ールが, の場合に,クラスBは「Temp<A> x;」という
メンバ宣言を持つので,クラスのモジュール単位メトリ
クスでは,クラスBについては「それ以外の参照」とい
うことで,それ以外の参照クラス一覧に,「Temp<
A>,A」を登録する。When a class in a module is used as an actual argument of a class template, information indicating that the class is referenced is also registered in the metric information of the definition including the declaration. That is, for example, if the input module In the case of, class B has a member declaration of "Temp <A>x;", so in the module unit metric of the class, class B is called "other reference", and it is included in the list of other reference classes. , "Temp <
A>, A "is registered.
【0044】システムクラスがある場合に,システムク
ラスの利用数の測定は,次のようになる。図10は,シ
ステムクラス利用の例を示す図である。When there is a system class, the number of uses of the system class is measured as follows. FIG. 10 is a diagram illustrating an example of using a system class.
【0045】図10(A)は,入力例を示す。入力モジ
ュールは,ユーザファイル「C.h」とシステムファイ
ル「iostream.h」および「String.
h」からなる。ユーザが定義しているクラスCは,シス
テム定義のクラスostreamとStringとを利
用している。これらは,それぞれシステムの用意するi
ostream.h,String.hに定義されてお
り,それらのファイルがあらかじめ定められた位置にあ
ることから,解析時にシステム定義のクラスであること
が判断される。FIG. 10A shows an input example. The input module includes the user file “Ch”, the system files “iostream.h”, and “String.h”.
h ". The class C defined by the user utilizes the system-defined classes ostream and String. These are i prepared by the system.
ostream. h, String. h, and since these files are located at predetermined positions, it is determined at analysis time that the class is a system-defined class.
【0046】図10(B)は,図10(A)に示す入力
例についてのクラスのモジュール単位メトリクス情報の
例を示している。ここで,システムクラス利用一覧で
は,該当する定義ファイル名をシステム名として扱い,
それぞれ1回ずつ使われているので,「(iostre
am.h,1),(String.h,1)」のよう
に,システム名と使用している回数を合わせて登録す
る。FIG. 10B shows an example of module-level metric information of a class for the input example shown in FIG. 10A. Here, in the system class usage list, the corresponding definition file name is treated as a system name.
Since each is used once, "(iostre
am. h, 1), (String.h, 1) ", the system name and the number of times of use are registered together.
【0047】〔3〕モジュール間メトリクス情報 モジュール間参照解析部6は,モジュール単位メトリク
ス情報5を受けて,測定対象とする任意の2つのモジュ
ールの組み合わせについて,それに対するモジュール単
位メトリクス情報の全ての項目をスキャンして,以下の
ような情報を抽出し,モジュール間メトリクス情報7を
作成して出力する。[3] Inter-module metric information The inter-module reference analysis unit 6 receives the module-unit metric information 5 and, for a combination of any two modules to be measured, all the items of the module-unit metric information for the combination. To extract the following information, create and output inter-module metric information 7.
【0048】・被参照モジュールID ・参照モジュールID ・被参照モジュール中のクラス名とその被継承回数 ・被参照モジュール中のクラス名とその被委譲回数 ・被参照モジュール中のクラス名とその被参照回数 図11は,モジュール間メトリクス情報の例を示す図で
ある。Referenced module ID Referenced module ID Class name in the referenced module and its inheritance count Class name in the referenced module and its delegation count Class name in the referenced module and its referenced FIG. 11 is a diagram illustrating an example of inter-module metric information.
【0049】図11(A)は,入力例を示す。モジュー
ルM1はファイル「A.h」,「B.h」からなり,モ
ジュールM2はファイル「C.h」,「C.cc」,
「D.h」からなる。モジュールM1においてクラス
A,Bが定義され,モジュールM2にはクラスC,Dが
あって,クラスCがクラスAを継承し,クラスBを委譲
により再利用しており,クラスDがクラスBを継承して
いるとする。FIG. 11A shows an input example. Module M1 is composed of files “A.h” and “B.h”, and module M2 is composed of files “Ch.”, “C.cc”,
"Dh". Classes A and B are defined in module M1, and classes C and D are defined in module M2. Class C inherits class A, reuses class B by delegation, and class D inherits class B Suppose you are.
【0050】ここで,モジュールM1を被参照モジュー
ル,モジュールM2を参照モジュールとした場合に,モ
ジュール間メトリクス情報は,被参照モジュールID=
モジュールM1,参照モジュールID=モジュールM
2,クラス名と被継承回数=(A,1),(B,1),
クラス名と被委譲回数=(B,1),クラス名と被参照
回数=なし,となる。Here, when the module M1 is a reference module and the module M2 is a reference module, the inter-module metric information is the reference module ID =
Module M1, reference module ID = module M
2, the class name and the number of inheritances = (A, 1), (B, 1),
The class name and the number of delegations = (B, 1), and the class name and the number of references = none.
【0051】なお,ここでクラスCの定義は,図6
(A)に示すものを簡略化したものであり,各クラス
A,B,C,Dには,図6(B)のクラスCに対するよ
うなクラスのモジュール単位メトリクス情報が作成され
ているとする。Here, the definition of class C is shown in FIG.
It is a simplified version of the one shown in (A), and it is assumed that module-based metric information of a class such as for class C in FIG. 6B has been created for each of classes A, B, C, and D. .
【0052】次に,図12および図13を用いて本発明
の実施の形態におけるクラスについてのモジュール単位
メトリクス情報算出処理の流れを説明する。図12は,
クラスのモジュール単位メトリクスの算出処理の処理フ
ローである。図12において,構文解析情報からクラス
定義情報を得て(S1),ベースクラス情報にあるベー
スクラスをベースクラス一覧に登録する(S2)。Next, a flow of a module unit metric information calculation process for a class according to the embodiment of the present invention will be described with reference to FIGS. FIG.
It is a processing flow of calculation processing of module unit metrics of a class. In FIG. 12, the class definition information is obtained from the syntax analysis information (S1), and the base class in the base class information is registered in the base class list (S2).
【0053】次に,クラス定義情報からメンバ定義表を
得て(S3),メンバ定義表からメンバを順に取り出す
(S4)。取り出したメンバの種類を判断し(S5),
メンバの種類がデータメンバである場合には,データメ
ンバの数に1を加算し(S6),さらに型がクラスまた
はクラスのポインタならば,参照クラス一覧に仮に登録
する(S7)。一方,メンバの種類がメンバ関数である
場合には,メンバ関数の数に1を加算し(S8),後述
するようなメンバ関数に関連する登録処理を行う(S
9)。Next, a member definition table is obtained from the class definition information (S3), and members are sequentially extracted from the member definition table (S4). The type of the extracted member is determined (S5),
If the type of the member is a data member, 1 is added to the number of data members (S6), and if the type is a class or a pointer to a class, it is provisionally registered in a reference class list (S7). On the other hand, if the type of the member is a member function, 1 is added to the number of member functions (S8), and a registration process related to the member function described later is performed (S8).
9).
【0054】次のメンバがあるかどうかを判断し(S1
0),次のメンバがある場合にはステップS4以降の処
理を繰り返し,次のメンバがない場合には「委譲による
利用クラス一覧」に登録したクラスを「それ以外の参照
クラス一覧」から取り除き(S11),処理を終了す
る。It is determined whether there is a next member (S1).
0), if there is the next member, repeat the processing from step S4. If there is no next member, remove the class registered in the “list of classes used by delegation” from the “list of other reference classes” ( S11), the process ends.
【0055】図12に示すステップS9のメンバ関数に
関連する登録処理の詳細な処理フローを図13に示す。
まず,パラメタの型を調べ,クラスまたはクラスのポイ
ンタならば,そのクラスを「それ以外の参照クラス一
覧」に登録する(S11)。また,戻り値の型を調べ,
クラスまたはクラスのポインタならば,そのクラスを
「それ以外の参照クラス一覧」に登録する(S12)。
次に,構文情報を取り出し(S13),構文情報を辿
り,文の数を数えて「メンバ関数の文の数」に登録し
(S14),文が宣言文であれば,そこで使われている
クラスも「それ以外の参照クラス一覧」に登録する(S
15)。文の数が1かどうかを判断し(S16),文の
数が1でない場合には処理を終了し,文の数が1である
場合には,さらに「関数に戻り値がなく,文がデータメ
ンバのメンバ関数呼出しの場合」または「関数に戻り値
があり,戻り値式がデータメンバのメンバ関数呼出しの
場合」であるかどうかを判断する(S17)。「関数に
戻り値がなく,文がデータメンバのメンバ関数呼出しの
場合」または「関数に戻り値があり,戻り値式がデータ
メンバのメンバ関数呼出しの場合」のいずれかに該当す
るときは,データメンバのクラスを「委譲による再利用
クラス一覧」に登録し(S18),いずれの場合にも該
当しない場合には処理を終了する。FIG. 13 shows a detailed processing flow of the registration processing related to the member function in step S9 shown in FIG.
First, the parameter type is checked, and if it is a class or a pointer to a class, the class is registered in the "other reference class list" (S11). Also check the return type,
If it is a class or a pointer to a class, the class is registered in "other reference class list" (S12).
Next, the syntax information is extracted (S13), the syntax information is traced, the number of statements is counted and registered in "the number of member function statements" (S14). If the statement is a declaration statement, it is used there. The class is also registered in "Other reference class list" (S
15). It is determined whether or not the number of statements is 1 (S16). If the number of statements is not 1, the processing is terminated. If the number of statements is 1, further "there is no return value in the function, It is determined whether or not "when a data member member function is called" or "when a function has a return value and the return value expression is a data member member function call" (S17). If either the function has no return value and the statement is a data member member function call or the function has a return value and the return value expression is a data member member function call, The class of the data member is registered in the "list of reusable classes by delegation" (S18), and if none of the above cases applies, the process ends.
【0056】[0056]
【発明の効果】以上説明したように,本発明によれば,
従来の技術では不十分であった,オブジェクト指向プロ
グラムの委譲による再利用の評価,汎化型を持つような
プログラムや非オブジェクト指向定義の存在するプログ
ラムの評価,複数クラスからなるモジュール間の関係の
評価,システム定義クラスの存在によるシステム依存性
またはプログラム移植性の評価が可能になり,信頼性が
高く有効なオブジェクト指向プログラムの品質評価によ
って,オブジェクト指向プログラムの品質向上を図るこ
とが可能になる。As described above, according to the present invention,
Evaluation of reuse by delegation of object-oriented programs, evaluation of programs with generalized types and programs with non-object-oriented definitions, and the relationship between modules consisting of multiple classes It is possible to evaluate and evaluate system dependencies or program portability due to the existence of a system definition class, and to improve the quality of an object-oriented program by evaluating the quality of a highly reliable and effective object-oriented program.
【図面の簡単な説明】[Brief description of the drawings]
【図1】本発明の原理説明図である。FIG. 1 is a diagram illustrating the principle of the present invention.
【図2】入力プログラムの例を示す図である。FIG. 2 is a diagram illustrating an example of an input program.
【図3】構文解析の結果の名前情報の構造例を示す図で
ある。FIG. 3 is a diagram illustrating a structure example of name information as a result of syntax analysis.
【図4】入力プログラムの例を示す図である。FIG. 4 is a diagram showing an example of an input program.
【図5】構文解析の結果の構文情報の例を示す図であ
る。FIG. 5 is a diagram illustrating an example of syntax information as a result of the syntax analysis.
【図6】クラスについてのモジュール単位メトリクス情
報の例を示す図である。FIG. 6 is a diagram illustrating an example of module-based metric information for a class.
【図7】グローバル関数についてのモジュール単位メト
リクス情報の例を示す図である。FIG. 7 is a diagram illustrating an example of module-based metric information on a global function.
【図8】グローバル定義についてのモジュール単位メト
リクス情報の例を示す図である。FIG. 8 is a diagram illustrating an example of module-based metric information on a global definition.
【図9】クラステンプレートについてのモジュール単位
メトリクス情報の例を示す図である。FIG. 9 is a diagram showing an example of module unit metric information on a class template.
【図10】システムクラス利用の例を示す図である。FIG. 10 is a diagram showing an example of using a system class.
【図11】モジュール間メトリクス情報の例を示す図で
ある。FIG. 11 is a diagram illustrating an example of inter-module metric information.
【図12】クラスのモジュール単位メトリクス情報の算
出処理の処理フローである。FIG. 12 is a process flow of a process of calculating module unit metric information of a class.
【図13】メンバ関数に関連する登録処理の処理フロー
である。FIG. 13 is a processing flow of a registration process related to a member function.
1 オブジェクト指向プログラム 2 構文解析部 3 構文解析情報 4 メトリクス計測部 5 モジュール単位メトリクス情報 6 モジュール間参照解析部 7 モジュール間メトリクス情報 8 グラフ表示部 DESCRIPTION OF SYMBOLS 1 Object-oriented program 2 Syntax analysis part 3 Syntax analysis information 4 Metrics measurement part 5 Metric information per module 6 Reference analysis part between modules 7 Metric information between modules 8 Graph display part
Claims (5)
されたプログラムを入力し,その構造を解析してプログ
ラムの品質情報を抽出するオブジェクト指向プログラム
品質評価装置において,前記入力プログラムのクラスの
メンバとメッセージ送信の関係を調べて,クラス間の委
譲による再利用の数を測定する手段と,測定した結果を
出力する手段とを備えることを特徴とするオブジェクト
指向プログラム品質評価装置。1. An object-oriented program quality evaluation device for inputting a program described in an object-oriented programming language, analyzing the structure of the program, and extracting quality information of the program. An object-oriented program quality evaluation device, comprising: means for examining a relationship to measure the number of reuses due to delegation between classes; and means for outputting the measured result.
されたプログラムを入力し,その構造を解析してプログ
ラムの品質情報を抽出するオブジェクト指向プログラム
品質評価装置において,前記入力プログラムが汎化型の
機能を持つオブジェクト指向プログラム言語で記述され
ている場合に,前記汎化型の定義数と使用状況を測定す
る手段と,測定した結果を出力する手段とを備えること
を特徴とするオブジェクト指向プログラム品質評価装
置。2. An object-oriented program quality evaluation device for inputting a program described in an object-oriented programming language, analyzing the structure of the program, and extracting quality information of the program, wherein the input program has a general-purpose function. An object-oriented program quality evaluation device characterized by comprising means for measuring the number of definitions of the generalized type and the usage status when the object is described in an object-oriented programming language, and means for outputting the measurement result.
されたプログラムを入力し,その構造を解析してプログ
ラムの品質情報を抽出するオブジェクト指向プログラム
品質評価装置において,前記入力プログラムがクラス外
に関数等を定義できる折衷型のオブジェクト指向プログ
ラム言語で記述されている場合に,非オブジェクト指向
の定義のサイズを測定し,オブジェクト指向の定義サイ
ズとの比率を算出する手段と,算出した結果を出力する
手段とを備えることを特徴とするオブジェクト指向プロ
グラム品質評価装置。3. An object-oriented program quality evaluation apparatus for inputting a program described in an object-oriented programming language, analyzing the structure of the program, and extracting quality information of the program, wherein the input program defines a function or the like outside a class. A means for measuring the size of a non-object-oriented definition and calculating a ratio of the size to the object-oriented definition, and a means for outputting the calculated result, when written in an eclectic object-oriented programming language that can be used. An object-oriented program quality evaluation device, comprising:
されたプログラムを入力し,その構造を解析してプログ
ラムの品質情報を抽出するオブジェクト指向プログラム
品質評価装置において,複数のクラスから構成される前
記入力プログラムのモジュールが,それを使用する他の
クラス中で継承されている回数,あるいは委譲により再
利用されている回数,あるいは継承または委譲以外で使
用されている回数をモジュール中のクラスごとに測定す
る手段と,測定した結果を出力する手段とを備えること
を特徴とするオブジェクト指向プログラム品質評価装
置。4. An object-oriented program quality evaluation device which inputs a program described in an object-oriented programming language, analyzes the structure of the program, and extracts quality information of the program. Means for measuring, for each class in a module, the number of times the module has been inherited in other classes that use it, or has been reused by delegation, or has been used outside of inheritance or delegation And an output unit for outputting a measurement result.
されたプログラムを入力し,その構造を解析してプログ
ラムの品質情報を抽出するオブジェクト指向プログラム
品質評価装置において,前記入力プログラムにおけるシ
ステム定義のライブラリクラスや汎化型を識別すること
により,各クラスがどの程度特定のシステムに依存して
いるかを測定する手段と,測定した結果を出力する手段
とを備えることを特徴とするオブジェクト指向プログラ
ム品質評価装置。5. An object-oriented program quality evaluation device that inputs a program described in an object-oriented programming language, analyzes the structure of the program, and extracts quality information of the program. An object-oriented program quality evaluation device, comprising: means for measuring how much each class depends on a specific system by identifying a conversion type; and means for outputting a measurement result.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10020616A JPH11219289A (en) | 1998-02-02 | 1998-02-02 | Object-oriented program quality evaluation device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10020616A JPH11219289A (en) | 1998-02-02 | 1998-02-02 | Object-oriented program quality evaluation device |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11219289A true JPH11219289A (en) | 1999-08-10 |
Family
ID=12032190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10020616A Pending JPH11219289A (en) | 1998-02-02 | 1998-02-02 | Object-oriented program quality evaluation device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11219289A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073369A (en) * | 2000-06-12 | 2002-03-12 | Fujitsu Ltd | Support device for improving efficiency of object- oriented program and recording medium and program |
JP2007249264A (en) * | 2006-03-13 | 2007-09-27 | Fujitsu Ltd | Program, method and apparatus for analyzing program |
-
1998
- 1998-02-02 JP JP10020616A patent/JPH11219289A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002073369A (en) * | 2000-06-12 | 2002-03-12 | Fujitsu Ltd | Support device for improving efficiency of object- oriented program and recording medium and program |
JP2007249264A (en) * | 2006-03-13 | 2007-09-27 | Fujitsu Ltd | Program, method and apparatus for analyzing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5724504A (en) | Method for measuring architectural test coverage for design verification and building conformal test | |
Tsantalis et al. | Predicting the probability of change in object-oriented systems | |
US9418230B2 (en) | Automated tools for building secure software programs | |
US20060150160A1 (en) | Software analyzer | |
US7003766B1 (en) | Suite of metrics for software quality assurance and product development | |
US20200089491A1 (en) | Method and system for code analysis to identify causes of code smells | |
Yuan et al. | CMCD: Count matrix based code clone detection | |
Periyasamy et al. | Cost estimation using extended use case point (e-UCP) model | |
Molnar et al. | Evaluation of software product quality metrics | |
Sag et al. | Measuring COSMIC software size from functional execution traces of Java business applications | |
Kanashiro et al. | Predicting software flaws with low complexity models based on static analysis data | |
US9471465B2 (en) | Trace value correlation with data field declarations | |
Sjölund | Tools and Methods for Analysis, Debugging, and Performance Improvement of Equation-Based Models | |
Lübke et al. | Analysis of data-flow complexity and architectural implications | |
Schmidt et al. | Automatic generation of thread communication graphs from SystemC source code | |
Hill et al. | Pin++: an object-oriented framework for writing pintools | |
CN110516446A (en) | Method, system and storage medium for judging malicious software family affiliation | |
JPH11219289A (en) | Object-oriented program quality evaluation device | |
Mirliaz et al. | A flow-insensitive-complete program representation | |
CN113377648A (en) | Software system diagnosis method and device, electronic equipment and computer readable medium | |
CN113688134A (en) | Visual variable management method, system and equipment based on multidimensional data | |
Du Bois et al. | Supporting reengineering scenarios with FETCH: an experience report | |
Manduchi et al. | Measuring software evolution at a nuclear fusion experiment site: a test case for the applicability of OO and reuse metrics in software characterization | |
Ghareb et al. | An empirical evaluation of metrics on aspect-oriented programs | |
Wijendra et al. | Cognitive Complexity Applied to Software Development: An Automated Procedure to Reduce the Comprehension Effort |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050112 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050114 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070514 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070918 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080205 |