JP7412477B2 - 開発支援システムおよび開発支援方法 - Google Patents
開発支援システムおよび開発支援方法 Download PDFInfo
- Publication number
- JP7412477B2 JP7412477B2 JP2022079404A JP2022079404A JP7412477B2 JP 7412477 B2 JP7412477 B2 JP 7412477B2 JP 2022079404 A JP2022079404 A JP 2022079404A JP 2022079404 A JP2022079404 A JP 2022079404A JP 7412477 B2 JP7412477 B2 JP 7412477B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- information
- function
- source code
- test
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Description
本発明は、概して、既存のソフトウェアに対する開発を支援する技術に関する。
近年のソフトウェア開発プロジェクトの多くは、既存のソフトウェアに対する機能追加、機能変更等を行う派生開発である。派生開発において高品質のソフトウェアを短期間で開発するには、既存のソフトウェアの仕様、既存のソフトウェアのソースコードといったソフトウェア全体の理解が重要である。機能追加および機能変更を繰り返して大規模化および複雑化したソフトウェアにおいては、ソフトウェア全体の理解が困難となり、多くの工数がかかったり、品質の確保が困難になったりしている。
この対策の1つとして、ソフトウェア開発における仕様書、ソースコード等の資料同士の関係を追跡可能にすること(トレーサビリティの確保)が挙げられる。トレーサビリティを確保することで、ソフトウェアの改修時の影響調査を容易にできるようになり、高品質のソフトウェアを短期間で開発することを支援できる。
ここで、仕様書、ソースコード等の資料同士を関係付ける手法としては、人手により関係付ける方法、資料を作成する際に一意なタグを埋め込み、それらのタグを基に関係付ける方法がある。
しかしながら、多くの仕様書およびソースコードがある派生開発において、従来手法のように資料同士の関係付けを人手による方法またはタグを埋め込む方法で行っていくことは、関係付けが漏れたり、関係付けを誤ったりして、資料同士の関係を示す資料関係情報が正しく得られないことがある。この場合、関係付けが正しい箇所と関係付けが誤っている箇所とを区別するためには全資料を人手で見直し、資料関係情報を修正していく必要があり、膨大な工数を要する。
この点、特許文献1には、ソフトウェア開発における重要な側面を自動化する技術として、ソフトウェアファイルの最新のバージョンを自動的に特定したり、ソフトウェアの欠陥を自動的に探し出したりする技術が開示されている(特許文献1参照)。
特許文献1に記載の技術では、既存のソフトウェアファイルからの知識を活用してソフトウェアの各要素を把握することはできるが、ソフトウェアの各要素の関係を把握することができず、ソフトウェアに対する開発を適切に支援することができない。
本発明は、以上の点を考慮してなされたもので、既存のソフトウェアに対する開発を適切に支援し得る開発支援システム等を提案しようとするものである。
かかる課題を解決するため本発明においては、所定のソフトウェアに係る資料情報をもとに、機能ノードを設定するためのノード情報と機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録する機能情報登録部と、前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとに、テスト項目ノードを設定するためのノード情報と、テスト項目ノードおよび機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録するテスト項目情報登録部と、前記所定のソフトウェアに用いられているソースコードをもとに、ソースコードノードを設定するためのノード情報を登録するソースコード情報登録部と、を備え、前記ソースコード情報登録部は、前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとにテスト実行システムにより前記テストが実行されたときに動作したプログラムのソースコードと前記テスト項目とが対応付けられた情報を含む実行トレース情報を読み込み、読み込んだ実行トレース情報のテスト項目と一致するテスト項目を示すテスト項目ノードが関係付けられているエッジ情報を前記テスト項目情報登録部により登録されたエッジ情報から特定し、特定したエッジ情報をもとに前記テスト項目ノードが関係付けられている機能ノードを特定し、特定した機能ノードと前記ソースコードのソースコードノードとの関係を示すエッジを設定するためのエッジ情報を登録するようにした。
上記構成では、例えば、テスト項目に記述されているテスト内容の説明文とテストの実行トレースとを用いて、機能およびソースコード間の関係付けが自動的に行われる。これにより、関係付けが漏れたり、関係付けが誤ったりすることがないので、機能およびソースコード間の正しい関係が得られるようになる。また、人手またはタグの埋め込みにより行っていた関係付けが不要になり、高品質のソフトウェアを短期間で開発することができ、開発工数および保守工数を削減できる。
本発明によれば、既存のソフトウェアに対する開発を適切に支援することができる。上記以外の課題、構成、および効果は、以下の実施の形態の説明により明らかにされる。
(I)第1の実施の形態
以下、本発明の一実施の形態を詳述する。ただし、本発明は、実施の形態に限定されるものではない。
以下、本発明の一実施の形態を詳述する。ただし、本発明は、実施の形態に限定されるものではない。
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は、文脈毎に用いられ、1つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
次に、本発明の実施の形態を図面に基づいて説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は、単数でも複数でも構わない。なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。
図1は、本実施の形態に係る開発支援システム100に係る構成の一例を示す図である。
開発支援システム100は、サーバ装置110と、補助記憶装置120と、テスト実行システム130とを含んで構成される。
サーバ装置110は、例えば、トレーサビリティ管理システムであり、ソフトウェア開発における仕様書、ソースコード等の資料同士の関係を追跡可能にする。より具体的には、サーバ装置110は、プロセッサ111と、主記憶装置112と、入力装置113と、出力装置114とを含んで構成される。
プロセッサ111は、演算処理を行う装置である。プロセッサ111は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、AI(Artificial Intelligence)チップ等である。プロセッサ111は、抽出処理(機能名)115A、抽出処理(機能-機能)115B、抽出処理(機能-ソースコード)115C、抽出処理(機能-テスト項目)115D、実行トレース解析処理116A、関係修正処理116B、機能名類似度判定処理117A、検索処理118A、表示処理118B等を実行する。
主記憶装置112は、プログラム、データ等を記憶する装置である。主記憶装置112は、典型的にはメモリであり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等である。ROMは、SRAM(Static Random Access Memory)、NVRAM(Non Volatile RAM)、マスクROM(Mask Read Only Memory)、PROM(Programmable ROM)等である。RAMは、DRAM(Dynamic Random Access Memory)等である。
入力装置113は、ユーザから情報を受け付けるユーザインターフェースである。入力装置113は、例えば、キーボード、マウス、カードリーダ、タッチパネル等である。
出力装置114は、各種の情報を出力(表示出力、音声出力、印字出力、通信等)するユーザインターフェースである。出力装置114は、例えば、表示装置、音声出力装置(スピーカ)、印字装置、通信装置等である。表示装置は、LCD(Liquid Crystal Display)、グラフィックカード等である。通信装置は、通信媒体を介して他の装置と通信する通信インターフェースである。通信装置は、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール、シリアル通信モジュール等である。
ここで、サーバ装置110の機能(機能情報登録部119-1、テスト項目情報登録部119-2、ソースコード情報登録部119-3、出力部119-4等)は、例えば、プロセッサ111が補助記憶装置120に格納されたプログラムを主記憶装置112に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。なお、サーバ装置110の1つの機能は、複数の機能に分けられていてもよいし、複数の機能は、1つの機能にまとめられていてもよい。また、サーバ装置110の機能の一部は、別の機能として設けられてもよいし、他の機能に含められていてもよい。また、サーバ装置110の機能の一部は、サーバ装置110と通信可能な他のコンピュータにより実現されてもよい。
補助記憶装置120は、各種のデータを記憶する装置であり、例えば、ハードディスクドライブ(Hard Disk Drive)、フラッシュメモリ(Flash Memory)、SSD(Solid State Drive)、光学式記憶装置等である。光学式記憶装置は、CD(Compact Disc)、DVD(Digital Versatile Disc)等である。補助記憶装置120は、グラフ情報121、実行トレース情報122等を記憶する。補助記憶装置120に格納されているプログラム、データ等は、主記憶装置112に随時読み込まれる。なお、補助記憶装置120は、サーバ装置110に含まれていてもよいし、補助記憶装置120の一部のデータは、サーバ装置110に記憶されていてもよい。
グラフ情報121は、ノードとノード間の関係とを管理可能な情報であり、例えば、グラフデータベース(グラフDB)であってよい。グラフDBは、ノードとエッジとプロパティとの3つの要素の情報を含んで構成される。ノードは、資料等140の名称、機能の名称(機能名)、テスト項目の名称(テスト項目名)等を示す実体(エンティティ)である。例えば、ノードは、ネットワーク状のデータ表現であるグラフにおいて丸で表現される。エッジは、ノード間の関係性を示す繋がりである。例えば、エッジは、グラフにおいて矢印で表現される。プロパティは、ノードまたはエッジの性質を示す属性である。
テスト実行システム130は、プロセッサ131と、主記憶装置132とを備える。プロセッサ131は、プロセッサ111と同様である。プロセッサ131は、実行トレース取得処理133A、テスト実行処理133B等を実行する。主記憶装置132は、主記憶装置112と同様であるので、その説明を省略する。なお、ここで、テスト実行システム130の機能(例えば、実行部134)は、例えば、プロセッサ131が図示を省略する補助記憶装置等に格納されたプログラムを主記憶装置132に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。
開発支援システム100において、サーバ装置110は、既存のソフトウェアの開発に係る資料等140を読み込み、テスト実行システム130によるテスト実行の結果をもとに、ソフトウェアに係る各要素(資料等140、機能、テスト項目等)を関係付ける。資料等140は、既存のソフトウェアに係る資料データであり、当該ソフトウェアにおいて実行される処理内容に係るソースコード関連資料141、当該ソフトウェアにおける機能についてのテストに係るテスト関連資料142、マニュアル143、機能仕様書144等が含まれる。ソースコード関連資料141としては、ソースコード変更履歴145、ソースコード146、詳細設計書147等が挙げられる。テスト関連資料142としては、例えば、テスト項目表148が挙げられる。
なお、サーバ装置110およびテスト実行システム130が実行する処理の概要については、図2Aおよび図2Bを用いて後述する。また、テスト項目表148については、図3を用いて後述する。グラフ情報121については、図4を用いて後述する。実行トレース情報122については、図5を用いて後述する。
図2Aおよび図2Bは、開発支援システム100において既存のソフトウェアに係る各要素の関係付けのイメージを示す図である。
イメージ210は、抽出処理(機能名)115Aの結果を示すイメージである。抽出処理(機能名)115Aでは、サーバ装置110は、例えば、資料等140を読み込み、読み込んだ資料等140から、機能名を抽出し、抽出した機能名をグラフ情報121に登録する。イメージ210では、機能名として、機能A211、機能B212、機能C213、および機能b214が抽出された例が示されている。なお、抽出処理(機能名)115Aについては、図6を用いて後述する。
イメージ220は、抽出処理(機能-機能)115Bの結果を示すイメージである。抽出処理(機能-機能)115Bでは、サーバ装置110は、例えば、資料等140を読み込み、読み込んだ資料等140から、機能(機能名)間の関係を抽出し、抽出した機能間の関係を示す関係情報をグラフ情報121に登録する。イメージ220では、機能間の関係として、機能A211および機能B212間の関係221と、機能B212および機能C213間の関係222とが抽出された例が示されている。なお、抽出処理(機能-機能)115Bについては、図7を用いて後述する。
イメージ230は、抽出処理(機能-ソースコード)115Cの結果を示すイメージである。抽出処理(機能-ソースコード)115Cでは、サーバ装置110は、例えば、資料等140を読み込み、読み込んだ資料等140から、機能およびソースコード間の関係を抽出し、抽出した関係を示す関係情報をグラフ情報121に登録する。イメージ230では、機能およびソースコード間の関係として、機能A211およびソースコードA231間の関係232と、機能B212およびソースコードB233間の関係234と、機能b214およびソースコードB233間の関係235と、機能b214およびソースコードD236間の関係237とが抽出された例が示されている。付言するならば、抽出処理(機能-ソースコード)115Cでは、全ての機能およびソースコード間の関係が抽出されることが好ましいが、資料等140の更新が行われていないといった理由により、機能C213およびソースコードC238間の関係等、抽出されない関係もある。なお、抽出処理(機能-ソースコード)115Cについては、図8を用いて後述する。
イメージ240は、抽出処理(機能-テスト項目)115Dの結果を示すイメージである。抽出処理(機能-テスト項目)115Dでは、サーバ装置110は、例えば、資料等140を読み込み、読み込んだ資料等140から、機能およびテスト項目間の関係を抽出し、抽出した関係を示す関係情報をグラフ情報121に登録する。イメージ240では、機能およびテスト項目間の関係として、機能A211およびテスト項目A241間の関係242と、機能B212およびテスト項目B243間の関係244と、機能C213およびテスト項目C245間の関係246とが抽出された例が示されている。なお、抽出処理(機能-テスト項目)115Dについては、図9を用いて後述する。
イメージ250は、実行トレース取得処理133Aの結果を示すイメージである。実行トレース取得処理133Aでは、テスト実行システム130は、例えば、テスト項目表148を読み込み、読み込んだテスト項目表148をもとにテスト項目ごとにテストを実行し、実行した結果を示す実行トレース251を実行トレース情報122に登録する。なお、実行トレース取得処理133Aについては、図10を用いて後述する。
イメージ260は、実行トレース解析処理116Aの結果を示すイメージである。実行トレース解析処理116Aでは、サーバ装置110は、例えば、実行トレース251を読み込み、テスト項目のテストで動作したプログラムのソースコード146を特定する。なお、実行トレース解析処理116Aについては、図11を用いて後述する。
イメージ270は、関係修正処理116Bの結果を示すイメージである。関係修正処理116Bでは、サーバ装置110は、例えば、実行トレース解析処理116Aの結果をもとに機能およびソースコード間の関係を抽出し、抽出した関係を示す関係情報をグラフ情報121に登録する。イメージ270では、機能およびソースコード間の関係として、機能C213およびソースコードC238間の関係271と、機能B212およびソースコードD間の関係272とが抽出された例が示されている。付言するならば、関係修正処理116Bでは、ソフトウェアの実際の動作に基づいて、抽出処理(機能-ソースコード)115Cにおいて抽出されない関係が補完される。なお、関係修正処理116Bについては、図11を用いて後述する。
イメージ280は、機能名類似度判定処理117Aの結果を示すイメージである。機能名類似度判定処理117Aでは、サーバ装置110は、例えば、抽出処理(機能名)115Aにおいて抽出された機能名(機能)間の類似度を算出し、算出した類似度が閾値を超える機能間の関係を示す関係情報をグラフ情報121に登録する。イメージ280では、機能間の関係として、機能B212および機能b214間の関係281が登録された例が示されている。なお、機能名類似度判定処理117Aについては、図12を用いて後述する。
図3は、テスト項目表148の一例を示す図である。
テスト項目表148は、1以上のテスト項目300を含んで構成される。テスト項目300には、ID301と、カテゴリ302と、テスト概要303と、テスト詳細304と、テスト手順および条件305と、期待する結果306との情報が含まれている。
ID301には、テスト項目300を識別するための情報が格納される。カテゴリ302には、当該テスト項目300のテストが実行されるソフトウェアの機能を分類するための情報が格納される。例えば、カテゴリ302には、当該テスト項目300のテストがソフトウェアの機能を確認するテストである場合は「機能」が格納され、当該テスト項目300のテストがソフトウェアの性能を確認するテストである場合は「性能」が格納され、当該テスト項目300のテストがソフトウェアのセキュリティを確認するテストである場合は「セキュリティ」が格納される。テスト概要303には、当該テスト項目300の概要を示す情報が格納される。テスト詳細304には、当該テスト項目300の詳細を示す情報が格納される。テスト手順および条件305には、当該テスト項目300のテストの手順および/または条件を示す情報が格納される。期待する結果306には、当該テスト項目300のテストが実行されたときに期待する結果を示す情報が格納される。
なお、図3に示すテスト項目表148は、テスト情報の一例であり、テスト概要303等が含まれていなくてもよいし、他の情報が含まれていてもよい。
図4は、グラフ情報121の一例(ノード情報400およびエッジ情報410を含むグラフDB420)を示す図である。
以下では、資料等140の種別が「機能仕様書」であるノードを機能仕様書ノード401、資料等140の種別が「詳細設計書」であるノードを詳細設計書ノード402、資料等140の種別が「ソースコード変更履歴」であるノードをソースコード変更履歴ノード403、資料等140の種別が「テスト項目表」であるノードをテスト項目表ノード404、資料等140の種別が「マニュアル」であるノードをマニュアルノード405と記すことがある。また、資料等140から抽出された語の種別が「機能」であるノードを機能ノード406、資料等140の種別が「ソースコード」であるノードをソースコードノード407、資料等140から抽出されたテキストの種別が「テスト項目」であるノードをテスト項目ノード408と記すことがある。
機能仕様書ノード401、詳細設計書ノード402、ソースコード変更履歴ノード403、テスト項目表ノード404、マニュアルノード405、およびソースコードノード407の各々のノード情報400には、ノードを識別するための識別情報(ID)と、資料等140の名称を示す(資料名)と、資料等140の格納先を示す格納先情報(資料URL(Uniform Resource Locator))とが含まれている。機能ノード406のノード情報400には、ノードを識別するための識別情報(ID)と、機能の名称を示す情報(機能名)と、機能名をベクトル空間で表現した情報(分散表現)とが含まれている。テスト項目ノード408のノード情報400には、テスト項目300の情報(ID301と、カテゴリ302と、テスト概要303と、テスト詳細304と、テスト手順および条件305と、期待する結果306との情報)の一部または全部が含まれている。
エッジ情報410には、ノード間の関係を示すエッジを識別するための識別情報(ID)と、当該エッジの接続元のノードの識別情報(from)と、当該エッジの接続先のノードの識別情報(to)とが含まれている。
図5は、実行トレース情報122の一例(実行トレーステーブル500)を示す図である。
実行トレーステーブル500は、テスト項目300ごとに実行トレースを記憶する。より具体的には、実行トレーステーブル500は、ID501と、実行トレース502との情報が対応付けられたレコードを記憶する。
ID501には、テスト項目300を識別するための識別情報(ID)が格納される。実行トレース502には、当該テスト項目300のテストが実行されたときの過程の内容(実行トレース)を示す情報が格納される。例えば、実行トレース502には、実行されたソースコード名、実行されたソースコード行、当該ソースコード行の内容(関数名、処理内容、コメント等)等が実行順に含まれている。
図6は、抽出処理(機能名)115Aの一例を示す図である。抽出処理(機能名)115Aでは、サーバ装置110は、資料等140から、ルールベースのテキスト抽出および/または固有表現抽出により機能名を抽出し、抽出した機能名の機能のノード情報をグラフ情報121に格納する。以下では、より具体的な内容について説明する。
S601では、サーバ装置110は、資料等140を読み込む。例えば、サーバ装置110は、マニュアル143、機能仕様書144、ソースコード変更履歴145、ソースコード146、詳細設計書147、およびテスト項目表148のうちの少なくとも1つの資料を読み込む。続いて、サーバ装置110は、未読み込みの資料がなくなるまで、S602~S610の処理を繰り返し、未読み込みの資料がなくなった場合、抽出処理(機能名)115Aを終了する。
S602では、サーバ装置110は、未読み込みの資料から、資料を1つ読み込む。
S603では、サーバ装置110は、S602において読み込んだ資料の種別に応じて、該当する種別のノードのノード情報400をグラフDB420に登録する。例えば、サーバ装置110は、S602において読み込んだ資料が機能仕様書144である場合は、機能仕様書ノード401のノード情報400を生成してグラフDB420に登録する。付言するならば、S603では、詳細設計書ノード402、ソースコード変更履歴ノード403、テスト項目表ノード404、マニュアルノード405、およびソースコードノード407の各々のノード情報400も生成されてグラフDB420に登録される。
S604では、サーバ装置110は、S602において読み込んだ資料からテキストを抽出する。
S605では、サーバ装置110は、S604において抽出したテキストに対して、予め定義された第1のルールに基づいて語を抽出する。第1のルールとは、「XX機能」がテキストに含まれる場合にXX機能を抽出すること、「XXとは、YYするための機能である」がテキストに含まれる場合にXXを抽出すること、「この機能をXXという」がテキストに含まれる場合にXXを抽出すること等が挙げられる。なお、既存のソフトウェアには金融業界向けのソフトウェア、流通業界向けのソフトウェア等があり、ドメイン(例えば、業界)によって資料の書き方が異なるため、第1のルールについては、ドメインに特化したルールが設けられていてもよい。
S606では、サーバ装置110は、機能として抽出された語があるか否かを判定する。サーバ装置110は、機能として抽出された語があると判定した場合、S607に処理を移し、機能として抽出された語がないと判定した場合、S602に処理を移す。
S607では、サーバ装置110は、S604において抽出したテキストに対して、固有表現抽出を行い、機能ラベルを持つ語を抽出する。この際、サーバ装置110は、例えば、S605において抽出した語をもとにfine-tuningを行って固有表現抽出を行う。固有表現抽出については、BiLSTM(Bidirectional Long Short-Term Memory)、CRF(Conditional Random Fields)、BERT(Bidirectional Encoder Representations from Transformers)等の公知の技術を用いることができる。
S608では、サーバ装置110は、機能として抽出された語があるか否かを判定する。サーバ装置110は、機能として抽出された語があると判定した場合、S609に処理を移し、機能として抽出された語がないと判定した場合、S602に処理を移す。
S609では、サーバ装置110は、S605またはS607の各々において抽出した語に対して分散表現を獲得する。例えば、サーバ装置110は、抽出した語同士の類似度を比較するために、抽出した語を表現するベクトル(100次元、500次元といった高次元のベクトル)を生成する。
S610では、サーバ装置110は、S605およびS607の各々において抽出した語と、当該語の分散表現とに基づいて、機能ノード406のノード情報400をグラフDB420に登録する。例えば、サーバ装置110は、抽出した語(機能名)と、獲得した分散表現とを含む機能ノード406のノード情報400を生成してグラフDB420に登録する。この際、サーバ装置110は、例えば、登録した機能ノード406とS602において読み込んだ資料のノードとの関係を示すエッジのエッジ情報410をグラフDB420に登録してもよい。
なお、抽出処理(機能名)115Aは、上述の内容に限るものではない。例えば、S605~S608に代えて、サーバ装置110は、S604において抽出したテキストに対して、予め定義された第1のルールに基づいて語を抽出し、当該語に対して、機能名であることを示す機能ラベルを付与してもよい。この場合、サーバ装置110は、語に機能ラベルを付与したテキストに対して固有表現抽出を行い、機能ラベルを持つ語を抽出する。かかる固有表現抽出では、サーバ装置110は、機能ラベルが付与された語がどのような文脈で使用されているかを学習し、機能ラベルが付与されていない語について同様の文脈で使用されている場合、当該語が機能名であると推定する。
図7は、抽出処理(機能-機能)115Bの一例を示す図である。抽出処理(機能-機能)115Bでは、サーバ装置110は、文書構造に基づくルールベースの抽出、述語項構造解析、および/または機械学習により、資料等140から機能間の関係を示す情報を抽出し、抽出した情報をグラフ情報121に格納する。以下では、より具体的な内容について説明する。
S701では、サーバ装置110は、資料等140を読み込む。例えば、サーバ装置110は、マニュアル143、機能仕様書144、ソースコード変更履歴145、ソースコード146、詳細設計書147、およびテスト項目表148のうちの少なくとも1つの資料を読み込む。続いて、サーバ装置110は、未読み込みの資料がなくなるまで、S702~S706の処理を繰り返し、未読み込みの資料がなくなった場合、S707に処理を移す。
S702では、サーバ装置110は、未読み込みの資料から、資料を1つ読み込む。
S703では、サーバ装置110は、S702において読み込んだ資料からテキストを抽出する。
S704では、サーバ装置110は、S703において抽出したテキストに対して、予め定義された第2のルールに基づいて機能間の関係情報を抽出する。第2のルールとは、「XX機能には、次に示すものがある。YY、ZZ」がテキストに含まれる場合に、XXからYYへの関係性と、XXからZZへの関係性とを抽出すること等が挙げられる。なお、第2のルールについては、ドメインに特化したルールが設けられていてもよい。ここで、例えば、機能A(接続元の機能ノード406)から機能B(接続先の機能ノード406)への関係性がある場合、機能間の関係情報には、テキストにおいて機能Aが現れる開始位置および終了位置と、テキストにおいて機能Bが現れる開始位置および終了位置とを示す情報が含まれる。
S705では、サーバ装置110は、S703において抽出したテキストに対して、述語項構造解析を行い、機能間の関係情報を抽出する。述語項構造解析では、サーバ装置110は、例えば、主語と目的語と述語とのそれぞれの語の関係性を解析する。例えば、「機能Aは、機能Bを用いて××する。」とあった場合、サーバ装置110は、「機能A」から「機能B」への関係があることを抽出する。述語項構造解析としては、RNN(Recurrent Neural Network)といった公知の技術を用いることができる。
S706では、サーバ装置110は、S704およびS705の各々において抽出した機能間の関係情報に基づいてエッジのエッジ情報410をグラフDB420に登録する。例えば、サーバ装置110は、接続元の機能ノード406のIDと接続先の機能ノード406のIDとを含むエッジ情報410を生成してグラフDB420に登録する。また、サーバ装置110は、S703において抽出したテキストとS704およびS705において抽出した機能間の関係情報とを当該エッジ情報410に対応付けて記憶する。
S707では、サーバ装置110は、機能間の関係を推論可能な学習モデルを作成する。例えば、サーバ装置110は、S706において登録したテキストおよび機能間の関係情報を取得し、機能間の関係情報が対応付けられているテキストを入力データとして機械学習を行い、学習モデルを作成する。続いて、サーバ装置110は、未読み込みの資料がなくなるまで、S708~S710の処理を繰り返し、未読み込みの資料がなくなった場合、抽出処理(機能-機能)115Bを終了する。
S708では、サーバ装置110は、未読み込みの資料から、資料を1つ読み込む。
S709では、サーバ装置110は、S708において読み込んだ資料からテキストを抽出する。
S710では、サーバ装置110は、S709において抽出したテキストを学習モデルに入力し、出力された機能間の関係情報に基づいてエッジのエッジ情報410をグラフDB420に登録する。
なお、抽出処理(機能-機能)115Bは、上述の内容に限るものではない。例えば、S704、S705、およびS707~S710のうちの1つの処理または2つの処理が行われなくてもよい。
図8は、抽出処理(機能-ソースコード)115Cの一例を示す図である。抽出処理(機能-ソースコード)115Cでは、サーバ装置110は、文書構造に基づくルールベースの抽出、述語項構造解析、および/または機械学習により、ソースコード関連資料141から機能とソースコード146との関係を示す情報を抽出し、抽出した情報をグラフ情報121に格納する。以下では、より具体的な内容について説明する。
S801では、サーバ装置110は、資料等140、より具体的にはソースコード関連資料141を読み込む。例えば、サーバ装置110は、ソースコード変更履歴145、ソースコード146、および詳細設計書147のうちの少なくとも1つの資料を読み込む。続いて、サーバ装置110は、未読み込みの資料がなくなるまで、S802~S806の処理を繰り返し、未読み込みの資料がなくなった場合、S807に処理を移す。
S802では、サーバ装置110は、未読み込みの資料から、資料を1つ読み込む。
S803では、サーバ装置110は、S802において読み込んだ資料からテキストを抽出する。
S804では、サーバ装置110は、S803において抽出したテキストに対して、予め定義された第3のルールに基づいて機能およびソースコード間の関係情報を抽出する。第3のルールとは、詳細設計書147において「XX機能を修正する」といった記載がある場合に、その修正の対象となるソースコード146の表を抽出すること、「ソースコードAを修正する」といった目次を抽出すること等が挙げられる。なお、第3のルールについては、ドメインに特化したルールが設けられていてもよい。ここで、例えば、機能A(接続元の機能ノード406)からソースコードA(接続先のソースコードノード407)への関係性がある場合、機能およびソースコード間の関係情報には、テキストにおいて機能Aが現れる開始位置および終了位置と、テキストにおいてソースコードAが現れる開始位置および終了位置とを示す情報が含まれる。
S805では、サーバ装置110は、S803において抽出したテキストに対して、述語項構造解析を行い、機能およびソースコード間の関係情報を抽出する。
S806では、サーバ装置110は、S804およびS805の各々において抽出した機能およびソースコード間の関係情報に基づいてエッジのエッジ情報410をグラフDB420に登録する。例えば、サーバ装置110は、接続元の機能ノード406のIDと接続先のソースコードノード407のIDとを含むエッジ情報410を生成してグラフDB420に登録する。また、サーバ装置110は、S803において抽出したテキストとS804およびS805において抽出した機能およびソースコード間の関係情報とを当該エッジ情報410に対応付けて記憶する。
S807では、サーバ装置110は、機能およびソースコード間の関係を推論可能な学習モデルを作成する。例えば、サーバ装置110は、S806において登録したテキストと機能およびソースコード間の関係情報とを取得し、機能およびソースコード間の関係情報が対応付けられているテキストを入力データとして機械学習を行い、学習モデルを作成する。続いて、サーバ装置110は、未読み込みの資料がなくなるまで、S808~S810の処理を繰り返し、未読み込みの資料がなくなった場合、抽出処理(機能-ソースコード)115Cを終了する。
S808では、サーバ装置110は、未読み込みの資料から、資料を1つ読み込む。
S809では、サーバ装置110は、S808において読み込んだ資料からテキストを抽出する。
S810では、サーバ装置110は、S809において抽出したテキストを学習モデルに入力し、出力された機能およびソースコード間の関係情報に基づいてエッジのエッジ情報410をグラフDB420に登録する。
なお、抽出処理(機能-ソースコード)115Cは、上述の内容に限るものではない。例えば、サーバ装置110は、出力された機能およびソースコード間の関係情報に基づいて、出力された機能に関係付けられている他のソースコード146を特定し、特定した他のソースコード146と出力されたソースコード146との関係を示すエッジのエッジ情報410をグラフDB420に登録してもよい。また、例えば、S804、S805、およびS807~S810のうちの1つの処理または2つの処理が行われなくてもよい。
図9は、抽出処理(機能-テスト項目)115Dの一例を示す図である。抽出処理(機能-テスト項目)115Dでは、ルールベースのテキスト抽出および/または固有表現抽出により、各テスト項目300の名称および/またはテスト内容の記述から、当該テスト項目300のテスト対象である機能の機能名を抽出し、抽出した機能名とテスト項目300との関係を示す情報をグラフ情報121に格納する。以下では、より具体的な内容について説明する。
S901では、サーバ装置110は、テスト関連資料142を読み込む。例えば、サーバ装置110は、テスト項目表148を読み込む。続いて、サーバ装置110は、未読み込みのテスト項目表148がなくなるまで、S902~S910の処理を繰り返し、未読み込みのテスト項目表148がなくなった場合、抽出処理(機能-テスト項目)115Dを終了する。
S902では、サーバ装置110は、未読み込みのテスト項目表148から、テスト項目表148を1つ読み込む。続いて、サーバ装置110は、未読み込みのテスト項目300がなくなるまで、S903~S910の処理を繰り返し、未読み込みのテスト項目300がなくなった場合、S902に処理を移す。
S903では、サーバ装置110は、S902において読み込んだテスト項目表148から未読み込みのテスト項目300を読み込む。
S904では、サーバ装置110は、S903において読み込んだテスト項目300に基づいてテスト項目ノード408のノード情報400をグラフDB420に登録する。例えば、サーバ装置110は、テスト項目300に含まれているID301と、カテゴリ302と、テスト概要303と、テスト詳細304と、テスト手順および条件305と、期待する結果306との情報からテスト項目ノード408のノード情報400を生成し、グラフDB420に登録する。この際、サーバ装置110は、例えば、登録したテスト項目ノード408とS902において読み込んだテスト項目表148のテスト項目表ノード404との関係を示すエッジのエッジ情報410をグラフDB420に登録してもよい。
S905では、サーバ装置110は、S903において読み込んだテスト項目300に対して、予め定義された第1のルールに基づいて語を抽出する。
S906では、サーバ装置110は、機能として抽出された語があるか否かを判定する。サーバ装置110は、機能として抽出された語があると判定した場合、S907に処理を移し、機能として抽出された語がないと判定した場合、S903に処理を移す。
S907では、サーバ装置110は、S903において読み込んだテスト項目300に対して、固有表現抽出を行い、機能ラベルを持つ語を抽出する。
S908では、サーバ装置110は、機能として抽出された語があるか否かを判定する。サーバ装置110は、機能として抽出された語があると判定した場合、S909に処理を移し、機能として抽出された語がないと判定した場合、S903に処理を移す。
S909では、サーバ装置110は、S905またはS907において抽出した語と名称が一致する機能ノード406のノード情報400をグラフDB420から取得する。
S910では、サーバ装置110は、S904において登録したテスト項目ノード408とS909において取得したノード情報400の機能ノード406との関係を示すエッジのエッジ情報410をグラフDB420に登録する。
図10は、実行トレース取得処理133Aの一例を示す図である。実行トレース取得処理133Aでは、ソフトウェアのビルド等の契機で、テスト項目表に基づき、テスト実行システム130においてリグレッションテストが実行される。実行トレース取得処理133Aでは、テスト実行システム130は、予め常駐させておいたテスト実行時の実行トレースを取得する実行トレース取得プログラムを用いて、各テスト項目300の実行トレースを取得する。以下では、より具体的な内容について説明する。
S1001では、テスト実行システム130は、テスト項目表148を読み込む。
S1002では、テスト実行システム130は、実行トレース取得プログラムを常駐させる。続いて、テスト実行システム130は、未読み込みのテスト項目表148がなくなるまで、S1003~S1007の処理を繰り返し、未読み込みのテスト項目表148がなくなった場合、実行トレース取得処理133Aを終了する。
S1003では、テスト実行システム130は、未読み込みのテスト項目表148から、テスト項目表148を1つ読み込む。続いて、テスト実行システム130は、未読み込みのテスト項目300がなくなるまで、S1004~S1007の処理を繰り返し、未読み込みのテスト項目300がなくなった場合、S1003に処理を移す。
S1004では、テスト実行システム130は、S1003において読み込んだテスト項目表148から未読み込みのテスト項目300を1つ読み込む。
S1005では、テスト実行システム130は、S1004において読み込んだテスト項目300のIDを抽出する。
S1006では、テスト実行システム130は、S1004において読み込んだテスト項目300のテストを実行する。
S1007では、テスト実行システム130は、S1006において実行したテストの実行トレースを取得し、取得した実行トレースとテスト項目300のIDとを関係付けて、実行トレースDB(例えば、実行トレーステーブル500)に格納する。
図11は、補完処理(実行トレース解析処理116Aおよび関係修正処理116B)の一例を示す図である。実行トレース解析処理116Aでは、サーバ装置110は、テストの実行トレースを解析することで、テスト対象の機能を実現するソースコード146(クラス名、ファイル名等)を抽出し、抽出したソースコード146と機能との関係を示す情報をグラフ情報121に登録する。このとき、サーバ装置110は、グラフ情報121にない情報については新規に追加し、既に同機能に関する情報がグラフ情報121に格納済であり、ソースコード146との関係を示す情報に差異がある場合は、グラフ情報121上の情報を修正する。
より具体的には、サーバ装置110は、実行トレースDBにある実行トレースのうち、未読み込みの実行トレースがなくなるまで、S1101~S1107の処理を繰り返し、未読み込みの実行トレースがなくなった場合、実行トレース解析処理116Aを終了する。
S1101では、サーバ装置110は、未読み込みの実行トレースから、実行トレースを1つ読み込む。
S1102では、サーバ装置110は、S1101において読み込んだ実行トレースから、ソースコード名を抽出する。
S1103では、サーバ装置110は、グラフDB420のノード情報400を参照し、実行トレースに関係付けて格納されているテスト項目300のIDと一致するIDのテスト項目ノード408を特定する。
S1104では、サーバ装置110は、グラフDB420のエッジ情報410を参照し、S1103において特定したテスト項目ノード408に関係付けられている機能ノード406を特定する。
S1105では、サーバ装置110は、S1104において特定した機能ノード406に関係付けられているソースコードノード407のノード情報400(ソースコード名)をグラフDB420から取得する。
S1106では、サーバ装置110は、S1102において実行トレースから抽出したソースコード名と、S1105において取得したソースコード名とに差異があるか否かを判定する。サーバ装置110は、差異があると判定した場合、S1107に処理を移し、差異がないと判定した場合、S1101に処理を移す。
S1107では、サーバ装置110は、S1104において特定された機能ノード406に関係付けられているソースコードノード407のソースコード名を、実行トレースから抽出したソースコード名で更新する形でグラフDB420に格納する。例えば、S1102において実行トレースから抽出したソースコード名を「A」、そのソースコードノード407「A」とし、S1105において取得したソースコード名を「B」、そのソースコードノード407「B」としたとき、S1107では、サーバ装置110は、機能ノード406とソースコードノード407「B」とのエッジ情報410を削除し、機能ノード406とソースコードノード407「A」とのエッジ情報410を生成する。
なお、実行トレース解析処理116Aは、上述の内容に限るものではない。例えば、サーバ装置110は、図8の抽出処理(機能-ソースコード)115Cを行わない場合、S1106の判定を行うことなく、実行トレースから抽出したソースコード名をグラフDBに登録してもよい。
図12は、機能名類似度判定処理117Aの一例を示す図である。機能名類似度判定処理117Aでは、サーバ装置110は、編集距離、分散表現等を用いて機能名間の類似度を計算する。このとき、サーバ装置110は、実装類似度も合わせて計算し、機能名の類似度と実行トレースの類似度とを加味し、予め定めた許容閾値内のである組を同義語と判断する。サーバ装置110は、同義語と判断した場合は、グラフ情報121の情報を修正する。以下では、より具体的な内容について説明する。
S1201では、サーバ装置110は、同義語判定閾値を取得する。続いて、サーバ装置110は、未読み込みの機能ノード406のノード情報400がなくなるまで、S1202~S1206を繰り返し、未読み込みの機能ノード406のノード情報400がなくなった場合、機能名類似度判定処理117Aを終了する。
S1202では、サーバ装置110は、グラフDB420から、未読み込みの機能ノード406のノード情報400を1つ読み込む。
S1203では、サーバ装置110は、S1202において読み込んだ第1の機能ノード406の分散表現と、グラフDB420内の他の各機能ノード406の分散表現とのコサイン類似度をそれぞれ計算し、コサイン類似度が最も高い第2の機能ノード406を取得する。
S1204では、サーバ装置110は、S1202において読み込んだ第1の機能ノード406と、S1203において取得したコサイン類似度が最も高い第2の機能ノード406との実装類似度(X/Y)を算出する。ここで、Xは、読み込んだ第1の機能ノード406に関係付けられているソースコードノード407の第1のソースコード名と、取得した第2の機能ノード406に関係付けられているソースコードノード407の第2のソースコード名とで一致するものの数の総和である。Yは、第1のソースコード名と第2のソースコード名とにおいて一意なソースコード名の数の総和である。
S1205では、サーバ装置110は、S1203において算出した最高のコサイン類似度とS1204において算出した実装類似度との平均が同義語判定閾値以上であるか否かを判定する。サーバ装置110は、同義語判定閾値以上であると判定した場合、S1206に処理を移し、同義語判定閾値以上でないと判定した場合、S1202に処理を移す。
S1206では、サーバ装置110は、S1202において読み込んだ第1の機能ノード406と、S1203において取得したコサイン類似度が最も高い第2の機能ノード406との関係を示すエッジのエッジ情報410をグラフDB420に登録する。例えば、サーバ装置110は、第1の機能ノード406から第2の機能ノード406への関係性を示すエッジ情報410と、第2の機能ノード406から第1の機能ノード406への関係性を示すエッジ情報410とを生成してグラフDB420に登録する。
なお、機能名類似度判定処理117Aは、上述の内容に限るものではない。例えば、機能名類似度判定処理117Aでは、コサイン類似度と実装類似度との何れか一方を用いて機能間の類似度を判定してもよい。
次に、ユーザによる検索が行われた際に実行される検索時処理について図13および図14を用いて説明する。検索時処理では、図18~図23に示す画面を適宜に用いて説明する。
図13は、検索処理118Aの一例を示す図である。検索処理118Aでは、サーバ装置110は、入力装置113を操作してユーザが入力したキーワードを基にグラフ情報121を検索し、キーワードに係る情報を抽出する。
S1301では、サーバ装置110は、所定の画面(例えば、図18に示す画面1800)を介してユーザが入力した検索カテゴリと検索キーワードとを取得する。
S1302では、サーバ装置110は、S1301において取得した検索カテゴリに一致する種別のノードのノード情報400をグラフDB420から取得する。続いて、サーバ装置110は、取得した検索カテゴリに一致する種別のノードの未読み込みのノード情報400がなくなるまで、S1303~S1305を繰り返し、未読み込みのノード情報400がなくなった場合、検索処理118Aを終了する。
S1303では、サーバ装置110は、S1302において取得した検索カテゴリに一致する種別のノードの未読み込みのノード情報400を1つ読み込む。
S1304では、サーバ装置110は、S1303において読み込んだノード情報400の名称が検索キーワードと一致するか否かを判定する。サーバ装置110は、S1303において読み込んだノード情報400の名称が検索キーワードと一致すると判定した場合、S1305に処理を移し、S1303において読み込んだノード情報400の名称が検索キーワードと一致しないと判定した場合、S1303に処理を移す。
S1305では、サーバ装置110は、S1303において読み込んだノード情報400と、当該ノード情報400のノードに係るエッジ情報410と、当該エッジ情報410に係るノードのノード情報400とを、可視化情報としてグラフDB420から取得する。
ここで、例えば、イメージ280に示すノードの関係が得られている場合、検索カテゴリとして「機能」、検索キーワードとして「機能B」がユーザにより入力されたときは(以下、例示ケースと記す)、まず、サーバ装置110は、機能ノード406「機能B」のノード情報400をグラフDB420から取得する。続いて、サーバ装置110は、機能ノード406「機能B」のIDが含まれるエッジ情報410、より具体的には、関係221、関係222、関係234、関係244、関係272、および関係281の各々のエッジ情報410をグラフDB420から取得する。続いて、サーバ装置110は、取得した各エッジ情報410に係るノード情報400として、機能ノード406「機能A」、機能ノード406「機能C」、ソースコードノード407「ソースコードB」、テスト項目ノード408「テスト項目B」、ソースコードノード407「ソースコードD」、機能ノード406「機能b」の各々のノード情報400をグラフDB420から取得する。
図14は、表示処理118Bの一例を示す図である。表示処理118Bでは、サーバ装置110は、検索処理118Aの結果をグラフ化(例えば、ネットワーク状に可視化)してユーザに提示する。
S1401では、サーバ装置110は、S1301において取得した検索カテゴリと検索キーワードとを読み出す。
S1402では、サーバ装置110は、S1305において取得した可視化情報(ノード情報400とエッジ情報410と)を読み出す。
S1403では、サーバ装置110は、S1305において取得した可視化情報のうち、検索カテゴリと一致する種別のノードと当該ノードに関係付けられている当該種別のノードとを可視化する。
ここで、例示ケースでは、例えば、サーバ装置110は、機能ノード406「機能B」と、当該機能ノード406「機能B」に関係付けられている機能ノード406「機能A」および機能ノード406「機能C」の各々とをエッジにより接続してネットワーク状にして出力装置114に表示する。
S1404では、サーバ装置110は、可視化したノードのうち、検索キーワードと一致するノードをハイライトとする。S1404の処理後(検索結果)の画面の一例を図19に示す。
S1405では、サーバ装置110は、S1305において取得した可視化情報のうち、検索カテゴリと一致しない種別のノードのノード情報400を、ノードの種別ごとに表示領域を分けて一覧表示する。S1405の処理後(検索結果)の画面の一例を図20~図23に示す。なお、S1405の処理については、特定の操作(例えば、検索キーワードと一致するノードのクリック)が行われたときに実行されるようにしてもよい。
図15は、コールグラフ表示処理の一例を示す図である。なお、コールグラフ表示処理は、所定のタイミング(例えば、定期的)に実行される。
S1501では、サーバ装置110は、ネットワーク状に可視化されたノードが右クリックされたか否かを判定する。サーバ装置110は、右クリックされたと判定した場合、S1502に処理を移し、右クリックされていないと判定した場合、コールグラフ表示処理を終了する。
S1502では、サーバ装置110は、右クリックされたノードが機能ノード406であるか否かを判定する。サーバ装置110は、機能ノード406であると判定した場合、S1503に処理を移し、機能ノード406でないと判定した場合、コールグラフ表示処理を終了する。
S1503では、サーバ装置110は、「コールグラフ表示」メニューを表示する。S1503の処理後の画面の一例を図24に示す。
S1504では、サーバ装置110は、「コールグラフ表示」メニューが選択されたか否かを判定する。サーバ装置110は、「コールグラフ表示」メニューが選択されたと判定した場合、S1505に処理を移し、「コールグラフ表示」メニューが選択されなかったと判定した場合、S1510に処理を移す。
S1505では、サーバ装置110は、右クリックされた機能ノード406に関係付けられているソースコードノード407のノード情報400をグラフDB420から取得する。例えば、サーバ装置110は、右クリックされた機能ノード406のIDが含まれるエッジ情報410をグラフDB420から抽出し、抽出したエッジ情報410の中から、ソースコードノード407のIDが含まれているエッジ情報410があるか否かを判定する。ここで、例示ケースにおいて機能ノード406「機能B」が右クリックされた場合、ソースコードノード407「ソースコードB」およびソースコードノード407「ソースコードD」のノード情報400が取得される。
S1506では、サーバ装置110は、S1505において取得したソースコードノード407のノード情報400を用いて、ソースコードノード407間のエッジ情報410をグラフDB420から取得し、ネットワークを構築する。
S1507では、サーバ装置110は、構築したネットワークの始点のソースコードノード407のノード情報400と終点のソースコードノード407のノード情報400とをグラフDB420から取得する。
S1508では、サーバ装置110は、検索カテゴリとして「ソースコード」、検索キーワードとして、S1507において取得したノード情報400のソースコード名を指定して検索処理を実行する。例えば、サーバ装置110は、始点のソースコードノード407「ソースコードB」を指定して検索処理を実行した場合、ソースコードノード407「ソースコードB」のノード情報400と、当該ノード情報400のノードに係るエッジ情報410と、当該エッジ情報410に係るソースコードノード407「ソースコードA」のノード情報400とを取得する。
S1509では、サーバ装置110は、S1506において構築したネットワークと、S1508で取得したネットワークの始点のソースコードノード407と関係付けられているソースコードノード407と、ネットワークの終点のソースコードノード407と関係付けられているソースコードノード407とを可視化し、右クリックされた機能ノード406に係るソースコードノード407と一致するソースコードノード407をハイライトし、コールグラフ表示処理を終了する。S1509の処理後の画面の一例を図25に示す。
S1510では、サーバ装置110は、「コールグラフ表示」メニューを非表示にし、コールグラフ表示処理を終了する。
図16は、関連機能検索処理の一例を示す図である。なお、関連機能検索処理は、所定のタイミング(例えば、定期的)に実行される。
S1601では、サーバ装置110は、「コールグラフ表示」メニューを表示中であり、かつ、右クリックされた機能ノード406に関係付けられている機能ノード406(関係機能ノード)の何れかが選択されたか否かを判定する。サーバ装置110は、「コールグラフ表示」メニューを表示中であり、かつ、関係機能の何れかが選択されたと判定した場合、S1602に処理を移し、「コールグラフ表示」メニューを表示中でない、または、関係機能の何れも選択されなかったと判定した場合、関連機能検索処理を終了する。
S1602では、サーバ装置110は、検索カテゴリとして「機能」、検索キーワードとして、選択された機能ノード406の機能名を指定して検索時処理を実行する。
図17は、関係資料参照処理の一例を示す図である。なお、関係資料参照処理は、所定のタイミング(例えば、定期的)に実行される。
S1701では、サーバ装置110は、ハイライトされている機能ノード406に関係付けられている資料等140のリンク(関係資料リンク)の何れかが選択されたか否かを判定する。サーバ装置110は、関係資料リンクが選択されたと判定した場合、S1702に処理を移し、関係資料リンクが選択されなかったと判定した場合、関係資料参照処理を終了する。
S1702では、サーバ装置110は、選択された関係資料リンクに該当するノードのノード情報400から資料URLを取得する。
S1703では、サーバ装置110は、S1702において取得した資料URLが示す資料等140(ファイル)を開き、関係資料参照処理を終了する。
図18は、サーバ装置110により出力される画面の一例(画面1800)を示す図である。
画面1800は、検索カテゴリ(ノードの種別)を選択可能な選択インターフェース1801と、検索キーワードを入力可能な入力インターフェース1802と、検索を実行可能な検索実行インターフェース1803とを含んで構成される。ユーザは、選択インターフェース1801を介して検索カテゴリを選択し、入力インターフェース1802を介して検索キーワードを入力し、検索実行インターフェース1803を介して検索を実行する。
画面1810は、画面1800の初期画面である。画面1820は、選択インターフェース1801がクリックされたときの画面の一例である。画面1820では、1以上の検索カテゴリを含んで構成される検索カテゴリリスト1821が表示されている。画面1830は、検索カテゴリリスト1821の検索カテゴリ「機能」が選択されたときの画面の一例である。画面1840は、入力インターフェース1802に「機能B」が入力されたときの画面の一例である。
図19は、サーバ装置110により出力される画面の一例(画面1900)を示す図である。
画面1900は、画面1800において、検索カテゴリ「機能」および検索キーワード「機能B」が指定されて検索実行インターフェース1803が操作されたときの検索結果を示す画面の一例を示す。画面1900では、検索カテゴリおよび検索キーワードに該当するノードと、当該ノードに関係するノードとが表示され、検索キーワードに該当するノードがハイライト(強調して表示)される。本例では、検索カテゴリおよび検索キーワードに該当するノードが機能ノードB1912であり、機能ノードB1912が機能ノードA1911と機能ノードC1913とに関係があることが示され、検索キーワードの機能ノードB1912がハイライトされている。
図20は、サーバ装置110により出力される画面の一例(画面2000)を示す図である。
画面2000は、画面1900において機能ノードB1912が選択(クリック)されたときの画面の一例を示す。画面2000では、選択された機能(選択機能)の詳細を確認可能な詳細画面2010が表示される。詳細画面2010は、選択機能に関係する資料等140を表示するための資料タブ2011と、選択機能に関係する機能を表示するための関係機能タブ2012と、選択機能に関係するソースコード146を表示するためのソースコードタブ2013と、選択機能に関係するテスト項目300を表示するためのテストタブ2014と、非機能要件が表示される表示領域2015を含んで構成される。本例では、資料タブ2011が選択された状態を示し、選択機能である機能ノードB1912に関係する資料等140として、機能仕様書Bと詳細設計書BとマニュアルBとが表示されている。また、機能仕様書Bと、詳細設計書Bと、マニュアルBとには、資料等140を参照可能なリンクが設けられている。
図21は、サーバ装置110により出力される画面の一例(画面2100)を示す図である。
画面2100は、画面2000において関係機能タブ2012が選択されたときの画面の一例を示す。画面2100では、選択機能に関係する機能として機能Aと機能Cとが表示され、選択機能に類似する機能(選択機能の同義語)として機能bが表示されている。
図22は、サーバ装置110により出力される画面の一例(画面2200)を示す図である。
画面2200は、画面2000においてソースコードタブ2013が選択されたときの画面の一例を示す。画面2200では、選択機能に関係するソースコード146としてソースコードBとソースコードDとが表示され、各ソースコード146を参照可能なリンクが設けられている。
図23は、サーバ装置110により出力される画面の一例(画面2300)を示す図である。
画面2300は、画面2000においてテストタブ2014が選択されたときの画面の一例を示す。画面2300では、選択機能に関係するテスト項目としてTEST002とテスト004とが表示されている。
図24は、サーバ装置110により出力される画面の一例(画面2400)を示す図である。
画面2400は、画面2300において機能ノードB1912が右クリックされたときの画面の一例を示す。画面2400では、ソースコード146の構造を可視化するための「コールグラフ表示」メニュー2410が表示されている。
図25は、サーバ装置110により出力される画面の一例(画面2500)を示す図である。
画面2500は、画面2400において「コールグラフ表示」メニュー2410が選択されたときの画面の一例を示す。画面2500では、機能ノードB1912に関係するソースコードノードA2511、ソースコードノードB2512、ソースコードノードD2513、およびソースコードノードC2514が表示されている。
図26は、サーバ装置110により出力される画面の一例(画面2600)を示す図である。
画面2600は、画面1800において、検索カテゴリ「テスト項目」および検索キーワード「TEST004」が指定されて検索が行われたときの画面の一例を示す。画面2600では、検索カテゴリのノードと、当該ノードに関係するノードとが表示され、検索キーワードに該当するノードがハイライトされる。本例では、テスト項目ノード「004」2611が機能ノードB1912とソースコードノードB2512とソースコードノードD2513とに関係があることが示され、検索キーワードのテスト項目ノード「004」2611がハイライトされている。
本実施の形態によれば、既存のソフトウェアにおけるトレーサビリティを確保することで、ソフトウェアの改修時の影響調査を容易にできるようになり、高品質のソフトウェアを短期間で開発することができる。
(II)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
上述の実施の形態には、例えば、以下のような内容が含まれる。
上述の実施の形態においては、本発明を開発支援システムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、プログラムの一部またはすべては、プログラムソースから、サーバ装置110を実現するコンピュータのような装置にインストールされてもよい。プログラムソースは、例えば、ネットワークで接続されたプログラム配布サーバまたはコンピュータが読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、上述の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上述の実施の形態において、図示および説明した画面は、一例であり、受け付ける情報が同じであるならば、どのようなデザインであってもよい。
また、上述の実施の形態において、図示および説明した画面は、一例であり、提示する情報が同じであるならば、どのようなデザインであってもよい。
また、上述の実施の形態において、情報の出力は、ディスプレイへの表示に限るものではない。情報の出力は、スピーカによる音声出力であってもよいし、ファイルへの出力であってもよいし、印刷装置による紙媒体等への印刷であってもよいし、プロジェクタによるスクリーン等への投影であってもよいし、その他の態様であってもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
(1)
開発支援システムは、所定のソフトウェアに係る資料情報(例えば、資料等140)をもとに、機能ノード(例えば、機能ノード406)を設定するためのノード情報(例えば、ノード情報400)と機能ノード間の関係を示すエッジを設定するためのエッジ情報(例えば、エッジ情報410)とを登録する機能情報登録部(例えば、機能情報登録部119-1、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報(例えば、テスト項目表148)をもとに、テスト項目ノード(例えば、テスト項目ノード408)を設定するためのノード情報と、テスト項目ノードおよび機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録するテスト項目情報登録部(例えば、テスト項目情報登録部119-2、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、上記所定のソフトウェアに用いられているソースコード(例えば、ソースコード146)をもとにソースコードノード(例えば、ソースコードノード407)を設定するためのノード情報を登録するソースコード情報登録部(例えば、ソースコード情報登録部119-3、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、を備え、上記ソースコード情報登録部は、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとにテスト実行システム(例えば、テスト実行システム130)により上記テストが実行されたときに動作したプログラムのソースコード(例えば、ソースコード146)と上記テスト項目とが対応付けられた情報を含む実行トレース情報(例えば、実行トレース251、実行トレーステーブル500)を読み込み、読み込んだ実行トレース情報のテスト項目と一致するテスト項目を示すテスト項目ノードが関係付けられているエッジ情報を上記テスト項目情報登録部により登録されたエッジ情報から特定し、特定したエッジ情報をもとに上記テスト項目ノードが関係付けられている機能ノードを特定し、特定した機能ノードと上記ソースコードのソースコードノードとの関係を示すエッジを設定するためのエッジ情報を登録する(例えば、図11参照)。
開発支援システムは、所定のソフトウェアに係る資料情報(例えば、資料等140)をもとに、機能ノード(例えば、機能ノード406)を設定するためのノード情報(例えば、ノード情報400)と機能ノード間の関係を示すエッジを設定するためのエッジ情報(例えば、エッジ情報410)とを登録する機能情報登録部(例えば、機能情報登録部119-1、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報(例えば、テスト項目表148)をもとに、テスト項目ノード(例えば、テスト項目ノード408)を設定するためのノード情報と、テスト項目ノードおよび機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録するテスト項目情報登録部(例えば、テスト項目情報登録部119-2、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、上記所定のソフトウェアに用いられているソースコード(例えば、ソースコード146)をもとにソースコードノード(例えば、ソースコードノード407)を設定するためのノード情報を登録するソースコード情報登録部(例えば、ソースコード情報登録部119-3、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)と、を備え、上記ソースコード情報登録部は、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとにテスト実行システム(例えば、テスト実行システム130)により上記テストが実行されたときに動作したプログラムのソースコード(例えば、ソースコード146)と上記テスト項目とが対応付けられた情報を含む実行トレース情報(例えば、実行トレース251、実行トレーステーブル500)を読み込み、読み込んだ実行トレース情報のテスト項目と一致するテスト項目を示すテスト項目ノードが関係付けられているエッジ情報を上記テスト項目情報登録部により登録されたエッジ情報から特定し、特定したエッジ情報をもとに上記テスト項目ノードが関係付けられている機能ノードを特定し、特定した機能ノードと上記ソースコードのソースコードノードとの関係を示すエッジを設定するためのエッジ情報を登録する(例えば、図11参照)。
上記構成では、例えば、テスト項目に記述されているテスト内容の説明文とテストの実行トレースとを用いて、機能およびソースコード間の関係付けが自動的に行われる。これにより、関係付けが漏れたり、関係付けが誤ったりすることがないので、機能およびソースコード間の正しい関係が得られるようになる。また、人手またはタグの埋め込みにより行っていた関係付けが不要になり、高品質のソフトウェアを短期間で開発することができ、開発工数および保守工数を削減できる。
(2)
上記ソースコード情報登録部は、上記所定のソフトウェアに用いられているソースコードに係る資料情報から、登録したノード情報のソースコードノードと上記機能情報登録部により登録されたノード情報の機能ノードとの関係を示す第1のエッジを設定するための第1のエッジ情報を登録し(例えば、図8参照)、上記第1のエッジ情報と、取得した実行トレース情報をもとに登録する、機能ノードと上記ソースコードノードとの関係を示す第2のエッジを設定するための第2のエッジ情報と、に差異がある場合、上記第1のエッジ情報を上記第2のエッジ情報で更新する(例えば、図11参照)。
上記ソースコード情報登録部は、上記所定のソフトウェアに用いられているソースコードに係る資料情報から、登録したノード情報のソースコードノードと上記機能情報登録部により登録されたノード情報の機能ノードとの関係を示す第1のエッジを設定するための第1のエッジ情報を登録し(例えば、図8参照)、上記第1のエッジ情報と、取得した実行トレース情報をもとに登録する、機能ノードと上記ソースコードノードとの関係を示す第2のエッジを設定するための第2のエッジ情報と、に差異がある場合、上記第1のエッジ情報を上記第2のエッジ情報で更新する(例えば、図11参照)。
上記構成では、開発支援システムは、例えば、既存の資料同士を関係付けると共に、テスト項目とその実行トレースとを用いて、ソフトウェアの実際の動作に基づく、資料間の正しい関係を補完する。上記構成によれば、例えば、資料と実装との間に乖離が生じてしまい、正しい関係が得られない場合でも、実行トレースをもとに正しい関係が補完されるので、トレーサビリティを向上させることができる。また、例えば、エッジ情報にエッジの設定に用いられた資料を識別するための識別情報を対応付け、更新されるエッジ情報に対応付けられている識別情報により識別される資料の情報を出力することで、ユーザは、当該資料が古い資料であることを把握することができる。
(3)
上記機能情報登録部は、上記所定のソフトウェアに係る資料情報から上記所定のソフトウェアにおける機能を示す語を抽出し、抽出した語を機能ノードとして設定するためのノード情報を登録し(例えば、図6参照)、登録したノード情報の機能ノードについて、上記所定のソフトウェアに係る資料情報から機能ノード間の関係を抽出し、抽出した機能ノード間の関係を示すエッジを設定するためのエッジ情報を登録し(例えば、図7参照)、登録したノード情報の各々の語の類似度(例えば、コサイン類似度)に基づいて、第1の機能ノードの機能と第2の機能ノードの機能とが類似すると判定した場合、上記第1の機能ノードと上記第2の機能ノードとの関係を示すエッジを設定するためのエッジ情報を登録する(例えば、図12参照)。
上記機能情報登録部は、上記所定のソフトウェアに係る資料情報から上記所定のソフトウェアにおける機能を示す語を抽出し、抽出した語を機能ノードとして設定するためのノード情報を登録し(例えば、図6参照)、登録したノード情報の機能ノードについて、上記所定のソフトウェアに係る資料情報から機能ノード間の関係を抽出し、抽出した機能ノード間の関係を示すエッジを設定するためのエッジ情報を登録し(例えば、図7参照)、登録したノード情報の各々の語の類似度(例えば、コサイン類似度)に基づいて、第1の機能ノードの機能と第2の機能ノードの機能とが類似すると判定した場合、上記第1の機能ノードと上記第2の機能ノードとの関係を示すエッジを設定するためのエッジ情報を登録する(例えば、図12参照)。
上記構成では、例えば、同義語が判定されるので、ユーザは、似通った名称の機能が同じ機能であるか、異なる機能であるかを容易に判断することができる。
(4)
上記機能情報登録部は、登録したノード情報の各々の語の類似度(例えば、コサイン類似度)と、上記第1の機能ノードに関係付けられているソースコードと上記第2の機能ノードに関係付けられているソースコードとの類似度(例えば、実装類似度)と、に基づいて、上記第1の機能ノードの機能と上記第2の機能ノードの機能とが類似するか否かを判定する(例えば、図12参照)。
上記機能情報登録部は、登録したノード情報の各々の語の類似度(例えば、コサイン類似度)と、上記第1の機能ノードに関係付けられているソースコードと上記第2の機能ノードに関係付けられているソースコードとの類似度(例えば、実装類似度)と、に基づいて、上記第1の機能ノードの機能と上記第2の機能ノードの機能とが類似するか否かを判定する(例えば、図12参照)。
上記構成では、語の類似度とソースコードの類似度とに基づいて機能が類似するか否かが判定されるので、同義語をより正確に判定することができる。
(5)
ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定したノード情報をもとに、上記ソースコード情報登録部により登録されたエッジ情報から上記検索対象の機能の機能ノードと関係付けられているソースコードノードを特定し、特定したソースコードノードのソースコードを示す情報(例えば、ソースコードタブ2013において表示される、選択機能に関係するソースコード146を示す情報、図22参照)を出力する出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備える。
ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定したノード情報をもとに、上記ソースコード情報登録部により登録されたエッジ情報から上記検索対象の機能の機能ノードと関係付けられているソースコードノードを特定し、特定したソースコードノードのソースコードを示す情報(例えば、ソースコードタブ2013において表示される、選択機能に関係するソースコード146を示す情報、図22参照)を出力する出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備える。
上記構成によれば、例えば、検索対象の機能に関係するソースコードを示す情報が表示されるので、ユーザは、検索対象の機能に関係するソースコードを把握することができ、ソフトウェアの改修時の影響調査を容易にできるようになる。
(6)
上記ソースコード情報登録部により登録されるソースコードのノード情報には、上記ソースコードの格納先を示す格納先情報(例えば、資料URL)が含まれ、上記出力部は、特定したソースコードノードのソースコードを示す情報を表示装置に表示し、表示したソースコードを示す情報が選択された際、選択されたソースコードのノード情報に含まれている格納先情報をもとに上記ソースコードを上記表示装置に表示する。
上記ソースコード情報登録部により登録されるソースコードのノード情報には、上記ソースコードの格納先を示す格納先情報(例えば、資料URL)が含まれ、上記出力部は、特定したソースコードノードのソースコードを示す情報を表示装置に表示し、表示したソースコードを示す情報が選択された際、選択されたソースコードのノード情報に含まれている格納先情報をもとに上記ソースコードを上記表示装置に表示する。
上記構成によれば、例えば、ユーザは、表示されているソースコードを示す情報を選択することで、検索対象の機能に関係するソースコードの内容を容易に把握することができ、ソフトウェアの改修にかかる時間を短縮することができる。
(7)
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定した機能のノード情報をもとに、上記機能情報登録部により登録されたエッジ情報から、上記検索対象の機能の第1の機能ノードと関係付けられている第2の機能ノードを特定し、上記第1の機能ノードと上記第2の機能ノードとを接続して表示装置に表示し(例えば、画面1900、画面2000、画面2100、画面2200、画面2300参照)、表示した機能ノードに対して所定の操作が行われた際(例えば、表示した機能ノードに対して右クリックが行われて「コールグラフ表示」メニューが選択された際)、上記所定の操作が行われた機能ノードと関係付けられているソースコードノードを特定し、特定したソースコードノードと、上記機能ノードと関係付けられている機能ノードに関係付けられているソースコードノードとを接続して上記表示装置に表示する(例えば、図24参照)。
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定した機能のノード情報をもとに、上記機能情報登録部により登録されたエッジ情報から、上記検索対象の機能の第1の機能ノードと関係付けられている第2の機能ノードを特定し、上記第1の機能ノードと上記第2の機能ノードとを接続して表示装置に表示し(例えば、画面1900、画面2000、画面2100、画面2200、画面2300参照)、表示した機能ノードに対して所定の操作が行われた際(例えば、表示した機能ノードに対して右クリックが行われて「コールグラフ表示」メニューが選択された際)、上記所定の操作が行われた機能ノードと関係付けられているソースコードノードを特定し、特定したソースコードノードと、上記機能ノードと関係付けられている機能ノードに関係付けられているソースコードノードとを接続して上記表示装置に表示する(例えば、図24参照)。
上記構成によれば、例えば、ソースコードの構造が可視化されるので、ユーザは、ソースコードの改修を容易にすることができる。
(8)
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象のテスト項目の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記テスト項目情報登録部により登録されたノード情報から上記検索対象のテスト項目のノード情報を特定し、特定したテスト項目のノード情報をもとに、上記テスト項目情報登録部により登録されたエッジ情報から、上記テスト項目のテスト項目ノードと関係付けられている機能ノードを特定し、特定したテスト項目のノード情報をもとに、上記ソースコード情報登録部により登録されたエッジ情報から、上記テスト項目のテスト項目ノードと関係付けられているソースコードノードを特定し、上記テスト項目ノードに上記機能ノードと上記ソースコードノードとを接続して表示装置に表示する(例えば、図26参照)。
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象のテスト項目の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記テスト項目情報登録部により登録されたノード情報から上記検索対象のテスト項目のノード情報を特定し、特定したテスト項目のノード情報をもとに、上記テスト項目情報登録部により登録されたエッジ情報から、上記テスト項目のテスト項目ノードと関係付けられている機能ノードを特定し、特定したテスト項目のノード情報をもとに、上記ソースコード情報登録部により登録されたエッジ情報から、上記テスト項目のテスト項目ノードと関係付けられているソースコードノードを特定し、上記テスト項目ノードに上記機能ノードと上記ソースコードノードとを接続して表示装置に表示する(例えば、図26参照)。
上記構成によれば、例えば、テスト項目を検索した場合に、テスト項目と、当該テスト項目に関係付けられている機能およびソースコードとが接続されて表示されるので、ユーザは、テスト項目に係る機能およびソースコードを容易に把握することができる。
(9)
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報には、上記機能のカテゴリを示す情報が含まれ(例えば、図3参照)、上記テスト項目のノード情報には、上記機能のカテゴリの情報が含まれ(例えば、図4参照)、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定した機能のノード情報の機能ノードと関係付けられているテスト項目ノードを、上記テスト項目情報登録部により登録されたエッジ情報から特定し、上記機能ノードと、上記テスト項目ノードのノード情報に含まれる上記機能ノードの機能のカテゴリの情報(例えば、表示領域2015)とを表示する。
上記開発支援システムは、出力部(例えば、出力部119-4、プロセッサ111、サーバ装置110、回路、サーバ装置110と通信可能なコンピュータ)を備え、上記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報には、上記機能のカテゴリを示す情報が含まれ(例えば、図3参照)、上記テスト項目のノード情報には、上記機能のカテゴリの情報が含まれ(例えば、図4参照)、上記出力部は、ユーザインターフェース(例えば、画面1800)を介して入力された検索対象の機能の情報(例えば、検索カテゴリ、検索キーワード)をもとに、上記機能情報登録部により登録されたノード情報から上記検索対象の機能のノード情報を特定し、特定した機能のノード情報の機能ノードと関係付けられているテスト項目ノードを、上記テスト項目情報登録部により登録されたエッジ情報から特定し、上記機能ノードと、上記テスト項目ノードのノード情報に含まれる上記機能ノードの機能のカテゴリの情報(例えば、表示領域2015)とを表示する。
上記構成によれば、例えば、テスト項目表に非機能要件に係るテスト種別等のカテゴリの情報が付与されている場合は、カテゴリの情報もグラフDBに格納しておき、検索結果に併せて表示することで、ソフトウェアの機能仕様の理解だけでなく、非機能要件に関する理解を促すことができる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
100……開発支援システム、110……サーバ装置、120……補助記憶装置、130……テスト実行システム、140……資料等。
Claims (10)
- 所定のソフトウェアに係る資料情報をもとに、機能ノードを設定するためのノード情報と機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録する機能情報登録部と、
前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとに、テスト項目ノードを設定するためのノード情報と、テスト項目ノードおよび機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録するテスト項目情報登録部と、
前記所定のソフトウェアに用いられているソースコードをもとに、ソースコードノードを設定するためのノード情報を登録するソースコード情報登録部と、を備え、
前記ソースコード情報登録部は、
前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとにテスト実行システムにより前記テストが実行されたときに動作したプログラムのソースコードと前記テスト項目とが対応付けられた情報を含む実行トレース情報を読み込み、
読み込んだ実行トレース情報のテスト項目と一致するテスト項目を示すテスト項目ノードが関係付けられているエッジ情報を前記テスト項目情報登録部により登録されたエッジ情報から特定し、
特定したエッジ情報をもとに前記テスト項目ノードが関係付けられている機能ノードを特定し、
特定した機能ノードと前記ソースコードのソースコードノードとの関係を示すエッジを設定するためのエッジ情報を登録する、
開発支援システム。 - 前記ソースコード情報登録部は、
前記所定のソフトウェアに用いられているソースコードに係る資料情報から、登録したノード情報のソースコードノードと前記機能情報登録部により登録されたノード情報の機能ノードとの関係を示す第1のエッジを設定するための第1のエッジ情報を登録し、
前記第1のエッジ情報と、取得した実行トレース情報をもとに登録する、機能ノードと前記ソースコードノードとの関係を示す第2のエッジを設定するための第2のエッジ情報と、に差異がある場合、前記第1のエッジ情報を前記第2のエッジ情報で更新する、
請求項1に記載の開発支援システム。 - 前記機能情報登録部は、
前記所定のソフトウェアに係る資料情報から前記所定のソフトウェアにおける機能を示す語を抽出し、抽出した語を機能ノードとして設定するためのノード情報を登録し、登録したノード情報の機能ノードについて、前記所定のソフトウェアに係る資料情報から機能ノード間の関係を抽出し、抽出した機能ノード間の関係を示すエッジを設定するためのエッジ情報を登録し、
登録したノード情報の各々の語の類似度に基づいて、第1の機能ノードの機能と第2の機能ノードの機能とが類似すると判定した場合、前記第1の機能ノードと前記第2の機能ノードとの関係を示すエッジを設定するためのエッジ情報を登録する、
請求項1に記載の開発支援システム。 - 前記機能情報登録部は、登録したノード情報の各々の語の類似度と、前記第1の機能ノードに関係付けられているソースコードと前記第2の機能ノードに関係付けられているソースコードとの類似度と、に基づいて、前記第1の機能ノードの機能と前記第2の機能ノードの機能とが類似するか否かを判定する、
請求項3に記載の開発支援システム。 - ユーザインターフェースを介して入力された検索対象の機能の情報をもとに、前記機能情報登録部により登録されたノード情報から前記検索対象の機能のノード情報を特定し、特定したノード情報をもとに、前記ソースコード情報登録部により登録されたエッジ情報から前記検索対象の機能の機能ノードと関係付けられているソースコードノードを特定し、特定したソースコードノードのソースコードを示す情報を出力する出力部を備える、
請求項1に記載の開発支援システム。 - 前記ソースコード情報登録部により登録されるソースコードのノード情報には、前記ソースコードの格納先を示す格納先情報が含まれ、
前記出力部は、特定したソースコードノードのソースコードを示す情報を表示装置に表示し、表示したソースコードを示す情報が選択された際、選択されたソースコードのノード情報に含まれている格納先情報をもとに前記ソースコードを前記表示装置に表示する、
請求項5に記載の開発支援システム。 - 出力部を備え、
前記出力部は、
ユーザインターフェースを介して入力された検索対象の機能の情報をもとに、前記機能情報登録部により登録されたノード情報から前記検索対象の機能のノード情報を特定し、
特定した機能のノード情報をもとに、前記機能情報登録部により登録されたエッジ情報から、前記検索対象の機能の第1の機能ノードと関係付けられている第2の機能ノードを特定し、前記第1の機能ノードと前記第2の機能ノードとを接続して表示装置に表示し、
表示した機能ノードに対して所定の操作が行われた際、前記所定の操作が行われた機能ノードと関係付けられているソースコードノードを特定し、
特定したソースコードノードと、前記機能ノードと関係付けられている機能ノードに関係付けられているソースコードノードとを接続して前記表示装置に表示する、
請求項1に記載の開発支援システム。 - 出力部を備え、
前記出力部は、
ユーザインターフェースを介して入力された検索対象のテスト項目の情報をもとに、前記テスト項目情報登録部により登録されたノード情報から前記検索対象のテスト項目のノード情報を特定し、
特定したテスト項目のノード情報をもとに、前記テスト項目情報登録部により登録されたエッジ情報から、前記テスト項目のテスト項目ノードと関係付けられている機能ノードを特定し、
特定したテスト項目のノード情報をもとに、前記ソースコード情報登録部により登録されたエッジ情報から、前記テスト項目のテスト項目ノードと関係付けられているソースコードノードを特定し、
前記テスト項目ノードに前記機能ノードと前記ソースコードノードとを接続して表示装置に表示する、
請求項1に記載の開発支援システム。 - 出力部を備え、
前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報には、前記機能のカテゴリを示す情報が含まれ、
前記テスト項目のノード情報には、前記機能のカテゴリの情報が含まれ、
前記出力部は、
ユーザインターフェースを介して入力された検索対象の機能の情報をもとに、前記機能情報登録部により登録されたノード情報から前記検索対象の機能のノード情報を特定し、
特定した機能のノード情報の機能ノードと関係付けられているテスト項目ノードを、前記テスト項目情報登録部により登録されたエッジ情報から特定し、
前記機能ノードと、前記テスト項目ノードのノード情報に含まれる前記機能ノードの機能のカテゴリの情報とを表示する、
請求項1に記載の開発支援システム。 - 機能情報登録部が、所定のソフトウェアに係る資料情報をもとに、機能ノードを設定するためのノード情報と機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録することと、
テスト項目情報登録部が、前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとに、テスト項目ノードを設定するためのノード情報と、テスト項目ノードおよび機能ノード間の関係を示すエッジを設定するためのエッジ情報とを登録することと、
ソースコード情報登録部が、前記所定のソフトウェアに用いられているソースコードをもとにソースコードノードを設定するためのノード情報を登録することと、を含み、
前記ソースコード情報登録部は、
前記所定のソフトウェアにおける機能についてのテストを実行するためのテスト項目を含むテスト情報をもとにテスト実行システムにより前記テストが実行されたときに動作したプログラムのソースコードと前記テスト項目とが対応付けられた情報を含む実行トレース情報を読み込み、
読み込んだ実行トレース情報のテスト項目と一致するテスト項目を示すテスト項目ノードが関係付けられているエッジ情報を前記テスト項目情報登録部により登録されたエッジ情報から特定し、
特定したエッジ情報をもとに前記テスト項目ノードが関係付けられている機能ノードを特定し、
特定した機能ノードと前記ソースコードのソースコードノードとの関係を示すエッジを設定するためのエッジ情報を登録する、
開発支援方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2022079404A JP7412477B2 (ja) | 2022-05-13 | 2022-05-13 | 開発支援システムおよび開発支援方法 |
| US18/178,960 US20230367589A1 (en) | 2022-05-13 | 2023-03-06 | Development assistance system and development assistance method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2022079404A JP7412477B2 (ja) | 2022-05-13 | 2022-05-13 | 開発支援システムおよび開発支援方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2023167877A JP2023167877A (ja) | 2023-11-24 |
| JP7412477B2 true JP7412477B2 (ja) | 2024-01-12 |
Family
ID=88698897
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2022079404A Active JP7412477B2 (ja) | 2022-05-13 | 2022-05-13 | 開発支援システムおよび開発支援方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20230367589A1 (ja) |
| JP (1) | JP7412477B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2636701A (en) * | 2023-12-19 | 2025-07-02 | Univ Nanyang Tech | Method and system for predicting one or more attributes of test cases |
| JP7525127B1 (ja) | 2024-02-26 | 2024-07-30 | 株式会社Shift | プログラム、方法、情報処理装置、システム |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010067188A (ja) | 2008-09-12 | 2010-03-25 | Internatl Business Mach Corp <Ibm> | プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム |
| US20100211924A1 (en) | 2005-07-05 | 2010-08-19 | Microsoft Corporation | Discovering and exploiting relationships in software repositories |
| JP2017102745A (ja) | 2015-12-02 | 2017-06-08 | 三菱電機株式会社 | ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム |
-
2022
- 2022-05-13 JP JP2022079404A patent/JP7412477B2/ja active Active
-
2023
- 2023-03-06 US US18/178,960 patent/US20230367589A1/en active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100211924A1 (en) | 2005-07-05 | 2010-08-19 | Microsoft Corporation | Discovering and exploiting relationships in software repositories |
| JP2010067188A (ja) | 2008-09-12 | 2010-03-25 | Internatl Business Mach Corp <Ibm> | プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム |
| JP2017102745A (ja) | 2015-12-02 | 2017-06-08 | 三菱電機株式会社 | ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2023167877A (ja) | 2023-11-24 |
| US20230367589A1 (en) | 2023-11-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| López et al. | ModelSet: a dataset for machine learning in model-driven engineering | |
| CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
| KR101201011B1 (ko) | 레이블 시스템을 위한 용어 데이타베이스 확장 | |
| US8015051B2 (en) | System and method for business process integration | |
| CN108319687B (zh) | 一种基于js拖拽技术的sql规则生成器 | |
| CN115292473A (zh) | 低代码方案中的扩展的选择性推荐和部署 | |
| US11119886B2 (en) | Software analysis apparatus, software analysis method, and computer readable medium | |
| JP7412477B2 (ja) | 開発支援システムおよび開発支援方法 | |
| US10678864B2 (en) | Analysis model preparing system, programming apparatus, and analysis model preparing method | |
| US10282398B1 (en) | Editing tool for domain-specific objects with reference variables corresponding to preceding pages | |
| CN105743736A (zh) | 自动化测试方法及系统 | |
| CN117389538A (zh) | 页面组件内容开发方法、装置、设备以及存储介质 | |
| Cavero et al. | From static to intelligent: evolving SaaS pricing with LLMs | |
| US20210200833A1 (en) | Health diagnostics and analytics for object repositories | |
| US11275729B2 (en) | Template search system and template search method | |
| JP6551082B2 (ja) | テスト支援装置、テスト支援方法およびテスト支援プログラム | |
| US20160224918A1 (en) | Business influenced part extraction method and business influenced part extraction device based on business variation | |
| JP2013037580A (ja) | 情報処理装置 | |
| US11977473B2 (en) | Providing a pseudo language for manipulating complex variables of an orchestration flow | |
| JP2010157165A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
| CN116795377A (zh) | 代码数据处理方法及装置 | |
| Dinkar | Requirement engineering errors: Errors and ambiguities of visualization | |
| Sterca et al. | Primary Building Blocks for Web | |
| JP4867229B2 (ja) | 情報処理装置及びプログラム | |
| US12585438B1 (en) | System and method for web-application implementation |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230111 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20231128 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231226 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7412477 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |