(57)【要約】【課題】ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置を実現する。【解決手段】ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて記憶するキーワード付要求記憶部と、ソースコードを解析して、コンポーネントの実装名を抽出するソース解析部と、複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を記憶する名前付規則記憶部と、ソースコードから抽出したコンポーネントの実装名とマッチする名前付規則を名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした名前付規則に対応付けられたキーワードを付すキーワード付加部と、要求に付されたキーワードおよびコンポーネントに付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネントに反映させるべきことを特定する特定部とを備える開発支援装置を提供する。【選択図】図１
2010003104.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置であって、
前記ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて記憶するキーワード付要求記憶部と、
前記ソフトウエアのソースコードを解析して、コンポーネントの実装名を抽出するソース解析部と、
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を記憶する名前付規則記憶部と、
前記ソースコードから抽出したコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした前記名前付規則に対応付けられたキーワードを付すキーワード付加部と、
要求に付されたキーワードおよびコンポーネントに付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネントに反映させるべきことを特定する特定部と
を備える開発支援装置。
【請求項２】
前記ソース解析部は、少なくとも１つのコンポーネントを含むコンポーネント集合体の実装名を更に抽出し、
前記キーワード付加部は、前記ソースコードから抽出したコンポーネント集合体に含まれるコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネント集合体に、マッチした前記名前付規則に対応付けられたキーワードを更に付し、
前記特定部は、要求に付されたキーワードおよびコンポーネント集合体に付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネント集合体に反映させるべきことを更に特定する
請求項１に記載の開発支援装置。
【請求項３】
コンポーネントおよびコンポーネント集合体のそれぞれについて、ソースコード上の実装名と仕様上の設計名とを対応付けて記憶する設計情報記憶部を更に備え、
前記ソース解析部は、前記ソースコードを解析して、コンポーネント集合体および当該コンポーネント集合体に含まれるコンポーネントの実装名を抽出し、抽出した実装名に対応する設計名を前記設計情報記憶部から検索し、
前記キーワード付加部は、コンポーネント集合体に含まれるコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネント集合体の設計名に、マッチした前記名前付規則に対応付けられたキーワードを付し、
前記特定部は、要求に付されたキーワードおよびコンポーネント集合体の設計名に付されたキーワードがマッチしたことに応じて、当該要求を反映させるべきコンポーネント集合体の設計名を特定する
請求項２に記載の開発支援装置。
【請求項４】
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名に含まれるべき文字列を記憶するキーワード記憶部と、
前記ソース解析部が抽出したコンポーネントの実装名に含まれる文字列に対応付けられているキーワードを前記キーワード記憶部から検索して、キーワード辞書を生成する辞書生成部と、
要求のテキストに含まれる語にマッチするキーワードを前記キーワード辞書から検索し、当該要求に付して前記キーワード付要求記憶部へと格納するキーワード付要求生成部と、
を更に備える請求項３に記載の開発支援装置。
【請求項５】
前記ソース解析部は、前記ソースコードを解析して、前記ソフトウエアが表示すべき画面に対応するコンポーネント集合体と、当該画面内に表示される部品に対応するコンポーネントの実装名および設計名と、当該コンポーネントをインスタンス化する元となったクラス名とを対応付けて出力し、
共起する２以上のクラスのそれぞれのクラス名を対応付けて記憶する共起クラス記憶部を更に備え、
一のコンポーネント集合体に含まれる２以上のコンポーネントに対応付けられた２以上のクラス名が対応付けられて前記共起クラス記憶部に記憶されている場合に、前記辞書生成部は、当該２以上のコンポーネントのそれぞれの実装名に含まれる文字列に対応付けられているキーワードを前記キーワード記憶部から検索して、検索したキーワードを結合して前記キーワード辞書に登録する
請求項４に記載の開発支援装置。
【請求項６】
一のコンポーネント集合体に含まれる連続する２以上のコンポーネントに対応付けられた２以上のクラス名が対応付けられて前記共起クラス記憶部に記憶されている場合に、前記辞書生成部は、当該２以上のコンポーネントのそれぞれの実装名に含まれる文字列に対応付けられているキーワードを前記キーワード記憶部から検索して、検索したキーワードを結合して前記キーワード辞書に登録する請求項５に記載の開発支援装置。
【請求項７】
前記キーワード付要求生成部は、
前記キーワード辞書に登録された、２以上のキーワードが結合された結合キーワードに含まれる前記２以上のキーワードのうち、要求のテキストに含まれる語にマッチするキーワードの数に基づく一致度を算出し、
前記一致度が予め定められた基準値以上であることを条件として、前記要求に前記結合キーワードおよび前記一致度を付して前記キーワード付要求記憶部へと格納する
請求項６に記載の開発支援装置。
【請求項８】
コンピュータを、ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置として機能させるプログラムであって、
前記コンピュータを、
前記ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて記憶するキーワード付要求記憶部と、
前記ソフトウエアのソースコードを解析して、コンポーネントの実装名を抽出するソース解析部と、
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を記憶する名前付規則記憶部と、
前記ソースコードから抽出したコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした前記名前付規則に対応付けられたキーワードを付すキーワード付加部と、
要求に付されたキーワードおよびコンポーネントに付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネントに反映させるべきことを特定する特定部と
して機能させるプログラム。
【請求項９】
ソフトウエアに対する要求を反映させるべきコンポーネントをコンピュータにより特定する方法であって、
前記ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて前記コンピュータ内のキーワード付要求記憶部に記憶させるキーワード付要求記憶段階と、
前記コンピュータにより、前記ソフトウエアのソースコードを解析して、コンポーネントの実装名を抽出するソース解析段階と、
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を前記コンピュータ内の名前付規則記憶部に記憶させる名前付規則記憶段階と、
前記コンピュータにより、前記ソースコードから抽出したコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした前記名前付規則に対応付けられたキーワードを付すキーワード付加段階と、
前記コンピュータにより、要求に付されたキーワードおよびコンポーネントに付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネントに反映させるべきことを特定する特定段階と
を備える方法。
【請求項１０】
ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置であって、
コンポーネントおよびコンポーネント集合体のそれぞれについて、ソースコード上の実装名と仕様上の設計名とを対応付けて記憶する設計情報記憶部と、
前記ソフトウエアのソースコードを解析して、コンポーネントの実装名および少なくとも１つのコンポーネントを含むコンポーネント集合体の実装名を抽出し、抽出した実装名に対応する設計名を前記設計情報記憶部から検索するソース解析部と、
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名に含まれるべき文字列を記憶するキーワード記憶部と、
前記ソース解析部が抽出したコンポーネントの実装名に含まれる文字列に対応付けられているキーワードを前記キーワード記憶部から検索して、キーワード辞書を生成する辞書生成部と、
要求のテキストに含まれる語にマッチするキーワードを前記キーワード辞書から検索し、当該要求に付すキーワード付要求生成部と、
前記ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて記憶するキーワード付要求記憶部と、
複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を記憶する名前付規則記憶部と、
前記ソースコードから抽出したコンポーネントの実装名とマッチする前記名前付規則を前記名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした前記名前付規則に対応付けられたキーワードを付し、当該コンポーネントを含むコンポーネント集合体の設計名に、マッチした前記名前付規則に対応付けられたキーワードを付すキーワード付加部と、
要求に付されたキーワードおよびコンポーネント集合体の設計名に付されたキーワードがマッチしたことに応じて、当該要求を反映させるべきコンポーネント集合体の設計名を特定する特定部と、
を備える開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援装置、方法、およびプログラムに関する。特に本発明は、ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、プロトタイプ開発、スパイラル開発、および、拡張開発を支援することを目的として、各種の支援システムが提案されている。特許文献１は、設計情報及び実装情報からソースコードを生成して、ソースコード上での変更を設計情報および実装情報に反映するスパイラル型オブジェクト指向のソフトウェア開発支援システムを開示する。特許文献２は、仕様書作成者が仕様に関する文章および文章内の実体間の関係を予め指定しておくことにより、仕様のうちの一つが変更された場合に、仕様の各々の間の関連に基づいて、関連する他の仕様を提示するシステム開発工程管理方法を開示する（段落００６６−００６８、０１２３）。
【０００３】
特許文献３は、作成されたコンポーネントと共にコンポーネントに関する情報を管理して、新規プロジェクトに関してユーザにより入力されるプロジェクト情報中のキーワードを用いて利用可能と推測されるコンポーネントを検索して、ユーザに表示するコンポーネント管理システムを開示する。特許文献４は、仕様変更内容と、保守したプログラム名とを対応付けてデータベース化して、仕様変更内容から人手により抽出されたキーワードを登録しておき、保守作業発生時に仕様変更内容から人手により決定されたキーワードでデータベースを検索して、保守されたプログラム名を表示する仕様変更保守作業支援システムを開示する。特許文献５は、ユーザからのソフトウェア開発注文を受諾して、類似事例を検索して、類似事例に基づいて決定した処理内容からソフトウェア開発費を見積もり、ネットワークを通じてユーザにプロトタイプを提示するソフトウェア開発サービスシステムを開示する。
【０００４】
【特許文献１】特開平７−１２９３８２号公報
【特許文献２】特開平９−３４９３６号公報
【特許文献３】特開２００６−１７８７０８号公報
【特許文献４】特開平１１−１２６１６０号公報
【特許文献５】特開２００５−１８２８４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
プロトタイプ開発、スパイラル開発、および、拡張開発等においては、実装されたソフトウェアを実行等した結果、新たにソフトウェア要求および仕様変更要求が発生する。このような要求に対応するためには、これらの要求を満たす追加実装またはコード変更のための設計変更および実装変更の方針決定、工数見積、および両立しない要求の検出等の作業を予め行っておくことが望まれる。このためには、発生した要求が実装のどの部分に影響を与えるかを予め把握できる必要がある。ここで、実装コード行数が少なく、要求も少ない場合には、人手で要求およびソースコードを読んで影響箇所を把握することもできる。しかしながら、実装コード行数が多く、要求も複雑かつ多様となった場合には、ソースコード上の影響箇所を把握するのに大きな工数が必要となってしまう。
【０００６】
そこで本発明は、上記の課題を解決することのできる開発支援装置、方法、およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００７】
本発明の第１の形態によると、ソフトウエアに対する要求を反映させるべきコンポーネントを特定する開発支援装置であって、ソフトウエアに対する要求と、要求に付されたキーワードとを対応付けて記憶するキーワード付要求記憶部と、ソフトウエアのソースコードを解析して、コンポーネントの実装名を抽出するソース解析部と、複数のキーワードのそれぞれに対応付けて、コンポーネントの実装名の名前付規則を記憶する名前付規則記憶部と、ソースコードから抽出したコンポーネントの実装名とマッチする名前付規則を名前付規則記憶部内から検索したことに応じて、当該コンポーネントに、マッチした名前付規則に対応付けられたキーワードを付すキーワード付加部と、要求に付されたキーワードおよびコンポーネントに付されたキーワードがマッチしたことに応じて、当該要求を当該コンポーネントに反映させるべきことを特定する特定部とを備える開発支援装置、並びに、当該開発支援装置に関するプログラムおよび方法を提供する。
【０００８】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【０００９】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
図１は、本実施形態に係る開発支援装置１０の構成を示す。開発支援装置１０は、ソフトウエアに対する要求を反映させるべきコンポーネント及び／又はコンポーネント集合体を特定する。より具体的には、開発支援装置１０は、ソフトウェアに対する要求に付されたキーワードと、ソフトウェアのソースコードを解析して抽出したコンポーネントおよびコンポーネント集合体に付したキーワードとをマッチングすることにより要求とコンポーネント／コンポーネント集合体を関連付ける。そして、各要求に対応付けて、当該要求に関連付けられたコンポーネント／コンポーネント集合体を、当該要求を反映させるべき箇所として推定して表示する。
【００１１】
開発支援装置１０は、実装記憶部１００、要求記憶部１１０、キーワード付部品・部品集合体名生成部１２０、キーワード付部品・部品集合体記憶部１３０、キーワード付要求生成部１４０、シソーラス辞書記憶部１４５、キーワード付要求記憶部１５０、特定部１６０、関連付記憶部１７０、および表示部１８０を備える。実装記憶部１００は、開発対象のソフトウェアの実装を記憶する。本実施形態において、実装記憶部１００は、例えばＢＡＰアプリケーションであるソフトウェアのソースコードを記憶する。これに代えて、実装記憶部１００は、開発対象のソフトウェアとして、Ｃ言語、ＪＡＶＡ（登録商標）、ＳＱＬ、ＦＯＲＴＲＡＮ、ＣＯＢＯＬ、およびアセンブリ言語等の他の各種のプログラム言語によって記述されたソフトウェアを記憶してよい。
【００１２】
要求記憶部１１０は、実装記憶部１００に記憶されたソフトウェアに対する要求を１または複数記憶する。より具体的には、実装記憶部１００は、設計段階、実装段階を経て完成したソフトウェアに対する、改善すべき項目、追加・変更を要求された項目、バグを修正すべき項目等が自然言語で記述された要求のテキストデータ（以下、「要求文」とも示す。）を記憶する。プロトタイプ開発、スパイラル開発、および、拡張開発等においては、要求記憶部１１０は、実装された実装記憶部１００内のソフトウェアを実行等した結果、新たに発生したソフトウェア要求および仕様変更要求等であってよい。また、ユーザから要求に対するキーワードが人手により入力された場合には、要求記憶部１１０は、入力されたキーワードを、当該要求に付して要求記憶部１１０に記憶してもよい。
【００１３】
キーワード付部品・部品集合体名生成部１２０は、実装記憶部１００に記憶されたソフトウェアのソースコードを解析してソフトウェアのコンポーネントおよびコンポーネント集合体を抽出して、抽出したコンポーネントおよびコンポーネント集合体に対して適切なキーワードを付してキーワード付部品・部品集合体記憶部１３０に格納する。ここで、ソフトウェアのコンポーネントは、ソフトウェアの一部として含まれる部品であってよい。本実施形態において、コンポーネントは、主にソフトウェアが表示する画面を構成する入出力フィールド、ボタン、及び／又はリスト等のソフトウェア部品であってよい。これに代えて、コンポーネントは、ソフトウェアに含まれる各種のモジュール、およびパーツ等であってよい。
【００１４】
また、ソフトウェアのコンポーネント集合体は、ソフトウェアの一部として含まれる、少なくとも１つのコンポーネントを含む部品集合体である。本実施形態において、コンポーネント集合体は、主にソフトウェアが表示する画面に対応するものであり、当該画面内に表示する入出力フィールド、ボタン、及び／又はリスト等の少なくとも１つのコンポーネントを含む。これに代えて、コンポーネント集合体は、ソフトウェアを構成する各種のモジュール、およびパーツ等であってよく、当該モジュール及び／又はパーツ内において、当該コンポーネント集合体に含まれるコンポーネントの定義、記述、及び／又は呼び出し等を行うものであってよい。以下、説明の便宜上、コンポーネントおよびコンポーネント集合体を、部品および部品集合体とも示す。
【００１５】
また、キーワード付部品・部品集合体名生成部１２０は、ソフトウェアの部品／部品集合体から抽出したキーワードをキーワード付要求生成部１４０に供給する。キーワード付部品・部品集合体記憶部１３０は、キーワード付部品・部品集合体名生成部１２０によってキーワードが付された部品及び／又は部品集合体であるキーワード付部品／部品集合体を１または複数記憶する。
【００１６】
キーワード付要求生成部１４０は、要求記憶部１１０に格納された要求文から、キーワードを抽出する。そして、キーワード付要求生成部１４０は、要求文に対して抽出したキーワードを付してキーワード付要求記憶部１５０に格納する。ここで、キーワード付要求生成部１４０は、要求記憶部１１０に格納された要求文に人手によってキーワードが付されている場合には、当該キーワードを当該要求文に付してよい。シソーラス辞書記憶部１４５は、少なくとも１つの類義語を、これらの類義語を代表する代表語に対応付けるシソーラス辞書を記憶している。
【００１７】
キーワード付要求生成部１４０は、シソーラス辞書記憶部１４５を用いて、自然言語で記述された要求から抽出したキーワードを、必要に応じて代表語に置換して、部品／部品集合体に付したキーワードとのマッチングを取りやすくすることができる。キーワード付要求記憶部１５０は、ソフトウエアに対する要求と、キーワード付要求生成部１４０により要求に付されたキーワードとを対応付けて、キーワード付要求文として記憶する。また、キーワード付要求記憶部１５０は、キーワード付要求文をキーワード付部品・部品集合体名生成部１２０に供給することにより、キーワード付部品・部品集合体名生成部１２０が処理する対象となるキーワードを、要求文に付されたキーワードとマッチするものに制限してもよい。
【００１８】
特定部１６０は、キーワード付要求記憶部１５０に記憶されたキーワード付要求文、および、キーワード付部品・部品集合体記憶部１３０に記憶されたキーワード付部品／部品集合体のキーワード同士をマッチングする。そして、特定部１６０は、要求に付されたキーワード、および、キーワード付部品・部品集合体記憶部１３０に記憶された部品／部品集合体に付されたキーワードがマッチしたことに応じて、当該要求を当該部品／部品集合体に反映させるべきことを特定する。関連付記憶部１７０は、特定部１６０により対応付けられた要求および部品／部品集合体の関連性を記憶する。表示部１８０は、関連付記憶部１７０に記憶された要求および部品／部品集合体の関連性を表示する。
【００１９】
図２は、本実施形態に係るキーワード付部品・部品集合体名生成部１２０の構成を示す。キーワード付部品・部品集合体名生成部１２０は、実装シンタクス記憶部２００と、部品仕様記憶部２０５と、設計情報記憶部２１０と、ソース解析部２２０と、部品・部品集合体リスト記憶部２３０と、キーワード記憶部２４０と、共起クラス記憶部２４５と、辞書生成部２５０と、キーワード辞書記憶部２５５と、キーワード抽出部２６０と、処理対象キーワード記憶部２６５と、名前付規則記憶部２７０と、キーワード付加部２８０とを有する。実装シンタクス記憶部２００は、実装記憶部１００に記憶されたソフトウェアの実装を解析して、部品／部品集合体を抽出するために用いる実装上のシンタックス（文法）を記憶する。部品仕様記憶部２０５は、ソフトウェアの実装のうち、部品／部品集合体の実装名を抽出するためのルールを記憶する。実装シンタクス記憶部２００および部品仕様記憶部２０５を併合して、ソフトウェアの実装から部品／部品集合体の実装名を抽出するためのルールを記憶する実装ルール記憶部としてもよい。
【００２０】
設計情報記憶部２１０は、部品および部品集合体のそれぞれについて、ソースコード上の実装名と仕様上の設計名とを対応付けて記憶する。ここで、実装名とは、ソースコード上に記述された部品および部品集合体の名称であり、設計名とは、設計段階において開発者が部品および部品集合体に付けた自然言語等による名称であってよい。
【００２１】
ソース解析部２２０は、実装記憶部１００に記憶されたソフトウエアのソースコードを実装シンタクス記憶部２００、部品仕様記憶部２０５、および設計情報記憶部２１０を用いて解析して、部品および部品集合体の実装名を抽出する。また、ソース解析部２２０は、抽出した実装名に対応する設計名を設計情報記憶部２１０から検索する。部品・部品集合体リスト記憶部２３０は、抽出されたそれぞれの部品および部品集合体の実装名、設計名、並びに、当該部品のクラス名等を対応付けたリストを記憶する。
【００２２】
キーワード記憶部２４０は、複数のキーワードのそれぞれに対応付けて、部品の実装名に含まれるべき文字列を記憶する。共起クラス記憶部２４５は、共起する２以上のクラスのそれぞれのクラス名を対応付けて記憶する。辞書生成部２５０は、部品・部品集合体リスト記憶部２３０に格納された部品および部品集合体の実装名、設計名、並びにクラス名と、キーワード記憶部２４０に記憶された、部品の実装名に対するキーワードと、共起クラス記憶部２４５に記憶された、共起する２以上のクラスのそれぞれのクラス名とに基づいて、キーワード辞書を作成してキーワード辞書記憶部２５５に格納するか、またはキーワード辞書記憶部２５５に記憶されたキーワード辞書を更新する。キーワード辞書記憶部２５５は、ソフトウェアの実装から抽出されたキーワードを含む上記キーワード辞書を記憶すると共に、当該キーワード辞書に含まれるキーワードをキーワード付要求生成部１４０へと供給する。
【００２３】
キーワード抽出部２６０は、キーワード付要求記憶部１５０に格納された１または複数のキーワード付要求文を受け取って、それぞれのキーワード付要求文に含まれるキーワードを抽出する。処理対象キーワード記憶部２６５は、キーワード抽出部２６０により抽出されたキーワードを格納する。
【００２４】
名前付規則記憶部２７０は、複数のキーワードのそれぞれに対応付けて、部品の実装名の名前付規則を記憶する。キーワード付加部２８０は、部品・部品集合体リスト記憶部２３０に格納された、ソースコードから抽出した部品／部品集合体の実装名とマッチする名前付規則を名前付規則記憶部２７０内から検索したことに応じて、当該部品／部品集合体に、マッチした名前付規則に対応付けられたキーワードを付す。これにより、キーワード付加部２８０は、キーワード付部品／部品集合体を生成して、キーワード付部品・部品集合体記憶部１３０へと格納する。ここで、キーワード付加部２８０は、部品／部品集合体に付すキーワードを、キーワード抽出部２６０に記憶されたキーワードに限ってよい。
【００２５】
図３は、本実施形態に係る開発支援装置１０の処理フローを示す。まず、ソース解析部２２０は、ソースコードを解析して、部品／部品集合体を抽出して、部品／部品集合体のリストを生成する（ステップＳ３００）。そして、ソース解析部２２０は、部品／部品集合体のリストを部品・部品集合体リスト記憶部２３０に格納する。
【００２６】
次に、辞書生成部２５０は、部品・部品集合体リスト記憶部２３０に格納された部品／部品集合体のリストに含まれるそれぞれの部品／部品集合体に適合するキーワードを抽出して、キーワード辞書を作成する（Ｓ３１０）。そして、辞書生成部２５０は、キーワード辞書をキーワード辞書記憶部２５５に格納する。
【００２７】
次に、キーワード付要求生成部１４０は、要求記憶部１１０に記憶された要求文に含まれる語にマッチするキーワードをキーワード辞書記憶部２５５に記憶されたキーワード辞書から検索する。そして、キーワード付要求生成部１４０は、検索したキーワードを要求文に付してキーワード付要求文を生成して、キーワード付要求記憶部１５０に格納する（Ｓ３２０）。次に、キーワード抽出部２６０は、キーワード付要求記憶部１５０に格納されたキーワード付要求文に付されたキーワードを処理対象キーワードとして抽出して、処理対象キーワード記憶部２６５に格納する（Ｓ３３０）。
【００２８】
次に、キーワード付加部２８０は、名前付規則記憶部２７０に記憶された名前付規則に基づいて、処理対象キーワード記憶部２６５に格納された処理対象キーワードのうち、部品・部品集合体リスト記憶部２３０に格納された部品／部品集合体のリストに含まれるそれぞれの部品／部品集合体の実装名にマッチするキーワードを付して、キーワード付部品／部品集合体を生成する（Ｓ３４０）。キーワード付加部２８０は、生成したキーワード付部品／部品集合体をキーワード付部品・部品集合体記憶部１３０へと格納する。
【００２９】
次に、特定部１６０は、キーワード付要求記憶部１５０に格納されたキーワード付要求文、および、キーワード付部品・部品集合体記憶部１３０に格納されたキーワード付部品／部品集合体のキーワード同士をマッチングする。特定部１６０は、マッチングされたキーワードを付された要求文および部品／部品集合体を関連付けて関連付記憶部１７０に格納する（Ｓ３５０）。そして、表示部１８０は、関連付記憶部１７０に格納された、要求文と部品／部品集合体との関連付けを、ユーザに対して表示する（Ｓ３６０）。
【００３０】
以上に示した開発支援装置１０によれば、ソフトウェアの実装について自然言語によって記述された要求文を入力して、ソフトウェアのソースコードから部品等を抽出してキーワードを付すと共に、要求文からキーワードを抽出して要求文に付す。そして、開発支援装置１０は、要求文および部品等に付されたキーワード同士をマッチングして要求文および部品等の関連性を求めることにより、要求文を反映させるべき部品等を特定することができる。これにより、ソフトウェアの開発者は、ソフトウェアのソースコードの他に、自然言語で要求文を記述すれば、開発支援装置１０を用いて、ソフトウェアのソースコードに基づいて当該要求文を反映すべき可能性がある部品等を知ることができる。したがって、ソフトウェアの開発者は、ソフトウェアに対する各種の要求文に応じた実装の変更箇所を、人手で探さなくてもよくなるので、開発効率を高めることができる。
【００３１】
図４は、図３のＳ３００の処理フローを示す。まず、ソース解析部２２０は、実装シンタクス記憶部２００に記憶された実装シンタクスを用いて、実装記憶部１００に記憶されたソースコードから中間データを抽出する（Ｓ４００）。ここで、ソース解析部２２０は、ソースコードから部品／部品集合体の実装名等が記述された箇所を含む部分を抽出して、中間データとする。
【００３２】
実装記憶部１００に格納されるソフトウェアのソースコード（一部）の一例を図５に示す。本ソースコードは、ＢＡＰ画面ファイルの一つであるＢｉｌｌＭａｉｎ．ｘｍｌである。実装シンタクス記憶部２００は、ソフトウェアの実装シンタクスの一例として、ソースコード中における、部品の実装名が含まれる行に含まれる文字列"＜Ｃｔｒｌ"（画面上に表示する入出力フィールド等の部品を定義する記述）を記憶する。
【００３３】
ソース解析部２２０は、ソースコード中の各行のうち、実装シンタクス記憶部２００に記憶された文字列"＜Ｃｔｒｌ"を含む行を抽出して、中間データとしてよい。これに代えて、実装シンタクス記憶部２００は、実装シンタクスの一例として、文字列"＜Ｃｔｒｌ"および"ｎａｍｅ＝"（画面上に表示する入出力フィールド等の部品の名前を定義する記述）を記憶してもよい。この場合、ソース解析部２２０は、ソースコード中の各行のうち、文字列"＜Ｃｔｒｌ"および"ｎａｍｅ＝"を含む行を抽出して、中間データとしてよい。
【００３４】
次に、ソース解析部２２０は、部品仕様記憶部２０５に記憶された部品仕様に基づいて、中間データから、部品情報を抽出する（図４のＳ４１０）。ここで、ソース解析部２２０は、中間データの中から、部品／部品集合体の実装名およびクラス名が記述された箇所を抽出する。本実施形態において、部品仕様記憶部２０５は、一例として、"＜Ｃｔｒｌ"により定義される部品のクラス名を指定する記述である"ｐａｒｔｓ＝"を記憶する。ソース解析部２２０は、中間データのうち、部品仕様記憶部２０５に記憶された"ｐａｒｔｓ＝"を含む行を抽出して、部品情報が記述された行を取得する。
【００３５】
次に、ソース解析部２２０は、Ｓ４１０において抽出した部品情報の記述から、部品の実装名を抽出する（Ｓ４２０）。例えば、ソース解析部２２０は、Ｓ４１０において抽出される「＜Ｃｔｒｌ ｎａｍｅ＝"ＫＩＮＧＡＫＵ"  ｘ＝"１００"  ｙ＝"０"  ｗ＝"１５０"  ｈ＝"２０"  ｐａｒｔｓ＝"ＯｕｔＫｉｎｇａｋｕ"／＞」という部品情報から、部品の実装名を定義する記述である「ｎａｍｅ＝"ＫＩＮＧＡＫＵ"」から部品の実装名"ＫＩＮＧＡＫＵ"を抽出して、部品のクラス名を定義する記述である「ｐａｒｔｓ＝"ＯｕｔＫｉｎｇａｋｕ"」から部品のクラス名"ＯｕｔＫｉｎｇａｋｕ"を抽出する。ここで、部品のクラスは、オブジェクト指向言語上のクラスに対応するものであり、当該クラスのインスタンスである部品が有する変数およびメソッドの定義を含む。
【００３６】
また、本実施形態においては、部品集合体毎に別個のファイルで記述されているので、ソース解析部２２０は、部品集合体の実装名として、当該部品集合体のソースコードのファイル名である"ＢｉｌｌＭａｉｎ"等を抽出する。ここで、ソース解析部２２０は、部品集合体の実装名を、部品集合体の拡張子を除いたファイル名とするのに代えて、拡張子を含むファイル名、ファイル内での定義に基づく名前等としてもよい。
【００３７】
Ｓ４２０の処理により、ソース解析部２２０は、図５に示した部品集合体"ＢｉｌｌＭａｉｎ"のソースコードから、図６に示した部品リストを生成する。この部品リストは、ソフトウェアが有する各ソースコード中に含まれる各部品について、部品集合体の実装名、部品の実装名、および部品のクラス名を対応付けたものであり、一例として「"部品集合体の実装名"．"部品の実装名"，"部品のクラス名"」の形式をとる。
【００３８】
次に、ソース解析部２２０は、Ｓ４２０において生成した部品リストに含まれる各部品および部品集合体の実装名に対応する設計名を、設計情報記憶部２１０に記憶された設計情報に基づいて抽出する（図４のＳ４３０）。本実施形態において、設計情報記憶部２１０は、図７に示したように、設計情報として、少なくとも１つの部品または部品集合体について、実装名と設計名とを対応付けて記憶する。ソース解析部２２０は、Ｓ４２０において生成した部品リストに含まれる実装名と、設計情報記憶部２１０に記憶された設計情報中の実装名とを照合して、実装名同士がマッチした場合に部品リストに含まれる実装名に設計情報中の対応する設計名を割り当てる。例えば、図６の部品リスト中における部品集合体の実装名"ＢｉｌｌＭａｉｎ"は、部品リスト中の"ＢｉｌｌＭａｉｎ，請求書メイン画面"の実装名とマッチするので、"ＢｉｌｌＭａｉｎ"に対して設計名"請求書メイン画面"が対応付けられる。ここで、ソース解析部２２０は、実装名同士を、完全一致に限らず、部分一致、またはワイルドカード等を用いた比較等によってマッチングしてもよい。
【００３９】
以上に示した処理により、本実施形態に係るソース解析部２２０は、ソースコードを解析して、ソフトウエアが表示すべき画面に対応する部品集合体と、当該画面内に表示される部品に対応する部品の実装名および設計名と、当該部品をインスタンス化する元となったクラス名とを対応付けて出力することができる。具体的には、ソース解析部２２０は、図８に示したように、各部品について、部品集合体の実装名および設計名、部品の実装名および設計名、クラス名を、一例として「"部品集合体の実装名"．"部品の実装名"，"部品集合体の設計名"．"部品の設計名"，"部品の元となったクラス名"」の形式で各行に記述した部品・部品集合体リストを生成して、部品・部品集合体リスト記憶部２３０に格納する。
【００４０】
本実施形態に係るソース解析部２２０によれば、ソースコードを解析して部品／部品集合体の実装名を抽出して、プログラム言語により定められる実装シンタクス、および、ソフトウェア開発プロジェクトにおいて定められている部品仕様、並びに設計名および実装名の命名ルール等を含む設計情報に基づいて、抽出した実装名に対する設計名を特定することができる。なお、ソース解析部２２０は、実装シンタクス記憶部２００、部品仕様記憶部２０５、および設計情報記憶部２１０を用いてソースコードから必要な情報を収集するのに代えて、ソースコードを構文解析して部品／部品集合体の実装名を抽出してもよい。
【００４１】
図９は、図３のＳ３１０の処理フローを示す。まず、辞書生成部２５０は、部品・部品集合体リスト記憶部２３０に記憶された部品・部品集合体リストの中から、共起クラス記憶部２４５に記憶された共起する２以上のクラスに対応する２以上の部品を抽出する（Ｓ９００）。本実施形態に係る共起クラス記憶部２４５は、図１０に一例を示したように、共起する２以上のクラス（図１０においては共起する２つのクラス）の組を各行に記述したテーブルまたはファイル等を格納している。例えば、「ＳｔａｔｉｃＬａｂｅｌ，Ｉｎ＊」は、ＳｔａｔｉｃＬａｂｅｌというクラス名を有するクラスと、Ｉｎ＊というクラス、すなわちＩｎで始まり、ワイルドカード＊に対応する０文字以上の任意の文字列を有するクラス名を有するクラスとが共起しうることを示す。この例は、入力欄に関する処理を行うクラス"Ｉｎ＊"と、その入力欄に付けられて入力欄と共に表示されるべき項目名、ラベル、および説明等に関する処理を行うクラス"ＳｔａｔｉｃＬａｂｅｌ"とが、共起する関係にあることを示す。
【００４２】
ここで、「共起する」とは、例えば入力欄と入力欄に対応して表示されるラベル等のように、異なるクラスで実現される２以上の部品が、互いに関係があるものとして予め指定された２以上のクラスのインスタンスであることを示す。図１０においては、他の例として、項目名、ラベル、および説明等を表示する部品とソフトウェアを実行して生成されたデータ等を出力するための部品、項目名、ラベル、および説明等を表示する部品と複数の選択肢の中から少なくとも１つの選択肢を選択するための入力を受け付ける部品、チェックボックスの入力を受け付ける部品と当該チェックボックスに関する説明を表示する部品、並びに、ラジオボタンの入力を受け付ける部品と当該ラジオボックスに関する説明を表示する部品等が挙げられる。
【００４３】
本実施形態において、ソース解析部２２０は、部品集合体に含まれる２以上の部品の記述がソースコード内において隣接していると、これらの部品が連続するように部品・部品集合体リストに書き込む。そこで、辞書生成部２５０は、２以上の部品が部品・部品集合体リスト中において連続することを更に条件として、これらの２以上の部品に対応する２以上のクラスが共起するクラスとして共起クラス記憶部２４５に記憶されている場合に、これら２以上の部品を共起する部品として抽出する。
【００４４】
例えば、図８の部品・部品集合体リストにおいて隣接する２つの部品"ＢｉｌｌＭａｉｎ．ＨＡＳＳＥＩＢＩ"および"ＢｉｌｌＭａｉｎ．Ｐ１−ＨＩＤＵＫＥ"は、対応する２つのクラス"ＳｔａｔｉｃＬａｂｅｌ"および"ＩｎＤａｔｅ"が、図１０のリスト中「ＳｔａｔｉｃＬａｂｅｌ，Ｉｎ＊」として共起クラス記憶部２４５に記憶されている。したがって、辞書生成部２５０は、これらの２つの部品を、共起する部品として抽出する。これにより、辞書生成部２５０は、ソースコード内において隣接して記述される可能性が高い関連性がある部品同士を、共起する可能性があるクラスとして定義されていることを条件として、共起する部品として抽出することができる。
【００４５】
次に、辞書生成部２５０は、ソース解析部２２０が抽出した部品の実装名に含まれる文字列に対応付けられているキーワードをキーワード記憶部２４０から検索することにより、部品の実装名をキーワードに変換する（Ｓ９１０）。辞書生成部２５０は、共起する２以上の部品の実装名をそれぞれキーワードに変換してもよい。ここで、キーワード記憶部２４０は、図１１に示すように、部品の実装名と、当該実装名に対応するキーワードとを１または複数組記憶する。辞書生成部２５０は、例えば実装名に文字列"ｈｉｄｕｋｅ"を含む部品、すなわち例えば実装名が"Ｐ１−ＨＩＤＵＫＥ"である部品等に対して、キーワード"日付"を付加する。なお、辞書生成部２５０は、部品の実装名を、完全一致、部分一致、および、ワイルドカード等を用いた正規表現の一致等の各種の方法によりキーワード記憶部２４０に格納された文字列とマッチングしてもよい。
【００４６】
次に、辞書生成部２５０は、検索したキーワードをキーワード辞書に登録することにより、キーワード辞書を生成する（Ｓ９２０）。ここで、一の部品集合体に含まれる２以上の部品に対応付けられた２以上のクラス名が対応付けられて共起クラス記憶部２４５に記憶されている場合に、辞書生成部２５０は、当該２以上の部品のそれぞれの実装名に含まれる文字列に対応付けられているキーワードをキーワード記憶部２４０から検索する。そして、辞書生成部２５０は、検索したキーワードを結合してキーワード辞書に登録する。例えば、辞書生成部２５０は、共起する部品として実装名を抽出した"ＢｉｌｌＭａｉｎ．ＨＡＳＳＥＩＢＩ"および"ＢｉｌｌＭａｉｎ．Ｐ１−ＨＩＤＵＫＥ"と、図１１に示した各キーワードに対応する実装名とをマッチングする。次に、辞書生成部２５０は、ＨＡＳＳＥＩＢＩにキーワード"発生"を、Ｐ１−ＨＩＤＵＫＥにキーワード"日付"を対応付ける。そして、これらのキーワードを結合して、キーワード"発生−日付"としてキーワード辞書に登録する。
【００４７】
本実施形態に係る辞書生成部２５０によれば、部品の実装名を、予めキーワード記憶部２４０に格納された実装名とキーワードとの対応に基づいてキーワードに変換して、キーワード辞書を生成することができる。また、辞書生成部２５０は、共起する部品については、共起する部品のそれぞれに対応するキーワードを結合したキーワードをキーワード辞書に登録することができる。
【００４８】
図１２は、図３のＳ３２０の動作フローを示す。まず、キーワード付要求生成部１４０は、要求記憶部１１０に格納されたそれぞれの要求文を形態素解析して、キーワードとなりうる種類の形態素を抽出する（Ｓ１２００）。本実施形態に係るキーワード付要求生成部１４０は、一例として、要求文から名詞を抽出する。これに代えて、キーワード付要求生成部１４０は、予め定められた異なる種類または複数種類の形態素を要求文から抽出してもよい。
【００４９】
ここで、要求記憶部１１０は、一例として、図１３に示すように、開発者から自然言語によって入力された複数の要求文を要求文の識別子（ｉｄ）に対応付けて記憶する。キーワード付要求生成部１４０は、例えば、要求文が「交通費清算する事象の発生日が６ヶ月以上前のとき、金額入力欄の背景を赤色にする。」である場合、"交通"、"費"、"清算"、"事象"、"発生"、"日"、"月"、"以上"、"前"、"金額"、"入力"、"欄"、"背景"、および"赤色"の各語を抽出する。
【００５０】
次に、キーワード付要求生成部１４０は、シソーラス辞書記憶部１４５に記憶されたシソーラス辞書に基づいて、対応する代表語が存在する語を代表語に変換する（Ｓ１２１０）。一例として、シソーラス辞書記憶部１４５は、「請求：要求，精算，清算」、「金額：お金，額，料金，値段，価格」、「日付：日」といったように、コロンの後に記述された"要求"、"精算"、"清算"といった各語が、コロンの前の代表語に対応付けられていることを示すシソーラス辞書を記憶する。キーワード付要求生成部１４０は、Ｓ１２００において抽出した名詞がシソーラス辞書に記述されている語とマッチする場合に、その名詞を代表語に置き換える。先の例では、キーワード付要求生成部１４０は、"交通"、"費"、"清算"、"事象"、"発生"、"日"、"月"、"以上"、"前"、"金額"、"入力"、"欄"、"背景"、および"赤色"の各語を、"交通"、"費"、"請求"、"事象"、"発生"、"日付"、"月"、"以上"、"前"、"金額"、"入力"、"欄"、"背景"、および"赤色"の各語に変換する。
【００５１】
次に、キーワード付要求生成部１４０は、キーワード辞書記憶部２５５に記憶されたキーワード辞書中の各キーワードについてＳ１２３０からＳ１２６０までを繰り返すループ処理を行う（Ｓ１２２０，Ｓ１２７０）。ループ処理において、まず、キーワード付要求生成部１４０は、処理対象のキーワードが要求文から抽出した語にマッチするか否かを判断する（Ｓ１２３０）。ここで、要求文から抽出した語は、代表語に変換済みのものであってもよい。また、共起する２以上の部品のそれぞれから少なくとも１つずつ抽出した２以上のキーワードが結合されたキーワード（以下「結合キーワード」と示す。）については、キーワード付要求生成部１４０は、当該結合キーワードに含まれる２以上のキーワードのうち、要求文に含まれる語にマッチするキーワードの数を算出する。
【００５２】
次に、キーワード付要求生成部１４０は、処理対象のキーワードが要求文に含まれる語にマッチしたか否かに基づいて一致度を算出する（Ｓ１２４０）。キーワード付要求生成部１４０は、処理対象の結合キーワードについては、要求文に含まれる語にマッチするキーワードの数に基づいて一致度を算出する。ここで、キーワード辞書記憶部２５５が、単独のキーワードおよび結合キーワードの両方をキーワードとして含む場合、キーワード付要求生成部１４０は、単独キーワードが要求文に含まれる語にマッチした場合には１語がマッチしたとして一致度を算出してもよい。キーワード付要求生成部１４０は、一致度としてマッチした語の数を用いてもよく、単独キーワードまたは結合キーワードに含まれるキーワードのうちマッチしたキーワードの個数に基づいて一致度を算出してもよい。すなわち例えば、キーワード付要求生成部１４０は、単独キーワードが要求文に含まれる語にマッチした場合には１００％マッチしたとして一致度を算出して、Ｎ語の結合キーワードのうちＭ語が要求文に含まれる語にマッチした場合には、Ｍ／Ｎ×１００（％）マッチしたとして一致度を算出してもよい。
【００５３】
次に、キーワード付要求生成部１４０は、一致度が予め定められた基準値以上であることを条件として（Ｓ１２５０）、要求に処理対象の単独キーワードまたは結合キーワードと一致度とを付してキーワード付要求生成部１４０へと格納する（Ｓ１２６０）。この基準値は、開発支援装置１０の仕様により定められた固定値であってよく、これに代えて開発支援装置１０のユーザまたはソフトウェアの開発者により設定される可変値であってもよい。また、一致度としてマッチした語の数を用いる場合、キーワード付要求生成部１４０は、基準値として例えば１を用いてもよい。これにより、キーワード付要求生成部１４０は、図１３中の要求文「交通費清算する事象の発生日が６ヶ月以上前のとき、金額入力欄の背景を赤色にする。」に、一致度２のキーワード「発生−日付」および「請求−金額」を付して、図１４に示したキーワード付要求文を生成する。
【００５４】
キーワード付要求生成部１４０は、以上に示したＳ１２３０からＳ１２６０の処理をキーワード辞書中の各キーワードについて繰り返す（Ｓ１２７０）。以上に示した処理により、キーワード付要求生成部１４０は、自然言語で記述された各要求文に対してキーワード辞書記憶部２５５内のキーワード辞書に登録されたキーワードの中から選択されたキーワードを付すことができる。なお、開発支援装置１０は、ユーザまたはソフトウェアの開発者から人手でキーワードが入力されたことに応じてキーワード辞書記憶部２５５に入力されたキーワードを別途登録してもよい。また、開発支援装置１０は、ユーザまたはソフトウェアの開発者から人手で要求文に対して付加すべきキーワードが入力された場合には、当該キーワードを当該要求文に付して、キーワード付要求文として要求記憶部１１０及び／又はキーワード付要求記憶部１５０に格納してもよい。
【００５５】
図１５は、図３のＳ３４０の動作フローを示す。まず、キーワード付加部２８０は、処理対象キーワード記憶部２６５から処理対象となるキーワードを読み込む（Ｓ１５００）。次に、キーワード付加部２８０は、部品・部品集合体リスト内の各部品・部品集合体について、Ｓ１５２０からＳ１５５０までの処理を繰り返すループ処理を行う（Ｓ１５１０，Ｓ１５６０）。
【００５６】
ループ処理において、まず、キーワード付加部２８０は、処理対象の部品・部品集合体の実装名とマッチする名前付規則を名前付規則記憶部２７０から検索する（Ｓ１５２０）。ここで、名前付規則記憶部２７０は、図１６に示すように、キーワードと、当該キーワードを付すべき部品・部品集合体の実装名を対応付けた名前付規則を少なくとも１つ格納する。一例として、「日付，ｎ，＊ＨＩＤＵＫＥ」の第２カラムの"ｎ"は、第３カラム目の実装名が正規表現で表されていることを示すタグである。したがって、キーワード付加部２８０は、部品・部品集合体の実装名が０文字以上の任意の文字列の末尾に"ＨＩＤＵＫＥ"を加えた文字列である場合に、当該部品・部品集合体に、当該名前付規則をマッチさせる。また、名前付規則記憶部２７０は、第３カラム目の実装名として、部品・部品集合体の実装名と完全一致または部分一致すべき文字列を格納すると共に、第２カラムにマッチング方法を示すタグを格納してもよい。
【００５７】
次に、キーワード付加部２８０は、ソースコードから抽出した部品集合体に含まれる部品の実装名とマッチする名前付規則を名前付規則記憶部２７０内から検索したことに応じて（Ｓ１５３０：Ｙｅｓ）、当該部品および当該部品集合体に、マッチした名前付規則に対応付けられたキーワードを付す（Ｓ１５４０）。具体的には、キーワード付加部２８０は、部品集合体に含まれる部品の実装名とマッチする名前付規則を名前付規則記憶部２７０内から検索したことに応じて、当該部品および当該部品集合体の設計名に、マッチした名前付規則に対応付けられたキーワードを付して、キーワード付部品名およびキーワード付部品集合体名を生成する。
【００５８】
次に、キーワード付加部２８０は、キーワード付部品名およびキーワード付部品集合体名をキーワード付部品・部品集合体記憶部１３０に格納する（Ｓ１５５０）。キーワード付加部２８０は、以上に示したＳ１５２０からＳ１５５０の処理を繰り返すことにより、部品／部品集合体の設計名および当該部品／部品集合体に対応付けたキーワードの組を少なくとも１つ含むキーワード付部品リスト（図１７Ａ参照）およびキーワード付部品集合体リスト（図１７Ｂ参照）を生成する。
【００５９】
以上に示したように、キーワード付加部２８０によれば、部品・部品集合体リスト記憶部２３０に格納された部品・部品集合体リスト内の各部品／部品集合体の実装名と、名前付規則記憶部２７０に格納された当該ソフトウェアの開発プロジェクトにより定められた実装名の名前付規則とに基づいて、各部品／部品集合体の処理内容に合ったキーワードを付すことができる。
【００６０】
なお、以上において、キーワード付加部２８０は、辞書生成部２５０と同様にして、部品・部品集合体リスト記憶部２３０中の連続する２以上の部品が、名前付規則記憶部２７０内の連続する２以上の名前付規則とそれぞれマッチする場合に、これらの各部品および各部品を含む部品集合体に、マッチした２以上の名前付規則により定められた各キーワードを付してもよい。例えば、キーワード付加部２８０は、名前付規則記憶部２７０が「発生，ｎ，ｈａｓｓｅｉｂｉ」および「日付，ｎ，＊ＨＩＤＵＫＥ」を連続して含む場合に、図８に示した部品・部品集合体リスト中の連続する「ＢｉｌｌＭａｉｎ．ＨＡＳＳＥＩＢＩ」および「ＢｉｌｌＭａｉｎ．Ｐ１−ＨＩＤＵＫＥ」とマッチングしてもよい。そして、キーワード付加部２８０は、キーワード付部品として、「請求書メイン画面．発生日付フィールド，発生−日付」および「請求書メイン画面．請求日付入力フィールド，発生−日付」を生成して、キーワード付部品集合体として、「請求書メイン画面，発生−日付」を生成してもよい。
【００６１】
図１８は、図３のＳ３５０およびＳ３６０の動作フローを示す。まず、特定部１６０は、キーワード付要求記憶部１５０に格納された各キーワード付要求文と、キーワード付部品・部品集合体記憶部１３０に格納された各キーワード付部品・部品集合体とのキーワード同士をマッチングする（Ｓ１８００）。特定部１６０は、要求文に付されたキーワードおよび部品／部品集合体に付されたキーワードがマッチしたことに応じて、当該要求文と当該部品／部品集合体とを関連付ける。これにより、特定部１６０は、当該要求を当該部品／部品集合体に反映させるべきことを特定する。本実施形態において、特定部１６０は、図１７Ａおよび図１７Ｂに示したように、要求に付されたキーワードおよび部品／部品集合体の設計名に付されたキーワードがマッチしたことに応じて、当該要求を反映させるべき部品／部品集合体の設計名を特定してよい。
【００６２】
次に、特定部１６０は、要求文および部品／部品集合体の関連付けを関連付記憶部１７０に格納する。本実施形態において、特定部１６０は、図１９に示したように、１行目に各部品集合体の設計名を配列して、１列目に各要求文を配列する。そして、特定部１６０は、Ｓ１８２０において関連付けた要求文および部品集合体について、当該要求文が配置された行における当該部品集合体が配置された列に、関連付けを示すマークを記述した表を生成して、関連付記憶部１７０に格納する。このマークは、"＊"等の特定の文字または文字列であってよい。また、特定部１６０は、要求文に付したキーワードの一致度に応じて、一致度の大小がユーザ等にとって識別可能となるように異なるマークを用いてもよい。
【００６３】
次に、表示部１８０は、関連付記憶部１７０に格納された表を、ユーザまたはソフトウェアの開発者の指示に応じて表示装置または当該ユーザ等の端末に表示する（Ｓ１８４０）。表示部１８０は、一例として図２０に示した表を表示してよい。
【００６４】
以上に示したように、本実施形態に係る特定部１６０および表示部１８０によれば、キーワード付要求文およびキーワード付部品集合体のキーワード同士をマッチングして、各要求文に関連付けられたキーワード付部品集合体を分かりやすく表示することができる。なお、特定部１６０および表示部１８０は、要求文と部品集合体との関連付けに代えて、または、要求文と部品集合体との関連付けに加えて、要求文と部品との関連付けを生成して、表示してもよい。
【００６５】
図２１は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。図２１は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００６６】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作して、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得して、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００６７】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００６８】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００６９】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００７０】
コンピュータ１９００にインストールされ、コンピュータ１９００を開発支援装置１０として機能させるプログラムは、実装記憶部１００を管理する実装記憶管理モジュールと、要求記憶部１１０を管理する要求記憶管理モジュールと、キーワード付部品・部品集合体名生成モジュールと、キーワード付部品・部品集合体記憶部１３０を管理するキーワード付部品・部品集合体記憶管理モジュールと、キーワード付要求生成モジュールと、シソーラス辞書記憶部１４５を管理するシソーラス辞書記憶管理モジュールと、キーワード付要求記憶部１５０を管理するキーワード付要求記憶管理モジュールと、特定モジュールと、関連付記憶部１７０を管理する関連付記憶モジュールと、表示モジュールとを備える。また、キーワード付部品・部品集合体名生成モジュールは、実装シンタクス記憶部２００を管理する実装シンタクス記憶管理モジュールと、部品仕様記憶部２０５を管理する部品仕様記憶管理モジュールと、設計情報記憶部２１０を管理する設計情報記憶管理モジュールと、ソース解析モジュールと、部品・部品集合体リスト記憶部２３０を管理する部品・部品集合体リスト記憶管理モジュールと、キーワード記憶部２４０を管理するキーワード記憶管理モジュールと、共起クラス記憶部２４５を管理する共起クラス記憶管理モジュールと、辞書生成モジュールと、キーワード辞書記憶部２５５を管理するキーワード辞書記憶管理モジュールと、キーワード抽出モジュールと、処理対象キーワード記憶部２６５を管理する処理対象キーワード記憶管理モジュールと、名前付規則記憶モジュールと、キーワード付加モジュールとを有する。
【００７１】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である、実装記憶部１００と、要求記憶部１１０と、キーワード付部品・部品集合体名生成部１２０と、キーワード付部品・部品集合体記憶部１３０と、キーワード付要求生成部１４０と、シソーラス辞書記憶部１４５と、キーワード付要求記憶部１５０と、特定部１６０と、関連付記憶部１７０と、表示部１８０として機能する。ここで、キーワード付部品・部品集合体名生成部１２０は、実装シンタクス記憶部２００と、部品仕様記憶部２０５と、設計情報記憶部２１０と、ソース解析部２２０と、部品・部品集合体リスト記憶部２３０と、キーワード記憶部２４０と、共起クラス記憶部２４５と、辞書生成部２５０と、キーワード辞書記憶部２５５と、キーワード抽出部２６０と、処理対象キーワード記憶部２６５と、名前付規則記憶部２７０と、キーワード付加部２８０との機能を有する。
【００７２】
そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の開発支援装置１０が構築される。
【００７３】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行して、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信して、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出して、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００７４】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持して、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００７５】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断して、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐して、またはサブルーチンを呼び出す。
【００７６】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索して、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【００７７】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用して、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００７８】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施形態に係る開発支援装置１０の構成を示す。
【図２】本発明の実施形態に係るキーワード付部品・部品集合体名生成部１２０の構成を示す。
【図３】本発明の実施形態に係る開発支援装置１０の処理フローを示す。
【図４】図３のＳ３００の処理フローを示す。
【図５】本発明の実施形態に係る実装記憶部１００に格納されたソースコードの一例を示す。
【図６】図５のソースコードを解析した結果の一例を示す。
【図７】本発明の実施形態に係る設計情報記憶部２１０に格納された設計情報の一例を示す。
【図８】本発明の実施形態に係る部品・部品集合体リスト記憶部２３０に格納される部品・部品集合体リストの一例を示す。
【図９】図３のＳ３１０の処理フローを示す。
【図１０】本発明の実施形態に係る共起クラス記憶部２４５に格納された共起するクラスの一例を示す。
【図１１】本発明の実施形態に係るキーワード記憶部２４０に格納されたキーワードの一例を示す。
【図１２】図３のＳ３２０の動作フローを示す。
【図１３】本発明の実施形態に係る要求記憶部１１０に格納された要求文の一例を示す。
【図１４】本発明の実施形態に係るキーワード付要求記憶部１５０に格納されるキーワード付要求文の一例を示す。
【図１５】図３のＳ３４０の動作フローを示す。
【図１６】本発明の実施形態に係る名前付規則記憶部２７０に格納される名前付規則の一例を示す。
【図１７Ａ】本発明の実施形態に係るキーワード付部品・部品集合体記憶部１３０に格納される、キーワード付部品の一例を示す。
【図１７Ｂ】本発明の実施形態に係るキーワード付部品・部品集合体記憶部１３０に格納される、キーワード付部品集合体の一例を示す。
【図１８】図３のＳ３５０およびＳ３６０の動作フローを示す。
【図１９】本発明の実施形態に係る関連付記憶部１７０に格納される関連付けの一例を示す。
【図２０】表示部１８０が表示する関連付けの一例を示す。
【図２１】本発明の実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。
【符号の説明】
【００８０】
１０  開発支援装置
１００  実装記憶部
１１０  要求記憶部
１２０  キーワード付部品・部品集合体名生成部
１３０  キーワード付部品・部品集合体記憶部
１４０  キーワード付要求生成部
１４５  シソーラス辞書記憶部
１５０  キーワード付要求記憶部
１６０  特定部
１７０  関連付記憶部
１８０  表示部
２００  実装シンタクス記憶部
２０５  部品仕様記憶部
２１０  設計情報記憶部
２２０  ソース解析部
２３０  部品・部品集合体リスト記憶部
２４０  キーワード記憶部
２４５  共起クラス記憶部
２５０  辞書生成部
２５５  キーワード辞書記憶部
２６０  キーワード抽出部
２６５  処理対象キーワード記憶部
２７０  名前付規則記憶部
２８０  キーワード付加部
１９００  コンピュータ
２０００  ＣＰＵ
２０１０  ＲＯＭ
２０２０  ＲＡＭ
２０３０  通信インターフェイス
２０４０  ハードディスクドライブ
２０５０  フレキシブルディスク・ドライブ
２０６０  ＣＤ−ＲＯＭドライブ
２０７０  入出力チップ
２０７５  グラフィック・コントローラ
２０８０  表示装置
２０８２  ホスト・コントローラ
２０８４  入出力コントローラ
２０９０  フレキシブルディスク
２０９５  ＣＤ−ＲＯＭ
【図１】
2010003104.tif 000003
【図２】
2010003104.tif 000004
【図３】
2010003104.tif 000005
【図４】
2010003104.tif 000006
【図５】
2010003104.tif 000007
【図６】
2010003104.tif 000008
【図７】
2010003104.tif 000009
【図８】
2010003104.tif 000010
【図９】
2010003104.tif 000011
【図１０】
2010003104.tif 000012
【図１１】
2010003104.tif 000013
【図１２】
2010003104.tif 000014
【図１３】
2010003104.tif 000015
【図１４】
2010003104.tif 000016
【図１５】
2010003104.tif 000017
【図１６】
2010003104.tif 000018
【図１７Ａ】
2010003104.tif 000019
【図１７Ｂ】
2010003104.tif 000020
【図１８】
2010003104.tif 000021
【図１９】
2010003104.tif 000022
【図２０】
2010003104.tif 000023
【図２１】
2010003104.tif 000024