JP2007304685A - ソフトウェア部品の検索システム及びプログラム - Google Patents

ソフトウェア部品の検索システム及びプログラム Download PDF

Info

Publication number
JP2007304685A
JP2007304685A JP2006130023A JP2006130023A JP2007304685A JP 2007304685 A JP2007304685 A JP 2007304685A JP 2006130023 A JP2006130023 A JP 2006130023A JP 2006130023 A JP2006130023 A JP 2006130023A JP 2007304685 A JP2007304685 A JP 2007304685A
Authority
JP
Japan
Prior art keywords
range
software component
software
component
search
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
JP2006130023A
Other languages
English (en)
Inventor
Masaru Takeuchi
勝 竹内
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006130023A priority Critical patent/JP2007304685A/ja
Priority to US11/745,614 priority patent/US20070299835A1/en
Publication of JP2007304685A publication Critical patent/JP2007304685A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】複数のソフトウェア部品を組み合わせてアプリケーションを生成する際に、ソフトウェア部品の接続の可否を迅速かつ高精度で調査する。
【解決手段】複数のソフトウェア部品の入力および出力が定められている値域を要素とする集合を格納したソフトウェア部品リポジトリ303と、ソフトウェア部品の出力値域集合の和集合と、入力値域と、前記ソフトウェア部品の識別子とを管理する高階グラフを含む値域集合高階グラフデータベース301と、高階グラフから抽出するソフトウェア部品の値域を受け付けて、受け付けた値域に基づいて、前記値域を出力とするソフトウェア部品の並列の組み合わせ、またはひとつを高階グラフの出力値域集合の和集合から検索するコンポ組合せ検索機能2303とを備える。
【選択図】図1

Description

本発明は、本発明はソフトウェア部品を用いてアプリケーションを合成する手法及びシステムに関する。
近年、ソフトウェアの生産効率を向上させるため、複数のソフトウェアコンポーネント(ソフトウェア部品)を組み合わせて、新たな機能を提供するアプリケーション(プログラム)を自動的に生成する手法が検討されている(例えば、特許文献1、非特許文献1)。
上記特許文献1の従来技術はソフトウェア部品を機能別に分類し、この分類を利用して遺伝的アルゴリズムによるアプリケーション合成の効率化を図るものである。また、上記非特許文献1の従来技術は、遺伝的アルゴリズムを用いて画像認識プログラムを自動的に合成する技術が開示されている。
特開平10−149280号 「認識機構学習システムMIRACLE-IVにおける画像処理戦略の学習」、坂上 勝彦 他共著、電子情報通信学会技術研究報告、1988年6月16日、PRU88-16〜20,21〜29 Vol.88 No.77,78PRU-88-20、第33頁〜第40頁
複数のソフトウェア部品を組み合わせて結合し、新たなアプリケーションを構成する場合、接続するソフトウェア部品の入出力がマッチする必要がある。2つのソフトウェア部品の接続する場合は、ソフトウェア部品のうち一方の入力と他方の出力が一致するかを検証することが必要となる。そして、1つのソフトウェア部品が与えられたとき、複数のソフトウェア部品から、与えられたソフトウェア部品と接続可能な単一のソフトウェア部品を検索する場合は、それらの出力全て(値域)について接続の可否を調べる必要がある。
しかしながら、前記従来例では、単独のソフトウェア部品と単独のソフトウェア部品を結合する場合の入出力の値域の組み合せに関しては検討されているが、ソフトウェア部品の並列の組合せとソフトウェア部品の並列の組合せを結合する場合のソフトウェア部品の入出力の値域の組み合せに関しては検討されておらず、得られた組み合わせで生成したアプリケーション(プログラム)が正常に動作する保証がない、という問題があった。
さらに、与えられたソフトウェア部品に対して、複数のソフトウェア部品から、与えられたソフトウェア部品と接続可能なソフトウェア部品の組合せを検索する場合は、全てのソフトウェア部品の組合せについて、接続の可否を調べる必要がある。この接続の可否を調べる過程は計算負荷が大きくなるという問題がある。
また、上記遺伝的アルゴリズムは複数の解候補の集合を用いて、解候補を評価し、評価結果の良いもの優先的に選択し、交叉と呼ばれる過程で解候補を組み合わせ、変異と呼ばれる過程で解候補の一部を書き換え、新しい解候補を生成する過程を繰り返し、最適解を求めるアルゴリズムである。一般に遺伝的アルゴリズムでは、交叉や変異で生成した新しい解候補が評価不能になる場合、この解候補を致死遺伝子をもつ解候補と呼ぶ。遺伝的アルゴリズムを用いる場合は致死遺伝子の発生を防ぐ必要がある。
遺伝的アルゴリズムを用いてソフトウェア部品からアプリケーションを自動生成する場合は、交叉や変異の過程でソフトウェア部品が接続可能でないと、解候補としてのアプリケーションは実行することができない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、複数のソフトウェア部品を組み合わせてアプリケーションを生成する際に、ソフトウェア部品の接続の可否を迅速かつ高精度で調査することを目的とする。
本発明は、予め設定された複数のソフトウェア部品の中から、入力された条件に適合するソフトウェア部品を検索する処理を計算機に実行させるソフトウェア部品の検索プログラムにおいて、複数のソフトウェア部品の入力および出力が定められている値域を要素とする集合をソフトウェア部品格納部へ格納する手順と、前記ソフトウェア部品の出力値域集合の和集合と、入力値域と、前記ソフトウェア部品の識別子とを管理する高階グラフを設定する手順と、前記高階グラフから抽出するソフトウェア部品の値域を受け付ける手順と、前記受け付けた値域に基づいて、前記受け付けた値域を出力とするソフトウェア部品の並列の組み合わせ、またはひとつを前記高階グラフの出力値域集合の和集合から検索する手順と、を含む。
また、前記検索結果から、遺伝的アルゴリズムを用いてアプリケーションを生成する手順をさらに含み、前記アプリケーションを生成する手順は、前記ソフトウェア部品をランダムに選択してアプリケーションを複数生成して解候補の集合に設定して前記解集合の初期化を行う手順と、前記解候補の集合のアプリケーションについて評価を行う手順と、前記評価の結果に基づいて前記複数のアプリケーションから一つを選択する手順と、前記選択したアプリケーションの一部を他のソフトウェア部品に交換し、次の世代のアプリケーションの集合を生成する手順と、前記選択したアプリケーションの一部をランダムに選択した他のソフトウェア部品に交換し、前記解候補の集合を更新する手順と、を含み、前記初期化を行う手順は、前記予め設定した入力値域と、出力値域を値域として受け付けて、前記検索する手順で検索されたソフトウェア部品を組み合わせて、前記アプリケーションを複数生成する。
本発明では値域の集合に対して、前記値域の集合を出力とするソフトウェア部品の組合せを検索する場合、すべてのソフトウェア部品の組合せについて接続の可否を判定するのでなく、高階グラフにおいて予め構造化された値域の全体集合の部分集合族(和集合)を利用して、接続可能なソフトウェア部品の組合せを検索するため、検索効率が向上する。これにより、ソフトウェア部品の接続の可否を高い精度で調査しながらも、迅速に調査を行うことができる。
また、遺伝的アルゴリズムを用いてアプリケーションの自動生成を行う場合は、初期化や交叉や変異過程において、ソフトウェア部品の接続の可否を直接判定するのではなく、ソフトウェア部品の入力の値域の集合から接続可能なソフトウェア部品の組合せを検索し、解候補の生成を行うため、評価不能な解候補を生成することがない。これにより、ソフトウェアの生産性を大きく向上させることができる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、第1の実施形態を示す計算機システムのブロック図である。本第1実施形態では、ソフトウェア部品の接続情報を管理する計算機システム(ソフトウェア部品管理システム)を示している。
図1において、後述する値域集合高階グラフを格納する値域集合高階グラフデータベース301を管理する値域集合高階グラフデータサーバ302と、ソフトウェア部品の機能仕様や入出力仕様を管理するソフトウェア部品リポジトリ303と、ユーザインターフェースやアプリケーションが実行されるクライアント(クライアント計算機)304がネットワーク305を介して接続される。なお、値域集合高階グラフデータサーバ302とクライアント304及び値域集合高階グラフデータサーバ302は、それぞれ図示しないCPUとメモリ及びストレージ装置を備えている。また、値域集合高階グラフデータサーバ302が、本発明のソフトウェア部品管理システムの中心として機能する。
クライアント304では、ソフトウェア部品リポジトリ303に格納された複数のソフトウェア部品の組み合わせを値域高階グラフデータベース301で後述するように検索を行い、複数のソフトウェア部品(コンポーネント)を組み合わせて図2に示すアプリケーション201を構築する。なお、ソフトウェア部品リポジトリ303は、複数のソフトウェア部品の入力および出力が定められている値域を要素として格納している。そして、値域高階グラフデータベース301は、後述するようにソフトウェア部品リポジトリ303の各要素ついて、出力値域集合の和集合を管理する。
図2において、アプリケーション201は、複数のコンポ202で構成される。また、アプリの一部を部分アプリ203とよぶ。アプリケーション201及びコンポ202は予め設定された入出力を行う。この入出力の値域の集合を値域集合とよぶ。例えば、図中204はアプリ201の入力値域集合を示し、図中205はアプリ201の出力値域集合を示す。
ソフトウェア部品としてはコンポやWebサービスを想定している。このアプリケーション201は入力により起動して、所定の処理を行った結果を出力する。以下では、コンポという用語でソフトウェア部品(コンポーネント)を表すものとする。また、アプリケーションをアプリで表すものとする。
次に、図1において、値域集合高階グラフデータベース301を格納する値域集合高階グラフデータサーバ302は、ソフトウェア部品リポジトリ303に格納されたコンポ202の接続の可否を定めるための情報を値域集合高階グラフデータベース301に登録するコンポ登録機能2301と、クライアント304で実行される登録・検索ユーザインターフェース2302からの問い合わせに対してコンポ202の組合せの接続の可否に関する結果を検索し、コンポの検索結果をコンポ組合せリスト2305として出力するコンポ組合せ検索機能2303と、ソフトウェア部品リポジトリ303を自律的に検索し、接続の可否を定めるための情報を登録するクローラ2304から構成される。コンポ組合せ検索機能2303は、クライアント304からの問い合わせに応じて値域集合高階グラフデータベース301を検索し、検索条件に該当する値域集合があればコンポ組合せリスト生成機能2306を起動して、コンポ組合せリスト2305を生成し、クライアント304へ提供する。コンポ登録機能2301は、クローラ2304またはクライアント304の登録・検索ユーザインターフェース2302からの要求に基づいて、コンポ202の情報を値域集合高階グラフデータベース301に登録する。なお、上記各機能の詳細については後述する。また、上記各機能はソフトウェアのモジュールとして実装することができる。
次に、コンポ202の入出力は、例えば、次のようにXMLで記述される場合が多い。
<Tag0>
<TagA>ValueA</TagA>
<TagB>ValueB</TagB>
<TagC>ValueC</TagC>
</Tag0> ……… 式(1)
<Tag1>
<TagA>ValueA</TagA>
<Tag2>
<TagB>ValueB</TagB>
<TagC>ValueC</TagC>
</Tag2>
<Tag1> ………式(2)
<Tag3>
<TagD>ValueD</TagD>
<TagE>ValueE</TagE>
</Tag3> ……… 式(3)
本実施形態では上記式(1)〜(3)に示したXMLを平滑化し、値の集合と見なした入出力を考える。例えば、式(2)と式(3)の2つを平滑化すると、上記式(1)〜(3)は以下のようになる。
<TagA>ValueA</TagA>
<TagB>ValueB</TagB>
<TagC>ValueC</TagC>
<TagD>ValueD</TagD>
<TagE>ValueE</TagE> ……… 式(4)
これらの式(4)を値の集合と見なすと
[ValueA、ValueB、ValueC、ValueD、ValueE] ………式(5)
となる。さらに、本発明で管理するのは値の値域であり、各値の値域が
ValueA∈RangeA、 ValueB∈RangeB、 ValueC∈RangeC、 ValueD∈RangeD、 ValueE∈RangeE ………式(6)
である場合、管理対象は入力値域集合204
[RangeA、RangeB、RangeC、RangeD、RangeE] ………式(7)
である。値の値域の例としては、「商品番号」、「色」、「サイズ」、「個数」などが挙げられ。それらが構成する値域集合は、
[商品番号、色、サイズ、個数] ………式(8)
である。
次に、値域集合高階グラフ501を構成する高階グラフに関して述べる。
まず、グラフは二項関係の図式表現であり、集合Vの任意の2つの要素の関係R:V×V→{0、1}の有無を表す。グラフでは集合Vの要素は図3の頂点1501で表される。また、2つの要素uとvに関係がある場合はそれらの間を辺1502で結合する。
有向グラフは非対称な二項関係の図式表現である。グラフにおいて、関係Rは対称律R(u、v)=R(v、u)を満たすが、有向グラフでは対称律が満たされず関係に方向性がある。このため、有向グラフでは図4の矢印で示す有向辺1601を用いて方向性のある関係を表す。
二部グラフは互いに素な2つの集合U、Vの任意の要素の関係R:U×V→{0、1}の有無を表すグラフでは、互いに素な2つの集合U、Vのうち、集合Uの要素は図5の白い円で示す頂点1701で、集合Vの要素は黒い円で示す頂点1702で表される。
一般に図3のグラフからは辺1502に図6の四角で示す新たな頂点1801を対応させることにより二部グラフが誘導される。
高階グラフは多項関係の図式表現であり、集合Vの任意の個数の任意の要素の関係R:V×V×‥×V→{0、1}の有無を表す。高階グラフでは複数個の要素u、v、‥、wに関係があるR(u、v、‥、w)=1の場合、それらの要素の間を高階辺(コンポの 出力値域集合の集合と、コンポの出力値域集合の和集合の対)で結合する。
高階辺を図式で表すために、先に述べた辺に頂点を対応させ二部グラフを誘導する手法を用いる。図7に図6のグラフから誘導される二部グラフのグラフにおける1つの辺の二部グラフ表現を示す。また、有向グラフの場合は図8の有向グラフにおける有向辺の二部グラフ表現が与えられる。図7では辺に対応する頂点1901には2つの頂点1902、1903が結合していることにより、2項関係があることが表現されている。
これに対して高階グラフでは、図9に示すように高階辺に対応する頂点2101に複数の頂点2102〜2106を結合することにより、多項関係があることを表現する。また、有向高階グラフの場合は図10のように有向の多項関係を表現する。高階グラフは頂点の集合と図9、図10の高階辺の集合を用いて図式表現される。なお本実施形態では有向グラフあるいは有向高階グラフのみを扱うため、以下の説明においては単にグラフあるいは高階グラフという用語を用いる。
図11A、図11Bに値域集合高階グラフの概念を示す。図11Aは1つの高階辺とそれと隣接関係にある頂点を示す。一般に高階グラフは図中「○」で示す頂点401〜403の集合と「◇」で示す高階辺406の集合で構成される。頂点401〜403には値域集合が対応する。高階辺406は2つの入力と1つの出力をもち、出力側には入力側の2つの値域集合A、Bの和集合Cが対応する。また、頂点401〜403には入力コンポ404と出力コンポ405が付随する。図11Bの値域集合高階グラフは、図11Aに示した高階辺とそれと隣接関係にある頂点、すなわち、図11Bにおける矩形領域407で囲んだ部分を複数結合したものである。
図12に値域集合高階辺グラフのデータ構造を示す。高階辺グラフ501は頂点の集合502と、高階辺の集合503で構成される。各々の頂点504(図11Aの401〜403)には頂点ID506と、値域集合507と、高階辺ID集合508と、入力コンポ集合509と、出力コンポ集合510と、組合せ数511と、制約フラグ512とが記録される。各々、頂点ID506は頂点に与えるインデックスが設定され、値域集合507は頂点504が表す値域の集合が設定され、高階辺ID集合508は頂点504と隣接する高階辺505のリストが設定され、入力コンポ集合509は値域集合507を出力するコンポの集合が設定され、出力コンポ集合510は値域集合507を入力とするコンポの集合が設定され、組合せ数511はその値域集合507がいくつのコンポの並列結合で実現されるかを示す値が設定され、制約フラグ512は当該頂点集合502の検索時に当該頂点504を利用するか否かを判定するフラグが設定される。なお、入力コンポ集合509や出力コンポ集合510の要素は、コンポの所在を示す識別子としてコンポURIとよぶコンポのURI(Universal Resource Identifier)を使用するものとする。
また、各々の高階辺505には高階辺ID513と、第一入力頂点ID514と、第二入力頂点ID515と、出力頂点ID516とが記録される。各々高階辺ID513には高階辺に与えるインデックスが設定され、第一入力頂点ID514と第二入力頂点ID515は高階辺(図11に示した406)の入力側の頂点のインデックスが設定され、出力頂点ID516は高階辺(図11に示した406)の出力側の頂点のインデックスが設定される。
図13に、上記図1に示した値域集合高階グラフ管理サーバ302のコンポ登録機能2301の処理過程の一例を示すPAD図(問題分析図)である。コンポ登録機能2301は、図13に基づいて、ソフトウェア部品リポジトリ303に格納されたコンポ202を値域集合高階グラフデータベース301に登録する。
はじめに、コンポ登録機能2301は、図1に示したクライアント304の登録・検索ユーザインターフェース2302を介して、コンポURIを取得し、コンポ出力値域集合(値域集合507を入力する集合)をコンポURIが指すコンポの出力値域集合(出力コンポ集合510)に設定する(601)。この処理では、クライアント304の登録・検索ユーザインターフェース2302から登録を行うコンポをURIにより指定する。コンポ登録機能2301は、URIにより指定されたコンポをソフトウェア部品リポジトリ303から読み込んで、このコンポの出力値域をコンポ出力値域集合に設定する。
続いて、図12に示した頂点集合502の各頂点504に関して、入力されたコンポ出力値域集合と頂点504の値域集合507が等しいならば頂点504の入力コンポ集合509にコンポURIを追加し、処理を終了する(ステップ602〜605)。この過程では既に値域集合高階グラフデータベース301に値域集合507が存在する場合はその値域集合507にコンポを接続する。
一方、上記ステップ603で値域集合507が存在しない場合は、ステップ606、607で頂点集合502に次の追加頂点を追加し、頂点数を示す頂点ID上限を増加させる(ステップ606〜607)。つまり、これらの処理は、以下の設定を行う。
頂点ID=頂点ID上限+1、値域集合=コンポ出力値域集合、高階辺ID集合=Φ、入力コンポ集合={コンポURI}、出力コンポ集合=Φ、組合せ数=1、制約フラグ=0 ……… 式(9)
続いて、上記ステップ606、607で追加した頂点504とそれ以外の頂点504を入力とし、それらの値域集合507の和集合を結合する高階辺505を作成する(ステップ608〜617)。
まず、ステップ608では、頂点集合502の各頂点504を参照し、第1参照頂点とする。ステップ609では、値域集合高階グラフデータベース301から第1参照頂点の組合せ数512と、予め設定した組合せ数上限値が等しいか否かを判定する。第1参照頂点の組合せ数512と組合せ数上限値が等しければ、ステップ610でこの処理を終了して次の頂点について調べる。一方、第1参照頂点の組合せ数512が、予め設定した組合せ数上限値に達していなければ、ステップ611で高階辺集合503に高階辺505を追加し、ステップ612で高階辺ID上限に1を加算する。ステップ613では、頂点集合502の第1参照頂点以外の各頂点(第2参照頂点)について、値域集合の比較を行い、追加した高階辺505について既に存在しているかを検索する。すなわち、ステップ614で、各第2参照頂点について以下の条件式を満たすか否かを判定する。
第2参照頂点の値域集合=追加頂点の値域集合∪第1参照頂点の頂点集合
ステップ614では、第2参照頂点の頂点集合が追加した頂点504の値域集合と第1参照頂点の頂点集合の和集合であれば、ステップ615で第2参照頂点の高階辺ID集合に、追加した高階辺505の高階辺ID513を追加する。ステップ613では、上記ステップ614、615を各第2参照頂点にそれぞれ実行する。そして、ステップ616、617では追加した高階辺505に対する処理を行う。
このように、図13に示す高階辺505の作成処理では、組み合わせるコンポの数が上限値に達している場合は高階辺を作成しない(609〜610)。そうでない場合は、高階辺集合503に次の追加高階辺を追加し、高階変数を示す高階辺ID上限値を増加させる(611〜612)。すなわち、次の式(10)を処理する。
高階辺ID=高階辺ID上限+1、第一入力頂点ID=追加頂点の頂点ID、第二入力頂点頂点ID=第一参照頂点の頂点ID ………式(10)
続いて、追加した高階辺505の出力頂点504が既に存在するかを調べ(613〜614)、存在する場合は、第二参照頂点の高階辺ID集合513に追加高階辺の高階辺IDを追加する(615)。
一方、そうでない場合は和集合を表す頂点に、
頂点ID=頂点ID上限+1、値域集合=コンポ出力値域集合∪第一参照頂点の値域集合、高階辺ID集合={追加高階辺の高階辺ID}and 追加高階辺の出力頂点ID=頂点ID、入力コンポ集合=Φ、出力コンポ集合=Φ、組合せ数=第一参照頂点の組合せ数+1、制約フラグ=0 ………式(11)
を作成し、頂点数を示す頂点ID上限を増加させる(616〜617)。
以上の処理により、コンポ登録機能2301は、値域高階グラフ501でソフトウェア部品リポジトリ303に格納されたコンポ202の値域の和集合を管理する値域集合高階グラフデータベース301へ、指定されたコンポ202について、値域集合507に対応付けて入力コンポ集合509や出力コンポ集合510の要素としてコンポの所在を示すコンポURIを登録していく。
図13では値域集合507へ入力を与えるコンポーネント、つまり、コンポーネントからみるとコンポーネントの出力となる値域集合507に関する登録処理を示した。値域集合507から出力を受けるコンポーネントに関しては、処理するコンポーネントの出力をコンポーネントの入力に変更し、上記606における入力コンポ集合と出力コンポ集合の設定方法を入れ替えることにより登録処理を行う。
なお、上記ではクライアント304からコンポ202を指定した場合を示したが、クローラ2304がコンポ202の登録を要求した場合も、コンポ登録機能2301は図13と同様の処理を実行する。
次に、図14と図15は、上記図13で示した処理で値域集合高階グラフデータベース301に登録したコンポの接続情報を検索し、コンポ組合せリスト2305を出力する図1に示したコンポ組合せ検索機能2303及びコンポ組合せリスト2305生成機能2306の再帰処理過程を示す。この処理は値域集合507をキーとし、キーにマッチするコンポの組合せを全て出力する処理である。なお、図14は、コンポ組合せ検索機能2303を示し、図15は、コンポ組合せ検索機能2303から呼び出されるコンポ組合せリスト2305を示す。
つまり、クライアント304では登録・検索ユーザインターフェース2302から検索を行うコンポの値域集合(入力値域集合または出力値域集合)をクエリとして入力し、値域集合高階グラフ管理サーバ302へ問い合わせる。値域集合高階グラフ管理サーバ302のコンポ登録機能2301は、このクエリとして入力された値域集合(以下、クエリ値域集合)をキーとして、値域集合高階グラフデータベース301を検索し、クエリ値域集合にマッチ(一致乃至近似)するコンポ202の並列(あるいは単一)の組合せを、コンポ組合せリスト2305へ出力する。
図14に示す、コンポ組合せ検索機能2303は、はじめに、ステップ701では、クエリ値域集合に対するマッチングレベル上限と下限を設定し、クエリとしてクエリ値域集合を入力し、コンポ組合せリスト2305=Φとする。
ここでマッチングレベルを以下のように定義する。まず、マッチングレベルが正であるとは、クエリ値域集合が頂点504の値域集合507に含まれる場合である。なお、この場合をオーバースペックマッチングとよぶ。クエリ値域集合に対して余分な値域がN個存在する場合、マッチングレベルはNである。
また、マッチングレベルが負であることは、クエリ値域集合が頂点504の値域集合507を含む場合である。クエリ値域集合に対して不足している値域がN個存在する場合、マッチングレベルは−Nである。なお、この場合をアンダースペックマッチングとよぶ。
また、マッチングレベルが0である場合は、クエリ値域集合と頂点504の値域集合507が一致する場合である。なお、この場合をイグザクトマッチングとよぶ。
上記のような正、0、負のマッチングレベルを、クライアント304から設定する。なお、マッチングレベルの設定は、予め設定した値とすることもできる。
続いて図12に示した頂点集合502の各頂点504に関して、クエリ値域集合と頂点504の値域集合507がマッチするならば、その頂点504について、図15に示すコンポ組合せリスト作成機能2306を起動し、コンポ組合せの結果を取得し、コンポ組合せリスト2305にコンポ組合せ結果を追加し(702〜705)、コンポ組合せリストを出力する(706)。
すなわち、ステップ703で、クエリ値域集合と頂点504の値域集合507がマッチすれば、ステップ704へ進んで、後述するコンポ組合せリスト2305生成機能2306を起動し、値域集合がマッチしたコンポの組合せ結果を取得する。さらに、ステップ705で、コンポ組合せリスト2305に頂点504のコンポ組合せ結果を追加する。
次に、図14のコンポ組合せ検索機能2303から呼び出されるコンポ組合せリスト生成機能2306を図15に示す。図15に示した再帰的な頂点のコンポ組合せリスト作成機能では、はじめにコンポ組合せリスト2305を頂点504の入力コンポ集合の要素数1の集合族に設定する(800)。ここで、集合{a、b、c}に対する要素数1の集合族とは、{{a}、{b}、{c}}のことである。
続いて、頂点504の高階辺ID集合の各高階辺ID513に関して、再帰的に、高階辺ID513の第一入力頂点IDの指す頂点504のコンポ組合せリスト生成機能2306の起動とコンポ組合せ結果の取得と高階辺ID513の第二入力頂点IDの指す頂点のコンポ組合せ作成機能の起動とコンポ組合せ結果の取得を行い、コンポ組合せリスト2305に第一入力頂点IDの指す頂点504のコンポ組合せ結果と第二入力頂点IDの指すコンポ組合せ結果の直積を追加する(801〜804)。
ここで2つの集合族{{a}、{b}}と{{c}、{d}}の直積とは{{a、c}、{a、d}、{b、c}、{b、d}}のことである。
頂点504のコンポ組合せ作成機能は、図14のステップ704に対して呼び出し側コンポ組合せリストを結果として出力する(ステップ805)。なお、コンポ組合せリスト2305は、例えば、入力された値域集合に対して、上記マッチングレベルの上限と下限の範囲に含まれる頂点集合507に対応する入力コンポ集合509と出力コンポ集合10と、コンポのURIを含んだリストで構成すればよい。
以上の処理により、クライアント304が入力した値域集合(クエリ値域集合)に対して、値域集合高階グラフデータベース301で値域集合507が所定のマッチングレベルに含まれる入力コンポ集合509と出力コンポ集合510を得て、入力したクエリ値域集合を出力とするコンポの並列(または単一)の組合せをコンポ組合せリスト2305出力することができる。
前記従来例のように、すべてのコンポの全体集合に属する複数のコンポについて接続の可否を調べるのではなく、本発明では、値域の全体集合の部分集合族、つまり、コンポの入出力の属する値域の集合のコンポに関する全体集合を構造化し、値域の全体集合の部分集合族に含まれる値域の集合にコンポを対応させる。そして、値域の集合を出力とするソフトウェア部品(コンポ)の組合せを検索する際には、予め構造化された値域の全体集合の部分集合族(値域の部分集合を要素とする集合)を利用して、接続可能なコンポの並列(または単一)組合せを検索し、抽出するため、検索効率が向上し、前記従来例に比して演算処理の負荷を低減することができる。
さらに、上記の処理によって抽出されたコンポの組合せは、検索条件として入力したクエリ値域集合と所定のマッチングレベルで一致している。したがって、コンポ組合せリスト2305に出力されたコンポ(入力コンポ集合509と出力コンポ集合510)を組み合わせてアプリケーションを構築すれば、値域集合のマッチが保証されているので、複数のソフトウェア部品を組み合わせて生成したアプリケーションの動作を保証することが可能となる。これにより、ソフトウェアの生産性を向上させることが可能になる。
例えば、図2において、クエリ値域集合として、入力値域集合204と出力値域集合205を入力すると、コンポ組合せ検索機能2303は、検索する値域を出力値域205として検索する。コンポ組合せ検索機能2303は、まず、出力値域集合205を出力するコンポ202の並列な組合せ(あるいは一つのコンポ)を検索する。次に、これらのコンポの組合せの入力を出力とするコンポの組合せ(並列あるいは単一)を検索する。このような検索を、クエリ値域集合で受け付けた入力値域204に一致または含まれるまで、ループ繰り返すことで、与えられたクエリ値域集合に一致または近似するコンポの組合せを出力値域側から入力値域側へ向けて連鎖的に検索してコンポ組合せリスト2305へ出力する。クライアント304のユーザは、このコンポ組合せリスト2305の検索結果に基づいて、最適なコンポ202を組合せることで、入力値域と出力値域が一致するアプリケーションを容易に構築することができる。
なお、上記では値域集合高階グラフデータベース301と、ソフトウェア部品リポジトリ303を異なる計算機に格納したが、ソフトウェア部品リポジトリ303を値域集合高階グラフ管理サーバ302に格納しても良い。
<第2実施形態>
図16は、第2の実施形態を示し、前記第1実施形態の値域集合高階グラフ管理サーバ302で検索した結果に、遺伝的アルゴリズムを適用してアプリケーションを自動的に生成する計算機システムを示すブロック図である。
図16において、値域集合高階グラフ管理サーバ302には、前記第1実施形態の図1の図1に加えてコンポ組合せ検索機能2303を利用するコンポ組合せランダム生成機能2408を設け、クライアント304には、遺伝的アルゴリズムを適用してアプリケーションを自動的に生成するアプリ自動生成システム2406を加えたものであり、その他の構成は前記第1実施形態と同様である。
まず、遺伝的アルゴリズムについて図17を参照しながら以下に説明する。
遺伝的アルゴリズムは複数の解候補の集合を用いて、解候補を評価し、評価結果の良いもの優先的に選択し、交叉と呼ばれる過程で解候補を組み合わせ、変異と呼ばれる過程で解候補の一部を書き換え、新しい解候補を生成する過程を繰り返し、最適解を求めるアルゴリズムである。
図17の、初期化過程101では複数の解候補の集合をランダムに設定する。この解候補の集合に対して、評価、選択、交叉、変異の各過程を繰り返し回数や評価値の変化などの終了条件102を満たすまで繰り返す。評価過程103では解候補の評価値を計算する。選択過程104では評価結果に基づき高い評価の解候補を優先的に選択する。交叉過程105では選択した解候補を組み合わせ、次の世代の解候補の集合を生成する。変異過程106では解候補の一部をランダムに変更する。遺伝的アルゴリズムはこうした過程を繰り返し最適化を行うアルゴリズムである。
図18は、上記図17の遺伝的アルゴリズムをアプリケーション自動構成システム2406に適用した事例を示す。ここでは複数の入力と理想出力の対が与えられたとき、その入出力関係を充足するアプリケーションを生成する課題を扱う。
図18の初期化過程901ではコンポをランダムに組み合わせてアプリを生成し、生成したアプリを解候補とし、複数の解候補の集合をランダムに設定する。この解候補の集合に対して、評価903、選択904、交叉905、変異906の各過程を、繰り返し回数や評価値の変化などの終了条件902を満たすまで繰り返す。
評価過程903では、複数の入力と理想出力に関して、解候補のアプリに入力を与え、実行結果と理想出力の差を計算し、その誤差に基づいて評価を行う。遺伝的アルゴリズムでは通例、評価結果は適合度と呼ばれるゼロ以上の数値で表現される。選択過程904では評価結果に基づき高い評価のアプリを優先的に選択する。優先的に選択されるとは、例えば前記適合度とよばれる数値に比例した割合で選択することである。この手法はルーレットホイール選択とよばれる。ルーレットホイール選択はアプリの集合について適合度の総和を求め、各アプリの適合度を総和で割り、総和が1となるようにし、区間[0、1]を適合度で分割し、各分割区間をアプリに割り当て、[0,1]を値域とする一様分布に従う乱数を発生させ、その値を含む分割区間に対応するアプリを選択つまり複写する過程をアプリの数だけ繰り返す。
交叉過程905では選択したアプリの対を作成し、後述するようにその一部を交換し、次の世代の解候補の集合を生成する。アプリの対の作成は、例えば、アプリの集合においてアプリがインデキシングされている場合は、1番目と2番目、3番目と4番目というようにインデックスが隣接するものというように構成される。変異過程906ではアプリ集合の各アプリについて[0,1]を値域とする一様分布にしたがう乱数を発生させ、その値が一定値以下であれば、後述するようにアプリの一部を変更する。遺伝的アルゴリズムはこうした過程を繰り返し最適化を行うアルゴリズムである。
図18の各過程のうち、初期化901、交叉905、変異906において、アプリの生成、組合せ、変更を行う場合、コンポの接続の可否の判定が必要となるため、前記第1実施形態に示した値域集合高階グラフ管理サーバ302を利用する。
図16において、クライアント304には、上述の遺伝的アルゴリズムを用いてアプリケーションの自動生成を行うアプリ自動生成システム2406が実行される。アプリ自動生成システム2406は、初期化2401、評価2402、選択2403、交叉2404、変異2405の各機能を用いて最適化を行う遺伝的アルゴリズムと、初期化2401、交叉2404、変異2405において使用され、本発明で本質的な役割を果たす部分アプリ構築機能2406を含む。
また、値域集合高階グラフ管理サーバ302には、クライアント304側の遺伝的アルゴリズムによるアプリ自動生成システム2407と、部分アプリ構築機能2406から呼び出されるコンポ組合せ検索機能2303の検索結果からソフトウェア部品(コンポ)の組合せ結果をランダムに選択するコンポ組合せランダム生成機能2408と、クライアント304のアプリ自動生成システム2406の交叉2404から呼び出され、設定・解除が行われる値域集合高階グラフ制約機能2409が設けられる。なお、その他の機能モジュールは前記第1実施形態と同様である。
図19は、図16に示した値域集合高階グラフ管理サーバ302のコンポ組合せランダム作成機能2408の処理過程を示す。この機能はクライアント304のアプリ自動生成システム2406の遺伝的アルゴリズムから利用するため、前記第1実施形態のコンポ組合せ結果検索機能2303の検索結果から、ランダムにコンポの検索結果を選択し(1002〜1006)、その選択結果と、コンポ組合せの出力の値域集合とクエリ検索として与えたクエリ値域集合の差分集合とマッチングレベルを計算する(1007〜1014)。この差分集合はコンポの組合せで処理されていないクエリ値域集合の部分集合を示す。なお、クエリ値域集合は、前記第1実施形態と同じく、クライアント304の登録検索ユーザーインターフェース2302からクエリとして入力された値域集合である。
図19において、ステップ1001〜1005は、前記第1実施形態の図14に示したステップ701〜705と同一であり、入力された値域集合にマッチするコンポの組合せをコンポ組合せリスト2305に出力する。
ステップ1006では、コンポ組合せリスト2305に出力されたコンポの組合せから、コンポの組合せとコンポの所在を示すコンポURIを要素としてランダムに選択する。なお、ランダムな選択は、疑似乱数あるいは乱数を生成して、適宜公知の手法により選択すればよい。
次に、ステップ1007では、選択したコンポの組合せから、コンポ出力値域集合(507)の和集合を求める。次に、ステップ1008では、入力されたクエリ値域集合とステップ1007で求めた和集合が等しければ、ステップ1009で差分集合を空集合Φとし、マッチングレベル=0とする。
ステップ1010では、入力されたクエリ値域集合がステップ1007で求めた和集合に含まれれば、ステップ1011で差分集合=コンポ出力値域集合の和集合−クエリ値域集合とし、また、マッチングレベル=差分集合の要素数とする。つまり、上述した正の値となる。
ステップ1012では、入力されたクエリ値域集合がステップ1007で求めた和集合を含む場合は、ステップ1013で差分集合=クエリ値域集合−コンポ出力値域集合の和集合とし、また、マッチングレベル=−(差分集合の要素数)とする。
こうして、差分集合とマッチングレベルの演算を行った結果を、ステップ1014でランダムにコンポの組合せを選択した結果として出力する。
次に、図20と図21を用いて入力と出力の値域集合から図2に示したアプリ201や部分アプリ203を作成するための処理過程を説明する。図20に示す処理では前述のコンポ組合せランダム作成機能2408を用いて図21に示すソフトウェア部品(コンポ)2501の組合せを検索し、入力された値域集合2502をコンポ2501の組合せの入力で書き換えることを繰り返す。
図20では、前記第1実施形態の図14と同様に、はじめにマッチングレベル上限と下限を設定し、入力クエリ値域集合2504と出力クエリ値域集合2503を入力し、参照コンポ組合せ集合=Φ、参照値域集合=出力クエリ値域集合とする(ステップ1101)。
続いて、繰り返し回数が予め設定した上限に達するか(1102)、入力クエリ値域集合2504から出力クエリ値域集合2503が計算できるコンポの組合せが生成されるまで、すなわち、値域集合の書き換え繰り返しの結果得られる値域集合2509が入力値域集合2504と一致するまで(1108〜1109)、コンポ組合せランダム作成機能2408の起動(1103)と参照する値域集合をコンポの組合せで処理されていないクエリ値域集合の部分集合2307、2308とコンポの入力値域集合2302の和集合で書き換える処理(1104〜1107)を実行する。なお、図21に示すようにオーバースペックマッチングでは使用されないソフトウェア部品(コンポ)2505、2506の出力が生成される。
この処理は入力と出力の値域集合から部分アプリを構成するコンポの組合せを集合として求めるためのものである。
図22には、コンポの組合せではなく、アプリ自動生成システム2406の部分アプリ構築機能2407で行われる部分アプリの構造を求めるための部分アプリ構築処理を示す。ここでは部分アプリグラフと値域−コンポ二項組多重集合という2つのデータを使用する。はじめにこれら2つのデータについて説明する。
図23に部分アプリグラフのデータ構成を示す。このグラフは部分アプリ203で使用されているコンポとそれらの接続方法を与えるグラフである。部分アプリグラフ1301は部分アプリ頂点集合1302と部分アプリ辺集合1303で構成される。部分アプリ頂点1304は頂点のインデックスである部分アプリ頂点ID1306とコンポURI1307をもつ。部分アプリ頂点1304はコンポに対応する。また、部分アプリ辺1305は辺のインデックスである部分アプリ辺ID1308と入力部分アプリ頂点ID1309と出力部分アプリ頂点ID1310をもつ。部分アプリ辺は入力頂点ID1309が示す頂点のコンポと出力頂点ID1310が示す頂点のコンポが結合されていることを示す。なお、遺伝的アルゴリズムにおいてコンポの結合は、染色体に相当する。
図24に値域−コンポ二項組多重集合のデータ構成を示す。この集合はコンポ1404と値域集合1403の対を記録するためのものである。ここで多重集合とは要素の重複を許す集合のことである。
部分アプリの構造は図23で示したとおりであり、部分アプリグラフ1301で表される。このうち部分アプリ頂点集合1302は図20のアルゴリズムで求めることができる。
部分アプリ辺集合1303を求めるため、図22の処理を実行する。まず、ステップ1201では、前述したようにマッチングレベルの上限と下限を設定し、入力クエリ値域集合と出力クエリ値域集合を入力し、部分アプリ頂点集合1302=Φ、部分アプリ辺集合=Φ、参照コンポ組合せ=Φとして初期化する。
次に、図24に示した2つの値域−コンポ二項組集合を使用する。一方は参照値域−コンポ二項組多重集合であり、他方は処理済値域−コンポ二項組多重集合である。参照値域−コンポ二項組多重集合は出力クエリ集合の各要素を入力とする外部環境というコンポの存在を想定し、”Out”という仮想コンポと二項組を作成し、初期化する(1202)。
コンポ組合せランダム検索機能2408は、参照−コンポ二項組多重集合から計算される値域集合に関して起動し、コンポの組合せを出力する(1204〜1206)。
ステップ1204では、参照値域・コンポ二項組多重集合の第一要素と、値域を集め、多重集合を作り重複を除去して集合とし、参照値域集合を生成する。
ステップ1205では、生成した参照値域集合に関するコンポの組合せを選択するためコンポ組合せランダム生成機能2408を起動する。
ステップ1206では、部分アプリ頂点集合1302にランダムに選択したコンポの組合せを追加する。
ステップ1207では、処理済集合=参照値域集合−差分集合とし、処理済値域・コンポ二項組多重集合=Φとする。処理済値域−コンポ多重集合はコンポの出力値域集合とコンポの対応を示す(1208〜1209)。これら2つの値域−コンポ多重集合の要素の値域を比較し、一致するものを接続し、部分アプリ辺を構成する(1210〜1214)。
つまり、ステップ1208、1209では、処理済値域・コンポ二項組多重集合に、コンポの出力の値域集合の各要素とコンポUID(URI)の二項組からなる値域・コンポ二項組多重集合を追加する。この処理は、コンポの組合せの各コンポに関して繰り返して実行する。
次に、ステップ1210〜1213では、処理済値域・コンポ二項組多重集合の各要素に関して次のステップ1212及び1213を繰り返す。ステップ1212では、処理済値域・コンポ二項組の値域=参照値域・コンポ二項組の値域であるかを判定し、これら2つが等しければ、ステップ1213で、部分アプリ辺集合に処理済値域・コンポ二項組のコンポURIと参照値域・コンポ二項組のコンポURIの二項組を追加する。そして、ステップ1214では、処理済集合の各要素と第一項が一致する参照値域・コンポ二項組多重集合の要素を削除する。
続いて、ステップ1215では、コンポ組合せの各コンポの入力値域集合の各要素に関して、値域とコンポURIから参照値域・コンポ二項組を作成し、参照値域−コンポ二項組多重集合に追加することにより参照値域−コンポ二項組多重集合が更新される。
以上の処理により出力クエリ値域集合に対応する部分アプリ、つまり複数のコンポを結合した集合が生成される。
以上のような部分アプリ構築処理を行うことにより、遺伝的アルゴリズムをアプリケーション自動構成における初期化、交叉、変異の過程が次のように構成できる。図25に示すように初期化過程ではアプリ全体の入力値域集合と出力値域集合の設定を行い(2701)、部分アプリ構築処理を適用し(2703)、解候補としてのアプリを生成を繰り返し解候補の集合を生成する(2702)。
図26に示すように変異過程では、はじめに解候補としてのアプリに対して、その一部のコンポをランダムに選択し、これらの部分的に選択したコンポを除去する(2802)。これにより、図28に示すように入力が充足されていないコンポと出力が使用されないコンポが発生する。次に入力が充足されていないコンポの入力値域集合の和集合をクエリ出力値域集合2601とし、出力が使用されないコンポの出力値域集合をクエリ入力値域集合2602と考える。これらに関して部分アプリ構築処理を適用する(2803)。この過程を全ての解候補としてのアプリに関して繰り返す(2801)。
図27に示すように交叉過程では、解候補としてのアプリに対して、その一部のコンポをランダムに選択し、それらを除去する(2902)。次に交叉の相手となる解候補としてのアプリを所定の条件に基づいてひとつ選択する(2903)。交叉は、図16の値域集合高階グラフ制約機能2409を用いて交叉の相手となるアプリのコンポに関してのみ、図12に示した制約フラグ512を設定し(2904)、このフラグに基づきコンポ検索を行うようにし、部分アプリ構築処理を適用する(2905)。適用後は制約フラグを解除する(2906)。この過程を全ての解候補としてのアプリに関して繰り返す(2901)。
以上のように、遺伝的アルゴリズムを用いてアプリケーションの自動生成を行う場合は、初期化や交叉や変異過程において、ソフトウェア部品の接続の可否を直接判定するのではなく、ソフトウェア部品の入力の値域の集合から接続可能なソフトウェア部品の組合せを検索し、解候補の生成を行うため、評価不能な解候補を生成することがない。これにより、ソフトウェアの生産性を大きく向上させることができる。
以上のように、本発明は、ソフトウェア部品のリポジトリなどから自動的にアプリケーションを生成するアプリケーション自動構築システムや、ソフトウェア部品のリポジトリを管理するソフトウェア部品管理システムなどに適用することができる。
に適用することができる。
本発明のソフトウェア部品管理システムのブロック図。 アプリケーションの構成例の説明図。 グラフの説明図。 有向グラフの説明図。 二部グラフの説明図。 グラフから誘導される二部グラフの説明図。 グラフにおける辺の二部グラフ表現の説明図。 有向グラフにおける有向辺の二部グラフ表現の説明図。 高階グラフにおける高階辺の二部グラフ表現の説明図。 有向高階グラフにおける有向高階辺の二部グラフ表現の説明図。 値域集合高階グラフの説明図。 高階辺を結合した値域集合高階グラフの説明図。 値域集合高階辺グラフのデータ構造を示す説明図。 コンポ登録機能の処理過程を示すPAD図。 コンポ組合せ検索機能の処理過程を示すPAD図。 コンポ組合せ検索機能の再帰処理過程の処理過程を示すPAD図。 第2の実施形態を示し、遺伝的アルゴリズムを用いたアプリケーションの自動生成システムのブロック図。 同じく第2の実施形態を示し、遺伝的アルゴリズムの説明図。 同じく第2の実施形態を示し、遺伝的アルゴリズムをアプリケーション自動構成に適用した例の処理過程を示すPAD図。 同じく第2の実施形態を示し、コンポ組合せランダム作成機能の処理過程を示すPAD図。 同じく第2の実施形態を示し、入力と出力の値域集合から部分アプリを作成するための処理過程を示すPAD図。 同じく第2の実施形態を示し、部分アプリを作成するための処理過程の説明図。 同じく第2の実施形態を示し、部分アプリ構築処理の処理過程を示すPAD図。 同じく第2の実施形態を示し、部分アプリグラフのデータ構成図。 同じく第2の実施形態を示し、値域−コンポ二項組多重集合のデータ構成図。 同じく第2の実施形態を示し、遺伝的アルゴリズムにおける初期化過程のPAD図。 同じく第2の実施形態を示し、遺伝的アルゴリズムにおける変異過程のPAD図。 同じく第2の実施形態を示し、遺伝的アルゴリズムにおける交叉過程のPAD図。 同じく第2の実施形態を示し、部分アプリの除去結果の説明図。
符号の説明
301 値域集合高階グラフデータベース
302 値域集合高階グラフ管理サーバ
303 ソフトウェア部品リポジトリ
304 クライアント
2303 コンポ組合せ検索機能
2305 コンポ組合せリスト
2406 アプリ自動生成システム
2408 コンポ組合せランダム生成機能
2409 値域集合高階グラフ制約機能

Claims (14)

  1. 予め設定された複数のソフトウェア部品の中から、入力された条件に適合するソフトウェア部品を検索するソフトウェア部品の検索システムにおいて、
    複数のソフトウェア部品の入力および出力が定められている値域を要素とする集合を格納したソフトウェア部品格納部と、
    前記ソフトウェア部品の出力値域集合の和集合と、入力値域と、前記ソフトウェア部品の識別子とを管理する高階グラフと、
    前記高階グラフから抽出するソフトウェア部品の値域を受け付ける検索条件受付部と、
    前記受け付けた値域に基づいて、前記受け付けた値域を出力とするソフトウェア部品の並列の組み合わせ、またはひとつを前記高階グラフの出力値域集合の和集合から検索する検索部と、
    を備えたことを特徴とするソフトウェア部品の検索システム。
  2. 前記検索条件受付部は、検索を行うソフトウェア部品の出力値域と入力値域を受け付けて、
    前記検索部は、前記高階グラフの出力値域集合の和集合のうち前記受け付けた出力値域を含むソフトウェア部品の入力値域が、前記受け付けた入力値域を含むソフトウェア部品を検索することを特徴とする請求項1に記載のソフトウェア部品の検索システム。
  3. 前記検索部は、前記高階グラフの出力値域集合の和集合のうち前記受け付けた出力値域を含むソフトウェア部品の入力値域が、前記受け付けた入力値域となるまで連鎖的に検索を行うことを特徴とする請求項1に記載のソフトウェア部品の検索システム。
  4. 前記検索部の検索結果から、遺伝的アルゴリズムを用いてアプリケーションを生成するアプリケーション生成部をさらに備え、
    前記アプリケーション生成部は、
    前記ソフトウェア部品をランダムに選択してアプリケーションを複数生成して解候補の集合に設定する初期化部と、
    前記解候補の集合のアプリケーションについて評価を行う評価部と、
    前記評価の結果に基づいて前記複数のアプリケーションから一つを選択する選択部と、
    前記選択したアプリケーションの一部を他のソフトウェア部品に交換し、次の世代のアプリケーションの集合を生成する交叉部と、
    前記選択したアプリケーションの一部をランダムに選択した他のソフトウェア部品に交換し、新たなアプリケーションの集合を生成する変異部と、を有し、
    前記初期化部は、
    前記検索条件受付部に予め設定した入力値域と、出力値域を入力し、前記検索部で検索されたソフトウェア部品を組み合わせて、前記アプリケーションを複数生成することを特徴とする請求項1ないし請求項3のいずれかひとつに記載のソフトウェア部品の検索システム。
  5. 前記変異部は、
    前記選択したアプリケーションの一部のソフトウェア部品を部分的に除去し、前記除去した部分の入力と出力を値域として前記検索条件受付部に入力し、前記検索部で検索されたソフトウェア部品を前記除去した部分へ挿入することを特徴とする請求項4に記載のソフトウェア部品の検索システム。
  6. 前記交叉部は、
    前記選択したアプリケーションの一部のソフトウェア部品を部分的に除去し、前記解候補から他のアプリケーションを選択し、前記除去した部分に前記選択した他のアプリケーションのソフトウェア部品を挿入することを特徴とする請求項4に記載のソフトウェア部品の検索システム。
  7. 予め設定された複数のソフトウェア部品の中から、入力された条件に適合するソフトウェア部品を検索する処理を計算機に実行させるソフトウェア部品の検索プログラムにおいて、
    複数のソフトウェア部品の入力および出力が定められている値域を要素とする集合をソフトウェア部品格納部へ格納する手順と、
    前記ソフトウェア部品の出力値域集合の和集合と、入力値域と、前記ソフトウェア部品の識別子とを管理する高階グラフを設定する手順と、
    前記高階グラフから抽出するソフトウェア部品の値域を受け付ける手順と、
    前記受け付けた値域に基づいて、前記受け付けた値域を出力とするソフトウェア部品の並列の組み合わせ、またはひとつを前記高階グラフの出力値域集合の和集合から検索する手順と、
    を前記計算機に実行させることを特徴とするソフトウェア部品の検索プログラム。
  8. 前記値域を受け付ける手順は、検索を行うソフトウェア部品の出力値域と入力値域を受け付けて、
    前記検索する手順は、前記高階グラフの出力値域集合の和集合のうち前記受け付けた出力値域を含むソフトウェア部品の入力値域が、前記受け付けた入力値域を含むソフトウェア部品を検索することを特徴とする請求項7に記載のソフトウェア部品の検索プログラム。
  9. 前記検索する手順は、前記高階グラフの出力値域集合の和集合のうち前記受け付けた出力値域を含むソフトウェア部品の入力値域が、前記受け付けた入力値域となるまで連鎖的に検索を行うことを特徴とする請求項7に記載のソフトウェア部品の検索プログラム。
  10. 前記検索結果から、遺伝的アルゴリズムを用いてアプリケーションを生成する手順をさらに含み、
    前記アプリケーションを生成する手順は、
    前記ソフトウェア部品をランダムに選択してアプリケーションを複数生成して解候補の集合に設定して前記解集合の初期化を行う手順と、
    前記解候補の集合のアプリケーションについて評価を行う手順と、
    前記評価の結果に基づいて前記複数のアプリケーションから一つを選択する手順と、
    前記選択したアプリケーションの一部を他のソフトウェア部品に交換し、次の世代のアプリケーションの集合を生成する手順と、
    前記選択したアプリケーションの一部をランダムに選択した他のソフトウェア部品に交換し、前記解候補の集合を更新する手順と、を含み、
    前記初期化を行う手順は、
    前記予め設定した入力値域と、出力値域を値域として受け付けて、前記検索する手順で検索されたソフトウェア部品を組み合わせて、前記アプリケーションを複数生成することを特徴とする請求項7ないし請求項9のいずれかひとつに記載のソフトウェア部品の検索プログラム。
  11. 前記前記解候補の集合を更新する手順は、
    前記選択したアプリケーションの一部のソフトウェア部品を部分的に除去する手順と、
    前記除去した部分の入力と出力を値域として前記検索する手順で検索されたソフトウェア部品を前記除去した部分へ挿入する手順と、
    を含むことを特徴とする請求項10に記載のソフトウェア部品の検索プログラム。
  12. 前記次の世代のアプリケーションの集合を生成する手順は、
    前記選択したアプリケーションの一部のソフトウェア部品を部分的に除去する手順と、
    前記解候補から他のアプリケーションを選択し、前記除去した部分に前記選択した他のアプリケーションのソフトウェア部品を挿入する手順と、
    を含むことを特徴とする請求項10に記載のソフトウェア部品の検索プログラム。
  13. クライアント計算機に接続されたサーバが、予め設定された複数のソフトウェア部品の中から、前記クライアント計算機から入力された条件に適合するソフトウェア部品を検索する計算機システムにおいて、
    前記サーバは、
    複数のソフトウェア部品の入力および出力が定められている値域を要素とする集合を格納したソフトウェア部品格納部と、
    前記ソフトウェア部品の出力値域集合の和集合と、入力値域と、前記ソフトウェア部品の識別子とを管理する高階グラフと、
    前記高階グラフから抽出するソフトウェア部品の値域を前記クライアント計算機から受け付ける検索条件受付部と、
    前記受け付けた値域に基づいて、前記受け付けた値域を出力とするソフトウェア部品の並列の組み合わせ、またはひとつを前記高階グラフの出力値域集合の和集合から検索する検索部と、
    を備えたことを特徴とする計算機システム。
  14. 前記サーバは、前記検索部の検索結果から、遺伝的アルゴリズムを用いてアプリケーションを生成するアプリケーション生成部をさらに備え、
    前記アプリケーション生成部は、
    前記ソフトウェア部品をランダムに選択してアプリケーションを複数生成して解候補の集合に設定する初期化部と、
    前記解候補の集合のアプリケーションについて評価を行う評価部と、
    前記評価の結果に基づいて前記複数のアプリケーションから一つを選択する選択部と、
    前記選択したアプリケーションの一部を他のソフトウェア部品に交換し、次の世代のアプリケーションの集合を生成する交叉部と、
    前記選択したアプリケーションの一部をランダムに選択した他のソフトウェア部品に交換し、新たなアプリケーションの集合を生成する変異部と、を有し、
    前記初期化部は、
    前記検索条件受付部に予め設定した入力値域と、出力値域を入力し、前記検索部で検索されたソフトウェア部品を組み合わせて、前記アプリケーションを複数生成することを特徴とする請求項13に記載の計算機システム。
JP2006130023A 2006-05-09 2006-05-09 ソフトウェア部品の検索システム及びプログラム Pending JP2007304685A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006130023A JP2007304685A (ja) 2006-05-09 2006-05-09 ソフトウェア部品の検索システム及びプログラム
US11/745,614 US20070299835A1 (en) 2006-05-09 2007-05-08 Search engine for software components and a search program for software components

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006130023A JP2007304685A (ja) 2006-05-09 2006-05-09 ソフトウェア部品の検索システム及びプログラム

Publications (1)

Publication Number Publication Date
JP2007304685A true JP2007304685A (ja) 2007-11-22

Family

ID=38838586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006130023A Pending JP2007304685A (ja) 2006-05-09 2006-05-09 ソフトウェア部品の検索システム及びプログラム

Country Status (2)

Country Link
US (1) US20070299835A1 (ja)
JP (1) JP2007304685A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007318685A (ja) * 2006-05-29 2007-12-06 Ricoh Co Ltd 画像処理装置、アプリケーション実行方法及びアプリケーション実行プログラム
WO2015194853A1 (ko) * 2014-06-18 2015-12-23 한국원자력연구원 모링가잎 추출물을 포함하는 방사선 병용 처리용 조성물 및 이를 이용한 치료방법
JP7468209B2 (ja) 2020-07-14 2024-04-16 日本電信電話株式会社 プログラム生成装置、プログラム生成方法及びプログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008242873A (ja) * 2007-03-28 2008-10-09 Hitachi Ltd ソフトウェア自動構成装置及び方法
US8015149B1 (en) 2008-01-15 2011-09-06 Adobe Systems Incorporated Asset repository
US9607052B2 (en) * 2008-12-29 2017-03-28 Technion Research & Development Foundation Limited Query networks evaluation system and method
US20100293203A1 (en) * 2009-05-18 2010-11-18 Henry Roberts Williams User interface for graph database data
US9128724B2 (en) * 2012-08-28 2015-09-08 International Business Machines Corporation Configuring assembly of a system using supplied architectural artifacts
US9645807B2 (en) 2012-08-28 2017-05-09 International Business Machines Corporation Automated deployment of a configured system into a computing environment
JP6897446B2 (ja) * 2017-09-19 2021-06-30 富士通株式会社 探索方法、探索プログラムおよび探索装置
US10831638B2 (en) 2018-08-21 2020-11-10 International Business Machines Corporation Automated analytics for improving reuse of application solutions
US11663547B2 (en) 2020-10-16 2023-05-30 Bank Of America Corporation Evolutionary software prioritization protocol for digital systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007318685A (ja) * 2006-05-29 2007-12-06 Ricoh Co Ltd 画像処理装置、アプリケーション実行方法及びアプリケーション実行プログラム
WO2015194853A1 (ko) * 2014-06-18 2015-12-23 한국원자력연구원 모링가잎 추출물을 포함하는 방사선 병용 처리용 조성물 및 이를 이용한 치료방법
JP7468209B2 (ja) 2020-07-14 2024-04-16 日本電信電話株式会社 プログラム生成装置、プログラム生成方法及びプログラム

Also Published As

Publication number Publication date
US20070299835A1 (en) 2007-12-27

Similar Documents

Publication Publication Date Title
JP2007304685A (ja) ソフトウェア部品の検索システム及びプログラム
Branke et al. Hyper-heuristic evolution of dispatching rules: A comparison of rule representations
US8019778B2 (en) System, method, and apparatus for searching information across distributed databases
CN102193970B (zh) 知晓元数据的搜索引擎
JP6239004B2 (ja) 最適化されたデータサブセット化のための方法、装置及びコンピュータ読み取り可能媒体
US11176184B2 (en) Information retrieval
KR20030074647A (ko) 제품 구성 방법
US20160004757A1 (en) Data management method, data management device and storage medium
US9983890B2 (en) Collaborative generation of configuration technical data for a product to be manufactured
JP2007052744A (ja) 分類ルール作成支援方法
JP2008134705A (ja) データ処理方法及びデータ分析装置
JP2013515993A (ja) コンピュータにより実施される形状特徴を検出する改良された方法
JP2018152063A (ja) 学習結果識別装置、学習結果識別方法、及びそのプログラム
US20210174217A1 (en) Systems and methods driven by link-specific numeric information for predicting associations based on predicate types
JPWO2018185899A1 (ja) ライブラリ検索装置、ライブラリ検索システム、及びライブラリ検索方法
CN110737779A (zh) 知识图谱的构建方法、装置、存储介质和电子设备
US20140136152A1 (en) Analyzing hardware designs based on component re-use
JP2011100208A (ja) 行動推定装置、行動推定方法および行動推定プログラム
KR102375668B1 (ko) 그래프 표현 학습 모델의 생성 방법
WO2022018899A1 (ja) Kpiツリーから部分ツリーを抽出するシステム
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
WO2017163342A1 (ja) 計算機システム及びデータの分類方法
JP2005158060A (ja) オプションの複雑性を評価する方法、コンピュータ・ソフトウェアおよびコンピュータ・システム
JP2010250569A (ja) 画像検索装置
Chevrette G-LINK: a probabilistic record linkage system