JPH07141166A - クラスタ分析を用いたプログラム解析方法 - Google Patents

クラスタ分析を用いたプログラム解析方法

Info

Publication number
JPH07141166A
JPH07141166A JP5290173A JP29017393A JPH07141166A JP H07141166 A JPH07141166 A JP H07141166A JP 5290173 A JP5290173 A JP 5290173A JP 29017393 A JP29017393 A JP 29017393A JP H07141166 A JPH07141166 A JP H07141166A
Authority
JP
Japan
Prior art keywords
cluster
program
module
entities
attribute
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
Application number
JP5290173A
Other languages
English (en)
Inventor
Toshihiko Oda
利彦 小田
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP5290173A priority Critical patent/JPH07141166A/ja
Publication of JPH07141166A publication Critical patent/JPH07141166A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 プログラムのソースコードを静的に分析する
手法として、クラスタ分析を導入した場合に、重要とな
るクラスタリングの対象となるデータ要素間の距離の定
義付けを行い、情報隠蔽というプログラムの設計概念と
適合したクラスタの生成を可能にする。 【構成】 クラスタリングの対象となるデータ要素間の
距離尺度を2つのエンティティをクラスタ化する前と後
との全エントロピー値の差と定義し、あるエンティティ
が持つ属性のあるインスタンスが出現するという事象の
出現確率を用いてエンティティ空間全体における各イン
スタンスのエントロピーを求め、これらのエントロピー
の合計から属性自身のエントロピーを計算した後、対象
とする2つのエンティティをクラスタ化することにより
各々のエンティティの持つ属性の全エントロピーの減少
として前記距離尺度を求めるようにした。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムのソースコ
ードを静的に分析し、そのプログラム構造やデザインレ
ベルの情報を取出して、ソフトウエアの開発や保守作業
に利用可能なクラスタ分析を用いたプログラム解析方法
に関する。
【0002】
【従来の技術】従来、プログラムを静的に解析する手法
の一つとして、クラスタ分析を導入するようにしたもの
がある。このようなクラスタ分析を適用してプログラム
構造を見つけ出す研究に関しては、例えば、データ束縛
のメトリックを用いてコンポーネント間のデータ送受の
強さを計量し、これに基づくコンポーネント間の距離か
らクラスタ分析した結果、システム階層的なサブシステ
ムの構成を生成するようにしたものがある。これは、
〔SB89〕(R.W.Selby,V.R.Basili,Erro
r Localization During Software Maintenance:G
enerating Hierachical System Descriptions from
the Source Code Alone,In Proceedings of the
Conference on Software Maintenance,Phoenix,
October,1989)により報告されている。これでは、さ
らに、エラーの個数やそれに要した労力からサブシステ
ムの特徴付けを行うようにしている。
【0003】また、データ束縛のメトリックを用いてク
ラスタ分析を行う、dbt というAdaプログラムを対象に
したツールの開発に関する報告もある。これは、〔DB
90〕(A.Delis.V.R.Basili,Data Bindin
g Tool:a Tool for Measurement Based Ada Sou
rce Reusability and Design Assesment,Technica
l Report,Dep.of Computer Science,Universit
y of Maryland,May,1990)により報告されているも
のである。dbt の出力、dendrogram(階層的クラスタ
木)は、再利用性の高いコードのピースを分離したり、
また、パッケージ化する方法を理解するために用いられ
る。
【0004】他方、Adaモジュール(ルーティン、デー
タ、タイプ定義の集まり)に拡張したコヒージョンとカ
ップリングの定義とを提案し、その計量データが保守活
動の困難さを示唆することができた、という報告もあ
る。これは、〔BMB93〕(L.C.Briand,S.
Morasca,V.R.Basili,Measuring and assesing
Maintainability at the End of High-Level Desig
n,CSM93)により報告されているものである。
【0005】また、情報量とシステムの複雑さとの関連
について、システムの分割を形式化する研究の報告があ
る。これは、〔PW92〕(An Automated Approach
toInformation System Decomposition,D.Pauls
on,Yair Wand,IEEETransaction on Software
Engineering,SE-18(3),March,1992)により報
告されているものである。
【0006】
【発明が解決しようとする課題】ソフトウエア保守は、
ソフトウエア製品の寿命を伸ばしていくための継続的な
作業である。ソフトウエアシステムを開発した後、バグ
の修正とともにユーザの新たな要求を満足させたり、計
算機環境の変化に対応させるために、しばしばソフトウ
エアを変更又は改良しなければならない。
【0007】一方、ハードウエアの進歩に伴い、ソフト
ウエアシステムは、より複雑な上に大きくなってきてい
る。これにより、ソフトウエアの保守は、より困難かつ
コストのかかるものとなってきている。その上、限られ
た人的資源の元で、ソフトウエア保守のコストの増加
が、新たなソフトウエアの開発活動を抑制する要因とも
なってきている。
【0008】ここに、開発プロセスと保守プロセスとの
相違に関しては、〔LPLS78,Co89,BR9
1〕等で報告されているように、多くの議論がある。例
えば、開発プロセスは、ユーザの仕様を獲得し、その後
に設計作業に移ることになる。これに対して、保守プロ
セスではユーザの仕様を対象となるプログラムのデザイ
ンと照合し、新たな機能をどの個所に加えるか、さらに
は、その付加がどのように他の個所へ影響するかについ
ても明らかにしなければならない。このため、保守プロ
セスでは、元のプログラムを充分に理解することが重要
であり、保守者はそのために多くの時間を費やしている
ものである。
【0009】即ち、あるプログラムを理解するには、仕
様や設計に関するドキュメントを利用することから始め
るが、多くの場合、このようなドキュメントからは充分
な情報が得られなかったり、或いは、プログラムが変更
される度にドキュメントを更新することを怠った状況下
で、ドキュメントとプログラムとの整合性が失われてい
ることもある。この結果、保守技術者は、ソースコード
を直に読むことによって、プログラムがどのように振る
舞い、かつ、そのコンポーネントがどのような役割を行
うか、を学ばなければならなくなる。しかし、これには
多くの時間を費やす辛い作業となるものである。
【0010】しかして、本発明は、保守プロセスにおけ
るプログラムの理解を支援する実際的かつ洗練された計
算機環境を構築することを目的とするものである。この
ため、仕様や設計レベルにあるプログラムの抽象情報を
ソースコードより自動的に抽出し、それを提供するため
の手法を提供するものである。
【0011】
【課題を解決するための手段】請求項1記載の発明で
は、クラスタリングの対象となるデータ要素間の距離尺
度を2つのエンティティをクラスタ化する前と後との全
エントロピー値の差と定義し、あるエンティティが持つ
属性のあるインスタンスが出現するという事象の出現確
率を用いてエンティティ空間全体における各インスタン
スのエントロピーを求め、これらのエントロピーの合計
から属性自身のエントロピーを計算した後、対象とする
2つのエンティティをクラスタ化することにより各々の
エンティティの持つ属性の全エントロピーの減少として
前記距離尺度を求めるようにした。
【0012】請求項2記載の発明では、クラスタの対象
となるエンティティとしてプログラム内のモジュールを
対象とし、距離を求めるための属性をモジュール呼出
し、外部変数、マクロ、及びメンバを含むタイプの4種
のプログラム要素なる前記モジュール内の外部参照の出
現という事象として、2つのエンティティをクラスタ化
する前と後との全エントロピー値の差をクラスタリング
の対象となるデータ要素間の距離尺度とする距離定義を
適用したクラスタ分析を行うようにした。
【0013】請求項3記載の発明では、クラスタの対象
となるエンティティとしてモジュール呼出し、外部変
数、マクロ、及びメンバを含むタイプの4種のプログラ
ム要素を対象とし、これらのプログラム要素が外部参照
として出現したモジュールの集まりをそのエンティティ
の属性として定義し、2つのエンティティをクラスタ化
する前と後との全エントロピー値の差をクラスタリング
の対象となるデータ要素間の距離尺度とする距離定義を
適用したクラスタ分析を行うようにした。
【0014】
【作用】請求項1記載の発明においては、クラスタ分析
において重要となるクラスタリングの対象となるデータ
要素間の距離に関して、2つのエンティティをクラスタ
化する前と後との全エントロピー値の差と定義している
ので、情報隠蔽というプログラムの設計概念と適合した
クラスタの生成が可能となる。
【0015】請求項2記載の発明においては、クラスタ
分析の結果として得られる情報は、情報隠蔽クラスタリ
ングによるモジュールの階層的クラスタ構成となり、1
つの大局的なプログラムの構成を表現したものとなり、
プログラムの理解に役立つ情報となる。また、情報隠蔽
の効果を反映することで、システムからサブシステムへ
の分割を示唆させることもできる。さらに、保守による
プログラム変更がどの程度のコストを要するか、或い
は、リスクを伴うか、といった判断材料をも提供するも
のとなり、モジュール変更においてその変更が及ぼす影
響範囲をランク付けて調べる等の対応がとれるものとな
る。
【0016】請求項3記載の発明においては、クラスタ
分析の結果による情報として、モジュール呼出しのクラ
スタからは部品候補の汎用性に関する情報が得られ、タ
イプや大域変数の出現を隠蔽するモジュールのクラスタ
からは部品候補の独立性に関する情報が得られる、とい
うように、プログラムの再利用において部品候補を的確
かつ容易に評価するに役立つものとなる。
【0017】
【実施例】本発明の一実施例を図面を参照しつつ、 A.概要 B.階層的クラスタ分析 C.エンティティと属性 D.距離の計量 E.クラスタリングの手続き F.各クラスタの性質と意味 G.クラスタ分析の結果の利用 なる項目に分け、各項目毎に順に説明する。
【0018】A.概要 プログラム構造やデザイン概念等のプログラムの抽象情
報を得るため、モジュール内の外部参照の出現とプログ
ラム言語における名前付けという2つのプログラム特徴
を利用することに焦点を当てたアプローチを行う。ここ
に、「モジュール」という用語は、プログラムのプライ
マリ単位として定義され、これは、閉じたサブルーチン
であり、独立にコンパイル可能である〔My78参
照〕。C言語では、モジュールは関数を意味する。次
に、「外部参照」とは、モジュール外で定義され、か
つ、モジュール内に出現したプログラム要素を意味す
る。C言語では、 a.モジュール呼出し b.モジュール内でアクセスされた外部変数 c.モジュール内で使われているマクロ d.モジュール内で用いられているタイプやそのメンバ なる4種のプログラム要素を意味する。
【0019】ところで、システム全体の複雑さの重要な
タイプに、モジュール間の関連性がある〔My78参
照〕。このモジュール間の因果関係や依存関係による関
連性は、モジュール内における外部参照の出現が引き起
こしているといえる。さらに、外部参照は、モジュール
の振る舞いを局所的に理解することを困難にしている。
なぜなら、外部参照の定義自体は、ファイル上のモジュ
ールとは、別の場所に存在しているからである。
【0020】このような外部参照の出現によるプログラ
ム理解の困難性に対処するため、階層的クラスタ分析を
用い、システム全体のプログラム構造を見出そうとする
ものである。
【0021】B.階層的クラスタ分析 ここでは、クラスタ分析手法による大規模プログラムの
プログラム構造を見出す方法について説明する。ここで
の「プロクラム構造」とは、プログラムに存在するプロ
グラム要素、即ち、モジュール呼出し、外部変数、マク
ロ、及びタイプの4種のプログラム要素に対して、ある
距離の定義に基づくクラスタ分析を行った結果として得
られる階層的なクラスタの構成を意味する。
【0022】クラスタ分析を行うために、2つの手法を
考える。第1の手法は、「情報隠蔽」という概念に基づ
いており、各モジュールでの外部参照の出現を、クラス
タの内部にできるだけ局所化していくように、モジュー
ルのクラスタを構成していく、というものである。この
ように、クラスタ内部に外部参照の出現という事象を隠
蔽していく、というクラスタの階層的構成から、情報隠
蔽という特性から導かれるプログラムの構造を調べる。
情報隠蔽は、よく知られているように、プログラム設計
上の重要な性質の一つであり、複合設計やオブジェクト
指向設計等の設計手法では、データや操作の実現の詳細
を隠すためにカプセル化と呼ばれる効果的な方法を導入
している。よって、このようなクラスタ分析の結果は、
プログラムの設計特性やその良否の評価に関して示すこ
とが可能と思われる。
【0023】第2の手法は、外部参照の出現の各モジュ
ールにおける同時性という事象に基づくものである。こ
こに、同じモジュール内にある2つの外部参照が出現す
ることは、それらの間に何らかの相互作用の可能性があ
ることを仮定し得る。例えば、2つの外部変数A,Bが
多くのモジュールにおいて同時に出現している場合、外
部変数A,B間には、データ束縛或いはデータフロー等
の関連性が存在する、と考えることが妥当である。
【0024】C.エンティティと属性 「エンティティ」とは、クラスタの要素となるデータ単
位のことであり、「属性」とは、クラスタ分析の実行に
必要なエンティティ間の距離を計量するために用いられ
るエンティティの性質のことである。
【0025】
【表1】
【0026】表1に示される4つのエンティティ/属性
の組は、モジュールにおける外部参照(即ち、前述した
4種の属性)の出現の状況に対する、モジュール(エン
ティティ)の情報隠蔽手法に基づくクラスタリングを示
している。例えば、タイプCL1-1 では、より多くの同一
のモジュールの呼出しを共有し合うモジュールが集まる
ほど、より強いクラスタとなり、タイプCL1-2 では、よ
り同一の外部変数を共有し合うモジュールが集まるほ
ど、より強いクラスタとなることを示している。
【0027】次いで、この表1に示したエンティティ/
属性の組を置換えることにより、表2に示すような4つ
の組が定義される。
【0028】
【表2】
【0029】表2に示す4つの組は、外部参照の出現の
同時性に基づくクラスタリングに対応している。例え
ば、タイプCL2-1 では、ある2つのモジュールでそれら
のモジュール呼出しが同じモジュールで行われている場
合が多いほど(出現の同時性)、その2つのモジュール
の距離は近い値となる。即ち、あるクラスタ内の複数の
モジュールは、互いに同じモジュールにおいて出現する
という事象を持っていることを示す。また、タイプCL2-
2 では、ある2つの外部変数は、同じモジュールに共有
されるという事象の頻度が多ければ、その間の距離が近
くなることを示す。
【0030】D.距離の計量 クラスタ分析を行うためには、エンティティの全ての2
組間の距離が数量化される必要がある。そして、この距
離の定義が、クラスタ分析手法の本質となる。情報隠蔽
という概念に基づくクラスタリングでは、エンティティ
は、エンティティ空間における属性のインスタンスの出
現分布の広がりを最小限とするように、クラスタとして
構成することを意図している。属性のインスタンスの分
布の度合いは、エンティティ空間におけるエントロピー
として計算される。そこで、あるエンティティにある属
性のあるインスタンスが出現するという事象に対して、
その出現確率を次のように定義する。次式中、eiはi番
目のエンティティを示し、iaj はj番目の属性のインス
タンスを示し、NEはエンティティの総数を示し、NI
Aは属性のインスタンスの総数を示し、NumOfOccr(i
ai ,ej )はエンティティejにおけるインスタンスiai
の出現回数を示す。
【0031】
【数1】
【0032】エンティティ空間全体におけるインスタン
スiai のエントロピーは次式で示される。
【0033】
【数2】
【0034】この結果、その属性の全体のエントロピー
は次式のように計算できる。
【0035】
【数3】
【0036】最後に、2つのエンティティei,ejの距離
尺度Dは、これらのエンティティei,ejをクラスタ化
(マージ)することによる属性分布の全エントロピーの
減少による求める。つまり、距離尺度Dは2つのエンテ
ィティei,ejをクラスタ化する前と後とにおける全エン
トロピー値の差として、次式のように計算することによ
り求められるものとして定義される。
【0037】
【数4】
【0038】このように定義された距離尺度Dは、外部
参照の出現の同時性に基づくクラスタリング手法にも同
様に適用される。
【0039】ここに、距離計量の例を図1を参照して説
明する。ここでは、同図(a)に示すようなモデルA,
B,C,Dを有する条件下で、同図(b)に示すような
AとBとをクラスタ化する例を示すものである。なお、
タイプとして、 struct T1{ int a,b,c } struct T2{ int p,q,r } struct T3{ int x,y,z } であるとする。このような条件下で、AとBとの距離D
(A,B)を計算すると、 D(A,B) = H(〔A,B,C,D〕)−H′〔A∪B,C,D〕) = H(T1)+H(T2)−(H(T1)′+H′(T2)) = −4/8*log(4/8)−3/8*log(3/8)−1/8*log(1/8)/*H(T1) */ −2/7*log(2/7)−3/7*log(3/7)−2/7*log(2/7)/*H(T2) */ −(−4/5*log(4/5)−1/5*log(1/5)) /*H′(T1)*/ −(−4/6*log(4/6)−2/6*log(2/6)) /*H′(T2)*/ のようになる。
【0040】E.クラスタリングの手続き 次いで、階層的クラスタの木を生成するクラスタリング
の手続きについて説明する。この手続きでは、一般に使
用されている類似行列を扱わず、リスト型のデータ構造
で操作する。この手続きは、以下の4つのステップから
なる。
【0041】ステップ1 初期クラスタセット クラスタリングの対象となる全てのエンティティを集め
て初期クラスタを形成する。即ち、最初は初期クラスタ
が含む全てのクラスタは、1つのエンティティと対応し
ている。しかし、ある特定のクラスタを初期クラスタに
指定することも可能である。例えば、外部ライブリィと
アプリケーションのモジュールとを別々のクラスタとし
て区別されている初期クラスタセットから始めることも
可能である。クラスタセット(CS)はこのプロセスの
繰返しの間、クラスタリングの中間結果を保持してい
る。クラスタセットは、二分木リストの形式で表現さ
れ、初期クラスタセットの例を示すと、 Initial CS:(abcdefghijklmn) のようになる。
【0042】ステップ2 距離の計量に基づきクラスタ
の候補の2組を選択 クラスタ(最初はエンティティ)の全ての2組を取出
し、その距離を前述した距離尺度の定義に従い求める。
この結果、最も距離が短いクラスタの2組を選び出す。
これを、新規クラスタセット(NC)と呼び、 NCS:((ab)(cd)(ac)(mn)) のように構成される。
【0043】ステップ3 終了条件 もし、新規クラスタセットNCSがNILであるか、又
は、クラスタセットCSと一致するならば、この手続き
は終了して、後述するHCSを出力する。何れでもない
場合には、次のステップ4に移る。
【0044】ステップ4 クラスタセットの更新 このステップでは、新規クラスタセットNCSによって
クラスタセットCSを更新して、ステップ2に戻る。こ
のステップは以下のように行われる。
【0045】ステップ4−1 NCSの遷移の2組をマ
ージ 新規クラスタセットNCSにあるクラスタの組は遷移的
であると仮定し、同じ要素(クラスタ)を共有するクラ
スタ同士は、例えば、 NCS:((ab)(cd)(ac)(mn))→((abcd)
(mn)) のように併合される。
【0046】ステップ4−2 CSからNCSにあるク
ラスタを除去 クラスタセットCSから新規クラスタセットNCSと重
複するクラスタを除去する。すると、クラスタ化から外
れたクラスタのリスト(RCS)が RCS:(efghijkl) のように得られる。
【0047】ステップ4−3 RCSとNCSの併合 リストRCSと新規クラスタセットNCSとを併合する
ことにより、クラスタセットCSを更新する。そのクラ
スタセットCSは、HCS(=HierachicalCluster
Set)の最後に加えられる。このようなHCSはクラス
タ分析の最終結果として、 のようにして出力される。
【0048】このような手続きの結果、生成された階層
型クラスタの木(HCS)の例を、 とした場合、例えば、図2に示すような木構造となる。
【0049】F.各クラスタの性質と意味 次に、表1,2にあるエンティティ/属性の組の各々に
ついて行った、異なるタイプのクラスタ分析の結果、得
られた各クラスタが有する性質とそのデザイン的視点か
ら見た意味について説明する。表1からは、情報隠蔽ク
ラスタリングが得られ、表2からは同時性クラスタリン
グが得られる。階層クラスタ木のレベルにおいて末端に
近く位置するクラスタ、即ち、クラスタリング手続きの
過程で早期に形成されたものを「強いクラスタ」と呼
び、逆に、木の根に近いクラスタを「弱いクラスタ」と
呼ぶものとする。
【0050】まず、情報隠蔽クラスタリングについて説
明する。情報隠蔽クラスタリングでは表1にあるエンテ
ィティ/属性の組合せから、モジュール内部に出現する
大域変数や関数呼出し等の外部参照という事象の分布を
最小限にする効果を反映した、モジュールの階層的なク
ラスタの構成が得られる。
【0051】モジュール呼出し(マクロ同様)を隠蔽す
るクラスタは、例えば、それはある特定の外部ライブラ
リを呼出しているモジュールの集まりであったり、ま
た、共通するモジュール呼出しが多いほど、モジュール
の集まりは機能的に類似する可能性が高い等の特徴を有
している。
【0052】大域変数の出現の事象を隠蔽したクラスタ
は、外部カップリングと呼ばれるモジュール間のカップ
リングを持つモジュールの集まりであり、強いクラスタ
では、モジュール同士がより多くの大域変数を共有する
ため、カップリングが高く、モジュール自体の保守性や
変更容易性がよくないと考えられる。
【0053】タイプの情報を隠蔽したクラスタは、情報
コヒージョン(Information cohesion) と呼ばれる、
デザイン上、好ましい特性を有していると云え、強いク
ラスタでは、よりそのクラスタの情報コヒージョンが高
いものとなる。
【0054】次に、同時性クラスタリングについて説明
する。同時性クラスタリングでは表2にあるエンティテ
ィ/属性の組合せから、外部参照同士が同一のモジュー
ルによって共有されるという事象の分布を最小限にする
効果により、外部参照の階層的なクラスタが得られる。
【0055】モジュール内呼出しという外部参照のクラ
スタでは、同一モジュールの中で静的(コード上)に呼
出される事象を共有するモジュール同士がクラスタを構
成している。つまり、そのクラスタ中のモジュールはセ
ットとなって、別のモジュールから同時に呼出される機
会が多い。強いクラスタには、利用頻度が高いというこ
とから、汎用なモジュールが存在している可能性が高
い。クラスタ木の最上位のクラスタは、1つのモジュー
ルだけから呼出されるモジュールの集まりとなってい
る。
【0056】大域変数のクラスタでは、互いに同じモジ
ュールからアクセスされる機会が多い大域変数の集まり
から構成されている。クラスタ木の最上位には、互いに
排他的な大域変数のグループの分割が、それが存在して
いる場合、現れる。強いクラスタの中の大域変数は、互
いにデータ束縛或いは機能的役割等の関連性が強いと考
えられる。
【0057】タイプのクラスタでは、大域変数のクラス
タと同様に、同じモジュールで同時に扱われるタイプ同
士が集まっている。従って、タイプはデータ概念と対応
しているとすると、ある強いクラスタに含まれるタイプ
同士は、それと対応するデータ概念間に強い関連が存在
するといえる。
【0058】G.クラスタ分析の結果の利用 前述した説明では、開発終了したプログラムを対象に分
析を行うことが前提となっている。従って、ここでは、
開発工程が終了した後の、検査工程や保守工程におい
て、分析結果がどのような利用価値を持つかについて説
明する。
【0059】まず、情報隠蔽クラスタリングによるモジ
ュールの階層的なラスタ構成は、1つの大局的なプログ
ラムの構成を表現したものであり、プログラムの理解に
役立つ情報となる。また、これはシステムからサブシス
テムへの分割を示唆することができる。また、様々な種
類のクラスタは、各々デザイン上の意味を解釈すること
ができる。特に、プログラム理解の初期に行う、トップ
ダウン的な理解過程に有意義な情報であると考えられ
る。
【0060】次に、保守によるプログラムの変更がどの
程度のコストを要するか、或いは、リスクを伴うか、と
いう判断材料が与えられる。例えば、あるモジュールを
変更した場合、その変更が及ぼす影響範囲を、そのモジ
ュールが属するクラスタから近接するクラスタへと、ラ
ンク付けして調べることができる。また、カップリング
が強いクラスタ内のモジュールの変更については、より
リスクが高いと推定できる。大域変数やタイプについて
も、それらのクラスタからその変更が及ぼす影響範囲を
把握することができる。
【0061】プログラムの再利用については、充分な数
の部品を獲得するためには既存部品から部品として利用
価値のある候補を抽出する方法が有効と云われている。
そこで、部品候補を的確かつ容易に評価することが重要
となる。モジュール呼出しのクラスタから、部品候補の
汎用性に関する情報が得られ、また、タイプや大域変数
の出現を隠蔽するモジュールのクラスタから、部品候補
の独立性に関する情報が得られる。
【0062】
【発明の効果】請求項1記載の発明によれば、クラスタ
リングの対象となるデータ要素間の距離尺度を2つのエ
ンティティをクラスタ化する前と後との全エントロピー
値の差と定義し、あるエンティティが持つ属性のあるイ
ンスタンスが出現するという事象の出現確率を用いてエ
ンティティ空間全体における各インスタンスのエントロ
ピーを求め、これらのエントロピーの合計から属性自身
のエントロピーを計算した後、対象とする2つのエンテ
ィティをクラスタ化することにより各々のエンティティ
の持つ属性の全エントロピーの減少として前記距離尺度
を求めるようにしたので、情報隠蔽というプログラムの
設計概念と適合したクラスタの生成が可能となる。
【0063】請求項2記載の発明では、クラスタの対象
となるエンティティとしてプログラム内のモジュールを
対象とし、距離を求めるための属性をモジュール呼出
し、外部変数、マクロ、及びメンバを含むタイプの4種
のプログラム要素なる前記モジュール内の外部参照の出
現という事象として、請求項1記載の発明における距離
定義を適用したクラスタ分析を行うようにしたので、ク
ラスタ分析の結果として得られる情報が、情報隠蔽クラ
スタリングによるモジュールの階層的クラスタ構成とな
って、1つの大局的なプログラムの構成を表現したもの
となるため、プログラムの理解に役立つ情報を提供で
き、また、情報隠蔽の効果を反映することで、システム
からサブシステムへの分割を示唆させることもでき、さ
らに、保守によるプログラム変更がどの程度のコストを
要するか、或いは、リスクを伴うか、といった判断材料
をも提供し得るものとなり、モジュール変更においてそ
の変更が及ぼす影響範囲をランク付けて調べる等の対応
がとれるものとなる。
【0064】請求項3記載の発明では、クラスタの対象
となるエンティティとしてモジュール呼出し、外部変
数、マクロ、及びメンバを含むタイプの4種のプログラ
ム要素を対象とし、これらのプログラム要素が外部参照
として出現したモジュールの集まりをそのエンティティ
の属性として定義し、請求項1記載の発明における距離
定義を適用したクラスタ分析を行うようにしたので、ク
ラスタ分析の結果による情報として、モジュール呼出し
のクラスタからは部品候補の汎用性に関する情報が得ら
れ、タイプや大域変数の出現を隠蔽するモジュールのク
ラスタからは部品候補の独立性に関する情報が得られ
る、というように、プログラムの再利用において部品候
補を的確かつ容易に評価するに役立てることができる。
【図面の簡単な説明】
【図1】本発明の一実施例における距離計量例を示す模
式図である。
【図2】HCSによる階層的クラスタ木構造例を示す説
明図である。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年12月28日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0030
【補正方法】変更
【補正内容】
【0030】D.距離の計量 クラスタ分析を行うためには、エンティティの全ての2
組間の距離が数量化される必要がある。そして、この距
離の定義が、クラスタ分析手法の本質となる。情報隠蔽
という概念に基づくクラスタリングでは、エンティティ
は、エンティティ空間における属性のインスタンスの出
現分布の広がりを最小限とするように、クラスタとして
構成することを意図している。属性のインスタンスの分
布の度合いは、エンティティ空間におけるエントロピー
として計算される。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0031
【補正方法】変更
【補正内容】
【0031】まず、あるエンティティにおいてある属性
インスタンスが出現するという事象に対して、その出現
確率を次のように定義する。次式中、atr insiはi番目
の属性インスタンスを示し、ejはj番目のエンティティ
を示し、NumEtyはエンティティの総数を示し、NumA
trInsは属性インスタンスの総数を示し、NumOfOccu
r(atr insi,ej)はエンティティejにおける属性インス
タンスatr insiの出現回数を示す。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0032
【補正方法】変更
【補正内容】
【0032】
数1
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0033
【補正方法】変更
【補正内容】
【0033】ところで、NumOfOccur は、例えば、モ
ジュールP内でモジュールMを何度も呼出しても、モジ
ュールPにおけるモジュールMの出現回数は最大1とし
ている。これは、モジュール間の関連の複雑さに、同一
モジュール内での出現回数は依存しないからである。し
かし、構造体タイプの属性の場合、構造体のメンバは個
々にカウントするため、1以上になることがある。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0034
【補正方法】変更
【補正内容】
【0034】全エンティテイにおける属性インスタンス
のエントロピーは次式のようになる。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0035
【補正方法】変更
【補正内容】
【0035】
数2
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0036
【補正方法】変更
【補正内容】
【0036】最後に、2つのエンティティep,eqの距離
尺度Dは、これらのエンティティep,eqをクラスタ化し
た場合の属性インスタンスの事前エントロピーと事後の
エントロピーの差の逆数により、次式のように求める。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0037
【補正方法】変更
【補正内容】
【0037】
数3

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 クラスタリングの対象となるデータ要素
    間の距離尺度を2つのエンティティをクラスタ化する前
    と後との全エントロピー値の差と定義し、あるエンティ
    ティが持つ属性のあるインスタンスが出現するという事
    象の出現確率を用いてエンティティ空間全体における各
    インスタンスのエントロピーを求め、これらのエントロ
    ピーの合計から属性自身のエントロピーを計算した後、
    対象とする2つのエンティティをクラスタ化することに
    より各々のエンティティの持つ属性の全エントロピーの
    減少として前記距離尺度を求めるようにしたことを特徴
    とするクラスタ分析を用いたプログラム解析方法。
  2. 【請求項2】 クラスタの対象となるエンティティとし
    てプログラム内のモジュールを対象とし、距離を求める
    ための属性をモジュール呼出し、外部変数、マクロ、及
    びメンバを含むタイプの4種のプログラム要素なる前記
    モジュール内の外部参照の出現という事象として、2つ
    のエンティティをクラスタ化する前と後との全エントロ
    ピー値の差をクラスタリングの対象となるデータ要素間
    の距離尺度とする距離定義を適用したクラスタ分析を行
    うようにしたことを特徴とするクラスタ分析を用いたプ
    ログラム解析方法。
  3. 【請求項3】 クラスタの対象となるエンティティとし
    てモジュール呼出し、外部変数、マクロ、及びメンバを
    含むタイプの4種のプログラム要素を対象とし、これら
    のプログラム要素が外部参照として出現したモジュール
    の集まりをそのエンティティの属性として定義し、2つ
    のエンティティをクラスタ化する前と後との全エントロ
    ピー値の差をクラスタリングの対象となるデータ要素間
    の距離尺度とする距離定義を適用したクラスタ分析を行
    うようにしたことを特徴とするクラスタ分析を用いたプ
    ログラム解析方法。
JP5290173A 1993-11-19 1993-11-19 クラスタ分析を用いたプログラム解析方法 Pending JPH07141166A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5290173A JPH07141166A (ja) 1993-11-19 1993-11-19 クラスタ分析を用いたプログラム解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5290173A JPH07141166A (ja) 1993-11-19 1993-11-19 クラスタ分析を用いたプログラム解析方法

Publications (1)

Publication Number Publication Date
JPH07141166A true JPH07141166A (ja) 1995-06-02

Family

ID=17752699

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5290173A Pending JPH07141166A (ja) 1993-11-19 1993-11-19 クラスタ分析を用いたプログラム解析方法

Country Status (1)

Country Link
JP (1) JPH07141166A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003069466A1 (fr) * 2002-02-18 2003-08-21 Japan Science And Technology Agency Système d'évaluation de l'importance d'un composant logiciel
WO2012011145A1 (ja) * 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム
JP2015191566A (ja) * 2014-03-28 2015-11-02 Azapa株式会社 プロセス分類装置およびプロセス分類プログラムおよび記憶媒体
US9519660B2 (en) 2012-11-26 2016-12-13 Ricoh Company, Ltd. Information processing apparatus, clustering method, and recording medium storing clustering program
US11132385B2 (en) 2017-07-21 2021-09-28 Fujitsu Limited Information processing device and information processing method

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003069466A1 (fr) * 2002-02-18 2003-08-21 Japan Science And Technology Agency Système d'évaluation de l'importance d'un composant logiciel
US7627855B2 (en) 2002-02-18 2009-12-01 Japan Science And Technology Agency Software component importance evaluation system
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
JP2012203777A (ja) * 2011-03-28 2012-10-22 Hitachi Ltd ソフトウェア部品作成支援装置および方法
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム
US9519660B2 (en) 2012-11-26 2016-12-13 Ricoh Company, Ltd. Information processing apparatus, clustering method, and recording medium storing clustering program
JP2015191566A (ja) * 2014-03-28 2015-11-02 Azapa株式会社 プロセス分類装置およびプロセス分類プログラムおよび記憶媒体
US11132385B2 (en) 2017-07-21 2021-09-28 Fujitsu Limited Information processing device and information processing method

Similar Documents

Publication Publication Date Title
Yau et al. Ripple effect analysis of software maintenance
Whitner et al. Guidelines for selecting and using simulation model verification techniques
e Abreu et al. Candidate metrics for object-oriented software within a taxonomy framework
Puik et al. Assessment of reconfiguration schemes for Reconfigurable Manufacturing Systems based on resources and lead time
Minkiewicz Measuring object oriented software with predictive object points
CN107967204A (zh) 线下压测的方法、***及终端设备
Boehm et al. Ada COCOMO and the Ada process model
CN110069414A (zh) 回归测试方法及***
JPH07141166A (ja) クラスタ分析を用いたプログラム解析方法
CN111475137A (zh) 一种软件开发需求预测的方法、***及设备
Reese et al. Software reuse and simulation
Castellanos et al. A model-driven architectural design method for big data analytics applications
KR20070058943A (ko) 소프트웨어 아키텍처 평가 장치 및 방법
Kumar et al. Unified cohesion measures for aspect-oriented systems
Golpayegani et al. Towards process lines for agent-oriented requirements engineering
Basili et al. Reusing existing software
Graham Software testing tools: A new classification scheme
Forte Tools fair: Out of the lab, onto the shelf
CN109358855A (zh) 一种用于编程的前端模拟数据敏捷开发方法及电子设备
Kamma et al. High productivity programmers use effective task processes in unit-testing
Alfonzo et al. Quality measurement model for analysis and design tools based on FLOSS
Rabani et al. Software cognitive complexity metrics for OO design: A survey
Page et al. Incorporating support for model execution within the condition specification
Saghari et al. Human Judgment Simulation and KDD Techniques in Automotive Platform Benchmark Selection
Letras et al. Decision tree-based throughput estimation to accelerate design space exploration for multi-core applications