IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

2023-131762開発資産調査支援装置及び開発資産調査支援方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023131762
(43)【公開日】2023-09-22
(54)【発明の名称】開発資産調査支援装置及び開発資産調査支援方法
(51)【国際特許分類】
   G06F 16/28 20190101AFI20230914BHJP
   G06Q 10/10 20230101ALI20230914BHJP
【FI】
G06F16/28
G06Q10/10
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022036704
(22)【出願日】2022-03-09
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】野寄 祐樹
(72)【発明者】
【氏名】加藤 正恭
(72)【発明者】
【氏名】高井 康勢
(72)【発明者】
【氏名】斎藤 義勝
(72)【発明者】
【氏名】飯島 岐勇
【テーマコード(参考)】
5B175
5L049
【Fターム(参考)】
5B175DA10
5B175GB04
5B175KA12
5L049AA20
(57)【要約】      (修正有)
【課題】情報の過不足を最低限に抑えて検索結果を出力することによりユーザの意図を汲み取った検索を可能にする開発資産調査支援装置及び方法を提供する。
【解決手段】開発資産調査支援装置10は、プロセッサ、主記憶装置、補助記憶装置、入力装置、出力装置及び通信装置で、複数の概念と複数の開発資産との間の関係がグラフ構造で関連付けされている開発資産・概念グラフを入力として受け付ける開発資産・概念グラフ入力部101と、検索クエリを入力として受け付ける検索クエリ入力部103と、開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶部102と、検索クエリと前記開発資産・概念グラフに基づいて、前記検索クエリと関連のある開発資産を検索して開発資産検索結果として出力する開発資産検索部104と、開発資産検索結果を表示する検索結果表示部105と、を構成する。
【選択図】図2
【特許請求の範囲】
【請求項1】
複数の概念と複数の開発資産との間の関係がグラフ構造で関連付けされている開発資産・概念グラフを入力として受け付ける開発資産・概念グラフ入力部と、
検索クエリを入力として受け付ける検索クエリ入力部と、
前記開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶部と、
前記検索クエリと前記開発資産・概念グラフに基づいて、前記検索クエリと関連のある前記開発資産を検索して開発資産検索結果として出力する開発資産検索部と、
前記開発資産検索結果を表示する検索結果表示部と、
を有することを特徴とする開発資産調査支援装置。
【請求項2】
前記開発資産検索部は、
複数の前記概念の間の上下関係、複数の前記概念の間の類似関係又は複数の前記概念の間の順番関係を考慮して前記開発資産を検索することを特徴とする請求項1に記載の開発資産調査支援装置。
【請求項3】
前記開発資産・概念グラフ入力部で入力として受け付ける前記開発資産・概念グラフは、
複数の前記概念を表すノードと前記複数の概念の間の関係を表すエッジから構成され、
前記ノードと前記エッジにより、複数の前記概念の間の前記上下関係、複数の前記概念の間の前記類似関係又は複数の前記概念の間の前記順番関係が規定されることを特徴とする請求項2に記載の開発資産調査支援装置。
【請求項4】
前記開発資産検索部は、
前記開発資産・概念グラフと前記検索クエリを入力として受け付け、
受け付けた前記検索クエリに該当する前記開発資産を前記開発資産・概念グラフから検索し、前記開発資産検索結果として出力することを特徴とする請求項1に記載の開発資産調査支援装置。
【請求項5】
複数の概念の間の関係がグラフ構造で関連付けされている概念グラフと複数の開発資産をそれぞれ入力として受け付ける開発資産・概念グラフ入力部と、
入力された前記開発資産と前記概念グラフから、複数の前記開発資産と複数の前記概念間の関係がグラフ構造で関連付けされている開発資産・概念グラフを生成する開発資産・概念グラフ生成部と、
検索クエリを入力として受け付ける検索クエリ入力部と、
前記開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶部と、
前記検索クエリと前記開発資産・概念グラフから、前記検索クエリと関連のある前記開発資産を開発資産検索結果として出力する開発資産検索部と、
前記開発資産検索結果を表示する検索結果表示部と、
を有することを特徴とする開発資産調査支援装置。
【請求項6】
前記開発資産検索部は、
複数の前記概念の間の上下関係、複数の前記概念の間の類似関係又は複数の前記概念の間の順番関係を考慮して前記開発資産を検索することを特徴とする請求項5に記載の開発資産調査支援装置。
【請求項7】
前記開発資産・概念グラフ入力部で入力として受け付ける前記開発資産・概念グラフは、
複数の前記概念を表すノードと前記複数の概念の間の関係を表すエッジから構成され、
前記ノードと前記エッジにより、複数の前記概念の間の前記上下関係、複数の前記概念の間の前記類似関係又は複数の前記概念の間の前記順番関係が規定されることを特徴とする請求項6に記載の開発資産調査支援装置。
【請求項8】
前記開発資産検索部は、
前記開発資産・概念グラフと前記検索クエリを入力として受け付け、
受け付けた前記検索クエリに該当する前記開発資産を前記開発資産・概念グラフから検索し、前記開発資産検索結果として出力することを特徴とする請求項5に記載の開発資産調査支援装置。
【請求項9】
概念入力部と、概念グラフ生成支援部を更に有し、
前記概念入力部は、
前記概念を入力として受け付け、
前記概念グラフ生成支援部は、
受け付けた前記概念に基づいて前記概念グラフの生成を支援することを特徴とする請求項5に記載の開発資産調査支援装置。
【請求項10】
複数の概念と複数の開発資産との間の関係がグラフ構造で関連付けされている開発資産・概念グラフを入力として受け付ける開発資産・概念グラフ入力ステップと、
検索クエリを入力として受け付ける検索クエリ入力ステップと、
前記開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶ステップと、
前記検索クエリと前記開発資産・概念グラフに基づいて、前記検索クエリと関連のある前記開発資産を検索して開発資産検索結果として出力する開発資産検索ステップと、
前記開発資産検索結果を表示する検索結果表示ステップと、
を有することを特徴とする開発資産調査支援方法。
【請求項11】
前記開発資産検索ステップは、
複数の前記概念の間の上下関係、複数の前記概念の間の類似関係又は複数の前記概念の間の順番関係を考慮して前記開発資産を検索することを特徴とする請求項10に記載の開発資産調査支援方法。
【請求項12】
前記開発資産・概念グラフ入力ステップで入力として受け付ける前記開発資産・概念グラフは、
複数の前記概念を表すノードと前記複数の概念の間の関係を表すエッジから構成され、
前記ノードと前記エッジにより、複数の前記概念の間の前記上下関係、複数の前記概念の間の前記類似関係又は複数の前記概念の間の前記順番関係が規定されることを特徴とする請求項11に記載の開発資産調査支援方法。
【請求項13】
前記開発資産検索ステップは、
前記開発資産・概念グラフと前記検索クエリを入力として受け付け、
受け付けた前記検索クエリに該当する前記開発資産を前記開発資産・概念グラフから検索し、前記開発資産検索結果として出力することを特徴とする請求項10に記載の開発資産調査支援方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、開発資産調査支援装置及び開発資産調査支援方法に関する。
【背景技術】
【0002】
ソフトウェアの開発・保守業務では、新しい機能の追加や既存機能の拡張、修正を円滑に進めるために、過去の開発・保守業務で作成したマニュアルや設計書などの膨大な開発資産から追加、拡張、修正したい機能と関連のある開発資産を検索し、調査している。開発資産の検索には、一般的な文字列検索を使うことが多い。
【0003】
しかし、開発資産の中には、検索語が直接書かれてはいないが、検索語と内容的に関連のある開発資産が存在し、これらは文字列検索では抽出できない。検索語が直接書かれてはいないが関連のある開発資産を抽出する方法に関しては特許文献1がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-119590号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1では、検索対象の資料に書かれている単語だけでなく、その単語の上位概念を検索用語として抽出、記憶しておく。具体的には、資料に含まれる用語と、用語と関連のあるトピックス語や、トピックス語と関連のあるカテゴリー語等の上位概念を検索用語の候補として抽出し、ユーザに提示する。ユーザは、提示された検索用語の候補から資料と関連のある検索用語を選択する。
【0006】
特許文献1の手法でも、検索語が直接書かれてはいないが関連のある開発資産が検索結果として出力可能である。しかし、検索する際に、ユーザの意図が汲み取り切れず、必要な情報が手に入らない場面や、余分な情報が出力されてしまう場面がある。
【0007】
例えば、ソフトウェア開発では、「要件」、「設計」、「実装」、「テスト」という「工程」があり、それぞれの工程で開発資産が作られる。開発者はどのように開発されていたかを知るために「設計」、「実装」、「テスト」の情報が欲しい場面が多くあり、経営者は、何を開発するかを知るために「要件」の情報が欲しい場面が多くある。開発者がA機能を拡張する際に、「A機能」を検索語にして検索をする。
【0008】
特許文献1の手法では、「A機能」と関連があり、かつ、「設計」「実装」「テスト」に関連のある情報だけが欲しい場面でも、「A機能」と関連があり、かつ、「要件」「設計」「実装」「テスト」に関連のある開発資産が検索結果として抽出されてしまう。そのため、余分な情報が検索結果としてヒットしてしまう。また、概念の表記ゆれが原因で必要な情報が手に入らない場面がある。「テスト」と「検証」は同じ概念だが、表現が異なっている。このような概念を同じ意味として扱いたくても、特許文献1の手法では、「テスト」を検索クエリに検索すると、「テスト」の概念に該当する開発資産は検索結果としてヒットするが、「検証」の概念に該当する開発資産は検索結果としてヒットしない。
【0009】
本発明の目的は、開発資産調査支援装置において、情報の過不足を最低限に抑えて検索結果を出力することによりユーザの意図を汲み取った検索を可能にすることにある。
【課題を解決するための手段】
【0010】
本発明の一態様の開発資産調査支援装置は、複数の概念と複数の開発資産との間の関係がグラフ構造で関連付けされている開発資産・概念グラフを入力として受け付ける開発資産・概念グラフ入力部と、検索クエリを入力として受け付ける検索クエリ入力部と、前記開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶部と、前記検索クエリと前記開発資産・概念グラフに基づいて、前記検索クエリと関連のある前記開発資産を検索して開発資産検索結果として出力する開発資産検索部と、前記開発資産検索結果を表示する検索結果表示部を有することを特徴とする。
【発明の効果】
【0011】
本発明の一態様によれば、開発資産調査支援装置において、情報の過不足を最低限に抑えて検索結果を出力することによりユーザの意図を汲み取った検索を可能にすることができる。
【図面の簡単な説明】
【0012】
図1】実施例1に係る開発資産調査支援装置のハードウェア構成の一例を示す図である。
図2】実施例1に係る開発資産調査支援装置の機能的な構成の一例を示す図である。
図3】実施例1に係る開発資産・概念グラフの論理データモデルのイメージの一例を示す図である。
図4】実施例1に係る開発資産・概念グラフの一例を示す図である。
図5】実施例1に係る表現テーブルの一例を示す図である。
図6】実施例1に係る概念-表現テーブルの一例を示す図である。
図7】実施例1に係る概念-概念テーブルの一例を示す図である。
図8】実施例1に係る実体テーブルの一例を示す図である。
図9】実施例1に係る検索クエリの一例を示す図である。
図10】実施例1に係る検索クエリ入力画面の一例を示す図である。
図11】実施例1に係る開発資産検索結果の一例を示す図である。
図12】実施例1に係る検索結果表示画面の一例を示す図である。
図13】実施例1に係る開発資産調査支援装置の動作の一例を説明するためのフローチャートである。
図14】実施例1に係る開発資産調査支援装置のキーワード-概念探索処理の動作の一例を説明するためのフローチャートである。
図15】実施例1に係る開発資産調査支援装置の概念-概念探索処理の動作の一例を説明するためのフローチャートである。
図16】実施例1に係る開発資産調査支援装置の概念-実体探索処理の動作の一例を説明するためのフローチャートである。
図17】実施例1に係る開発資産調査支援装置の実体フィルタリング処理の動作の一例を説明するためのフローチャートである。
図18】実施例1に係る開発資産調査支援装置の検索結果データ生成処理の動作の一例を説明するためのフローチャートである。
図19】実施例1に係る開発資産・概念グラフと検索クエリを開発資産検索部に入力した結果、出力される開発資産検索結果の一例を示す図である。
図20】実施例1に係る検索結果表示部の動作の一例を説明するためのフローチャートである。
図21】実施例2に係る開発資産調査支援装置の機能的な構成の一例を示す図である。
図22】実施例2に係る開発資産の一例を示す図である。
図23】実施例2に係る概念グラフの一例を示す図である。
図24】実施例2に係るグループリストの一例を示す図である。
図25】開発資産概念グラフ入力部と開発資産・概念グラフ生成部の動作の一例を説明するためのフローチャートである。
図26】実施例2に係る開発資産・概念グラフ生成部のグループ生成処理の動作の一例を説明するためのフローチャートである。
図27】実施例2に係る順番関係選択画面の一例を示す図である。
図28】実施例2に係る順番関係選択・更新処理の動作の一例を説明するためのフローチャートである。
図29】実施例3に係る開発資産調査支援装置の機能的な構成の一例を示す図である。
図30】実施例3に係る概念の一例を示す図である。
図31】実施例3に係る類似関係生成画面の一例を示す図である。
図32】実施例3に係る上下関係生成画面の一例を示す図である。
図33】実施例3に係る概念入力部と概念グラフ生成支援部の動作の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【0013】
以下、実施例について図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではない。また実施例において説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【実施例0014】
図1は、実施例1に係るデータ抽出装置のハードウェア構成を示す構成図である。
図1に示す開発資産調査支援装置10は、例えば、情報処理装置である。開発資産調査支援装置10は、クラウドシステムにより提供されるクラウドサーバなどを用いて実現されてもよい。開発資産調査支援装置10は、ソフトウェアシステムの開発や保守などに使用されてもよい。
【0015】
図1に示す開発資産調査支援装置10は、プロセッサ11と、主記憶装置12と、補助記憶装置13と、入力装置14と、出力装置15と、通信装置16とを備える。これらは図示しないバスなどの通信手段を介して互いに通信可能に接続される。
【0016】
プロセッサ11は、例えば、CPU(Central Processing Unit)及びMPU(Micro Processing Unit)などを用いて構成される。プロセッサ11は、主記憶装置12に格納されているプログラムを読み出して実行することにより、開発資産調査支援装置10の様々な機能を実現する。主記憶装置12は、プログラム及びデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)及び不揮発性半導体メモリ(NVRAM(Non Volatile RAM))などである。
【0017】
補助記憶装置13は、例えば、ハードディスクドライブ、SSD(Solid State Drive)、光学式記憶装置(例えば、CD(Compact Disc)やDVD(Digital Versatile Disc)など)、ICカード及びSDメモリカードなどで構成される。また、補助記憶装置13として、ストレージシステム又はクラウドサーバなどが用いられてもよい。補助記憶装置13は、プログラム及びデータを記憶する。補助記憶装置13に記憶されたプログラム及びデータは、必要に応じて主記憶装置12にロードされる。
【0018】
入力装置14は、例えば、キーボード、マウス、タッチパネル、カードリーダ及び音声入力装置などを用いて構成される。入力装置14は、開発資産調査支援装置10を利用するユーザから種々の情報を受け付ける。出力装置15は、ユーザに処理経過及び処理結果などの種々の情報を提供する。出力装置15は、例えば、画面表示装置(液晶モニタ、LCD(Liquid Crystal Display)及びグラフィックカードなど)、音声出力装置(スピーカなど)及び印字装置などを用いて構成される。
【0019】
通信装置16は、LANやインターネットなどの通信手段を介した他の装置との間の通信を実現する有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール及びシリアル通信モジュールなどを用いて構成される。
【0020】
なお、情報の入力及び出力は、通信装置16を介して図示していない他の装置との間で行われてもよい。また、開発資産調査支援装置10は、上記の構成とは別に、ASIC(Application Specific Integrated Circuit)などのハードウェアを備えていてもよい。
【0021】
図2は、実施例1に係る開発資産調査支援装置10の機能的な構成の一例を示す図である。図2に示すように開発資産調査支援装置10は、開発資産・概念グラフ入力部101、開発資産・概念グラフ記憶部102、検索クエリ入力部103、開発資産検索部104、検索結果表示部105を有する。
【0022】
具体的には、実施例1に係る開発資産調査支援装置10は、複数の概念と複数の開発資産との間の関係がグラフ構造で関連付けされている開発資産・概念グラフ111を入力として受け付ける開発資産・概念グラフ入力部101と、検索クエリ112を入力として受け付ける検索クエリ入力部103と、開発資産・概念グラフ111を記憶しておく開発資産・概念グラフ記憶部102と、検索クエリ112と開発資産・概念グラフ111に基づいて検索クエリ112と関連のある開発資産を検索して開発資産検索結果113として出力する開発資産検索部104と、開発資産検索結果113を表示する検索結果表示部105を有する。
【0023】
図2に示す開発資産調査支援装置10の各部は、図1で示した装置11~16のいずれか1つ以上の構成にて実現される。例えば、各部の少なくとも1つは、プロセッサ11が、主記憶装置12又は補助記憶装置13に格納されているプログラムを読み出して実行することにより実現されてもよい。また、各部の少なくとも1つがASICなどのハードウェアを用いて実現されてもよい。
【0024】
図2に示す開発資産・概念グラフ入力部101は、開発資産・概念グラフ111を受け付ける入力部である。開発資産・概念グラフ入力部101は、受け付けた開発資産・概念グラフ111を開発資産・概念グラフ記憶部102に格納する。
【0025】
図3は、実施例1に係る開発資産・概念グラフ111のイメージの一例を示す図である。開発資産・概念グラフ111は概念を表すノードと概念間の関係を表すエッジから構成される。概念間の関係には、上下関係と類似関係、順番関係のいずれかが付与される。例えば、「設計」302と「設計書」306には上下関係が付与される。また、「テスト」304と「検証」305には類似関係が付与されており、「設計」302、「実装」303、「テスト」304には順番関係が付与される。さらに、開発資産はこれらの概念のいずれかに関連付けがされる。例えば、「A設計書.docx」307は「設計書」306と関連付けがされる。なお、これらの概念の関係は、組織ごとやユーザごとなど、状況に応じて一部変更してもよい。ここで、類似関係とは、例えば、同義関係を含む概念である。
【0026】
図4は、実施例1に係る開発資産・概念グラフ111の一例を示す図である。開発資産・概念グラフ111は概念テーブル401と、表現テーブル402と、概念-表現テーブル403と、概念-概念テーブル404と、概念間の関係テーブル405と、実体テーブル406を含む。概念テーブル401は、概念をレコードとして有し、概念は、CIDを含む。
【0027】
図5は、実施例1に係る表現テーブル402の一例を示す図である。表現テーブル402は、表現501をレコードとして有し、表現501は、EID502と、Name503を含む。
【0028】
図6は、実施例1に係る概念-表現テーブル403の一例を示す図である。概念ー表現テーブル403は、概念-表現601をレコードとして有し、概念-表現601は、CEID602と、CID603とEID604を含む。
【0029】
図7は、実施例1に係る概念-概念テーブル404の一例を示す図である。概念-概念テーブル404は、概念-概念701をレコードとして有し、概念-概念701は、CCID702と、CID1703と、CID2704と、RID705と、PARENT706を含む。なお、RIDが1の場合、CID1がCID2の上位概念であり、CID2がCID1の下位概念となってもよい。また、RIDが2の場合、概念は、CID1、CID2の順に順番関係を持ってもよい。概念間の関係テーブル405は、概念間の関係をレコードとして有し、概念間の関係は、RIDと、Nameを含む。
【0030】
図8は、実施例1に係る実体テーブル406の一例を示す図である。実体テーブル406は、実体801をレコードとして有し、実体801は、eID802と、URI803と、CID804を含む。なお、URI803は、1つのファイルの場所を識別できる識別子であればよい。例えば、ファイルパスでもよい。
【0031】
図2に示す検索クエリ入力部103は検索クエリ112を受け付ける入力部である。検索クエリ入力部103は、受け付けた検索クエリ112を開発資産検索部104に入力する。
【0032】
図9は、実施例1に係る検索クエリ入力部103の動作中に作成および利用される検索クエリ112の一例を示す図である。検索クエリ112は、キーワード901と、オプション902をレコードとして有し、オプション902は、親概念903と、子概念904、範囲905を含む。
【0033】
図10は、実施例1に係る検索クエリ入力画面1001の一例を示す図である。検索クエリ入力画面1001はキーワードが入力できるテキストボックス1002とオプションが入力できるコンボボックス1003~1005と検索ボタン1006を有する。テキストボックス1002にはキーワードが文字列で入力できる。コンボボックス1003には、下位概念が順番関係を持つ上位概念(親概念)を入力できる。
【0034】
下位概念が順番関係を持つ上位概念の一覧の中から親概念を選択する。概念-概念テーブル404のRID705にR02が格納されているレコードのPARENT706に格納されているCIDを選択候補としてユニークに取得し、概念-表現テーブルから取得したCIDの表現を表示する。例えば、親概念として「C01」が入力されていた場合、「C01」の下位概念は「C02」、「C03」、「C04」であり、「設計」、「実装」、「テスト」が表示されている。ユーザはこの中から子概念を選択する。
【0035】
コンボボックス1004には、コンボボックス1003で指定された親概念の下位概念(子概念)が入力できる。より具体的には、PARENT706に親概念が格納されているレコードのCID1とCID2から、CIDを選択候補としてユニークに取得し、概念-表現テーブルから取得したCIDの表現を表示する。なお、表現が複数ある場合は、複数表示されても良い。入力された親概念の下位概念の一覧から、子概念を選択する。
【0036】
ここで入力される子概念は考慮したい順番関係の範囲の上限、もしくは下限となる。コンボボックス1005は、「前」、「含めて前」、「後ろ」、「含めて後ろ」の中から選択して入力できる。コンボボックス904で指定された子概念より前を検索したい場合は「前」を、子概念を含めて前を検索したい場合は「含めて前」を、子概念より後ろを検索したい場合は「後ろ」、子概念を含めて後ろを検索したい場合「含めて後ろ」を選択する。検索ボタン1006は、検索指示が入力できる。
【0037】
検索指示が入力されると、検索クエリ112に対して、テキストボックス1002に入力された文字列がキーワード901に、コンボボックス1003に入力された表現の概念が親概念903に、コンボボックス1004に入力された表現の概念が子概念904に、コンボボックス1005で入力されたデータが範囲905に入力される。
【0038】
図2に示す開発資産検索部104は開発資産・概念グラフ111と検索クエリ112を入力として受け付ける。開発資産検索部は、受け付けた検索クエリ112に該当する開発資産を開発資産・概念グラフ111から検索し、開発資産検索結果113を出力する。
【0039】
図11は、実施例1に係る開発資産検索結果113の一例を示す図である。開発資産検索結果113は検索結果1102を含むレコードを有し、検索結果1102はeID1103とhop1104を含む。hopはhopの前に数字を追加して「1hop」としてもよい。hopが増えるたびに「2hop」、「3hop」と増やしてもよい。なお、hopは、開発資産検索結果のhopに格納すべきデータが増えるたびにカラムを増やしてもよい。また、hopの数を一番下位の概念から一番上位の概念までの間に存在する概念の数の最大値としてもよい。
【0040】
図2に示す検索結果表示部105は開発資産検索結果113を受け付ける表示部である。検索結果表示部105は、開発資産検索結果113に基づいて検索結果をユーザに表示をする。
【0041】
図12は、実施例1に係る検索結果表示画面1201の一例を示す図である。検索結果表示画面1201は、検索結果表示リストと表示概念ホップ数1202を有し、表示概念ホップ数1202を入力として受け付ける。検索結果表示リストは検索結果をレコードとして有し、検索結果は、ヒットした開発資産と概念を含む。表示概念ホップ数1202は、1から、開発資産検索結果113のhop1104の数の最大値までの値が選択できる。
【0042】
図13は、実施例1に係る開発資産調査支援装置10の動作の一例を説明するためのフローチャートである。
先ず、開発資産調査支援装置10は、開発資産・概念グラフ111を受け付ける(ステップS1301)。このとき、開発資産調査支援装置10は、ユーザが入力装置14に直接入力した開発資産・概念グラフ111を受け付けてもよいし、ユーザにて指定された格納場所にアクセスして、その格納場所から開発資産・概念グラフ111を受け付けてもよい。
【0043】
後者の場合、例えば、開発資産調査支援装置10がアクセス可能な格納場所に開発資産・概念リスト111を予め格納しておき、ユーザがその格納場所を指定する情報を入力装置14に入力する。この場合、開発資産・概念グラフ入力部101は、入力された情報に基づいて、格納場所にアクセスし、その格納場所から開発資産・概念グラフ111を受け付ける。
【0044】
続いて、受け付けた開発資産・概念グラフを開発資産・概念グラフ記憶部102に格納する(ステップS1302)。続いて、検索クエリの入力を受け付ける(ステップS1303)。このとき、検索クエリ入力部103は、検索クエリ入力画面1001を表示し、検索クエリ入力画面1001を通して入力された検索クエリ112を受け取る。
【0045】
続いて、キーワード-概念探索処理(ステップS1304)では、検索クエリのキーワード901と概念を関連付け、キーワード概念リストを生成する。キーワード概念リストは概念を含むレコードを有し、概念はCIDを含む。処理の詳細は図20のフローチャートで説明する。
【0046】
続いて、概念-概念探索処理(ステップS1305)では、ステップS1304で生成されたキーワード概念リストに格納されている概念と関連のある概念を探索し、概念概念リストを生成する。概念概念リストは概念を含むレコードを有し、概念はCIDを含む。処理の詳細は図21のフローチャートで説明する。
【0047】
続いて、概念-実体探索処理(ステップS1306)では、ステップS1305で生成された概念概念リストに格納されている概念と関連のある実体901を探索し、実体リストを生成する。実体リストは実体を含むレコードを有し、実体はeIDを含む。処理の詳細は図22のフローチャートで説明する。
【0048】
続いて、実体フィルタリング処理(ステップS1307)では、順番関係を考慮することで、ステップS1306で探索された実体の中から、検索結果として出力すべき実体のみを取得し、開発資産検索結果113を生成する。処理の詳細は図23のフローチャートで説明する。
【0049】
続いて、検索結果データ生成処理(ステップS1308)では、検索結果として出力するために、ステップS1307で生成された開発資産検索結果113を加工する。この開発資産検索結果113は検索結果表示部105でユーザに検索結果を表示するために使われる。
【0050】
続いて、検索結果表示処理(ステップS1309)では、開発資産結果113を使ってユーザに検索結果を表示する。
【0051】
図14は、キーワード-概念探索処理S1304の動作の一例を説明するためのフローチャートである。
先ず、検索クエリ入力部103から入力された検索クエリと開発資産・概念グラフ記憶部102に格納されている開発資産・概念グラフを読み込む(ステップS1401)。
【0052】
続いて、空のキーワード概念リストを生成する(ステップS1402)。続いて、キーワード探索ループとして、全ての表現テーブルのレコード501ごとに、ステップS1404~S1407の処理を繰り返す(ステップS1403)。
【0053】
キーワード探索ループでは、検索クエリのキーワード901が、対象となる表現テーブルのレコードのName503と一致するかを判定する(ステップS1404)。一致しない場合、処理を終了し、次の表現テーブルのレコードを対象にキーワード探索ループの処理を再開する。一致する場合、次の処理のステップS1405に進む。例えば、キーワード901が「A機能」の場合、対象となる表現テーブルのレコードのName503が「A機能」でない場合は処理を終了し、「A機能」である場合、次の処理のステップS1404に進む。表現テーブル402から、EIDが「E06」となっているレコードの時に、次の処理に進む。
【0054】
続いて、キーワード探索ループでは、対象となる表現テーブルのレコードのEID502と一致するEIDを持つ概念-表現テーブルのレコード601を参照し、そのレコードのCEID602を取得する(ステップS1405)。例えば、EIDが「E06」となっているレコードを取得する場合、EIDが「E06」となっているレコードは「CE06」のため「CE06」のCIDである「C05」を取得する。なお、対象となる表現テーブルのレコードのEID502が概念-表現テーブルにある複数のレコードに存在するとき、複数のCIDを取得してもよい。
【0055】
続いて、キーワード探索ループでは、取得したCIDをキーワード概念リストに全て格納する(ステップS1406)。ステップS1404~1406の処理を全ての表現テーブルのレコードに対して実行すると、キーワード-概念探索処理(S1304)は、キーワード-概念ループを抜ける(ステップS1407)。
【0056】
図15は、概念-概念探索処理S1305の動作の一例を説明するためのフローチャートである。
先ず、キーワード概念リストを読み込む(ステップS1501)。続いて、空の概念概念リストを生成する(ステップS1502)。続いて、概念探索ループとして、全てのキーワード概念リストのレコードごとに、ステップS1504~S1513を繰り返す(ステップS1503)。
【0057】
概念探索ループでは、空のスタックSを生成する(ステップS1504)。続いて、概念探索ループでは、スタックSに対象のキーワード概念リストのレコードをプッシュする(ステップS1505)。例えば、キーワード概念リストに「C05」が格納されている場合、スタックSに「C05」をプッシュする。なお、キーワード概念リストに複数のCIDが格納されていた場合、全てのCIDをプッシュしてもよい。
【0058】
続いて、概念探索ループでは、対象のキーワード概念リストのレコードに格納されているCIDを概念概念リストに格納する(ステップS1506)。例えば、スタックSに「C05」がプッシュされていた場合、「C05」を概念概念リストに格納する。
【0059】
続いて、深さ優先探索ループとして、スタックSが空になるまでステップS1508~S1512を繰り返す(ステップS1507)。深さ優先探索ループでは、スタックSから要素を1つポップし、ポップされた要素をvとする(ステップS1508)。例えば、スタックSに「C05」がプッシュされていた場合、「C05」がポップされる。
【0060】
続いて、深さ優先探索ループでは、ポップしたvに対して、概念-概念テーブル701からvの下位概念を取得する(ステップS1509)。より具体的には、vに対して、概念-概念テーブルのCID1703にvが格納されており、概念-概念テーブルのRID705に「R01」が格納されているレコードを探索し、そのレコードのCID2704に格納されているCIDが取得される。
【0061】
例えば、CID1が「C05」のレコードが存在しない場合は取得できない。一方で、「C04」がvの場合、概念-概念テーブル404より、CD1が「C04」のレコードはCC07とCC08のため、CC07のCID2に格納されている「C08」と、CC08のCID2に格納されている「C09」が取得される。
【0062】
続いて、深さ優先探索ループでは、取得された下位概念をスタックSにプッシュする(ステップS1510)。例えば、何も取得できていない場合は、Sには何もプッシュしない。一方で、「C08」と「C09」が取得されている場合、「C08」と「C09」をスタックSにプッシュする。
【0063】
続いて、深さ優先探索ループでは、取得された下位概念を概念概念リストに格納する(ステップS1511)。例えば、何も取得できていない場合は概念概念リストには何も格納しない。一方で、「C08」と「C09」が取得されている場合、「C08」と「C09」を概念概念リストに格納する。
【0064】
ステップS1508~1512の処理をスタックSが空になるまで実行すると、概念ー概念探索処理(S1305)は、深さ優先探索ループを抜ける(ステップS1512)。ステップS1504~1513の処理を全てのキーワード概念リストのレコードに対して実行すると、概念-概念探索処理(S1305)は、概念探索ループを抜ける。
【0065】
図16は、概念-実体探索処理(S1306)の動作の一例を説明するためのフローチャートである。
先ず、概念概念リストを読み込む(ステップS1601)。続いて、空の実体リストを生成する(ステップS1602)。続いて、実体リスト生成ループとして、全ての概念概念リストのレコードごとにステップS1604~S1606を繰り返す(ステップS1603)。
【0066】
実体リスト生成ループでは、実体テーブルのレコードのCID804と、対象となる概念概念リストのレコードのCIDを比較し、CIDが一致している実体テーブルのレコードのeID802を取得する(ステップS1604)。例えば、概念概念リストに「C05」が格納されている場合、実体テーブル406から「C05」がCIDに格納されているeID「e01」、「e02」、「e03」、「e04」を取得する。
【0067】
続いて、実体リスト生成ループでは、取得したeIDを全て実体リストに格納する(ステップS1605)。例えば、「e01」と「e02」と「e03」と「e04」を取得した場合、実体リストに「e01」と「e02」と「e03」と「e04」を格納する。
【0068】
図17は、実体フィルタリング処理(S1307)の動作の一例を説明するためのフローチャートである。
先ず、実体リストを読み込む(ステップS1701)。続いて、空の開発資産検索結果を生成する(ステップS1702)。続いて、実体ループとして、全ての実体リストのレコードごとにステップS1704~S1725を繰り返す(ステップS1703)。
実体ループでは、空のスタックSを生成する(ステップS1704)。
【0069】
続いて、実体ループでは、実体テーブル406から、対象の実体リストのレコードのeIDが格納されたレコードを取得する(ステップS1705)。例えば、対象の実体リストのレコードのeIDに「e03」が格納されていた場合、実体テーブルの「e03」が格納されたレコードを取得する。
【0070】
続いて、実体ループでは、取得したレコードのCIDをスタックSにプッシュする(ステップS1706)。例えば、実体テーブルの「e03」が格納されたレコードを取得した場合、「C05」と「C10」をSにプッシュする。
【0071】
続いて、実体ループでは、0が格納された変数Filterを生成する(ステップS1707)。続いて、深さ優先探索ループとして、スタックSが空になるまでステップS1708~S1721を繰り返す(ステップS1708)。深さ優先探索ループでは、スタックSから要素を1つポップし、ポップされた要素をvとする(ステップS1709)。例えば、Sに「C10」がプッシュされていた場合、「C10」がポップされる。
【0072】
続いて、深さ優先探索ループでは、空のスタックTを生成する(ステップS1710)。続いて、深さ優先探索ループでは、概念-概念テーブル404から、vの上位概念を全て取得し、スタックTにプッシュする(ステップS1711)。例えば、「C10」がvの場合、概念-概念テーブル404のRIDに「R01」が格納されているレコードから、CID2に「C10」が格納されているレコードのCID1を取得する。CID2に「C10」が格納されているレコードは「CC08」であり、「CC08」のCID1は「C08」のため、「C02」を取得し、スタックTにプッシュする。
【0073】
続いて、フィルタリング判定ループとして、スタックTが空になるまでステップS1713~S1721を繰り返す(ステップS1712)。フィルタリング判定ループでは、スタックTから要素を1つポップし、ポップされた要素をwとする(ステップS1713)。例えば、スタックTに「C08」がプッシュされていた場合、「C08」をポップする。
【0074】
続いて、wと検索クエリの親概念903が一致するかを判定する(ステップS1714)。一致する場合は、次のステップS1715に進む。一致しない場合は、ステップS1720に進む。例えば、親概念に「C01」が格納されており、wに「C08」がプッシュされていた場合、親概念とwが一致しないため、ステップS1720に進む。一方で、wに「C01」がプッシュされていた場合、親概念とwが一致するため、ステップS1715に進む。
【0075】
続いて、親概念とwが一致していた場合、フィルタリング判定ループでは、検索クエリの親概念903の下位概念とそれらの順番関係を取得する(ステップS1715)。より具体的には、概念-概念テーブルのPARENT706に検索クエリの親概念903のCIDが格納されているレコードを複数取得する。
【0076】
続いて、フィルタリング判定ループでは、取得した概念-概念テーブルのレコード701の中で、検索クエリの子概念と範囲で指定された検索対象とする概念を取得する(ステップS1716)。より具体的には、検索クエリの範囲905に「前」「含めて前」が指定された場合は、先ず、概念-概念テーブルのRID705に「R02」が格納されており、PARENT706に親概念が格納されており、CID2704に子概念が格納されているものを探索し、そのレコードとCID1703を検索範囲の一つとして取得する。
【0077】
次に、RIDに「R02」が格納されており、PARENTに親概念が格納されており、CID2に検索範囲のCIDが格納されているものを探索し、そのCID1を検索範囲の一つとして取得する。このようにして、検索範囲のCIDがCID2に格納されているレコードを全て探索する。「含めて前」の場合、検索範囲に子概念を含める。
【0078】
「後ろ」「含めて後ろ」が指定された場合は、先ず、RIDに「R02」が格納されており、PARENTに親概念が格納されており、CID1に子概念が格納されているものを探索し、そのCID2を検索範囲の一つとして取得する。次に、RIDに「R02」が格納されており、PARENTに親概念が格納されており、CID1に検索範囲のCID2が格納されているものを探索し、そのレコードとCID2を検索範囲の一つとして取得する。
【0079】
このようにして、検索範囲のCIDがCID1に格納されているレコードを全て探索する。「含めて後ろ」の場合、検索範囲に子概念を含める。例えば、親概念として「C01」、子概念として「C03」、範囲として「後ろ」が選択されている場合、概念-概念テーブルからRIDが「R02」、PARENTが「C01」、CID1が「C03」であるレコードを探すと、そのレコードのCID2「C04」を検索範囲の一つとして取得する。同様にRIDが「R02」、PARENTが「C01」、CID1が「C04」であるレコードを探し、そのようなレコードが存在しない場合、検索範囲として「C04」のみを取得し、探索は終了となる。
【0080】
続いて、フィルタリング判定ループでは、検索範囲として取得した概念にvが存在するかを判定する(ステップS1717)。存在する場合は、ステップS1720に進む。存在しない場合は、次にステップS1718に進む。例えば、検索範囲として「C04」を取得しており、vが「C04」の場合、検索範囲にvが存在するためS1720に進む、一方で、vが「C02」の場合、検索範囲にvが存在しないためS1718に進む。
【0081】
続いて、検索範囲として取得した概念にvが存在しない場合、フィルタリング判定ループでは、Filterに1を格納する(ステップS1718)。続いて、フィルタリング判定ループでは、SとTを両方空にする(ステップS1719)。
【0082】
続いて、親概念とwが一致しない場合、または、検索範囲として取得した概念にvが存在する場合、フィルタリング判定ループでは、wをSにプッシュする(ステップS1720)。例えば、wが「C08」の場合、「C08」をSにプッシュする。
【0083】
ステップS1713~1721の処理をスタックTが空になるまで実行すると、実体フィルタリング処理(S1307)は、フィルタリング判定ループを抜ける(ステップS1720)。
【0084】
ステップS1709~1722の処理をスタックSが空になるまで実行すると、実体フィルタリング処理(S1307)は、深さ優先探索ループを抜ける(ステップS1722)。続いて、実体ループでは、Filterに1が格納されているかどうかを判断する(ステップS1723)。1が格納されている場合は、ステップS1725に進む。1が格納されていない場合は、ステップS1724に進む。
【0085】
続いて、Filterに1が格納されていない場合、実体ループでは、開発資産検索結果113のeIDに対象の実体ループのeIDを入力する(ステップS1724)。ステップS1704~S1725の処理を全ての実体リストのレコードに対して実行すると、実体フィルタリング処理(S1307)は、実体ループを抜ける(ステップS1725)。
【0086】
図18は、検索結果データ生成処理(S1308)の動作の一例を説明するためのフローチャートである。
先ず、開発資産検索結果113を読み込む(ステップS1801)。続いて、概念抽出ループとして、全ての開発資産検索結果のレコードに対してステップS1803~S1814を繰り返す(ステップS1802)。
【0087】
続いて、概念抽出ループでは、対象の開発資産検索結果のレコードのeIDに対応するCIDを実体テーブルから取得する(ステップS1803)。なお、複数のCIDがある場合は、複数のCIDを取得してもよい。例えば、対象の開発資産検索結果のレコードのeIDが「e03」の場合、実体テーブルから「C05」と「C10」を取得する。
【0088】
続いて、概念抽出ループでは、対象の開発資産検索結果のレコードの1hopに取得したCIDを全て格納する(ステップS1804)。例えば、「C05」と「C10」を取得した場合、対象の開発資産検索結果のレコードの1hopに「C05,C10」を格納する。続いて、変数Nに0を格納する(ステップS1805)。
【0089】
続いて、上位概念判定ループとしてN+1hopに概念が格納されなくなるまでステップS1807~S1813を繰り返す(ステップS1806)。続いて、上位概念ループでは、NにN+1を格納する(ステップS1807)。
【0090】
続いて、上位概念抽出ループとして、対象の開発資産検索結果のレコードのNhopにあるCIDごとにステップS1809~S1812を実行する(ステップS1808)。
【0091】
続いて、上位概念抽出ループとして、概念-概念テーブルに対象のCIDの上位概念が存在するか判定する(ステップS1809)。存在する場合は、次のステップS1810に進む。存在しない場合は、S1812に進む。より具体的には、概念-概念テーブルのRIDに「R01」が格納されているレコードの中で、CID2に対象のCIDが格納されているレコードが存在するか判定する。
【0092】
例えば、対象のCIDが「C05」の場合、概念-概念テーブルのRIDに「R01」が格納されており、CID2に「C05」が格納されているレコードがないため、存在しないと判定する。一方で、対象のCIDが「C10」の場合、概念-概念テーブルのRIDに「R01」が格納されており、CID2に「C10」が格納されているレコードがあるため、存在すると判定する。
【0093】
続いて、上位概念抽出ループとして、対象のCIDの上位概念を取得する(ステップS1810)。より具体的には、概念-概念テーブルのRIDに「R01」が格納されているレコードの中で、CID2に対象のCIDが格納されているレコードのCID1を取得する。例えば、対象のCIDが「C10」の場合、概念-概念テーブルのRIDに「R01」が格納されているレコードの中で、CID2に「C10」が格納されているレコードは「CC08」であるため、「CC08」のCID1である「C08」を取得する。
【0094】
続いて、上位概念抽出ループとして、取得した上位概念を対象の開発資産検索結果のレコードのN+1hopに格納する(ステップS1811)。例えば、N=1であり、取得した上位概念が「C08」の場合、対象の開発資産検索結果のレコード2hopにC08を格納する。なお、既に格納されているCIDが存在する場合、コンマ区切りで追加する形で格納してもよい。
【0095】
ステップS1809~S1812の処理を対象の開発資産検索結果のレコードのNhopにあるCID全てに対して実行すると、検索結果データ生成処理(S1308)は、上位概念抽出ループを抜ける(ステップS1812)。ステップS1807~S1813の処理をN+1に概念が存在しなくなるまでまで実行すると、検索結果データ生成処理(S1308)は、上位概念判定ループを抜ける(ステップS1813)。
【0096】
ステップS1803~S1814の処理を全ての開発資産検索結果のレコードに対して実行すると、検索結果データ生成処理(S1308)は、概念抽出ループを抜ける。
【0097】
図19は、開発資産・概念グラフ111と検索クエリ112を開発資産検索部に入力した結果、出力される開発資産検索結果113の一例を示す図である。
【0098】
なお、検索クエリのキーワードは、「A機能」が入力されており、検索クエリのオプションの親概念1003は、「工程」が入力されており、検索クエリのオプションの子概念1004は「実装」が入力されており、検索クエリのオプションの範囲1005は「後ろ」が入力された例である。例えば、e03(テスト)には1hopに「C10」と「C05」、2hopに「C08」、3hopに「C04」、4hopに「C01」が格納されており、e04(検証)には1hopに「C09」と「C05」、2hopに「C04」、3hopに「C01」が格納されている。
【0099】
図20は、実施例1に係る検索結果表示処理S1109の動作の一例を説明するフローチャートである。
先ず、開発資産検索結果113を読み込む(ステップS2001)。続いて、空の検索結果表示リストを生成する(ステップS2002)。続いて、検索結果表示画面1201から表示概念ホップ数1202の入力を受け付ける(ステップS2003)。
【0100】
続いて、受け付けた表示概念ホップ数を変数Mに格納する(ステップS2004)。例えば、表示概念ホップ数に「2」が入力された場合、変数Mに「2」を格納する。続いて、検索結果生成ループとして、全ての開発資産検索結果のレコードごとにステップS2005~S2012を繰り返す(ステップS2004)。
【0101】
続いて、検索結果生成ループでは、検索結果表示リストのヒットした開発資産に、対象の開発資産検索結果のレコードのeIDに該当するURIを格納する(ステップS2005)。より具体的には、対象の開発資産検索結果のレコードのeIDと一致するeIDが実体テーブルのeID802に格納されている実体テーブルのレコード801を取得し、取得したレコードのURIを検索結果表示リストのヒットした開発資産に格納する。
【0102】
続いて、検索結果生成ループでは、変数Nに0を格納する(ステップS2006)。続いて、概念抽出ループとして、変数Nが変数Mより大きい値になるまでステップS2007~S2011を繰り返す(ステップS2007)。続いて、概念抽出ループでは、変数NにN+1の値を格納する(ステップS2008)
続いて、概念抽出ループでは、対象の開発資産検索結果のレコードのNhopに格納されている概念を全て取得する(ステップS2009)。例えば、対象の開発資産検索結果のレコードのNhopに「C05」と「C10」が格納されていた場合、「C05」と「C10」を取得する。
【0103】
続いて、概念抽出ループでは、取得した概念の表現を概念-表現テーブル403から取得する(ステップS2010)。より具体的には、取得したCIDと一致するCIDが概念-表現テーブルのCID603に格納されている概念-表現テーブルのレコード601を探索し、そのレコードのEIDを全て取得する。例えば、「C10」が取得された場合、「C10」をCIDに格納されている概念-表現テーブルのレコード601は「CE11」であり、「CE11」のEIDは「E11」のため、「E11」を取得する。
【0104】
続いて、概念抽出ループでは、全ての取得した表現を検索結果表示リストのレコードの概念に格納する(ステップS2011)。より具体的には、取得した表現が1つの場合はそのまま格納する。2つ以上の場合はコンマ区切りで羅列させ、()で括る。例えば、「E11」を取得した場合、「テストケース」を検索結果表示リストの概念に格納する。一方で、「E04」と「E05」を取得した場合、「(テスト、検証)」を検索結果表示リストの概念に格納する。
【0105】
ステップS2008~S2012を変数Nが変数M以上の値になるまで実行すると、検索結果表示部105は、概念抽出ループを抜ける(ステップS2012)。ステップS2005~S2013を全ての開発資産検索結果のレコードに対して実行すると、検索結果表示部105は、検索結果生成ループを抜ける。
【実施例0106】
実施例2では、開発資産・概念グラフを入力として受け付ける代わりに、開発資産114と概念グラフ115を入力として受け付けて、開発資産・概念グラフ111の生成をする例を説明する。開発資産・概念グラフ記憶部102と、検索クエリ入力部103と開発資産検索部104と検索結果表示部105の処理は実施例1と同様である。
【0107】
以下、主に実施例1と異なる構成及び動作について説明する。図21は、実施例2に係る開発資産調査支援装置10の機能的な構成の一例を示す図である。図21に示すように実施例2に係る開発資産調査支援装置10は、実施例1の開発資産調査支援装置10の構成に加えて、開発資産概念グラフ入力部106と開発資産・概念グラフ生成部107をさらに有する。
【0108】
具体的には、実施例2に係る開発資産調査支援装置10は、複数の概念の間の関係がグラフ構造で関連付けされている概念グラフ115と複数の開発資産114をそれぞれ入力として受け付ける開発資産・概念グラフ入力部106と、入力された開発資産114と概念グラフ115から複数の開発資産と複数の概念間の関係がグラフ構造で関連付けされている開発資産・概念グラフ111を生成する開発資産・概念グラフ生成部107と、検索クエリ112を入力として受け付ける検索クエリ入力部103と、開発資産・概念グラフを記憶しておく開発資産・概念グラフ記憶部102と、検索クエリ112と開発資産・概念グラフ111から検索クエリ112と関連のある開発資産114を開発資産検索結果113として出力する開発資産検索部104と、開発資産検索結果113を表示する検索結果表示部105を有する。
【0109】
図21の開発資産概念グラフ入力部106は開発資産114と概念グラフ115を入力として受け付ける。受け付けた開発資産114と概念グラフ115を開発資産・概念グラフ生成部に入力する。
【0110】
図22は、実施例2に係る開発資産114の一例を示す図である。開発資産114は実体テーブル406と属性テーブル407を含む。なお、実体テーブルのCID804は何も格納されていない。属性テーブル407は属性をレコードに有し、属性は、識別するためのAIDとNameとValueとeIDを含む。
【0111】
図23は、実施例2に係る概念グラフ115の一例を示す図である。概念グラフ115は概念テーブル401と表現テーブル402と概念-表現テーブル403と概念-概念テーブル404と概念間の関係テーブル405を含む。
【0112】
図24は、実施例2に係る開発資産・概念グラフ生成部107の動作中に作成および利用されるグループリスト2401の一例を示す図である。グループリスト2401は、グループ2402をレコードとして有し、グループ2402はGID2403と、PARENT2404とCID2405と順番関係付与2406と属性2407を含む。
【0113】
図25は、開発資産概念グラフ入力部106と開発資産・概念グラフ生成部107の動作の一例を説明するためのフローチャートである。
先ず、開発資産114と概念グラフ115の入力を受け付ける(ステップS2501)。このとき、開発資産概念グラフ入力部106はユーザが入力装置14に直接入力した開発資産114や概念グラフ115を受け付けてもよいし、ユーザにて指定された格納場所にアクセスして、その格納場所から開発資産114と概念グラフ115を受け付けてもよい。続いて、開発資産と概念グラフを読み込む(S2502)。
【0114】
続いて、開発資産ループとして、全ての実体テーブルのレコードごとにステップS2504~S2508を繰り返す(ステップS2503)。続いて、概念ループとして、全ての概念テーブルのレコードごとにステップS2505~S2507を繰り返す(ステップS2504)。
【0115】
続いて、概念ループでは、対象の実体テーブルのレコード801と対象の概念テーブルのレコードに関連があるかを判定する(ステップS2505)。関連がある場合、次のステップS2506に進む。関連がない場合、S2507に進む。より具体的には、対象の概念テーブルのCIDと概念-表現テーブルCID603が一致している概念-表現テーブルのレコード601を取得する。取得したその概念-表現テーブルのレコードのEID704と表現テーブルのEID502が一致する表現テーブルのレコード501を取得する。対象の実体テーブルのレコードのURI803にアクセスし、アクセスしたファイルを取得した表現テーブルのレコードのName503で文字列検索をする。ヒットすれば、関連ありと判定する。ヒットしなければ、関連なしと判定する。なお、人手で関連があるか判定してもよい。
【0116】
続いて、概念ループでは、対象の実体テーブルのレコードのCID804に関連ありと判定された対象の概念テーブルのCIDを格納する(ステップS2506)。ステップS2505~S2507を全ての概念テーブルのレコードに対して実行すると、開発資産・概念グラフ生成部107は概念ループを抜ける(ステップS2507)。
【0117】
ステップS2503~S2507を全ての実体テーブルのレコードに対して実行すると、開発資産・概念グラフ生成部107は開発資産ループを抜ける(ステップS2508)。続いて、グループ生成処理(ステップS2509)では、グループとして順番関係の候補を概念テーブル401、実体テーブル406、属性テーブル407から抽出する。処理の詳細は図26のフローチャートで説明する。
【0118】
続いて、順番関係選択・更新処理(ステップS2510)では、生成したグループの一覧からユーザが指定したグループの順番関係に基づいて概念-概念テーブル404を更新する。処理の詳細は図27のフローチャートで説明する。
【0119】
図26は、グループ生成処理(ステップS2509)の動作の一例を説明するためのフローチャートである。
先ず、空のグループリストを生成する(ステップS2601)。続いて、概念-概念テーブル404から、同じ上位概念を持つ概念の集合を抽出する(ステップS2602)。より具体的には、概念-概念テーブルのRID705が「R01」であるレコードの中から、CID1703に同じ値が格納されているレコードを抽出し、抽出したレコード群の下位概念であるCID2704の集合を概念の集合とする。
【0120】
CID1703に同じ値が格納されているレコード全てに対して、CIDごとに下位概念の集合をそれぞれ取得する。例えば、CID1に「C01」が3つのレコードに存在し、CID1に「C04」が2つのレコードに存在し、CID1が「C01」であるレコードのCID2が「C02」と「C03」と「C04」の場合、「C02」と「C03」と「C04」を概念の集合として抽出する。また、CID1が「C04」であるレコードのCID2が「C08」と「C09」である場合、「C08」と「C09」を概念の集合として抽出する。
【0121】
続いて、グループとして、抽出した概念のリストを生成する(ステップS2603)。例えば、概念の集合として「C01」の下位概念「C02」、「C03」、「C04」と「C04」の下位概念「C08」、「C09」が抽出されていた場合、グループとして、「C01,C02,C03,C04」と「C04,C08,C09」のリストを生成する。
【0122】
続いて、グループデータ生成ループとして、全てのグループごとにステップS2605~S2622を繰り返す(ステップS2604)。続いて、グループデータ生成ループでは、グループリストのPARENT2404に対象のグループの上位概念、CID2405に対象のグループの下位概念を格納する(ステップS2605)。例えば「C01,C02,C03,C04」が対象のグループだった場合、コンマ区切りで一番先頭の要素である「C01」がPARENTに格納され、「C02,C03,C04」がCIDに格納される。
【0123】
続いて、グループデータ生成ループでは、空のグループ内属性情報リストを生成する(ステップS2606)。グループ内属性情報リストは、グループ内属性情報をレコードとして有し、グループ内属性情報はCIDと、Nameと、Valueを含む。続いて、実体抽出ループとして、全ての対象のグループの下位概念の要素ごとにステップS2608~S2614を繰り返す(ステップS2607)。
【0124】
続いて、実体抽出ループとして、実体テーブルのCID804に対象の下位概念の要素が存在するかを判定する(ステップS2608)。存在する場合、次のS2609に進む。存在しない場合、S2614に進む。
【0125】
続いて、実体抽出ループでは、対象の下位概念の要素に該当する実体の属性情報を属性テーブル407から取得する(ステップS2609)。より具体的には、対象の下位概念の要素のCIDがCIDに存在する実体テーブルのレコード801のeIDを取得し、属性テーブルのeIDにそのeIDが格納されている属性テーブルのレコードを全て取得する。例えば、対象の下位概念の要素がC09であり、C09が存在する実体テーブルのeIDがe04の場合、e04が格納されている属性テーブルのレコードであるAIDが「A02」であるレコードを取得する。なお、属性情報は複数取得されてもよい。
【0126】
続いて、属性情報抽出ループとして、取得した全ての属性テーブルのレコードごとにステップS2611~S2613を繰り返す(ステップS2610)。続いて、属性情報抽出ループとして、グループ内属性情報リストのCIDに、対象の下位概念の要素のCIDを格納する(ステップS2611)。例えば、対象の下位概念の要素のCIDが「C09」の場合、「C09」がCIDに格納されているレコードをグループ内属性情報リストに追加する。
【0127】
続いて、属性情報抽出ループとして、追加したグループ内属性情報リストのレコードのNameとValueに対象の属性テーブルのレコードのNameとValueを格納する(ステップS2612)。例えば、対象の属性テーブルのレコードのNameが「サイズ」でvalueが「5KB」の場合、追加したグループ内属性情報リストのレコードのNameに「サイズ」、Valueに「5KB」を格納する。
【0128】
続いて、ステップS2611~S2613を取得した全ての属性テーブルのレコードに対して実行すると、グループ生成処理(ステップS2509)は、属性情報抽出ループを抜ける(ステップS2613)。続いて、ステップS2608~S2614を全ての対象のグループの下位概念の要素に実行すると、グループ生成処理(ステップS2509)は、実体抽出ループを抜ける(ステップS2614)。
【0129】
続いて、空の共通属性リストを生成する(ステップS2615)。共通属性リストは、共通属性をレコードとして有し、共通属性はNameを含む。続いて、グループ内属性情報リストのNameをユニークに取得し、それらを共通属し得情報リストのNameに追加する(ステップS2616)。例えば、グループ内属性情報リストに3つのレコードが存在し、それぞれのNameが「タイムスタンプ」、「サイズ」、「サイズ」である場合、Nameをユニークに取得すると「タイムスタンプ」と「サイズ」になるため、共通属性リストのNameに「タイムスタンプ」と「サイズ」を格納する。
【0130】
続いて、共通属性ループとして、全ての共通属性リストのレコードごとにステップS2618~S2620を繰り返す(ステップS2617)。続いて、共通属性ループでは、対象の共通属性リストのNameがグループ内属性情報リストのNameに格納されているレコードのレコード数をカウントする(ステップS2618)。例えば対象の共通属性リストのNameが「サイズ」であり、グループ内属性情報リストのNameに「サイズ」が格納されているレコードの数が2の場合、カウント結果は2である。
【0131】
続いて、共通属性ループでは、対象の共通属性リストのNameとカウント結果をグループリストの対象のグループの属性に格納する(ステップS2619)。例えば、「サイズ」が格納されているレコードの数が「2」の場合、グループリストの対象のグループの属性に「サイズ(2)」を格納する。
【0132】
続いて、ステップS2618~2620を全ての対象の共通属性リストのレコードに対して実行すると、グループ生成処理(S2509)は、共通属性ループを抜ける(ステップS2620)。続いて、グループデータ生成ループとして、グループリストの対象のグループの順番関係付与に「0」を格納する(ステップS2621)。続いて、ステップS2605~2622を全てのグループに対して実行すると、グループ生成処理(S2509)は、グループデータ生成ループを抜ける(ステップS2622)。
【0133】
図27は、実施例2に係る順番関係選択画面2701の一例を示す図である。順番関係選択画面2701は、グループリスト2702と付与ボタン2705を含む。グループリスト2702は、グループリスト2401を加工したものである。
【0134】
より具体的には、グループリストのPARENT2404とCID2405のCIDに対して概念-表現テーブルと表現ンテーブルから表現を取得し、それぞれのCIDに該当する表現をグループリストのPARENT2703とCID2704に格納する。グループリスト2702は、PARENT2703とCID2704以外はグループリスト2401の情報が格納されている。なお、順番関係付与は、ユーザからの入力を受け付けてもよい。
【0135】
図28は、順番関係選択・更新処理(S2510)の動作の一例を説明するためのフローチャートである。
先ず、ユーザに提示するグループリスト2702を生成する(ステップS2801)。より具体的には、既存のグループリストのPARENT2404とCID2405のみを加工したものをグループリスト2702として生成する。PARENTとCIDは概念-表現テーブルと表現テーブルを使って表現を取得し、それぞれの該当の表現を格納する。例えば、PARENTに「C01」が格納されていた場合、概念-表現テーブルより「C01」の表現は「E01」と分かり、表現テーブルより、「E01」の表現は「工程」と分かるため、PARENT2703には工程が格納される。CID2704にも同様の処理で表現を格納し、GID2403、順番関係付与2706と属性2707にはグループリスト2401の情報を格納する。
【0136】
続いて、順番関係選択画面をユーザに提示する(ステップS2802)。続いて、ユーザが順番関係を付与したいグループを選択する(ステップS2803)。続いて、ユーザは選択したグループに対して、どの属性で順番関係を付与したいか、順番関係付与2706に直接入力する(ステップS2804)。例えば、属性に「タイムスタンプ(4)」が格納されているグループに対して、ユーザがそのグループの順番関係を、タイムスタンプを使って付与したい場合に、「0」が格納されている順番関係付与2706に「タイムスタンプ」を格納する。また、全ての入力を終えて、ユーザが付与ボタン2705に対して入力をした時に次のステップS2805に進む。
【0137】
続いて、順番関係付与ループとして、全てのグループリストの順番関係付与に0以外が格納されているレコードごとにステップS2806~S2816を繰り返す(ステップS2805)。続いて、順番関係付与ループでは、対象のグループの順番関係付与に格納されている属性の名前を取得する(ステップS2806)。
【0138】
続いて、順番関係付与ループでは、対象のグループのCIDに格納されている各概念の実体を取得し、その実体の属性情報の中から取得した属性の名前に該当する属性情報を取得する(ステップS2807)。例えば、対象のグループのCIDが「C09」の場合、「C09」の実体は実体テーブル406から「e04」であり、「e04」の属性情報を属性テーブル407から取得する。なお、「e04」の属性情報の中でも取得した属性の名前に該当するものだけを取得する。例えば、取得した属性の名前が「サイズ」であれば、e04の「サイズ」に該当する属性情報を取得する。該当する属性情報がなければ何も取得しない。この処理を対象のグループのCID全てに対して実行する。
【0139】
続いて、順番関係付与ループでは、空の順番関係リストを生成する(ステップS2808)。順番関係リストは、順番関係をレコードとして有し、順番関係はCIDと属性情報を含む。続いて、順番関係付与ループでは、取得した属性情報とその概念を全て順番関係リストに格納する(ステップS2809)。例えば「C09」の概念の実体から属性情報「サイズ」を取得した場合、順番関係リストのCIDに「C09」、属性情報に「15KB」を格納する。この処理を取得した属性情報全てに実行する。
【0140】
続いて、順番関係付与ループでは、順番関係リストの属性情報の値に従って順番関係リストのレコードを昇順にソートする(ステップS2810)。例えば、順番関係リストのレコードの属性情報に「15KB」と「20KB」が格納されていた場合、「15KB」、「20KB」の順に順番関係リストのレコードをソートする。
【0141】
続いて、概念-概念テーブル更新ループとして、順番関係リストの先頭から、リストの下から2つ目までのレコードごとにステップS2812~S2815を繰り返す(ステップS2811)。続いて、概念-概念テーブル更新ループとして、概念-概念テーブルのRID705に「R02」が格納されているレコードを追加(ステップS2812)。
【0142】
続いて、概念-概念テーブル更新ループとして、概念-概念テーブルに追加したレコードのCID1703に対象の順番関係リストのレコードのCID、CID2704に対象の順番関係リストのレコードの次のレコードのCIDを格納する(ステップS2813)。例えば、順番関係リストのレコードに「C09」、「C10」の順番でレコードが格納されていた場合、概念-概念テーブルのCID1に「C09」、CID2に「C10」が格納されているレコードが追加される。
【0143】
続いて、追加したレコードのPARENT706に対象のグループリストのPARENT2404に格納されているCIDを格納する(ステップS2814)。ステップS2812~S2815を順番関係リストの先頭から、リストの下から2つ目までのレコードに対して実行すると、開発資産・概念グラフ生成部107は概念-概念テーブル更新ループを抜ける(ステップS2815)。
【0144】
ステップS2806~S2816を全てのグループリストの順番関係付与に0以外が格納されているレコードに対して実行すると、開発資産・概念グラフ生成部107は順番関係付与ループを抜ける(ステップS2816)。
【実施例0145】
実施例3では、開発資産114と概念グラフ115を入力として受け付ける代わりに、概念116を入力として受け付け、概念グラフ115の生成をする例を説明する。開発資産・概念グラフ記憶部102と、検索クエリ入力部103と開発資産検索部104と検索結果表示部105と開発資産概念グラフ入力部106と開発資産・概念グラフ生成部107の処理は実施例1または実施例2と同様である。以下、主に実施例1と異なる構成及び動作について説明する。
【0146】
図29は、実施例2に係る開発資産調査支援装置10の機能的な構成の一例を示す図である。図29に示すように実施例3に係る開発資産調査支援装置10は、実施例2の開発資産調査支援装置10の構成に加えて、概念入力部108と概念グラフ生成支援部109をさらに備える。
【0147】
図29の概念入力部108は概念116を入力として受け付ける入力部である。概念入力部108は、受け付けた概念116を概念グラフ生成支援部109に入力する。
【0148】
図29の概念グラフ生成支援部109は、概念入力部108から概念116を受け付け、ユーザからの入力に基づいて概念グラフの生成を支援し、生成された概念グラフ115を出力する。
【0149】
図30は実施例3に係る概念116の一例を示す図である。概念116は概念テーブル401と表現テーブル402と概念-表現テーブル403を含む。
【0150】
図31は実施例3に係る類似関係生成画面3101の一例を示す図である。類似関係生成画面3101は、表現表示テーブル3102と、概念追加ボタン3104と終了ボタン3105を有し、表現表示テーブル3102は、表現表示テーブルは、表現テーブル402にチェック3103を追加したテーブルである。なお、チェックは、ユーザからの入力を受け付けてもよい。
【0151】
図32は実施例3に係る上下関係生成画面3201の一例を示す図である。上下関係生成画面3201は、概念表現表示テーブル3202と、関係追加ボタン3205と終了ボタン3206を有し、概念表現表示テーブル3202は、概念-表現テーブル403にEIDを表現テーブルから取得したName3203に加工し、チェック3204を追加したテーブルである。なお、チェック3204は、ユーザからの入力を受け付けてもよい。
【0152】
実施例3に係る順番関係生成画面は、上下関係生成画面と同様、概念表現表示テーブルと、関係追加ボタンと終了ボタンを有し、概念表現表示テーブルは、概念-表現テーブルにEIDを表現テーブルから取得したNameに加工し、チェックを追加したテーブルである。なお、チェックは、ユーザからの入力を受け付けてもよい。
【0153】
図33は実施例3に係る概念入力部108と、概念グラフ生成支援部109の動作の一例を説明するためのフローチャートである。
先ず、概念116の入力を受け付ける(ステップS3301)。このとき、開発資産概念グラフ入力部106はユーザが入力装置14に直接入力した概念116を受け付けてもよいし、ユーザにて指定された格納場所にアクセスして、その格納場所から概念116を受け付けてもよい。
【0154】
続いて、概念116を読み込む(ステップS3302)。続いて、空の概念-表現テーブル403を生成する(ステップS3303)。続いて、空の概念-概念テーブル404を生成する(ステップS3304)。続いて、概念間の関係テーブル405を生成する(ステップS3305)。概念間の関係テーブルはRIDに「R01」、「R02」が格納されており、Nameに「上下」、「順番」が格納されている。
【0155】
続いて、類似関係の概念を登録する(ステップS3306)。例えば、ユーザは、類似関係生成画面3101を使って類似関係にある概念116を登録する。類似関係生成画面の表現表示テーブルのチェック3103に「1」を入力し、概念追加ボタン3104を押すと、概念-表現テーブルにCIDは同一のものでEIDは類似関係生成画面の表現表示テーブルのチェックに「1」を入力されているEIDのものが追加される。その後、表現表示テーブルのチェック3103は全て空となり、次の入力を受け付ける。類似関係の登録を全て終えたユーザは、終了ボタ3105を押すと、類似関係として登録されていない概念が全てそれぞれの別の概念を持つように概念-表現テーブルに登録され、ステップS3307に進む。
【0156】
続いて、上下関係を定義する(ステップS3307)。ユーザは、上下関係生成画面3201を使って概念116の上下関係を定義する。上位概念として登録したい概念に対して、上下関係生成画面の概念表現表示テーブルのチェック3204に「1」と入力する。また、上下関係生成画面の概念表現表示テーブルのチェック3204に「1」と入力されている概念の下位概念として登録したい概念の概念表現表示テーブルのチェック3204に「2」と入力する。
【0157】
関係追加ボタン3205を押すと、概念-概念テーブルにRIDが「R01」で、CID1が上下関係生成画面の概念表現表示テーブルのチェック3204に「1」と入力されている概念、CID2が上下関係生成画面の概念表現表示テーブルのチェック3204に「2」と入力されているレコードを追加する。なお、下位概念は複数入力されてもよく、その場合は概念-概念テーブルに追加するレコードの数が増える。また、同一の概念CIDを持つ表現には、どれか一つの表現のチェックに入力があれば、そのCIDの上下関係を登録できる。すべての上下関係の定義を終えるとユーザは終了ボタン3206を押し、ステップS3308に進む。
【0158】
続いて、順番関係を定義する(ステップS3308)。ユーザは、順番関係生成画面を使って概念116の順番関係を定義する。順番関係を定義したい概念の上位概念に対して、順番関係生成画面の概念表現チェックに「0」を入力する。また、順番関係を定義したい概念に対して、順番関係生成画面のチェックに順番を入力する。
【0159】
例えば、「工程」の下位概念に対して「設計」、「実装」、「テスト」の順に順番関係を定義したい場面では、順番関係生成画面の概念表現表示テーブルのEIDに「工程」が格納されているレコードのチェックに「0」を入力し、順番関係生成画面の概念表現表示テーブルのEIDに「設計」が格納されているレコードのチェックに「1」を入力し、順番関係生成画面の概念表現表示テーブルのEIDに「実装」が格納されているレコードのチェックに「2」を入力し、順番関係生成画面の概念表現表示テーブルのEIDに「テスト」が格納されているレコードのチェックに「3」を入力する。関係追加ボタンを押すと、概念-概念テーブルにRIDが「R02」で、CID1が「C02」、CID2が「C03」のレコードとRIDが「R02」で、CID1が「C03」、CID2が「C04」のレコードを追加する。
【0160】
上記実施例によれば、開発資産調査支援装置において、情報の過不足を最低限に抑えて検索結果を出力することによりユーザの意図を汲み取った検索を可能にすることができる。
【符号の説明】
【0161】
10 開発資産調査支援装置
101 開発資産・概念グラフ入力部
102 開発資産・概念グラフ記憶部
103 検索クエリ入力部
104 開発資産検索部
105 検索結果表示部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33