JP2000298586A - オブジェクト指向プログラム品質改善方法およびシステム - Google Patents
オブジェクト指向プログラム品質改善方法およびシステムInfo
- Publication number
- JP2000298586A JP2000298586A JP11104153A JP10415399A JP2000298586A JP 2000298586 A JP2000298586 A JP 2000298586A JP 11104153 A JP11104153 A JP 11104153A JP 10415399 A JP10415399 A JP 10415399A JP 2000298586 A JP2000298586 A JP 2000298586A
- Authority
- JP
- Japan
- Prior art keywords
- class
- quality information
- module
- classes
- reference 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.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
率よく問題点を発見し、問題点の原因の追求を容易にす
ること。 【解決手段】 入力されたオブジェクト指向プログラム
から、計測手段1により、個々のクラスのサイズ、他ク
ラスを参照する回数、継承の深さ等の品質情報を抽出す
る。判定手段2は品質情報と予め設定された基準値を比
較し、問題がある可能性の高い要素(モジュールまたは
クラス)を抽出する。参照関係解析手段4は、抽出され
た要素について参照関係を解析し、また、規約チェック
手段5は規約違反を検出する。解析された参照関係は、
参照関係を示す図として表示される。また、時変化解析
手段6は、判定手段2により抽出された要素について品
質情報の時変化を解析し、時変化を時系列変化グラフと
して表示する。
Description
プログラミング言語で書かれたプログラムの品質向上を
はかる技術に関し、さらに詳細には、オブジェクト指向
プログラムから問題がある可能性が高いモジュール(こ
こでは、モジュールを「一つのまとまった機能を実現す
るクラスの集合」として定義する)やクラスを特定/抽
出して、抽出された要素について品質情報を出力するこ
とにより、規模が大きなプログラムでも効率よく問題点
を見つけることができるオブジェクト指向プログラムの
品質改善方法およびシステムに関するものである。
て、各種の品質情報を計測する品質評価方法はいくつか
提案されている。それらはプログラムを解析して品質情
報を計測するものであるが、対象とするプログラムが大
規模である場合には、得られる品質情報も膨大になって
しまう。そのため、単に品質情報の全てをグラフ表示す
るのみである従来の視覚化手段では、大量に品質情報が
表示され、ユーザがそれを見て問題点を発見するのは困
難だった。
果とコーディング規約とを照合して規約違反を検査する
ものがある。プログラム全体を解析し検査するため、こ
れも同様に、大規模なプログラムの場合には大量に出力
される検査結果から問題点を特定するのは困難だった。
大規模なプログラムから効率よく問題点を特定/抽出
し、品質情報を呈示してその品質改善を図る技術は知ら
れていなかった。本発明は上記した事情に鑑みなされた
ものであって、その目的とするところは、計測した品質
情報から問題がある可能性が高いモジュールやクラスを
特定/抽出し、それらに対して参照関係や規約違反を検
査するとともに、品質情報の時変化を提示することによ
り、大規模なオブジェクト指向プログラムから効率よく
問題点を発見することができ、また、問題点の原因の追
求を容易に行うことができるようにすることである。
ある。同図において、1は計測手段であり、入力となる
オブジェクト指向プログラムを解析し、クラスのサイ
ズ、参照回数、継承の深さを計測する。2は判定手段で
あり、計測手段1により計測された品質情報をその基準
値3と比較して問題がある可能性が高い要素(モジュー
ルまたはクラス)を判定し抽出する。4は参照関係解析
手段であり、判定手段2により抽出した要素について参
照関係を解析する。5は規約チェック手段であり、判定
手段2の判定結果に基づき抽出されたしたチェック対象
について規約違反を検出する。6は時変化解析手段であ
り、判定手段2により抽出された要素について品質情報
の時変化を解析する。7は出力手段であり、上記参照関
係解析手段4の解析結果を参照関係図として表示した
り、時変化解析手段の解析結果を時変化グラフとして表
示する。
れたオブジェクト指向プログラムから、判定手段2によ
り問題がある可能性の高い要素(モジュールまたはクラ
ス)を抽出し、抽出された要素について参照関係解析手
段4により参照関係を解析し、また、規約チェック手段
5により規約違反を検出しているので、プログラムが大
規模であっても効率よく問題点を発見しその原因を追求
することができる。また、請求項2,3の発明のよう
に、参照関係を示す図を表示することにより、問題点の
発見を容易にすることができる。さらに、請求項4の発
明のように、コーディング規約の違反があるか検査する
ことで、問題点を特定することができ、また、請求項5
の発明のように品質情報の時系列変化をグラフ表示する
ことで、問題点の原因を調べることが容易となる。
ムの構成例を示す図である。同図において、101はC
PUであり、CPU101にはバス100が接続されて
おり、バス100にはメモリ102、外部記憶装置10
3、キーボードやマウス等の入力デバイスを含む入力装
置104、表示装置等を含む出力装置105が接続され
ている。
うためのプログラム等が格納され、また、入力された品
質改善の対象となるオブジェクト指向プログラムが外部
記憶装置103に格納される。本発明の処理を行うため
のプログラムは実行時、メモリ102に読み込まれてC
PU101により実行される。そして、上記対象となる
オブジェクト指向プログラムから問題がある可能性が高
いモジュールやクラスが抽出され、その参照情報等が解
析され、また、規約違反が検査される。これらの品質情
報、その時系列変化は参照関係図、時変化グラフ等とし
て出力装置105から出力され、ユーザに提示される。
ユーザは、上記品質情報、その時系列変化に基づき、対
象となるオブジェクト指向プログラムのデバッグ等を行
い、その品質改善を図る。
成を示すブロック図である。同図において、11は入力
となるオブジェクト指向プログラミング言語で書かれた
プログラムであり、上記外部記憶装置103に記憶され
ている。12はそのプログラム11を解析しクラスのサ
イズ、参照回数、継承の深さを計測する計測部である。
13は計測部12の計測結果である品質情報、14は予
め設定された品質情報の基準値、15は品質情報13と
品質情報の基準値14を比較して問題がある可能性が高
い要素(モジュールまたはクラス)を判定し抽出する判
定部である。
ログラム11を入力として判定部15により抽出した要
素について参照関係を解析する参照解析部、17は参照
解析部16の解析結果である参照関係情報、18は参照
関係情報17を視覚化する参照関係図表示部である。1
9は判定部15の判定結果に基づき規約チェックの対象
を抽出するチェック対象抽出部、20はチェック対象抽
出部19により抽出されたチェック対象、21はチェッ
クを行うための規約情報、22はチェック対象20を解
析した結果を規約情報21と照合し規約違反を検出する
規約チェック部である。23は過去の品質情報、24は
判定部15により抽出された要素について品質情報23
から時変化を解析する時変化解析部、25は時変化解析
部24により抽出された時変化情報、26は時変化情報
25の情報を視覚化するグラフ表示部である。
ム11を入力として、計測部12は個々のクラスのサイ
ズ、他クラスの参照回数、継承の深さを計測する。計測
した結果は品質情報13として出力される。品質情報の
基準値14は、クラスのサイズ、他クラスの参照回数、
継承の深さが異常な値であるかどうかを判定するための
情報であり、予め設定されるものである。判定部15
は、品質情報13と品質情報の基準値14とを比較し、
品質情報が異常な値をもつモジュールやクラスを、問題
がある可能性が高い箇所として抽出する。
プログラム11を入力として、判定部15により抽出さ
れたモジュールやクラスに関して、クラスやメソッドと
モジュール内外のクラスとの参照関係を解析し、その結
果を参照関係情報17として出力する。参照関係図表示
部18は、参照関係情報17を入力として、参照関係を
示す図を表示する。チェック対象抽出部19は、オブジ
ェクト指向プログラム11から、判定部15の抽出した
クラスを、チェック対象ソースコード20として抽出す
る。
スコード20を解析し、その解析結果とコーディング規
約を記述した規約情報21を照合して規約違反を検出す
る。さらに、時変化解析部24は、判定部15の抽出し
たクラスについて、過去の品質情報23を基に品質情報
の時変化を調べ、時変化情報25として出力する。ま
た、グラフ表示部26は、時変化情報25を基に品質情
報の時変化をグラフ表示する。
ング言語C++で記述された図4に示すプログラム例に
より説明する。 (1)品質情報の計測 図3に示した計測部12では、以下の項目を品質情報1
3として計測する。 クラスのサイズ:クラスのメンバ数または、クラスの
メンバ関数の文の数の総和。 他クラスの参照回数:データメンバ、メンバ関数のパ
ラメタ、戻り値として使われる他のクラスの数。 継承の深さ
そのプログラムを計測した品質情報を図5に例として示
す。なお、図5では、品質情報についてはクラスのサイ
ズを表す文の数と他クラスの参照回数のみを例に示して
いるが、他についても同様である。図4のプログラム例
では、クラスA、Bを含むモジュール1とクラスC、D
を含むモジュール2が存在する。計測部は各モジュール
ごとに上記の項目について計測を行い、図5のようにモ
ジュール単位の品質情報を得る。
の数1であり参照はない。クラスBは文の数2(「p->f
1() ; 」と「k=1;」)であり参照はクラスA、クラスC
の2つである。また、モジュール2のクラスCは、文の
数4(「return m;」と「int i;」と「i=dp〜; 」と
「m=i 〜; 」)であり参照はクラスDの1つである。ク
ラスDは文の数1であり参照はない。したがって、図5
に示す品質情報が得られ、その平均値は、図5に示すよ
うに、モジュール1については、文の数1.5、参照回
数1となる。また、モジュール2については、文の数
2.5、参照回数0.5となる。なお、上記のような品
質情報を計測する手法は公知のものである。
測した結果が問題がありそうな異常値であるかを判定す
る。この判定は、予め、設定した品質情報の基準値14
と比較することで行う。基準値14として、上記の計測
する項目ごとに上限値と下限値を設定する。判定結果
は、後述の参照関係解析部16、チェック対象抽出部1
9、時変化解析部24において使用される。
ラスとモジュール内外の他のクラスとの参照関係の解析 参照関係解析部16では、入力プログラム11を解析し
て、判定部15で抽出されたモジュールについて、その
モジュール内のクラスとモジュール内外の他のクラスと
の参照関係を調べる。図4の入力プログラム例と、図5
に示した入力プログラム例に対する品質情報を例として
説明する。仮に、判定部において図4のプログラムのモ
ジュール1が、参照回数に異常値があったとして抽出さ
れたとする。この場合には、参照解析部16では、モジ
ュール1に関して参照関係情報を解析する。
に示す。同図に示すように、クラスAは、モジュール内
およびモジュール外参照クラスが無く、また、クラスB
は、モジュール内参照クラスがクラスA、モジュール外
参照クラスがクラスCである。参照関係図表示部18は
上記参照関係情報を基に、モジュール内のクラスとモジ
ュール内外の他のクラスとの参照関係を示す図を表示す
る。図6の参照関係情報に対する参照関係図を図7に示
す。図中のA、B、Cはいずれもクラス名であり、Aと
Bを囲む円はモジュール(この例ではモジュール1)を
表している。また、円の外側にあるCはモジュール外の
クラスであることを表す。
な例を示す。この参照関係図では、クラスDは他クラス
の参照が多く、特にモジュール外のクラスの参照が多い
ことが視覚的に分かる。そのようなクラスは保守を困難
にする恐れがある。以上のように、異常値をもつモジュ
ールを抽出し、それに対して参照関係図を表示すること
で問題点の発見が容易になる。なお、参照関係図の表示
には、既存の視覚化技術を用いることができる。
関数とモジュール内外の他のクラスとの参照関係の解析 参照関係解析部16では、入力プログラム11を解析し
て、判定部15で抽出されたクラスについて、そのクラ
ス内のメンバ関数と他のクラスとの参照関係を調べる。
結果は図10に示すように、上記(5)と同様の形式の
参照関係情報として出力する。図10は、クラス名がC
1である2つのメンバー関数を持つクラスに対する参照
関係情報の例である。参照関係図表示部18は上記参照
関係情報を基に、クラス内のメンバ関数と他のクラスと
の参照関係を示す参照関係図を表示する。この場合の参
照関係図は、上記(5)で示した図において、モジュー
ルを表す円をクラスに、その円の中にあるクラスをメン
バ関数に置き換えたものであり、図11に示すようにな
る。
g() を囲む円はクラス(この場合はクラスC1)を表
し、クラスC1とクラスC2,C3を囲む円はモジュー
ルを表している。この例の場合は、モジュール内にクラ
スC1,C2,C3があり、モジュールの外にクラスC
4がある。このメンバ関数を対象とした参照関係図によ
り、前記(5)の参照関係図から分かった問題のあるク
ラスについて、さらにそのクラス内のメンバ関数と他ク
ラスの参照関係を調べ、問題の原因となっているメンバ
関数を発見することが容易になる。
果に基づき入力プログラム11から、コーディング規約
の違反をチェックする対象ソースコードを抽出する。以
下、図4の入力プログラム例と図5に示した入力プログ
ラム例に対する品質情報を例として説朋する。
文の数が下限値1と設定されている場合、図5の品質情
報からはクラスAとクラスDがその値以下であり、それ
らのクラスが異常な値をもつクラスと抽出される。チェ
ック対象抽出部19では、判定部15において抽出され
たクラスAとクラスDについて、図4の入力プログラム
から、クラスAとクラスDがそれぞれ定義されているソ
ースコード(ファイルA.hとD.h)を、チェック対
象ソースコードとして抽出する。
対象ソースコードを解析し、その解析結果と規約情報を
照合して規約違反を検出する。コーディング規約を記述
する規約情報の例を図12に示す。前記の図4と図5の
例では、文の数に関して異常に小さな値をもつクラスA
とクラスDを定義するソースコードA.hとD.hが抽
出された。異常に小さなクラスは、関数の定義の洩れな
ど何らかの問題がある可能性が高い。クラスAとクラス
Dでは、図12の規約情報と照合すると、クラスAは、
「ポインタ型のデータメンバを持つクラスにデストラク
タがない」、「ポインタ型のデータメンバを持つクラス
にコピーコンストラクタがない」といった項目に該当す
る。これによりクラスAには実際に問題があることが分
かる。このように、異常値をもつクラスを抽出し、それ
に対して規約違反の検査を行なうことで、問題点を特定
できる。なお、規約違反を検査する方法自体は、公知の
ものである。
ら、判定部15で抽出した各クラスの品質情報について
時変化情報を抽出する。例えば、品質情報の基準値とし
て、サイズ(メンバ関数の文の数)の下限値が10と設
定されており、判定部15でそれを下回る値(異常値)
をもつ3つのクラスA、B、Cが抽出された場合、記憶
されている過去の計測時点におけるクラスA、B、Cの
サイズ(旧バージョンのプログラムにおけるクラスA,
B,Cのサイズ)を読み出し、クラスA、B、Cのサイ
ズの時変化を求める。
は、例えば図13のようになる。時変化情報は、同図に
示すように各クラスについて計測時点ごとの計測値を持
つ。なお、図中のクラスCの計測時点1、2のように空
欄の項目は、その時点では、そのクラスは存在していな
かった(まだ作成されていない、または削除された)こ
とを表している。グラフ表示部26は上記の時変化情報
を入力として、各クラスの品質情報の時変化を表示す
る。
を図14に示す。上記のようにクラスCはサイズが異常
に小さく、問題がある可能性が高いクラスとして抽出さ
れたが、図14の時変化のグラフはクラスCは最近新規
に作成されたものであることを示しており、サイズが小
さくても問題はないと判定できる。このように、判定部
15により異常値として抽出されたクラスについて、時
変化のグラフを見ることによりその原因を調べることが
容易になる。なお、時変化のグラフ表示には、既存の視
覚化技術を用いることができる。
は、入力されたオブジェクト指向プログラムの品質情報
を計測し、計測した品質情報から問題がある可能性が高
いモジュールやクラスを特定/抽出し、それらに対して
参照関係図の表示、規約違反の検査、品質情報の時変化
をグラフで表示するようにしたので、大規模なオブジェ
クト指向プログラムから効率よく問題点を発見すること
ができ、また、問題点の原因の追求を容易に行うことが
できる。
である。
図である。
す図である。
(例1)を示す図である。
関係図を示す図である。
す図である。
を示す図である。
である。
Claims (5)
- 【請求項1】 オブジェクト指向プログラミング言語で
書かれたプログラムから品質情報を抽出し、該品質情報
を予め設定した基準値と比較して、所定の要素を抽出
し、 抽出された要素について、参照関係を解析するととも
に、所定の要件に違反しているか否かを検査し、上記解
析結果および検査結果を出力し、 上記解析結果および/または検査結果に基づきオブジェ
クト指向プログラムの品質を改善することを特徴とする
オブジェクト指向プログラム品質改善方法。 - 【請求項2】 オブジェクト指向プログラミング言語で
書かれたプログラムの品質情報として、個々のクラスの
サイズ、他クラスを参照する回数、継承の深さを計測す
る計測手段と、 計測した品質情報と予め設定した基準値を比較して問題
がある可能性が高い要素を抽出する判定手段と、 抽出した要素について、参照関係を解析する参照関係解
析手段と、コーディング規約の違反があるか検査する規
約チェック手段と、 上記解析結果および検査結果を出力する出力手段とを備
え、 上記判定部は、モジュール内の全クラスについての他ク
ラスを参照する回数の平均が、基準値と比べて異常な値
であるモジュールを抽出し、 上記参照関係解析手段は、そのモジュールに対して、モ
ジュール内のクラス間および他のモジュールのクラスと
の参照関係を解析し、 上記出力手段は、上記解析結果に基づきモジュール内の
クラス間および他のモジュールのクラスとの参照関係を
示す図を表示することを特徴とするオブジェクト指向プ
ログラム品質改善システム。 - 【請求項3】 判定部は、他クラスを参照する回数が基
準値と比べて異常な値であるクラスを抽出し、 参照関係解析手段は、そのクラスにして、クラス内のメ
ソッドと他のクラスとの参照関係を解析し、 出力手段は、上記解析結果に基づきクラス内のメソッド
と他のクラスとの参照関係を示す図を表示することを特
徴とする請求項2のオブジェクト指向プログラム品質改
善システム。 - 【請求項4】 判定部は、計測した品質情報のいずれか
が基準値に比べて異常な値をもつクラスを抽出し、 規約チェック手段は、そのクラスに対してコーディング
規約の違反があるか検査し、出力手段は、上記検査結果
を出力することを特徴とする請求項2または請求項3の
オブジェクト指向プログラム品質改善システム。 - 【請求項5】 時変化解析手段を備え、 判定部は、基準値に比べて品質情報が異常な値をもつク
ラスを抽出し、 上記時変化解析手段は、そのクラスに対して品質情報の
時系列変化を求め、 出力手段は、上記時変化解析手段の解析結果に基づき品
質情報の時系列変化をグラフ表示することを特徴とする
請求項2,3または請求項4のオブジェクト指向プログ
ラム品質改善システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11104153A JP2000298586A (ja) | 1999-04-12 | 1999-04-12 | オブジェクト指向プログラム品質改善方法およびシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11104153A JP2000298586A (ja) | 1999-04-12 | 1999-04-12 | オブジェクト指向プログラム品質改善方法およびシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000298586A true JP2000298586A (ja) | 2000-10-24 |
Family
ID=14373131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11104153A Pending JP2000298586A (ja) | 1999-04-12 | 1999-04-12 | オブジェクト指向プログラム品質改善方法およびシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2000298586A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012033017A (ja) * | 2010-07-30 | 2012-02-16 | Fujitsu Marketing Ltd | 規則検査装置、規則検査方法及び規則検査プログラム |
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 |
-
1999
- 1999-04-12 JP JP11104153A patent/JP2000298586A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012033017A (ja) * | 2010-07-30 | 2012-02-16 | Fujitsu Marketing Ltd | 規則検査装置、規則検査方法及び規則検査プログラム |
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 |
---|---|---|
US9690788B2 (en) | File type recognition analysis method and system | |
US9027002B2 (en) | Method of converting source code and source code conversion program | |
JP5874891B2 (ja) | プログラムテスト装置、プログラムテスト方法、およびプログラム | |
US9164878B2 (en) | Evaluating coverage of a software test | |
US8867848B2 (en) | Display test device, display test method, and storage medium | |
US11669080B2 (en) | Abnormality detection device, abnormality detection method, and program | |
US20200143292A1 (en) | Signature enhancement for deviation measurement-based classification of a detected anomaly in an industrial asset | |
EP2238540A1 (en) | Selective code instrumentation for software verification | |
CN107045477B (zh) | 一种可进行多维度检测的质量评估平台 | |
JP6871877B2 (ja) | 情報処理装置、情報処理方法及びコンピュータプログラム | |
CN107194908A (zh) | 图像处理装置以及图像处理方法 | |
Kitchenham et al. | Design metrics in practice | |
Barontini et al. | Deterministically generated negative selection algorithm for damage detection in civil engineering systems | |
CN114120071A (zh) | 一种带有对象标注框图像的检测方法 | |
KR20200001288A (ko) | 자동화된 도면 오류 검사 제공 장치 및 방법 | |
JP2000298586A (ja) | オブジェクト指向プログラム品質改善方法およびシステム | |
US20170140080A1 (en) | Performing And Communicating Sheet Metal Simulations Employing A Combination Of Factors | |
CN109977400A (zh) | 一种校验处理的方法、装置、计算机存储介质及终端 | |
JP2010282441A (ja) | モジュール間依存強度算出装置、モジュール間依存強度測定方法およびモジュール間依存強度測定プログラム | |
CN115101135A (zh) | 岩石物理参数敏感度分析方法及装置 | |
CN111143220B (zh) | 一种软件测试的训练系统及方法 | |
Macklon et al. | A Taxonomy of Testable HTML5 Canvas Issues | |
US20160062744A1 (en) | Computer-implemented method for generating control unit program code and message management environment relating thereto | |
US20050235266A1 (en) | System and method for business rule identification and classification | |
US20190354819A1 (en) | Method for extracting an output data set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040805 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070327 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070612 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071106 |