(57)【要約】【課題】データの選択条件と値を明確に示すことが可能なトレーサビリティ情報抽出装置を提供する。【解決手段】トレーサビリティ情報抽出装置２０は、オブジェクトリスト３０６を生成するオブジェクトリスト生成部３０、機能項目リスト１０２とオブジェクトリスト３０６とから機能Ｓ／Ｗマトリクス５０１ａを生成する機能Ｓ／Ｗマトリクス生成部５０１、機能仕様書のうち、機能Ｓ／Ｗマトリクス５０１ａの機能項目リストから選択された機能と対応する第１の記述部分と、プロセス仕様書４１０のうち、機能Ｓ／Ｗマトリクス５０１ａのオブジェクトリストから選択された処理単位と対応する関数または出力情報を含む第２の記述部分とを関連付ける選択検知部５０２、第１の記述部分と第２の記述部分を表示装置６４０に表示する表示処理仕様書表示部５０３、表示された第１の記述部分と第２の記述部分への編集操作を受け付ける編集部５０４を備える。【選択図】図１
2019040432.tif 000002
【特許請求の範囲】
【請求項１】
設計対象を実行するソフトウェアのソースコード上の出力情報と、前記出力情報を含む関数とを対応付けて抽出し、前記設計対象が有する複数の機能のうち少なくとも１つの機能を処理する処理単位の一覧である第１の一覧を生成する第１の一覧生成部と、
前記設計対象が有する複数の機能の一覧である機能項目リストと、前記第１の一覧とから成る機能マトリクスを生成するマトリクス生成部と、
前記設計対象の機能を記述するための第１の仕様書の記述うち、前記機能マトリクスの前記機能項目リストから選択された機能と対応する第１の記述部分と、前記ソースコード上の関数及び出力情報の処理を記述した第２の仕様書の記述うち、前記機能マトリクスの前記第１の一覧から選択された処理単位と対応する関数と出力情報との少なくともいずれかを含む第２の記述部分とを関連付けるトレース管理部と、
前記トレース管理部が関連付けた前記第１の記述部分と前記第２の記述部分とを表示装置に表示する表示処理部と、
前記表示装置に表示された前記第１の記述部分と前記第２の記述部分とに対する編集操作を受け付ける編集部と
を備えたトレーサビリティ管理装置。
【請求項２】
前記ソースコード上の出力情報、前記出力情報の処理を分岐する分岐条件の入力情報を伴う判定記述、前記入力情報を伴う判定記述により分岐した条件分岐の各々の分岐における前記出力情報の処理記述、及び、前記出力情報の処理記述を含む関数、を対応付けて抽出した一覧である第２の一覧を生成する第２の一覧生成部と、
前記第２の一覧に基づき、前記入力情報、前記出力情報、及び、前記入力情報の判定記述と前記出力情報の処理記述との対応記述、を対応させることにより、前記第２の仕様書を生成する仕様書生成部と
を備えた請求項１に記載のトレーサビリティ管理装置。
【請求項３】
コンピュータに、
設計対象を実行するソフトウェアのソースコード上の出力情報と、前記出力情報を含む関数とを対応付けて抽出し、前記設計対象が有する複数の機能のうち少なくとも１つの機能を処理する処理単位の一覧である第１の一覧を生成する処理と、
前記設計対象が有する複数の機能の一覧である機能項目リストと、前記第１の一覧とから成る機能マトリクスを生成する処理と、
前記設計対象の機能を記述するための第１の仕様書の記述うち、前記機能マトリクスの前記機能項目リストから選択された機能と対応する第１の記述部分と、前記ソースコード上の関数及び出力情報の処理を記述した第２の仕様書の記述うち、前記機能マトリクスの前記第１の一覧から選択された処理単位と対応する関数と出力情報との少なくともいずれかを含む第２の記述部分とを関連付ける処理と、
関連付けた前記第１の記述部分と前記第２の記述部分とを表示装置に表示する処理と、
前記表示装置に表示された前記第１の記述部分と前記第２の記述部分とに対する編集操作を受け付ける処理と
を実行させるトレーサビリティ管理プログラム。
【請求項４】
コンピュータに、
前記ソースコード上の出力情報、前記出力情報の処理を分岐する分岐条件の入力情報を伴う判定記述、前記入力情報を伴う判定記述により分岐した条件分岐の各々の分岐における前記出力情報の処理記述、及び、前記出力情報の処理記述を含む関数、を対応付けて抽出した一覧である第２の一覧を生成する処理と、
前記第２の一覧に基づき、前記入力情報、前記出力情報、及び、前記入力情報の判定記述と前記出力情報の処理記述との対応記述、を対応させることにより、前記第２の仕様書を生成する処理と
を実行させる請求項３に記載のトレーサビリティ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレーサビリティ情報抽出装置及びトレーサビリティ情報抽出プログラムに関する。
【背景技術】
【０００２】
既に作成済みの仕様書やソースコード等の既存成果物から仕様を明確にするためのリバースエンジニアリングという手法が行われることがある。
【０００３】
その中で、ソースコードからプロセス仕様書を作成する。プロセス仕様書とは、関数の入出力と処理を記載した仕様書である。関数の処理には、条件文を記述する条件記述や、処理文を記述する処理記述を記述する。
ところで、従来のソースコードを入力とした仕様書生成技術（特開平０７−２１９７５８号公報）では、処理のうちデータの流れを追いやすくするため、ソースコード中の各処理に対し、項番と標題を与えることで仕様書生成が実現できるとしていた。
この特許文献１の技術によれば、ソースコードとソースコードから生成されるプロセス仕様書との間でデータの流れを追跡しやすくなった。つまり、ソースコードとプロセス仕様書とのトレーサビリティの確保はしやすくなった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０７−２１９７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、開発の成果物としての仕様書には、プロセス仕様書の他に、例えば、開発を行っているシステムの機能を定義する機能仕様書などがある。そのため、従来技術では、ソースコードと種々の仕様書間とのトレーサビリティが集約して記録されておらず、ソースコードと種々の仕様書間のトレーサビリティの確保が困難であるという課題が残っていた。
【０００６】
そこで本発明では、ソースコード、プロセス仕様書及び機能仕様書間のトレーサビリティを集約して記録する。これにより、ソースコード、プロセス仕様書及び機能仕様書間のトレーサビリティの確保が可能となる。
【課題を解決するための手段】
【０００７】
この発明のトレーサビリティ管理装置は、
設計対象を実行するソフトウェアのソースコード上の出力情報と、前記出力情報を含む関数とを対応付けて抽出し、前記設計対象が有する複数の機能のうち少なくとも１つの機能を処理する処理単位の一覧である第１の一覧を生成する第１の一覧生成部と、
前記設計対象が有する複数の機能の一覧である機能項目リストと、前記第１の一覧とから成る機能マトリクスを生成するマトリクス生成部と、
前記設計対象の機能を記述するための第１の仕様書の記述うち、前記機能マトリクスの前記機能項目リストから選択された機能と対応する第１の記述部分と、前記ソースコード上の関数及び出力情報の処理を記述した第２の仕様書の記述うち、前記機能マトリクスの前記第１の一覧から選択された処理単位と対応する関数と出力情報との少なくともいずれかを含む第２の記述部分とを関連付けるトレース管理部と、
前記トレース管理部が関連付けた前記第１の記述部分と前記第２の記述部分とを表示装置に表示する表示処理部と、
前記表示装置に表示された前記第１の記述部分と前記第２の記述部分とに対する編集操作を受け付ける編集部と
を備えた。
【発明の効果】
【０００８】
本発明のトレーサビリティ情報抽出装置によれば、ソースコードから、変数の入力、出力、処理を表で表現したプロセス仕様書へ変換することが可能となるので、データの選択条件と値に着目した文書化が可能となり、データの選択条件と値を明確に示すことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１の図で、トレーサビリティ情報抽出装置２０の機能構成を示すブロック図。
【図２】実施の形態１の図で、トレーサビリティ情報抽出装置２０の全体処理の概要を示す処理フロー。
【図３】実施の形態１の図で、オブジェクトリスト生成部３０の処理フロー。
【図４】実施の形態１の図で、プロセス仕様書生成部４０の処理フロー。
【図５】実施の形態１の図で、プロセス仕様書生成部４０の処理フロー。
【図６】実施の形態１の図で、機能仕様書作成支援部５０の処理フロー。
【図７】実施の形態１の図で、オブジェクトリスト生成部３０のフォルダとファイル構成を示す図。
【図８】実施の形態１の図で、ソースコードａ．ｃの構成を示す図。
【図９】実施の形態１の図で、ソースコードｂ．ｃの構成を示す図。
【図１０】実施の形態１の図で、ソースコードｃ．ｃの構成を示す図。
【図１１】実施の形態１の図で、第１の対応表を示す図。
【図１２】実施の形態１の図で、オブジェクトリスト３０６を示す図。
【図１３】実施の形態１の図で、ソースコードｄ．ｃの構成を示す図。
【図１４】実施の形態１の図で、ソースコードｄ．ｃから抽出されたステップＳ８１２の処理結果を示す、第２の対応表の図。
【図１５】実施の形態１の図で、ソースコードｄ．ｃから抽出されたステップＳ８２０の処理結果を示す、第３の対応表の図。
【図１６】実施の形態１の図で、ソースコードｄ．ｃの条件記述、処理記述を表変換するステップＳ８２３の処理結果を示す図。
【図１７】実施の形態１の図で、ソースコードｅ．ｃの構成を示す図。
【図１８】実施の形態１の図で、ソースコードｅ．ｃから抽出されたステップＳ８１２の処理結果を示す、第２の対応表の図。
【図１９】実施の形態１の図で、ソースコードｅ．ｃから抽出されたステップＳ８２０の処理結果を示す、第３の対応表の図。
【図２０】実施の形態１の図で、ソースコードｅ．ｃの条件記述、処理記述を表変換するステップＳ８２４の処理結果を示す図。
【図２１】実施の形態１の図で、機能仕様書作成支援部５０の実施例を示す図。
【図２２】実施の形態１の図で、機能仕様書作成支援部５０の実施例を示す図。
【図２３】実施の形態１の図で、機能項目リスト１０２を示す図。
【図２４】実施の形態１の図で、機能Ｓ／Ｗマトリクス５０１ａを示す図。
【図２５】実施の形態１の図で、プロセス仕様書４１０を示す図。
【図２６】実施の形態１の図で、機能仕様書５０７を示す図。
【図２７】実施の形態１の図で、トレーサビリティ情報抽出装置２０のハードウェア構成を示す図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。各図中、同一又は相当する部分には同一符号を付し、説明の重複を省いた。
【００１１】
実施の形態１．
＜トレーサビリティ情報抽出装置２０＞
図１に示すトレーサビリティ情報抽出装置２０は、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０を備える。
トレーサビリティ情報抽出装置２０はトレーサビリティ管理装置９７である。
（１）オブジェクトリスト生成部３０は、ソースコード１０１を解析しオブジェクト情報を抽出しオブジェクトリスト３０６を生成する。
（２）プロセス仕様書生成部４０は、ソースコード１０１を解析し、処理内容から当該ソースコード１０１が実現している振る舞いを示すプロセス仕様書４１０を生成する。
（３）機能仕様書作成支援部５０は、作業者が作成した機能項目リスト１０２、オブジェクトリスト生成部３０が生成するオブジェクトリスト３０６、プロセス仕様書生成部４０が生成するプロセス仕様書４１０から、作業者による機能仕様書５０７の作成を支援する。機能項目リスト１０２については後述する。
（４）また、トレーサビリティ情報抽出装置２０は、図２７の説明で後述するように、主記憶装置６２０、補助記憶装置６３０及び表示装置６４０等を備えている。表示装置６４０は、機能Ｓ／Ｗマトリクス５０１ａ、雛型の機能仕様書のようなデータを表示する。機能Ｓ／Ｗマトリクス５０１ａ及び雛型の機能仕様書については後述する。
主記憶装置６２０には、オブジェクトリスト３０６、プロセス仕様書４１０、雛型の機能仕様書及び出力用の機能仕様書が格納されている。出力用の機能仕様書とは後述するが、雛型の機能仕様書にプロセス仕様書４１０の一部分が作業者によって貼り付けられたものである。なお、オブジェクトリスト３０６等のデータは、補助記憶装置６３０に、不揮発的に記憶される。
【００１２】
＜オブジェクトリスト生成部３０＞
オブジェクトリスト生成部３０は、図１のように、第１のソースコード取得部３０１、第１の探索部３０２、第１の対応表生成部３０３及びオブジェクトリスト整形部３０５を備える。オブジェクトリスト生成部３０は、第１の一覧生成部９１である。
オブジェクトリスト生成部３０は、設計対象を実行するソフトウェアのソースコード上の出力情報と、出力情報を含む関数とを対応付けて抽出し、設計対象が有する複数の機能のうち少なくとも１つの機能を処理する処理単位の一覧である第１の一覧であるオブジェクトリスト３０６を生成する。
ここで「設計対象」とは、機能仕様書、プロセス仕様書、ソースコードを作成する目的となる、例えば、顧客から受注したシステム、または装置などの、設計を行う対象である。
「処理単位」とは、オブジェクトあるいは関数を指す。
また、「出力情報」とは、数値や文字列など、処理単位から出力される情報である。
オブジェクトリスト生成部３０の各構成要素は以下のようである。
（１）第１のソースコード取得部３０１は、ソースコード１０１を入力とする。
（２）第１の探索部３０２は、フォルダ、ファイル、関数、変数を探索する。
（３）第１の対応表生成部３０３は、フォルダ名、ファイル名、関数名、変数名を抽出した第１の対応表３０４を生成する。
（４）オブジェクトリスト整形部３０５は、第１の対応表生成部３０３で生成した第１の対応表３０４をオブジェクトリスト３０６に整形する。オブジェクトリスト３０６は第１の一覧８３である。
【００１３】
＜プロセス仕様書生成部４０＞
プロセス仕様書生成部４０は、図１のように、第２のソースコード取得部４０１、第２の探索部４０２、第２の対応表生成部４０３、第３の探索部４０５、第３の対応表生成部４０６、記述形式変換部４０８及びプロセス仕様書整形部４０９を備える。
第３の対応表生成部４０６は第２の一覧生成部９５である。記述形式変換部４０８及びプロセス仕様書整形部４０９は仕様書生成部９６を構成する。
プロセス仕様書生成部４０の各構成要素の機能は以下のようである。
（１）第２のソースコード取得部４０１は、ソースコード１０１を入力とする。
（２）第２の探索部４０２は、関数、条件文、条件記述、入力値を探索する。
（３）第２の対応表生成部４０３は、関数名、条件文、条件記述、入力値を抽出した第２の対応表４０４を生成する。
（４）第３の探索部４０５は、関数、条件文、条件記述、処理記述、出力値を探索する。（５）第３の対応表生成部４０６は、関数名、条件文、条件記述、処理記述、出力値を抽出した第３の対応表４０７を生成する。
第３の対応表生成部４０６は
（ａ）ソースコード上の出力情報、
（ｂ）出力情報の処理を分岐する分岐条件の入力情報を伴う判定記述、
（ｃ）入力情報を伴う判定記述により分岐した条件分岐の各々の分岐における出力情報の処理記述、
及び
（ｄ）出力情報の処理記述を含む関数、
を対応付けて抽出した一覧である、第２の一覧としての第３の対応表４０７を生成する。
ここで「入力情報」とは処理単位に入力される情報である。
（６）記述形式変換部４０８は、条件記述、処理記述を形式化する。
（７）プロセス仕様書整形部４０９は、プロセス仕様書４１０に整形する。
（８）記述形式変換部４０８及びプロセス仕様書整形部４０９によって構成される仕様書生成部９６は、第３の対応表４０７に基づき、入力情報、出力情報、及び、入力情報の判定記述と出力情報の処理記述との対応記述、を対応させることにより、第２の仕様書であるプロセス仕様書４１０を生成する。
【００１４】
＜機能仕様書作成支援部５０＞
機能仕様書作成支援部５０は、図１のように、機能Ｓ／Ｗマトリクス生成部５０１、選択検知部５０２、仕様書表示部５０３、編集部５０４、コピー認識部５０５及び対応関係記録部５０６を備える。
機能Ｓ／Ｗマトリクス生成部５０１はマトリクス生成部９２であり、選択検知部５０２はトレース管理部９３であり、仕様書表示部５０３は表示処理部９４である。
機能仕様書作成支援部５０の各構成要素の機能は以下のようである。
（１）機能Ｓ／Ｗマトリクス生成部５０１は、機能項目リスト１０２とオブジェクトリスト３０６とを入力とし、機能ソフトウェアマトリクス５０１ａ（以下、機能Ｓ／Ｗマトリクス５０１ａと記す）を生成する。
つまり、機能Ｓ／Ｗマトリクス生成部５０１は、設計対象が有する複数の機能の一覧である機能項目リスト１０２と、第１の一覧であるオブジェクトリスト３０６とから成る機能マトリクスである機能Ｓ／Ｗマトリクス５０１ａを生成する。
（２）選択検知部５０２は、オブジェクトリスト３０６の属性、プロセス仕様書４１０の形式記述の選択を検知する。
また、選択検知部５０２は、設計対象の機能を記述するための第１の仕様書である雛型の機能仕様書の記述うち、機能Ｓ／Ｗマトリクス５０１ａの機能項目リスト１０２から選択された機能と対応する第１の記述部分と、ソースコード上の関数及び出力情報の処理を記述した第２の仕様書であるプロセス仕様書４１０の記述うち、機能Ｓ／Ｗマトリクス５０１ａのオブジェクトリスト３０６から選択された処理単位と対応する関数と出力情報との少なくともいずれかを含む第２の記述部分とを関連付ける。
ここで「第１の記述部分」とは、例えば、雛型の機能仕様書のうち、後述する入力欄の機能を定義する記載のまとまり（章・節・項…など）を指す。
（３）仕様書表示部５０３は、選択された機能、オブジェクトに対応する機能仕様書５０７、プロセス仕様書４１０を表示する。
仕様書表示部５０３は、選択検知部５０２が関連付けた第１の記述部分と第２の記述部分とを表示装置６４０に表示する。
（４）編集部５０４は、表示装置６４０に表示された第１の記述部分と第２の記述部分とに対する編集操作を受け付ける。例えば作業者が後述のように、切り取り操作、貼り付け操作を行う場合、編集部５０４は、このような操作を受け付ける。
（５）コピー認識部５０５は、プロセス仕様書４１０から機能仕様書５０７へのコピーを認識する。
（６）対応関係記録部５０６は、機能Ｓ／Ｗマトリクス５０１ａにプロセス仕様書４１０、ソースコード１０１、機能仕様書５０７の対応関係を記録する。
【００１５】
図２７は、トレーサビリティ情報抽出装置２０のハードウェア構成を示す。図２７を参照してトレーサビリティ情報抽出装置２０のハードウェエア構成を説明する。トレーサビリティ情報抽出装置２０は、コンピュータである。トレーサビリティ情報抽出装置２０は、ハードウェエアとして、プロセッサ６１０、主記憶装置６２０、補助記憶装置６３０、表示装置６４０及び入力装置６５０を備える。プロセッサ６１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１６】
プロセッサ６１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ６１０は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１７】
主記憶装置６２０は、揮発性の記憶装置である。主記憶装置６２０は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。補助記憶装置６３０は、磁気ディスク装置（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。補助記憶装置６３０は、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記憶媒体を使用する記憶装置でもよい。補助記憶装置６３０には、トレーサビリティ情報抽出装置２０の機能を実現するためのプログラム及び他のデータが記憶される。
【００１８】
表示装置６４０は、プロセッサ６１０に制御されて情報を表示する。表示装置６４０は、例えば液晶ディスプレイである。
【００１９】
入力装置６５０は、トレーサビリティ情報抽出装置２０に情報を入力するための装置であり、例えば、マウス、キーボードあるいはタッチパネルである。
【００２０】
トレーサビリティ情報抽出装置２０は、機能要素として、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０を備えている。オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０の機能は、ソフトウェアにより実現される。補助記憶装置６３０には、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ６１０により読み込まれ実行される。これにより、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０の機能が実現される。
なお、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０の機能を実現するソフトウェアは、コンピュータで読取可能な記録媒体に記録されてもよい。
【００２１】
図２７では、プロセッサ６１０は、１つだけ示されている。しかし、トレーサビリティ情報抽出装置２０は、プロセッサ６１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、オブジェクトリスト生成部３０、プロセス仕様書生成部４０及び機能仕様書作成支援部５０のプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ６１０と同じように、演算処理を行うＩＣである。
【００２２】
＜トレーサビリティ情報抽出装置２０による処理の概要＞
＊＊＊動作の説明＊＊＊
図２は、トレーサビリティ情報抽出装置２０が行うトレーサビリティ情報抽方法の概要を示す処理フローである。
（１）ステップＳ６０１でトレーサビリティ情報抽出装置２０の処理を開始したあと、ステップＳ６０２へ進む。
（２）ステップＳ６０２でオブジェクトリスト生成部３０によりオブジェクトリスト３０６を生成し、ステップＳ６０３へ進む。
（３）ステップＳ６０３でプロセス仕様書生成部４０によりプロセス仕様書４１０を生成し、ステップＳ６０４へ進む。
（４）ステップＳ６０４で機能仕様書作成支援部５０により機能仕様書５０７の作成を支援し、ステップＳ６０５へ進む。
（５）ステップＳ６０５でトレーサビリティ情報抽出装置２０の処理を終了する。
【００２３】
＜オブジェクトリスト生成部３０の動作＞
図３は、オブジェクトリスト生成部３０の処理フローを示すフローチャートである。
図３に示す処理のうち、ステップＳ７１１及びステップＳ７１４は第１の対応表生成部３０３による処理、ステップＳ７１６はオブジェクトリスト整形部３０５による処理であり、それ以外は第１の探索部３０２による処理である。
【００２４】
まず、第１のソースコード取得部３０１がソースコード１０１を取得する。
ステップＳ７０１でオブジェクトリスト生成部３０の処理を開始後、ステップＳ７０２で最初のフォルダを探す準備をするため、第１の探索部３０２が変数ａを１に初期化する。ステップＳ７０３で第１の探索部３０２は、ａ個目のフォルダがあるかを探す。ａ個目のフォルダがある場合、ステップＳ７０４で最初のファイルを探す準備をするため、第１の探索部３０２は、変数ｂを１に初期化する。ａ個目のフォルダがない場合、ステップＳ７１６でオブジェクトリスト整形部３０５はオブジェクトリスト３０６を整形し、ステップＳ７１７でオブジェクトリスト生成部３０の処理を終了する。
【００２５】
ステップＳ７０４終了後、ステップＳ７０５で第１の探索部３０２は、ｂ個目のファイルがあるかを探す。ｂ個目のファイルがある場合、ステップＳ７０７で最初の関数を探す準備をするため、第１の探索部３０２は変数ｃを１に初期化する。
【００２６】
ステップＳ７０５でｂ個目のファイルがない場合、ステップＳ７０６で次のフォルダを探す準備をするため、第１の探索部３０２は、変数ａに１を足したものを代入し、ステップＳ７０３の処理を実行する。
【００２７】
ステップＳ７０７の処理を実行した後、ステップＳ７０８でｃ個目の関数があるかを第１の探索部３０２は探す。ｃ個目の関数がある場合、ステップＳ７１０で最初の変数を探す準備をするため、第１の探索部３０２は変数ｄを１に初期化する。
【００２８】
ステップＳ７０８でｃ個目の関数がない場合、ステップＳ７０９で次のファイルを探す準備をするため、第１の探索部３０２は、変数ｂに１を足したものを代入し、ステップＳ７０５の処理を実行する。
【００２９】
ステップＳ７１０の処理を実行した後、第１の対応表生成部３０３は、ステップＳ７１１でフォルダ名、ファイル名、関数名を抽出し、フォルダ名、ファイル名、関数名の第１の対応表３０４を生成する。
【００３０】
ステップＳ７１１の処理を実行した後、ステップＳ７１２でｄ個目の変数があるかを
第１の探索部３０２が探す。ｄ個目の変数がある場合、第１の対応表生成部３０３はステップＳ７１４で変数名を抽出し、フォルダ名、ファイル名、関数名に変数名を加えて第１の対応表３０４を更新する。
【００３１】
ステップＳ７１２でｄ個目の変数がない場合、次の関数を探す準備をするため、第１の探索部３０２は、変数ｃに１を足したものを代入し、ステップＳ７０８の処理を実行する。
【００３２】
第１の対応表生成部３０３がステップＳ７１４の処理を実行後、ステップＳ７１５で次の変数を探す準備をするため、第１の探索部３０２は変数ｄに１を足したものを代入し、ステップＳ７１２の処理を実行する。
【００３３】
また、図７はフォルダとファイルの構成例である。フォルダはＦ１、Ｆ２、Ｆ３の３つあり、ファイルは、ファイルａ．ｃ、ファイルｂ．ｃ及びファイルｃ．ｃの３つある。フォルダＦ１の直下にファイルａ．ｃとファイルｂ．ｃがある。フォルダＦ２の直下にファイルｃ．ｃがある。図８はファイルａ．ｃの構成、図９はファイルｂ．ｃの構成、図１０はファイルｃ．ｃの構成である。このとき、図３の処理フローに基づき、以降のように実行される。
【００３４】
ステップＳ７０１でオブジェクトリスト生成部３０の処理が開始される。
ステップＳ７０２で１個目のフォルダを探す準備をするため、変数ａを１に初期化し、ステップＳ７０３へ進む。
ステップＳ７０３で１個目のフォルダがあるかを探す。１個目のフォルダＦ１があるので、ステップＳ７０４へ進む。
ステップＳ７０４で１個目のファイルを探す準備をするため、変数ｂを１に初期化し、ステップＳ７０５へ進む。
ステップＳ７０５で１個目のファイルがあるか探す。１個目のファイルａ．ｃがあるので、ステップＳ７０７へ進む。
ステップＳ７０７で１個目の関数を探す準備をするため、変数ｃを１に初期化し、ステップＳ７０８へ進む。
ステップＳ７０８で１個目の関数があるかを探す。１個目の関数ｆ１があるので、ステップＳ７１０へ進む。
ステップＳ７１０で１個目の変数を探す準備をするため、変数ｄを１に初期化し、ステップＳ７１１へ進む。
ステップＳ７１１でフォルダ名Ｆ１、ファイル名ａ．ｃ、関数名ｆ１を抽出し、ステップＳ７１２へ進む。
ステップＳ７１２で１個目の変数があるかを探す。１個目の変数ｘがあるので、ステップＳ７１４へ進む。
ステップＳ７１４で変数名ｘを抽出し、ステップＳ７１５へ進む。
ステップＳ７１５で２個目の変数を探す準備をするため、ｄは２になり、ステップＳ７１２へ進む。
ステップＳ７１２で２個目の変数があるかを探す。２個目の変数はないので、ステップＳ７１３へ進む。
ステップＳ７１３で２個目の関数を探す準備をするため、ｃは２になり、ステップＳ７０８へ進む。
【００３５】
ステップＳ７０８で２個目の関数があるかを探す。２個目の関数ｆ２があるので、ステップＳ７１０へ進む。
ステップＳ７１０で１個目の変数を探す準備をするため、変数ｄを１に初期化し、ステップＳ７１１へ進む。
ステップＳ７１１でフォルダ名Ｆ１、ファイル名ａ．ｃ、関数名ｆ２を抽出し、ステップＳ７１２へ進む。
ステップＳ７１２で１個目の変数があるかを探す。１個目の変数ｙがあるので、ステップＳ７１４へ進む。
ステップＳ７１４で変数名ｙを抽出し、ステップＳ７１５へ進む。
ステップＳ７１５で２個目の変数を探す準備をするため、ｄは２になり、ステップＳ７１２へ進む。
ステップＳ７１２で２個目の変数があるかを探す。２個目の変数はないので、ステップＳ７１３へ進む。
ステップＳ７１３で３個目の関数を探す準備をするため、ｃは３になり、ステップＳ７０８へ進む。
ステップＳ７０８で３個目の関数があるかを探す。３個目の関数はないので、ステップＳ７０９へ進む。
ステップＳ７０９で２個目のファイルを探す準備をするため、ｂは２になり、ステップＳ７０５へ進む。
ステップＳ７０５で２個目のファイルがあるかを探す。２個目のファイルｂ．ｃがあるので、ステップＳ７０７へ進む。
ステップＳ７０７で１個目の関数を探す準備をするため、変数ｃを１に初期化し、ステップＳ７０８へ進む。
【００３６】
ステップＳ７０８で１個目の関数があるかを探す。１個目の関数ｆ３があるので、ステップＳ７１０へ進む。
ステップＳ７１０で１個目の変数を探す準備をするため、変数ｄを１に初期化し、ステップＳ７１１へ進む。
ステップＳ７１１でフォルダ名Ｆ１、ファイル名ｂ．ｃ、関数名ｆ３を抽出し、ステップＳ７１２へ進む。
ステップＳ７１２で１個目の変数があるか探す。１個目の変数ｚがあるので、ステップＳ７１４へ進む。
ステップＳ７１４で変数名ｚを抽出し、ステップＳ７１５へ進む。
ステップＳ７１５で２個目の変数を探す準備をするため、ｄは２になり、ステップＳ７１２へ進む。
ステップＳ７１２で２個目の変数があるか探す。２個目の変数はないので、ステップＳ７１３へ進む。
ステップＳ７１３で２個目の関数を探す準備をするため、ｃは２になり、ステップＳ７０８へ進む。
ステップＳ７０８で２個目の関数があるかを探す。２個目の関数はないので、ステップＳ７０９へ進む。
ステップＳ７０９で２個目のファイルを探す準備をするため、ｂは２になり、ステップＳ７０５へ進む。
ステップＳ７０５で２個目のファイルがあるかどうかを探す。２個目のファイルはないので、ステップＳ７０６へ進む。
ステップＳ７０６で２個目のフォルダを探す準備をするため、ａは２になり、ステップＳ７０３へ進む。
ステップＳ７０３で２個目のフォルダがあるかを探す。２個目のフォルダＦ２があるので、ステップＳ７０４へ進む。
ステップＳ７０４で１個目のファイルを探す準備をするため、変数ｂを１に初期化し、ステップＳ７０５へ進む。
【００３７】
ステップＳ７０５で１個目のファイルがあるか探す。１個目のファイルｃ．ｃがあるので、ステップＳ７０７へ進む。
ステップＳ７０７で１個目の関数を探す準備をするため、変数ｃを１に初期化し、ステップＳ７０８へ進む。
ステップＳ７０８で１個目の関数があるかを探す。１個目の関数ｆ４があるので、ステップＳ７１０へ進む。
ステップＳ７１０で１個目の変数を探す準備をするため、変数ｄを１に初期化し、ステップＳ７１１へ進む。
ステップＳ７１１でフォルダ名Ｆ４、ファイル名ｃ．ｃ、関数名ｆ４を抽出する。この時点で生成された対応表３０４は図１１である。その後、ステップＳ７１２へ進む。
ステップＳ７１２で１個目の変数があるか探す。１個目の変数はないので、ステップＳ７１３へ進む。
ステップＳ７１３で２個目の関数を探す準備をするため、ｃは２になり、ステップＳ７０８へ進む。
ステップＳ７０８で２個目の関数があるか探す。２個目の関数はないので、ステップＳ７０９へ進む。
ステップＳ７０９で２個目のファイルを探す準備をするため、ｂは２になり、ステップＳ７０５へ進む。
ステップＳ７０５で２個目のファイルがあるか探す。２個目のファイルはないので、ステップＳ７０６へ進む。
ステップＳ７０６で３個目のフォルダを探す準備をするため、ａは３になり、ステップＳ７０３へ進む。
ステップＳ７０３で３個目のフォルダがあるか探す。３個目のフォルダはないので、ステップＳ７１６へ進む。
【００３８】
ステップＳ７１６で、オブジェクトリスト整形部３０５は、フォルダ名をグループ１のラベル、ファイル名をグループ２のラベル、関数名を機能ブロックのラベル、変数名を属性のラベルと名称を変換し、変数名のない行は削除することで、オブジェクトリスト３０６を整形する。その結果生成したものが図１２となる。その後、ステップＳ７１７へ進む。
ステップＳ７１７でオブジェクトリスト生成部３０の処理フローを終了する。
【００３９】
以上のように、オブジェクトリスト生成部３０は、ソースコードが記述されたソースコードファイルが格納されているフォルダを取得し、このフォルダを探索し、フォルダのフォルダ名、ソースコードファイルのファイル名、ソースコードに含まれる関数の関数名、ソースコードに含まれる変数の変数名を抽出する。
そして、オブジェクトリスト生成部３０は、抽出されたフォルダ名、ファイル名、関数名、変数名を対応付けて第１の対応表（例えば図１１）を生成する。
オブジェクトリスト生成部３０は、第１の対応表３０４（図１１）を整形して、第１の対応表３０４から、変数名のラベルであるオブジェクト属性を複数有し、各オブジェクト属性にはプロセス仕様が定義されているオブジェクトリスト（図１２）を生成する
【００４０】
＜プロセス仕様書生成部４０の動作＞
図４において、各ステップの動作の主体は以下のとおりである。
（１）ステップＳ８０２〜Ｓ８１１、Ｓ８１３、Ｓ８１４は、第２の探索部４０２による処理である。
（２）ステップＳ８１２は、第２の対応表生成部４０３による処理である。
（３）ステップＳ８２３、Ｓ８２４は、記述形式変換部４０８、プロセス仕様書整形部４０９による処理である。
【００４１】
図５において、各ステップの動作の主体は以下のとおりである。
（１）ステップＳ８２０は、第３の対応表生成部４０６による処理である。
（２）ステップＳ８２０以外のステップは、第３の探索部４０５による処理である。
図４及び図５は、プロセス仕様書生成部４０の処理フローを示すフローチャートである。
図４のステップＳ８０１において、図１３に示すようなソースファイル（ソースコードｄ．ｃ）を入力として処理を開始する。
ステップＳ８０２から始まる、ステップＳ８０３、ステップＳ８０４〜ステップＳ８０５のループにおいて、ソースファイルに含まれる１個目からＮ個目までのすべての関数に対して次の処理を行う。
各関数に対しては、ステップＳ８０４から始まる、ステップＳ８０６、ステップＳ８０７〜ステップＳ８０９のループにおいて、１つの関数に含まれる１個目からＮ個目までのすべての条件文に対して次の処理を行う。
各条件文に対しては、ステップＳ８０７から始まる、ステップＳ８０８、ステップＳ８１０〜ステップＳ８１４のループにおいて、１つの条件文に含まれるすべての条件記述に対して処理を行う。
【００４２】
各条件記述に対しては、ステップＳ８１０から始まる、ステップＳ８１１、ステップＳ８１２、ステップＳ８１３のループにおいて、１つの条件記述に含まれる１個目からＮ個目までのすべての入力値に対し、入力値とその入力値を含んでいる関数名、条件文、条件記述を抽出した一覧を作成する。
図１３に示したソースファイル（ソースコードｄ．ｃ）を入力とした場合の一覧の例を図１４に示す。図１４は第２の対応表４０４の例を示す図である。
この例では、関数ｆ５の中にある条件文として条件分岐から得られた「ｉｆ  （ａ＜０）」「ｅｌｓｅ  ｉｆ  （Ａ＝＝０）」「ｅｌｓｅ」の３つのケースと、それぞれのケースで判定に用いられた条件式「Ａ＜０」「Ａ＝＝０」「Ａ＞０」を条件記述として抽出する。また、条件記述の中で参照された変数の名前「Ａ」「Ａ」「Ａ」を入力値として抽出する。
【００４３】
次に各条件記述に対して、ステップＳ８１５から始まる、ステップＳ８１６、ステップＳ８１７〜ステップＳ８１９のループにおいて、１つの条件記述に含まれる１個目からＮ個目までのすべての処理記述に対して次の処理を行う。
各処理記述に対しては、ステップＳ８１７から始まる、ステップＳ８１８、ステップＳ８２０、ステップＳ８２１のループにおいて、１つの処理記述に含まれる１個目からＮ個目までのすべての出力値に対し、出力値とその出力値を含んでいる関数名、条件文、条件記述、処理記述を抽出した一覧を作成する。図１３に示したソースファイルを入力とした場合の一覧の例を図１５に示す。図１５は第３の対応表４０７の例を示す図である。この例では、関数ｆ５の中にある条件文として条件分岐から得られた「ｉｆ  （ａ＜０）」「ｅｌｓｅ  ｉｆ  （Ａ＝＝０）」「ｅｌｓｅ」の３つのケースと、それぞれのケースで判定に用いられた条件式「Ａ＜０」「Ａ＝＝０」「Ａ＞０」を条件記述として抽出する。また、各条件が成立した場合に実行される処理「ｘ＝１」「ｘ＝２」「ｘ＝３」を処理記述として抽出する。また、処理記述の中で代入先になっている変数の名前「ｘ」「ｘ」「ｘ」を入力値として抽出する。
【００４４】
１つのソースファイルに対する抽出処理が完了すると、ステップＳ８０３からステップＳ８２２に処理が移る。
【００４５】
次にステップＳ８２２では、ステップＳ８１２で抽出した一覧に含まれる入力値がすべて同じで、かつ、ステップＳ８２０で抽出した一覧に含まれる出力値がすべて同じかを判定する。
【００４６】
ステップＳ８２２にてすべて同じであると判定した場合ステップＳ８２２からステップＳ８２３に進む。このステップでは、ステップＳ８２０で抽出した一覧から条件記述と出力値を抽出して、対応が取れる形の表に変換する。図１４および図１５の一覧をもとに変換した例を図１６に示す。ここでは関数「ｆ５」について調べ、条件記述「Ａ＜０」「Ａ＝＝０」「上記以外」を抽出するとともに、各条件記述に対応する処理記述「ｘ＝１」「ｘ＝２」「ｘ＝３」をもとにして出力値の値「１」「２」「３」を抽出する。また、入力値はすべて「Ａ」であるので、この「Ａ」を条件記述の見出し行に記載する。また、出力値はすべて「ｘ」であるので、この「ｘ」を出力値の見出し行に記載する。
【００４７】
ステップＳ８２２にてすべてが同じではないと判定した場合ステップＳ８２２からステップＳ８２４に進む。このステップでは、ステップＳ８２０で抽出した一覧から条件記述と処理記述を抽出して、対応が取れる形の表に変換する。ここで、図１７に示したソースファイルを入力とした場合のステップＳ８１２で抽出した別の一覧の例を図１８、ステップＳ８２０で抽出した別の一覧の例を図１９に示す。図１８は第２の対応表４０４の例を示す図である。図１９は第３の対応表４０７の例を示す図である。図１９の一覧をもとに変換した表の例を図２０に示す。ここでは関数「ｆ５」について調べ、条件記述「Ａ＜０」「Ａ＝＝０」「上記以外」を抽出するとともに、各条件記述に対応する処理記述「ｘ＝１」「ｙ＝２」「ｚ＝３」を抽出する。
【００４８】
ステップＳ８２３またはステップＳ８２４の処理を行った後、ステップＳ８２５に進む。このステップではステップＳ８２３またはステップＳ８２４で作成した表をもとにして、整形されたプロセス仕様書４１０を作成する。
図１６の表をもとに作成したプロセス仕様書４１０の例を図２５に示す。プロセス仕様書４１０のフォーマットは３列からなる表形式であり、左から「入力」「処理」「出力」である。表の１行目は見出しであり「入力」「処理」「出力」の文字列があらかじめ記入されている。表の２行目の内容について説明する。図２５の「入力」列は入力となるデータ名称を表し、図１６に示した表の１列目の見出し行の内容である「Ａ」を転記する。図２５の「出力」列は出力となるデータ名称を表し、図１６に示した表の２列目の見出し行の内容である「ｘ」を転記する。図２５の「処理」列は入力データから出力データを求める処理内容を表し、図１６に示した表の２行目以降の場合分けに応じた処理を記載する。  ここで、プロセス仕様書４１０の出力列又は処理列には、出力のｘが「温度センサ」であることを示す定型的な記述がなされている。
図１６の例では「Ａ＜０」のときｘが「１」、「Ａ＝＝０」のときｘが「２」、「上記以外」のときｘが３であるので、処理は「（１）Ａ＜０  （改行）  ・Ｘ＝１」、「（２）Ａ＝＝０  （改行）  ・Ｘ＝２」、「（３）上記以外  （改行）  ・Ｘ＝３」となる。さらに処理の末尾に図１６の表を転記する。以上により整形されたプロセス仕様書４１０が完成する。
【００４９】
以上のように、プロセス仕様書生成部４０は、ソースコードを対象として、関数、条件文、条件記述、入力値を探索し、探索結果によって、そのソースコードから、関数の関数名、条件文、条件記述、入力値を抽出し、抽出された、関数の関数名、条件文、条件記述、入力値を対応付けて、第２の対応表４０４（例えば図１４）を生成する。
そして、プロセス仕様書生成部４０は、ソースコードを対象として、関数、条件文、条件記述、処理記述、出力値を探索し、探索結果によって、そのソースコードから、関数の関数名、条件文、条件記述、処理記述、出力値を抽出し、抽出された、関数の関数名、条件文、条件記述、処理記述、出力値を対応付けて、第３の対応表４０７を生成する。
そして、プロセス仕様書生成部４０は、第２の対応表４０４と第３の対応表４０７とから、オブジェクトリスト３０６の持つプロセス仕様に対応付けられたプロセス仕様書４１０（図２５）を生成する。
【００５０】
＜機能仕様書作成支援部５０の動作＞
機能仕様書作成支援部５０の実施例を図２１及び図２２、処理フローを図６に示す。図６の処理フローには、作業者による処理をステップＳ１０からステップＳ１５として示している。
編集部５０４は、表示装置６４０に表示された第１の記述部分と第２の記述部分とに対する編集操作を受け付ける。例えば作業者が後述のように、切り取り操作、貼り付け操作を行う場合、編集部５０４は、作業者な操作を受け付ける機能を有する。
【００５１】
ステップＳ９３１で機能仕様書作成支援部５０が処理を開始し、ステップＳ９３２へ進む。
【００５２】
（機能Ｓ／Ｗマトリクスの生成及び表示）
ステップＳ９３２において、機能Ｓ／Ｗマトリクス生成部５０１は、作業者が作成した機能項目リスト１０２と、オブジェクトリスト生成部３０において自動生成されたオブジェクトリスト３０６とを入力されると、図２４に示す機能Ｓ／Ｗマトリクス５０１ａを自動生成する。
【００５３】
機能Ｓ／Ｗマトリクス生成部５０１に入力される機能項目リスト１０２とは、顧客や作業者などの設計対象の知識を有する者が、当該設計対象を実行するソフトウェアの有する機能を項目形式に記述して定義したものである。
図２３に示すように、機能項目リスト１０２の各項目は、レベル１の運転に対してレベル２の圧縮機運転指令及び運転モード、また、レベル１の支援に対してレベル２の通常制御のように、各機能の階層分け及びグルーピングがなされている。
また、機能項目リスト１０２には、各機能と対応した目的を併せて記述していても良い。具体例としては、機能「運転モード状態」と対応して、目的「運転要求に応じて運転モードを切り替える」を記述する。
【００５４】
そして、雛型の機能仕様書とは、機能仕様書の雛型であり、上述の第１の記述部分の他に、入力欄、目的欄及び出力欄を含む。雛型の機能仕様書の入力欄は機能項目リスト１０２に記述の各機能と対応している。また、目的欄は機能項目リスト１０２に記述の各機能の目的と対応している。また、出力欄はプロセス仕様書４１０の出力と対応している。
雛型の機能仕様書の入力欄及び目的欄には、作業者が機能項目リスト１０２に基づき予め手作業で記述しても良いし、機能仕様書作成支援部５０が機能項目リスト１０２の生成に伴い自動でそれぞれ記述するようにしても良い。
【００５５】
機能Ｓ／Ｗマトリクス生成部５０１に入力されるオブジェクトリスト３０６に関しては、オブジェクトリスト３０６（図１２）の各項目（属性のｘ、ｙ、ｚ）に対してプロセス仕様が定義されている。図２４の機能Ｓ／Ｗマトリクス５０１ａでは、機能Ｓ／Ｗマトリクス５０１ａにおける機能項目リスト１０２の各機能項目（圧縮機運転指令、運転モード及び通常制御）に対応した行情報と、オブジェクトリスト３０６の各項目（オブジェクト属性のｘ、ｙ、ｚ）に対応した列情報で、２次元配列を構成している。配列内要素は、プロセス仕様の選択列と機能仕様の選択行の情報が保持され紐づけされている。
機能Ｓ／Ｗマトリクス生成部５０１は、生成した機能Ｓ／Ｗマトリクス５０１ａを表示装置６４０に表示する。
機能Ｓ／Ｗマトリクス５０１ａの横軸は、解析対象Ｓ／Ｗの機能項目を列挙した機能項目リスト１０２（図２３）であり、機能仕様書作成支援部５０に入力された機能項目リスト１０２の内容が自動的に設定される。機能Ｓ／Ｗマトリクス５０１ａの縦軸は、解析対象Ｓ／Ｗのオブジェクトを列挙したオブジェクトリスト３０６であり、機能仕様書作成支援部５０に入力されたオブジェクトリスト３０６の内容が自動的に設定される。その後、処理はステップＳ９３３へ進む。
【００５６】
このように、機能仕様書作成支援部５０は、オブジェクトリスト生成部３０が生成したオブジェクトリスト３０６と、複数の機能項目（圧縮機運転指令、運転モード及び通常制御）を有し、各機能項目には雛型の機能仕様書と対応付けられた機能仕様が定義されている機能項目リスト１０２とから、オブジェクトリスト３０６と機能項目リスト１０２とを合成したテーブルである機能Ｓ／Ｗ５０１ａを生成し、機能Ｓ／Ｗマトリクス５０１ａを表示装置６４０に表示する（ステップＳ９３２）。
【００５７】
ステップＳ９３３において、機能仕様書作成支援部５０の機能Ｓ／Ｗマトリクス生成部５０１は、機能項目リスト１０２とオブジェクトリスト３０６との対応部分の個数だけ処理をループする準備をするため、変数ａを１に初期化する。処理はステップＳ９３４へ進む。
【００５８】
ステップＳ９３４において、機能Ｓ／Ｗマトリクス生成部５０１は、表示装置６４０に表示している機能Ｓ／Ｗマトリクス５０１ａに対して、「対応部分がある」または「対応部分がない」を判定する。
ここで対応部分とは、図２４の機能Ｓ／Ｗマトリクス５０１ａにおいて、オブジェクトリスト部分のオブジェクト属性である「ｘ，ｙ，ｚ」と、機能項目リスト部分の機能項目である「圧縮機運転指令、運転モード、通常運転」とからできる９個の組、例えば、（ｘ，圧縮機運転指令），（ｘ，圧縮機運転指令），・・・，（ｙ，通常運転）のうち、作業者が対応関係がある判断した組を意味する。
例えば、作業者が、「ｘと圧縮機運転指令とには対応関係がある」と判断したとすれば、（ｘ，圧縮機運転指令）の組が対応部分である。
ステップＳ９３４における機能Ｓ／Ｗマトリクス生成部５０１による、「対応部分がある」または「対応部分がない」の判定は、次のステップＳ１０に基づく。
【００５９】
ステップＳ１０において、作業者が、表示装置６４０に表示されている機能Ｓ／Ｗマトリクス５０１ａを選択（クリック）した場合、機能Ｓ／Ｗマトリクス生成部５０１は「対応部分がある」と判定する。
一方、作業者が表示装置６４０に表示されている機能Ｓ／Ｗマトリクス５０１ａの終了ボタンを選択（クリック）した場合、機能Ｓ／Ｗマトリクス生成部５０１は「対応部分がない」と判定する。
対応部分がある場合、処理はステップＳ９３５に進む。対応部分がない場合、処理はステップＳ９４４に進み、処理は終了する。以後、作業者によるステップＳ１０の操作に応じて、機能項目リスト１０２とオブジェクトリスト３０６との対応部分の個数ａだけ処理がループする。
【００６０】
ステップＳ１１において、作業者は、「機能Ｓ／Ｗマトリクス５０１ａのオブジェクトリスト部分の属性」を対象に選択する。「オブジェクトリスト部分の属性」とは、図２４のオブジェクト属性であるｘ、ｙ、ｚを示す。作業者はｘ、ｙ、ｚのいずれかを選択する。この例ではｘが選択されたとする。
【００６１】
ステップＳ９３５において、選択検知部５０２が、「機能Ｓ／Ｗマトリクス５０１ａのオブジェクトリスト部分の属性」が選択されたことを検知する。選択検知部５０２はｘが選択されたことを検知する。
【００６２】
ステップＳ９３６において、仕様書表示部５０３は、ステップＳ１１で選択された属性（オブジェクト属性）のｘに対応するプロセス仕様書を、表示装置６４０に表示する。
このように、機能仕様書作成支援部５０は、機能Ｓ／Ｗマトリクス５０１ａのオブジェクト属性のいずれかが選択された場合に、選択されたオブジェクト属性のプロセス仕様を参照して、対応するプロセス仕様書４１０を表示装置６４０に表示する。
【００６３】
ステップＳ１２において、作業者が、プロセス仕様書４１０の対応部分を選択する。プロセス仕様書の対応部分とは、図２５のプロセス仕様書４１０において破線で囲んだ部分である。なお、この破線は対応部分を示す便宜的なものであり、プロセス仕様書４１０を構成するものではない。
【００６４】
ステップＳ９３７において、選択検知部５０２が、プロセス仕様書４１０の対応部分の選択及びコピーを検知する。
このように、機能仕様書作成支援部５０は、表示されたプロセス仕様書４１０の一部分が選択されてコピーされた場合に、選択とコピーとを検知する。
【００６５】
ステップＳ１３において、作業者が、「機能Ｓ／Ｗマトリクス５０１ａの機能項目リスト部分の機能項目」を対象に選択する。「機能項目リスト部分の機能項目」とは上記で述べたように、図２４の圧縮機運転指令、運転モード、通常制御である。作業者は、圧縮機運転指令、運転モード、通常制御のいずれかを選択する。この例では運転モードが選択されたとする。
【００６６】
ステップＳ９３８において、選択検知部５０２は、「機能Ｓ／Ｗマトリクス５０１ａの機能項目リスト部分の機能項目」のうち運転モードが選択されたことを検知する。
【００６７】
ステップＳ９３９において、仕様書表示部５０３は、機能項目リスト部分の機能項目である運転モードに対応する雛型機能仕様書を、表示装置６４０に表示する。
このように、機能仕様書作成支援部５０は、機能Ｓ／Ｗマトリクス５０１ａの機能項目のいずれかが選択された場合に、選択された機能項目の機能仕様を参照して、対応する雛型の機能仕様書を表示装置６４０に表示する。
【００６８】
ステップＳ１４において、作業者が、雛型機能仕様書の対応部分を選択する。雛型機能仕様書の対応部分とは、ステップＳ１４において作業者が選択した対応部分を貼り付けるための領域である。
ステップＳ９４０において、選択検知部５０２は、雛型機能仕様書の対応部分の選択を検知する。
【００６９】
ステップＳ１５において、作業者が、雛型機能仕様書において選択した対応部分に、ステップＳ１２でコピーしたプロセス仕様書の対応部分を貼り付ける。
【００７０】
ステップＳ９４１において、コピー認識部５０５は、プロセス仕様書の対応部分が機能仕様書の対応部分へ貼付けられたことを認識する。図２６の機能仕様書５０７において破線で囲んだ部分が、雛型機能仕様書の対応部分に相当する。なお、図２６の破線は対応部分を示す便宜的なものであり、機能仕様書５０７を構成するものではない。
【００７１】
このように、機能仕様書作成支援部５０は、表示された雛型の機能仕様書に、プロセス仕様書４１０のその一部分が貼り付けられた場合に、一部分が貼り付けられたことを検知する。
【００７２】
なお、機能仕様書５０７に対しプロセス仕様書の対応部分を貼付ける処理と並行して、雛型の機能仕様書の出力欄に対しプロセス仕様書４１０の出力列又は処理列に定型的に記述された内容（上述の例では「温度センサ」）を記述するようにしても良い。
【００７３】
ステップＳ９４２において、対応関係記録部５０６は、作業者が機能Ｓ／Ｗマトリクス５０１ａで選択した機能と、機能Ｓ／Ｗマトリクス５０１ａで選択したオブジェクトの交点のセル（図２２）に、対応関係を表すフラグを設定し、対応関係を記録する。具体例で示せば、図２４の機能Ｓ／Ｗマトリクス５０１ａにおける、オブジェクト属性ｘと、運転モードとの交点に相当するセルにフラグを設定する。
このように、機能仕様書作成支援部５０は、プロセス仕様書４１０の一部分が雛形の機能仕書に貼り付けられたことを検知した場合には機能Ｓ／Ｗマトリクス５０１ａに、一部分が貼り付けられた雛型の機能仕様書と、一部分がコピーされたプロセス仕様書との対応関係を記録する。
【００７４】
ステップＳ９４３において、対応関係記録部５０６は、機能項目リスト１０２とオブジェクトリスト３０６との次の対応部分についての処理を行うため、変数ａの値に１を足した値を変数ａに代入する。その後、処理は、ステップＳ１０を伴うステップＳ９３４へ進む。
【００７５】
作業者は、次の対応部分があると判断した場合は、再び、ステップＳ１０において、次の対応部分に対して、機能Ｓ／Ｗマトリクス５０１ａを選択（クリック）する。よって図６の処理は、作業者が機能Ｓ／Ｗマトリクス５０１ａを選択した回数ぶん行われる。
【００７６】
以上のように、機能とオブジェクトとの全ての対応の組み合わせ（作業者が判断した「対応部分」）に対して、図６の処理を繰り返すことで、解析対象Ｓ／Ｗの機能Ｓ／Ｗマトリクス５０１ａ（図２４）および、雛形の機能仕様書から出力用として生成された機能仕様書５０７（図２６）が完成する。
【００７７】
＊＊＊実施の形態１の効果＊＊＊
従来の技術では、条件記述や処理記述を抽出するために、処理の流れを箱と矢印で表現したフローチャートを、プロセス仕様書を作成する際に用いていたが、このフローチャートは、データの選択条件と値がみえにくいという課題があった。そこで、実施の形態１のトレーサビリティ情報抽出装置２０は、ソースコードから、変数の入力、出力、処理を表で表現したプロセス仕様書へ変換する。
よって、実施の形態１のトレーサビリティ情報抽出装置２０によれば、ソースコードから、変数の入力、出力、処理を表で表現したプロセス仕様書へ変換することが可能となるので、データの選択条件と値に着目した文書化が可能となり、データの選択条件と値を明確に示すことが可能となる。
【００７８】
また、以上に説明したトレーサビリティ情報抽出装置２０よれば、ソースコードから漏れなく機能仕様書を生成でき、ソースコードと仕様書間のトレーサビリティの確保が可能となる。
【００７９】
以上の実施の形態１ではトレーサビリティ情報抽出装置２０を説明したが、トレーサビリティ情報抽出装置２０の動作は、トレーサビリティ情報抽出方法、あるいはトレーサビリティ情報抽出プログラムとして把握することができる。
【符号の説明】
【００８０】
２０  トレーサビリティ情報抽出装置、３０  オブジェクトリスト生成部、４０  プロセス仕様書生成部、５０  機能仕様書作成支援部、９１  第１の一覧生成部、９２  マトリクス生成部、９３  トレース管理部、９４  表示処理部、９５  第２の一覧生成部、９６  仕様書生成部、９７  トレーサビリティ管理装置、１０１  ソースコード、１０２  機能項目リスト、３０１  第１のソースコード取得部、３０２  第１の探索部、３０３  第１の対応表生成部、３０４  第１の対応表、３０５  オブジェクトリスト整形部、３０６  オブジェクトリスト、４０１  第２のソースコード取得部、４０２  第２の探索部、４０３  第２の対応表生成部、４０４  第２の対応表、４０５  第３の探索部、４０６  第３の対応表生成部、４０７  第３の対応表、４０８  記述形式変換部、４０９  プロセス仕様書整形部、４１０  プロセス仕様書、５０１  機能Ｓ／Ｗマトリクス生成部、５０１ａ  機能Ｓ／Ｗマトリクス、５０２  選択検知部、５０３  仕様書表示部、５０４  編集部、５０５  コピー認識部、５０６  対応関係記録部、５０７  機能仕様書、６１０  プロセッサ、６２０  主記憶装置、６３０  補助記憶装置、６４０  表示装置、６５０  入力装置。
【図１】
2019040432.tif 000003
【図２】
2019040432.tif 000004
【図３】
2019040432.tif 000005
【図４】
2019040432.tif 000006
【図５】
2019040432.tif 000007
【図６】
2019040432.tif 000008
【図７】
2019040432.tif 000009
【図８】
2019040432.tif 000010
【図９】
2019040432.tif 000011
【図１０】
2019040432.tif 000012
【図１１】
2019040432.tif 000013
【図１２】
2019040432.tif 000014
【図１３】
2019040432.tif 000015
【図１４】
2019040432.tif 000016
【図１５】
2019040432.tif 000017
【図１６】
2019040432.tif 000018
【図１７】
2019040432.tif 000019
【図１８】
2019040432.tif 000020
【図１９】
2019040432.tif 000021
【図２０】
2019040432.tif 000022
【図２１】
2019040432.tif 000023
【図２２】
2019040432.tif 000024
【図２３】
2019040432.tif 000025
【図２４】
2019040432.tif 000026
【図２５】
2019040432.tif 000027
【図２６】
2019040432.tif 000028
【図２７】
2019040432.tif 000029