JP2017187980A - グラフクラスタリング用プログラム及びグラフクラスタリング方法 - Google Patents

グラフクラスタリング用プログラム及びグラフクラスタリング方法 Download PDF

Info

Publication number
JP2017187980A
JP2017187980A JP2016077358A JP2016077358A JP2017187980A JP 2017187980 A JP2017187980 A JP 2017187980A JP 2016077358 A JP2016077358 A JP 2016077358A JP 2016077358 A JP2016077358 A JP 2016077358A JP 2017187980 A JP2017187980 A JP 2017187980A
Authority
JP
Japan
Prior art keywords
output
node
degree
edges
edge
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
JP2016077358A
Other languages
English (en)
Inventor
由紀子 阿部
Yukiko Abe
由紀子 阿部
裕二 玉木
Yuji Tamaki
裕二 玉木
美裕 佐藤
Yoshihiro Sato
美裕 佐藤
雅樹 岩越
Masaki Iwakoshi
雅樹 岩越
航介 渡邉
Kosuke Watanabe
航介 渡邉
俊介 荒川
Shunsuke Arakawa
俊介 荒川
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.)
Toshiba Corp
Toyota Motor Corp
Original Assignee
Toshiba Corp
Toyota Motor 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 Toshiba Corp, Toyota Motor Corp filed Critical Toshiba Corp
Priority to JP2016077358A priority Critical patent/JP2017187980A/ja
Publication of JP2017187980A publication Critical patent/JP2017187980A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ソフトウェアの理解を助けるグラフクラスタリング用プログラム及びグラフクラスタリング方法を提供する。【解決手段】グラフクラスタリング用プログラムは、ソフトウエアの設計要素をノードとし、前記設計要素間の関係をエッジとしたグラフにおいて、前記エッジ間の関連の度合を示す関連度を数値として計算するステップと、前記関連度に基づき、複数の前記ノードを複数の集合に分類するステップと、をコンピュータにおいて実行可能に構成される。【選択図】図1A

Description

以下に記載の実施形態は、グラフクラスタリング用プログラム及びグラフクラスタリング方法に関する。
ソフトウェアの派生開発や保守を行う上で、既存のソフトウェアを理解することが不可欠である。ソフトウェアの理解のために、ソフトウェアの何らかの構成単位とその間の依存関係をグラフ形式で可視化して、グラフ上の構成単位をいくつかのグループに分類・集約して、規模を縮小する手法が開発されている。この手法は一般にクラスタリングと呼ばれ、クラスタリングを行うことにより、より理解のしやすいグラフを得ることができる。
しかし、単に数学的手法だけでクラスタリングを行うと、個々のグループが意味のあるまとまりになるとは限らない。その場合、そのようなクラスタリングがされたグラフは、ソフトウェアを理解するためのものとして適切とは言えない。
特開2013−156697号公報 国際公開第2009/107412号 特開2013−148987号公報
以下に記載の実施形態は、複数のノードを適切にクラスタリングして、ソフトウエアの全体像を把握することを容易にするグラフクラスタリング装置及びグラフクラスタリング方法を提供するものである。
一の実施形態に係るグラフクラスタリング用プログラムは、ソフトウエアの設計要素をノードとし、前記設計要素間の関係をエッジとしたグラフにおいて、前記エッジ間の関連の度合を示す関連度を数値として計算するステップと、前記エッジ数値化部により得られた関連度に基づき、複数の前記ノードを複数の集合に分類するステップと、をコンピュータにおいて実行可能に構成されている。
また、一の実施形態に係るグラフクラスタリング方法は、ソフトウエアの設計要素をノードとし、前記設計要素間の関係をエッジとしたグラフにおいて、前記エッジ間の関連の度合を示す関連度を数値として計算するステップと、前記エッジ数値化部により得られた関連度に基づき、複数の前記ノードを複数の集合に分類するステップとを備える。
第1の実施形態に係るグラフクラスタリング装置の構成の概略を示す機能ブロック図である。 図1Aのクラスタリング装置の構成を示すブロック図である。 第1の実施形態に係るグラフクラスタリング方法の概要を示すフローチャートである。 第1の実施形態に係るグラフクラスタリング方法の概要を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示すフローチャートである。 図4Aのフローチャートの説明を補足する概念図である。 第1の実施形態に係るグラフの一例を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示す図である。 第1の実施形態に係るエッジ数値化部の動作を示す図である。 第2の実施形態に係るグラフクラスタリング装置及びプログラムを説明する概念図である。 第3の実施形態に係るグラフクラスタリング装置及びプログラムを説明する概念図である。
以下、図面を参照して実施形態について説明する。実施形態の説明の前に、本実施形態で用いられる各種用語の意味を以下に説明する。
「クラスタリング」とは、ソフトウェアにおける設計要素を例えば「ノード」として表現し、更に「ノード」間のつながりを例えば「エッジ」として表現した設計要素関係グラフ(以下、単に「グラフ」と称することもある)を生成又は取得した後、そのグラフに含まれる複数のノードを、所定の手法に従って分類することをいう。設計要素関係グラフに関しては、後ほど図を用いて例示して説明する。
「設計要素」とは、ソフトウェアを構成する一単位となる要素のことであり、例えばソースコード、データベース、コンポーネント、モジュール、関数、ファイル等を含む。すなわち、ソフトウェアは、設計要素の集合である。
「出力エッジ」とは、あるノードから出て他のノードに向かうエッジのことである。また、「入力エッジ」とは、あるノードに入っていくエッジのことである。
「ハブノード」とは、後述するように、そこから出ていく出力エッジの数が所定数以上であるノードであり、具体的には、閾値tが与えられた時、出力エッジ数がt以上であるノードをいう。
「終点ノード」とは、ハブノードの出力エッジの先にあるノードである。
ノードの「出力確率」とは、あるノードから延びる出力エッジの数がN本である場合、当該出力エッジの数Nの逆数(1/N)で表される。
ノードの「入力確率」とは、あるノードに向かう入力エッジの数がM本である場合、当該入力エッジの数Mの逆数(1/M)で表される。
[第1の実施形態]
図1A、図1B、及び図2を参照して、第1の実施形態に係るグラフクラスタリング装置、プログラム、及びグラフクラスタリング方法の概要について説明する。図1Aは、本実施形態に係るグラフクラスタリング装置100の構成を示す機能ブロック図である。図1に示すように、グラフクラスタリング装置100は、設計要素関係グラフ生成部101、エッジ数値化部102、設計要素関係グラフ抽象化部103を備える。このグラフクラスタリング装置100は、図1Bに示すように、一般的なコンピュータ11と、コンピュータプログラムを格納した記録媒体12により実現され得る。すなわち、このグラフクラスタリング装置100の機能は、コンピュータプログラムの形式で提供されてもよい。また、コンピュータプログラムは、記録媒体12に格納される代りに、図示しない通信手段によりコンピュータ11にダウンロードされるものであってもよい。
設計要素関係グラフ生成部101は、ソースコード104を処理して設計要素関係グラフ105を生成するように構成される。なお、設計要素関係グラフ105が外部から取得可能な状況においては、この設計要素関係グラフ生成部101は省略することも可能である。
エッジ数値化部102は、設計要素関係グラフ105を処理し、ハブノードから出力される出力エッジに重みづけの数値化を行い、重み付けされた設計要素関係グラフ106を得るように構成される。ここでいう「重み付け」とは、出力エッジ同士の関連度を示す指標であり、数値により表される。
設計要素関係グラフ抽象化部103は、重み付けされた設計要素関係グラフ106を基にクラスタリングを行い、クラスタリングがなされた設計要素関係グラフ107を得るように構成される。
図2は、本実施形態に係るグラフクラスタリング装置100の動作を示すフローチャートである。図3は、図2のフローチャートの内容を補足する概念図である。まず、設計要素関係グラフ生成部101は、例えば公知の手法により、ソースコード104から設計要素間の関係を抽出して、設計要素関係グラフ105を生成する(ステップS11)。
次に、エッジ数値化部102は、設計要素関係グラフ105の中から所定の閾値以上の出力エッジを有するハブノードHUBを検出する。そして、そのハブノードHUBから出力される出力エッジの重み付けのための計算を行い、数値化する(ステップS12)。これにより重み付けされた設計要素関係グラフ106を得る。各出力エッジには、図3に示すように、例えば1.2、1.4、2.0、1.5、1.0、0.8のような数値が重み付けの結果として与えられる。この出力エッジの重み付けの方法の詳細については、後述する。
次に、設計要素関係グラフ抽象化部(分類部)103は、エッジ数値化部102により算出された出力エッジの重み付けの数値に従い、クラスタリングを行う(ステップS13)。この結果、図3に示すように、クラスタリングを行った設計要素関係グラフ107が得られる。換言すれば、設計要素関係グラフ抽象化部103は、エッジ数値化部102が算出した数値に従い複数のノードを分類し、設計要素関係グラフ106を抽象化して、クラスタリングされた設計要素関係グラフ107を得る。
このようなクラスタリングがなされた設計要素関係グラフ107は、出力エッジ間の関連度に基づいた分類がなされているので、ユーザはソフトウエアの構造を理解し易い。
次に、図4A及び図4Bを参照して、本実施形態に係るエッジ数値化部102における出力エッジの重み付けの方法について説明する。図4Aは、エッジ数値化部102における動作を示すフローチャートである。また、図4Bは、図4Aのフローチャートの説明を補足する模式図である。
まず、エッジ数値化部102は、出力エッジ数が閾値t以上のノードを検出し、その検出されたノードをハブノードと判定する。このとき、各ハブノードをv(i=1,2,・・・,n)とし、ハブノードの集合を{v,v,・・・,v}とする(ステップS111)。閾値tは、任意の自然数であり、適宜設定可能な値である。
次に、エッジ数値化部102は、ハブノードvの各々から出力する出力エッジe(j=1,2,・・・,m)の群を、それらの行き先の情報等に基づいてグループ分けすることで、結託するエッジ群を検出する(ステップS112)。グループ分けに関しては、それぞれの結託度合が最大となるようなグループ分けが選択される。グループ分けの手法及び結託度合の判定については後述する。
そして、ハブノードvの各々から出力する出力エッジe(j=1,2,・・・,)の関係を数値化する(ステップS113)。出力エッジeの関係を数値化する方法については、後述する。
次に、エッジ数値化部102は、ハブノードHUB、出力エッジe、及び終点ノードNEに関する各種情報を使用して、出力エッジeが表す関係(数値)を調整する(ステップS114)。この数値の調整の詳細については、後述する。
以上の動作が、検出された全てのハブノードvについて行われる。
図5は、本実施形態における設計要素関係グラフ105の一例を示す図である。本実施形態においては、図5に示した設計要素関係グラフ105において、ハブノードvを対象として数値化を行う手順について説明する。この図5では、説明の簡単化のため、1つのハブノードvを有するグラフを例として説明するが、多数のハブノードが存在するグラフにおいても、以下の説明と同様の処理を実行することができる。
図5において、ハブノードvから出る6本の出力エッジを、出力エッジe〜eとする。また、出力エッジe〜eの各々の先にあるノードをノードA〜Fとする。ノードA〜Fからは、更にエッジが出力されており、図5において矩形で示す他のノードに接続されている。
図6は、設計要素関係グラフ105において、図4AのステップS112に従い、ハブノードvの出力エッジe〜eに対しグループ分けを行った結果を示す模式図である。図6の例においては、出力エッジe〜eは3つのグループに分けられている。ここでは、3つのグループを、それぞれ第1グループ、第2グループ、第3グループと称する。
後述するように、本実施形態における出力エッジeのグループ分けは、出力エッジeの組み合わせすべてについて行われる。図6の例は、複数通りのグループ分けの方法のうちの1つを図示したものである。そして、その全てのグループ分けの各々について、各グループに含まれる出力エッジの結託度合を計算して、最も結託度合の高いグループ分け(組み合わせ)を最終的に採用する。結託度合の判定は、後述するように、出力エッジe〜eの行先に位置する各種ノードNgの状態により判定される。
同じグループに含まれる出力エッジeを、結託するエッジ群と呼ぶ。このようなグループ分けは、一例として以下の手順(ステップ1〜ステップ4)で行われる。
(ステップ1)
出力エッジe(j=1,2・・・)のグループ分けの仕方を、出力エッジeの全てのグループ分けの仕方(組み合わせ)の中から一つ選び、グループ分けを行う。出力エッジeのグループ分けの仕方の数は、出力エッジのeの数、グループの数によって異なる。図6は、そのグループ分けの仕方のうちの1つである。
(ステップ2)
各グループに対して結託度合を計算する。
(ステップ3)
各グループについて結託度合が計算されたら、その和をとる。
(ステップ4)
すべての出力エッジeのグループ分けの仕方について、上記ステップ2、3による結託度合及び和の数値化を行い、結託度合の和が最大となる組み合わせを最適なグループ分けとして採用する。
ステップ2について更に詳細に説明する。ステップ2の結託度合の計算は、具体的には、次のステップ2−1〜2−4により行われる。
(ステップ2−1)
同一グループ内の全ての出力エッジから先を辿って合流するノード(合流ノード)を特定する。合流ノードは、上述した終点ノードの一態様である。
例えば、図7に示す例では、合流ノードM1とM2が特定されたものとする。
(ステップ2−2)
出力エッジe(j=1、2・・・)の合流ノードM1、M2への到達確率の積を求め、この到達確率の積を合流確率として算出する。ここで、「到達確率」とは、ある出力エッジeが、注目ノードに到達する確率のことであり、この確率は、途中の経路における経由ノードの有無や経由ノードにおける出力エッジの数等によって変化する。合流確率は、結託するエッジ群を見つけるための指標として用いられる。
(ステップ2−3)
合流ノードM1、M2の各々における合流確率の和を取り、この和を総合流確率として算出する。
(ステップ2−4)
総合流確率をグループ規模補正値で補正し、結託度合を算出する。
図8を参照して、ステップ2−2での到達確率の積の計算方法について、具体例を用いて説明する。ここでは、一例として、合流ノードM1に着目し、ハブノードvからノードA〜Cに向かう出力エッジe〜eを1つの計算対象グループとした場合を説明する。
合流ノードM1において、出力エッジe〜eの各々からの到達確率の積を求める。出力エッジe〜eの各々から合流ノードM1への到達確率は、出力エッジe〜eの各々が入力されるノードA〜Cにおける出力エッジの数によって決定される。また、ノードA〜Cと合流ノードM1との間に別のノード(経由ノードP)がある場合、出力エッジe〜eの各々から合流ノードM1又はM2への到達確率は、出力エッジe〜eの各々が入力されるノードA〜Cにおける出力エッジの数と、当該経由ノードにおける出力エッジの数との積により決定される。
図示の例の場合、ノードAから合流ノードM1への到達確率は、ノードAの出力エッジ数が2であるので、到達確率は1/2である。
また、ノードBから合流ノードM1への到達確率は、ノードBの出力エッジ数(2)の逆数(1/2)と経由ノードPの出力エッジ数(4)の逆数(1/4)との積であるので、1/2×1/4=1/8と算出される。
同様に、ノードCから合流ノードM1への到達確率は、ノードCの出力エッジ数(2)の逆数(1/2)と、経由ノードPの出力エッジ数(4)の逆数(1/4)との積であるので、1/2×1/4=1/8と算出される。
よって、合流ノードM1における出力エッジe〜eの到達確率の積(合流確率)は、
Figure 2017187980
と算出され得る。
図7の合流ノードM2においても同様にして合流確率を計算すると、ノードA〜Cから合流ノードM2への到達確率は各々1/2であり、両者の間に経由ノードは存在しないため、合流確率は1/2×1/2×1/2=1/8と算出され得る。
次に、ステップ2−3において、各合流ノードM1及びM2における合流確率の和を求め、総合流確率を得る。上記の例では、合流ノードM1及びM2の合流確率の和である総合流確率は、
Figure 2017187980
と算出され得る。
次に、ステップ2−4において、総合流確率をグループ規模補正値で補正する方法の詳細につき、以下に説明する。グループ規模補正値は、2を計算対象グループに含まれるノードの数から1を減じた値により乗じた値として算出され得る。このグループ規模補正値を、総合流確率に掛けることで補正が行われる。すなわち、このステップ2−4では、計算された総合流確率(結託度合)を、各グループの規模を反映したグループ規模補正値により補正するものである。
具体的に、上記の例においては、
Figure 2017187980
となり、この値がノードA、B、Cの結託度合を表す数値となる。この補正の方法はあくまでも一例にすぎず、補正方法は適宜変更可能である。上記の例では、計算対象グループに含まれるノードの数が多いほど、結託度合を高く見積もる必要があるとの観点から[数3]のような計算式を用いているが、同様の趣旨の下、他の計算式を採用可能であることは言うまでもない。
図7及び図8においては、出力エッジe〜e(ノードA〜C)を1つのグループと仮定した場合の結託度合を計算する方法について説明したが、上記ステップ1〜4をすべてのグループ分けのパターンについて行い、最も結託度合の高いグループ分けの仕方を採用することで、結果として図6に示すようなグループ分けができる。
なお、図4AのステップS112において結託するエッジ群を検出する際、全てのグループ分けのパターンについて結託度合を計算する方法について述べたが、例えば、あるグループ分けの計算の過程において、明らかに結託度合が小さいと判断された場合には計算を中断し、他のパターンについて計算を開始するよう構成されていてもよい。本実施形態においては、全てのグループ分けのパターンについて結託度合を計算することが好ましいが、上述のように、一部の計算を省略しても構わない。例えば、グラフ中で位置が大きく離れている出力エッジ同士は、結託度が明らかに小さいものとして、同一のグループに入れたグループ分けを行わないようにすることも可能である。
このようにして出力エッジeのグループ分けが実行されると、各出力エッジの数値化(図4AのS113)が実行される。図9は、図4AのステップS113において、ハブノードHUBと、ノードA〜Fとの関係(エッジ)の数値化を行った結果の一例を示す図である。図9に示す例においては、出力エッジe〜eは、ハブノードHUBから出て、それぞれノードA〜Fに到達する。このため、この図示の例において出力エッジe〜eに与えられる数値は、全て1/18である。
図10は、図4AのステップS114において、ハブノードHUBと、終点ノードA〜Fとの関係を示す数値を調整(補正)する方法を示す図である。一例として、図10に示すように、出力エッジe〜eの数値の各々に、当該出力エッジが属するグループの要素数(グループに含まれる出力エッジの数)を掛けることで、数値を調整することができる。第1グループにおいては、要素数は1であるので、第1グループに含まれる出力エッジeの重みは、1/18×1=1/18≒0.06である。また、第2グループにおいては、要素数は3であるので、第2グループに含まれる出力エッジe〜eの重みは、1/18×3=1/6≒0.17である。第3グループにおいては、要素数は2であるので、第3グループに含まれる出力エッジe〜eの重みは、1/18×2=1/9≒0.11である。
なお、この図10の例では、各グループの要素数に基づく補正を行ったが、補正の方法はこれだけに限定されない。例えば、出力エッジe〜eが向かうノードにおける入力エッジの数なども考慮して補正を行うことも可能である。
以上の調整により、ハブノードHUBの出力エッジe〜eに対する重み付けの数値化が完了する。この例ではハブノードHUBと最も関係の強いグループは第2グループであることが分かる。この調整の結果に従って、重み付けがなされた設計要素関係グラフ106が得られる。設計要素関係グラフ抽象化部103は、重み付けがなされた設計要素関係グラフ106を基にクラスタリングを行う。このとき、グラフ数値化部102における関係の数値化により、ハブノードHUBを第2グループと同じクラスタに含めてクラスタリングを行うことができる。このように、関係の強さを数値化して、ノード間で数値を比較することで、ハブノードと関係の強いノードとを同じクラスタに分けることができるようになる。
このように、第1の実施形態に係るグラフクラスタリング装置によれば、グラフにおける各ノード間の関係の強さを、ソフトウェアの構造ならではの特徴を考慮して数値化し、クラスタリングすることで、各ノードが意味的に関係の深いノードと同じクラスタに分類されるようになるので、意味のあるまとまりを得ることができる。また、本実施形態を適用することで改善されたグラフにより、ソフトウェアの全体像の把握が容易になり、ユーザのソフトウエア構造の一層正確な理解を助けることが可能になる。
[第2の実施形態]
次に、図11を参照して、第2の実施形態に係るグラフクラスタリング装置、プログラム、及びグラフクラスタリング方法の概要について説明する。
この第2の実施形態の装置の全体構成、及び基本的な動作手順は、第1の実施形態(図1〜図4B)と同様である。ただし、この実施形態では、ハブノードHUBと終点ノードXとの関係の強さWを判断し、その判断結果に従って重み付けの数値を変更する点において、第1の実施形態と異なっている。
図11に示すパターン1においては、終点ノードX1の入力エッジの数によりハブノードHUB1〜4と終点ノードXとの関係の強さWを判断する場合を示している。パターン1の左側において、終点ノードXに入力される入力エッジ数は4である。一方、パターン1の右側において、終点ノードXに入力される入力エッジ数は1である。このとき、ハブノードHUBと終点ノードXとの関係の強さは、
Figure 2017187980
で表わされ、パターン1の左側の図においては関係の強さW1は1/4、右側においては関係の強さW2は1となる。これらの大小関係を比較すると、パターン1においては、左側の図に比べ、右側の図における方が、ハブノードHUB1と終点ノードX1との関係が強い事になる。この関係の強さWが、出力エッジの数値化において反映される。
図11のパターン2においては、ハブノードHUB1の出力エッジの数によりハブノードHUB1と終点ノードX1〜X4との関係の強さを判断する場合を示している。パターン2の左側において、ハブノードHUB1の出力エッジ数は4であり、パターン2の右側において、ハブノードHUB1の出力エッジ数は1である。このとき、ハブノードHUB1と終点ノードX1〜X4との関係の強さは、
Figure 2017187980
で表され、左側の図においては1/4、右側の図においては1となる。これらの大小関係を比較すると、値の大きい右側の例において、ハブノードHUB1と終点ノードX1との関係が強い事になる。
このように、この第2の実施形態では、ハブノードと終点ノードの関係の強さが、終点ノードの入力エッジの数、ハブノードの出力エッジの数で決まり、この関係の強さが出力エッジの数値化に反映される。より具体的には、関係の強さは、上記の終点ノードXの入力エッジ数の逆数と、ハブノードの出力エッジ数の逆数との積で表され、下記の数式6で定められる。
Figure 2017187980
[第3の実施形態]
次に、図12を参照して、第3の実施形態に係るグラフクラスタリング装置、プログラム、及びグラフクラスタリング方法の概要について説明する。
この第3の実施形態の装置の全体構成、及び基本的な動作手順は、第1の実施形態(図1〜図4B)と同様である。ただし、この第3の実施形態では、ハブノードHUBと終点ノードXとの関係の強さWを判断し、その判断結果に従って重み付けの数値を変更する点において、第1の実施形態と異なっている。
図12は、ハブノードと終点ノードの関係の数値化の具体例を示している。図12に示すように、ハブノードHUBと終点ノードA〜C、Xとが出力エッジにより接続され、ハブノードHUB’と終点ノードD、E、Xとが出力エッジにより接続されている。すなわち、終点ノードXは、ハブノードHUB、HUB’と接続されている。
図12の例において、ハブノードHUBの出力エッジ数は4であるので、ハブノードHUBと終点ノードとの間の出力エッジの重みは全て1/4である。また、ハブノードHUB’の出力エッジ数は3であるので、これら出力エッジの重みはすべて1/3である。
終点ノードXは、ハブノードHUBだけでなく、他のハブノードHUB’とも接続されている。このため、ハブノードHUB’からの出力エッジの重みも終点ノードXに与えられる。したがって、終点ノードXは、終点ノードA〜Cと比較して、ハブノードHUBとの関係がより弱いことになる。同様に、終点ノードXは、終点ノードD、Eと比較して、ハブノードHUB’との関係がより弱いことになる。第3の実施形態では、このような重みの関係を出力エッジの数値化に反映させることができる。
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100 グラフクラスタリング装置
101 設計要素関係グラフ生成部
102 エッジ数値化部
103 設計要素関係グラフ抽象化部
104 ソースコード
105 設計要素関係グラフ
106 重み付けされた設計要素関係グラフ
107 設計要素関係グラフ

Claims (11)

  1. ソフトウエアの設計要素をノードとし、前記設計要素間の関係をエッジとしたグラフにおいて、前記エッジ間の関連の度合を示す関連度を数値として計算するステップと、
    前記関連度に基づき、複数の前記ノードを複数の集合に分類するステップと、
    をコンピュータにおいて実行可能に構成されたグラフクラスタリング用プログラム。
  2. 所定の値以上の出力エッジ数を持つ前記ノードをハブノードとし、前記ハブノードから出力される前記エッジを出力エッジとした場合、前記ハブノードから出力される前記出力エッジの各々について前記関連度を計算し、
    前記出力エッジの前記関連度に従い、前記ノードを分類する、請求項1記載のグラフクラスタリング用プログラム。
  3. 前記関連度の計算は、前記出力エッジの行先の情報に基づき実行される、請求項1記載のグラフクラスタリング用プログラム。
  4. 前記ハブノードの前記出力エッジをグループ分けし、前記グループの各々において、前記グループの各々に含まれる前記出力エッジの結託度合を判定する、請求項2記載のグラフクラスタリング用プログラム。
  5. 前記グループの各々について判定された結託度合を、前記グループの規模に応じて補正する、請求項4記載のグラフクラスタリング用プログラム。
  6. 前記ハブノードから出力される前記出力エッジの情報と、前記出力エッジの行先であるノードに入るエッジの情報とに基づいて、前記結託度合を判定する、請求項4記載のグラフクラスタリング用プログラム。
  7. 前記グループの各々における前記結託度合の判定は、
    前記グループに含まれる前記出力エッジが合流する合流ノードを特定し、
    前記出力エッジの各々から前記合流ノードへの到達確率を求め、更にその到達確率の積としての合流確率を求め、
    前記合流ノードの各々における合流確率の和としての総合流確率を求め、
    前記総合流確率に従い、前記結託度合を計算する、請求項4乃至6のいずれか1項に記載のグラフクラスタリング用プログラム。
  8. 前記グループ分けは、複数の前記出力エッジについて複数通り行い、最も大きい前記結託度合が得られるグループ分けの仕方を採用する、請求項4乃至6のいずれか1項に記載のグラフクラスタリング用プログラム。
  9. ソフトウエアの設計要素をノードとし、前記設計要素間の関係をエッジとしたグラフから数値化を実施すべきエッジを検出して、前記エッジの各々に対応する数値を計算するステップと、
    前記数値に基づき、複数の前記ノードを複数の集合に分類するステップと
    を備えたグラフクラスタリング方法。
  10. 所定の値以上の出力エッジ数を持つ前記ノードをハブノードとし、前記ハブノードから出力される前記エッジを出力エッジとした場合、前記ハブノードから出力される前記出力エッジの各々について前記関連度を計算し、
    前記出力エッジの前記関連度に従い、前記ノードを分類する、請求項9記載のグラフクラスタリング方法。
  11. 前記関連度の計算は、前記出力エッジの行先の情報に基づき実行される、請求項9記載のグラフクラスタリング方法。
JP2016077358A 2016-04-07 2016-04-07 グラフクラスタリング用プログラム及びグラフクラスタリング方法 Pending JP2017187980A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016077358A JP2017187980A (ja) 2016-04-07 2016-04-07 グラフクラスタリング用プログラム及びグラフクラスタリング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016077358A JP2017187980A (ja) 2016-04-07 2016-04-07 グラフクラスタリング用プログラム及びグラフクラスタリング方法

Publications (1)

Publication Number Publication Date
JP2017187980A true JP2017187980A (ja) 2017-10-12

Family

ID=60046439

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016077358A Pending JP2017187980A (ja) 2016-04-07 2016-04-07 グラフクラスタリング用プログラム及びグラフクラスタリング方法

Country Status (1)

Country Link
JP (1) JP2017187980A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159934A (ja) * 2018-03-14 2019-09-19 富士通株式会社 クラスタリングプログラム、クラスタリング方法およびクラスタリング装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
楠田 泰三、川口 真司、松下 誠、井上 克郎: "履歴情報を用いた同一ユースケース実装クラス群抽出法の提案", レクチャーノート/ソフトウェア学31 ソフトウェア工学の基礎XII, JPN6019035237, 30 November 2005 (2005-11-30), JP, pages 97 - 102, ISSN: 0004229559 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159934A (ja) * 2018-03-14 2019-09-19 富士通株式会社 クラスタリングプログラム、クラスタリング方法およびクラスタリング装置
JP7006403B2 (ja) 2018-03-14 2022-01-24 富士通株式会社 クラスタリングプログラム、クラスタリング方法およびクラスタリング装置

Similar Documents

Publication Publication Date Title
WO2018016608A1 (ja) ニューラルネットワーク装置、車両制御システム、分解処理装置、及びプログラム
Wahono et al. Metaheuristic optimization based feature selection for software defect prediction.
JP5899272B2 (ja) 算出装置、算出方法及び算出プログラム
JP2018200531A (ja) 教師データ生成装置、教師データ生成方法、教師データ生成プログラム、及び物体検出システム
US20120243779A1 (en) Recognition device, recognition method, and computer program product
JP2018022473A (ja) 学習装置、識別装置、学習識別システム、及び、プログラム
WO2020028762A1 (en) Neural network orchestration
JP2019197355A (ja) クラスタリング装置、クラスタリング方法およびプログラム
US20180260737A1 (en) Information processing device, information processing method, and computer-readable medium
JP7095599B2 (ja) 辞書学習装置、辞書学習方法、データ認識方法およびコンピュータプログラム
EP2953062A1 (en) Learning method, image processing device and learning program
JP2019040335A (ja) 教師データを生成する方法、学習済みモデルを生成する方法、学習済みモデル、コンピュータおよびプログラム
Kwon et al. Multi-scale speaker embedding-based graph attention networks for speaker diarisation
Spandana et al. An Efficient Genetic Algorithm based Auto ML Approach for Classification and Regression
JP2021051589A5 (ja)
JP2017187980A (ja) グラフクラスタリング用プログラム及びグラフクラスタリング方法
US20210342707A1 (en) Data-driven techniques for model ensembles
WO2021220342A1 (ja) 物体認識装置、物体認識方法、学習装置、学習方法、及び、記録媒体
JP4997524B2 (ja) 多変数決定木構築システム、多変数決定木構築方法および多変数決定木を構築するためのプログラム
WO2020183807A1 (ja) 情報処理方法、および、情報処理システム
US20220405534A1 (en) Learning apparatus, information integration system, learning method, and recording medium
JP6365010B2 (ja) 学習プログラム及び情報処理装置
CN106598585A (zh) 云环境下计分驱动的服务快速匹配和聚合方法
Lustosa Filho et al. An analysis of diversity measures for the dynamic design of ensemble of classifiers
WO2019235370A1 (ja) 学習装置、予測装置、方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200310