(57)【特許請求の範囲】
【請求項１】
ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定手段と、
該セパレータ設定手段により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定手段と、
前記セパレータ設定手段により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出手段と、
該コメント範囲抽出手段により抽出された各コメントの範囲毎に、前記キーワード設定手段により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出手段と、
該コメント項目抽出手段により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成手段と、
を含んで構成されたことを特徴とするプログラム仕様書作成装置。
【請求項２】
前記セパレータは、各種コメントの開始行と終了行を特定する構成である請求の範囲第１項記載のプログラム仕様書作成装置。
【請求項３】
前記セパレータ設定手段は、少なくとも、ファイルに関するコメントとシンボルに関するコメントとを識別するセパレータを設定させる構成である請求の範囲第１項記載のプログラム仕様書作成装置。
【請求項４】
前記コメント範囲抽出手段は、前記セパレータ設定手段によりセパレータが設定されていないコメントに対しては、他のコメントのセパレータ又は実行文に基づいて、コメントの範囲を抽出する構成である請求の範囲第１項記載のプログラム仕様書作成装置。
【請求項５】
前記コメント範囲抽出手段は、ファイルの先頭部分において２つのコメントが隣接して挿入され、かつ、前記セパレータ設定手段によりセパレータが設定されていないときには、前記２つのコメントの間に挿入された実行文に基づいて、コメントの範囲を抽出する構成である請求の範囲第１項記載のプログラム仕様書作成装置。
【請求項６】
前記コメント項目抽出手段は、ソースプログラムを記述したプログラム言語に応じたコメント識別子を取り除いたコメント項目を抽出する構成である請求の範囲第１項記載のプログラム仕様書作成装置。
【請求項７】
ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定工程と、
該セパレータ設定工程により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定工程と、
前記セパレータ設定工程により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出工程と、
該コメント範囲抽出工程により抽出された各コメントの範囲毎に、前記キーワード設定工程により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出工程と、
該コメント項目抽出工程により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成工程と、
をコンピュータに実行させることを特徴とするプログラム仕様書作成方法。
【請求項８】
ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定機能と、
該セパレータ設定工程により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定機能と、
前記セパレータ設定機能により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出機能と、
該コメント範囲抽出機能により抽出された各コメントの範囲毎に、前記キーワード設定機能により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出機能と、
該コメント項目抽出機能により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成機能と、
をコンピュータに実現させるためのプログラム仕様書作成プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リエンジニアリング，リバースエンジニアリング分野において、ソースプログラムに挿入されたコメントからプログラム仕様書を作成する技術に関し、特に、プログラム仕様書の作成効率を向上させる技術に関する。
【背景技術】
【０００２】
従来から、ソースプログラムには、一般的に、プログラムの処理内容等を記述したコメントが挿入される。コメントとしては、ファイルに関するコメント，シンボルに関するコメントがある。ここで、「シンボル」とは、例えば、ソースプログラムがＣ＋＋言語で記述されている場合には、クラス，メンバ関数，外部変数等のように、１つの特性を共通して持っているような要素の集合体をいう。そして、ファイルに関するコメントはファイルの先頭に、また、シンボルに関するコメントはシンボルの直前に挿入されるのが一般的である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従って、ファイルの先頭部分では、ファイルに関するコメントとシンボルに関するコメントとが隣接することとなり、次のような問題点があった。即ち、各コメントには、プログラム仕様書に対応したコメント項目（以下「項目」という）が含まれる。このため、各コメントに同一項目が含まれる場合、その項目はどちらのコメントに属するものであるかの判断が困難となり、項目が抽出できなかったり又は重複して抽出されていた。このような不具合があるため、抽出された項目に基づいてプログラム仕様書を作成しようとしても、項目をそのまま利用することができず、人手による修正作業が不可欠であった。
【０００４】
そこで、本発明は従来の問題点に鑑み、各項目が属するコメントを明確にすることで、項目の抽出精度を向上させ、プログラム仕様書の作成効率を向上させることを目的とする。
【課題を解決するための手段】
【０００５】
上記目的達成のため、第１の手段として、ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定手段と、該セパレータ設定手段により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定手段と、前記セパレータ設定手段により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出手段と、該コメント範囲抽出手段により抽出された各コメントの範囲毎に、前記キーワード設定手段により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出手段と、該コメント項目抽出手段により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成手段と、を含んでプログラム仕様書作成装置を構成したことを特徴とする。
【０００６】
かかる構成によれば、ソースプログラムに挿入されたコメントからプログラム仕様書を効率良く作成するには、次のようにすればよい。即ち、ソースプログラムを記述する際の作業として、コメント種別を識別するセパレータを、ソースプログラムに挿入する。そして、プログラム仕様書を作成するときに、セパレータ設定手段により、グラフィカルユーザインタフェースを介してセパレータを設定すると、設定されたセパレータに基づいて各コメントの範囲が抽出される。一方、抽出された各コメントの範囲毎に、キーワード設定手段によりグラフィカルユーザインタフェースを介して設定された抽出キーワードに基づいてソースプログラムからコメント項目が抽出される。そして、抽出されたコメント項目に基づいてプログラム仕様書が生成される。
【０００７】
このとき、ファイルの先頭において、種別が異なるコメントが隣接していても、両者を識別するセパレータにより、夫々のコメント範囲が正確かつ確実に識別される。従って、従来のように、コメント項目が抽出されなかったり、また、コメント項目が重複して抽出されることが防止され、抽出されたコメント項目をそのまま利用してプログラム仕様書を作成することができる。もって、コメント項目の抽出精度が向上し、プログラム仕様書の作成効率を向上することができる。
【０００８】
また、前記セパレータは、各種コメントの開始行と終了行を特定する構成としてもよい。
かかる構成によれば、各種コメントの開始行及び終了行は、セパレータにより確実に識別される。このため、コメント範囲の抽出精度が向上し、プログラム仕様書の作成効率をより向上することができる。
【０００９】
さらに、前記セパレータ設定手段は、少なくとも、ファイルに関するコメントとシンボルに関するコメントとを識別するセパレータを設定させる構成としてもよい。
かかる構成によれば、ファイルの先頭における隣接したコメントの識別を確実に行うことができる。即ち、一般的に、ファイルの先頭部分には、ファイルに関するコメントとシンボルに関するコメントとが隣接して挿入されている。このため、少なくとも両者を識別するセパレータを設定するようにすれば、ファイルの先頭部分におけるコメントの範囲の抽出が確実に行われるようになる。
【００１０】
この他には、前記コメント範囲抽出手段は、前記セパレータ設定手段によりセパレータが設定されていないコメントに対しては、他のコメントのセパレータ又は実行文に基づいて、コメントの範囲を抽出する構成としてもよい。また、前記コメント範囲抽出手段は、ファイルの先頭部分において２つのコメントが隣接して挿入され、かつ、前記セパレータ設定手段によりセパレータが設定されていないときには、前記２つのコメントの間に挿入された実行文に基づいて、コメントの範囲を抽出する構成としてもよい。
かかる構成によれば、種々のコメント記述方式に対応することができる。
【００１１】
また、前記コメント項目抽出手段は、ソースプログラムを記述したプログラム言語に応じたコメント識別子を取り除いたコメント項目を抽出する構成としてもよい。
かかる構成によれば、プログラム仕様書を生成する際に、不要であるコメント識別子が取り除かれるので、見易いプログラム仕様書を作成することができる。
【００１２】
第２の手段として、ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定工程と、該セパレータ設定工程により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定工程と、前記セパレータ設定工程により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出工程と、該コメント範囲抽出工程により抽出された各コメントの範囲毎に、前記キーワード設定工程により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出工程と、該コメント項目抽出工程により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成工程と、をコンピュータに実行させるプログラム仕様書作成方法を構成したことを特徴とする。
【００１３】
かかる構成によれば、ソースプログラムに挿入されたコメントからプログラム仕様書を効率良く作成するには、次のようにすればよい。即ち、ソースプログラムを記述する際の作業として、コメント種別を識別するセパレータをソースプログラムに挿入する。そして、プログラム仕様書を作成するときに、セパレータ設定工程によりグラフィカルユーザインタフェースを介してセパレータを設定すると、設定されたセパレータに基づいて各コメントの範囲が抽出される。一方、抽出された各コメントの範囲毎に、キーワード設定工程によりグラフィカルユーザインタフェースを介して設定された抽出キーワードに基づいてソースプログラムからコメント項目が抽出される。そして、抽出されたコメント項目に基づいてプログラム仕様書が生成される。
【００１４】
このとき、ファイルの先頭において、種別が異なるコメントが隣接していても、両者を識別するセパレータにより、夫々のコメント範囲が正確かつ確実に識別される。従って、従来のように、コメント項目が抽出されなかったり、また、コメント項目が重複して抽出されることが防止され、抽出されたコメント項目をそのまま利用してプログラム仕様書を作成することができる。もって、コメント項目の抽出精度が向上し、プログラム仕様書の作成効率を向上することができる。
【００１５】
第３の手段として、ソースプログラム毎に、ソースプログラムに挿入された各種コメントを識別するセパレータを、グラフィカルユーザインタフェースを介して設定させるセパレータ設定機能と、該セパレータ設定機能により設定されたセパレータ毎に、プログラム仕様書に対応するコメント項目の抽出キーワードを、グラフィカルユーザインタフェースを介して設定させるキーワード設定機能と、前記セパレータ設定機能により設定されたセパレータに基づいて、ソースプログラムの各コメントの範囲を抽出するコメント範囲抽出機能と、該コメント範囲抽出機能により抽出された各コメントの範囲毎に、前記キーワード設定機能により設定された抽出キーワードに基づいて、ソースプログラムからコメント項目を抽出するコメント項目抽出機能と、該コメント項目抽出機能により抽出されたコメント項目に基づいて、プログラム仕様書を生成するプログラム仕様書生成機能と、をコンピュータに実現させるためのプログラム仕様書作成プログラムをコンピュータ読取可能な記録媒体に記録した。
【００１６】
ここで、「記録媒体」とは、各種情報を確実に記録でき、かつ、必要に応じて確実に取り出し可能なものをいい、磁気テープ、磁気ディスク、磁気ドラム、ＩＣカード、ＣＤ−ＲＯＭ等の可搬記録媒体が該当する。
【００１７】
かかる構成によれば、セパレータ設定機能，キーワード設定機能，コメント範囲抽出機能，コメント項目抽出機能及びプログラム仕様書生成機能を実現するためのプログラム仕様書作成プログラムが記録媒体に記録される。従って、かかる記録媒体があれば、一般的な電子計算機を利用して、本発明に係るプログラム仕様書作成装置を容易に構築することができる。
【発明を実施するための最良の形態】
【００１８】
本発明をより詳細に説述するために、添付の図面に従ってこれを説明する。
【００１９】
図２〜図５は、本発明に係るプログラム仕様書作成装置（以下「仕様書作成装置」という）の処理対象となるソースプログラムの一例を示す。これらのソースプログラムは、プログラム言語としてＣ＋＋言語により記述され、そのコメントは、「／＊」で始まり「＊／」で終わる部分、及び、各行における「／／」以降の部分である。なお、ソースプログラムにおける各行の先頭に付された数字は、プログラムの行番号を表す。
【００２０】
図２に示すソースプログラムの構成について説明すると、次のようになる。即ち、１行目〜６行目がファイルに関するコメント、７行目〜１６行目がクラス（シンボル）に関するコメント、１７行目以降がクラスの定義文である。また、ファイルに関するコメントとクラスに関するコメントには、夫々、コメントの開始及び終了を表すセパレータが設けられる。ファイルに関するコメントでは、１行目及び６行目のコメント行に含まれる「＊＊＊＊＊＊＊＊＊＊＊＊」がセパレータとして機能し、クラスに関するコメントでは、７行目及び１６行目のコメント行に含まれる「−−−−−−−−−−−−」がセパレータとして機能する。
【００２１】
また、図３に示すソースプログラムは、クラスに関するコメントにセパレータが設けられていない例である。図４に示すソースプログラムは、ファイル及びクラスに関するコメントにセパレータが設けられておらず、両コメント間にセパレータとして機能する実行文「＃ｉｎｃｌｕｄｅ〈ｓｔｄｉｏ．ｈ〉」が挿入されている例である。図５に示すソースプログラムは、クラスに関するコメントがない例である。
【００２２】
図１は、仕様書作成装置の全体構成を示す。
仕様書作成装置は、表示装置１０と、入力装置２０と、外部記憶装置３０と、演算装置４０と、印刷装置６０と、を含んで構成される。表示装置１０は、ＣＲＴ，ＬＣＤ等のディスプレイにより構成され、ユーザに対するＧＵＩ（Ｇｒａｐｈｉｃａｌ Ｕｓｅｒ Ｉｎｔｅｒｆａｃｅ）機能を提供する。入力装置２０は、キーボード及びマウス等のポインティングデバイスにより構成され、ＧＵＩに対するデータ入力機能を提供する。外部記憶装置３０は、ハードディスク等により構成され、ソースプログラムの保存機能を提供する。演算装置４０は、少なくとも、中央処理装置（ＣＰＵ）とメモリとを含んで構成され、メモリにロードされたプログラムにより仕様書作成装置全体の制御を行う。印刷装置６０は、プリンタ等により構成され、作成されたプログラム仕様書の印刷機能を提供する。
【００２３】
また、演算装置４０には、抽出キーワード設定部４２と、コメント範囲抽出部４４と、コメント項目抽出部４６と、仕様書生成部４８と、仕様書印刷部５０と、がプログラムにより実装される。
【００２４】
抽出キーワード設定部４２では、表示装置１０及び入力装置２０と連携してＧＵＩが提供され、コメントの種別に対応した抽出キーワードが設定される。ここで、「コメントの種別」とは、例えば、ソースプログラムがＣ＋＋言語で記述されている場合、ファイルに関するコメント、クラスに関するコメント等の識別子をいう。なお、抽出キーワード設定部４２が、セパレータ設定手段，セパレータ設定工程，セパレータ設定機能，キーワード設定手段，キーワード設定工程及びキーワード設定機能として作用する。
【００２５】
コメント範囲抽出部４４では、外部記憶装置３０からソースプログラムファイル３２が読み込まれ、設定された抽出キーワードに基づいて、ファイル全体に亘るコメントの抽出範囲が抽出される。図２に示すソースプログラムを例にとって説明すると、ファイルに関するコメントの範囲として１行目〜６行目、クラスに関するコメントの範囲として７行目〜１６行目が抽出される。なお、抽出されるコメントの範囲は、ファイルの先頭部分だけではなく、それ以降のコメントも含まれることは言うまでもない。また、コメント範囲抽出部４４が、コメント範囲抽出手段，コメント範囲抽出工程及びコメント範囲抽出機能として作用する。
【００２６】
コメント項目抽出部４６では、設定された抽出キーワードに基づいて、各コメントに含まれるコメント項目が抽出される。図２に示すソースプログラムのファイルに関するコメントを例にとって説明すると、「１．概要」という抽出キーワードに基づいて「Ｃａｒクラスの宣言」、「２．作成者」という抽出キーワードに基づいて「佐々木 孝次」が抽出される。なお、コメント項目抽出部４６が、コメント項目抽出手段，コメント項目抽出工程及びコメント項目抽出機能として作用する。
【００２７】
仕様書生成部４８では、抽出されたコメント項目に基づいて、図６に示すようなプログラム仕様書が生成される。なお、仕様書生成部４８が、プログラム仕様書生成手段，プログラム仕様書生成工程及びプログラム仕様書生成機能として作用する。
仕様書印刷部５０では、生成されたプログラム仕様書のデータが印刷装置６０に送信され、印刷装置６０によりプログラム仕様書が印刷される。
【００２８】
次に、かかる構成からなる仕様書作成装置の作用について説明する。
図７は、プログラム仕様書を作成する手順のフローチャートを示す。
ステップ１（図では「Ｓ１」と略記する。以下同様）では、ソースプログラムからコメントを抽出するための抽出キーワードが設定される。即ち、「抽出キーワードの設定」コマンドを実行すると、抽出キーワード設定部４２が選択的に起動され、図８及び図９に示すような抽出キーワードの設定画面（以下「設定画面」という）１００が表示される。そして、この設定画面１００上で、コメントの種別毎に抽出キーワードが設定される。抽出キーワードとしては、コメントの開始及び終了を表すセパレータ情報とプログラム仕様書と対応させる仕様書情報とがある。
【００２９】
抽出キーワードを設定する手順としては、先ず、種別選択部１０２からコメントの種別を選択する。そして、追加ボタン１０４，削除ボタン１０６及び変更ボタン１０８を適当に操作して、セパレータ及びコメント項目に関する抽出キーワードを入力する。また、他のコメント種別に関する抽出キーワードを続けて設定する場合には、種別選択部１０２から他のコメントの種別を選択し、同様な操作を繰り返せばよい。抽出キーワードの入力が完了したら、ＯＫボタン１１０を操作することで抽出キーワードが確定する。一方、抽出キーワードの設定を中止したい場合には、任意の時点でキャンセルボタン１１２を押せば、抽出キーワードが直前の状態に戻る。
【００３０】
なお、図８では、ファイル情報に関する抽出キーワードとして、セパレータ情報「＊＊＊＊＊＊＊＊＊＊＊＊」及び仕様書情報「１．概要」，「２．作成者」が設定された様子が示されている（図９も同様）。そして、その結果として、図１０に示すような抽出キーワードが設定される。
ステップ２では、コメントの種別毎に、ソースプログラムからコメントが抽出される。即ち、「コメントの抽出」コマンドを実行すると、コメント範囲抽出部４４及びコメント項目抽出部４６が選択的に起動され、後述する図１１〜図１６のフローチャートに従ってコメントが抽出される。
【００３１】
ステップ３では、抽出されたコメントに基づいて、図６に示すようなプログラム仕様書が生成される。即ち、「プログラム仕様書の作成」コマンドを実行すると、仕様書生成部４８が選択的に起動され、その機能によりプログラム仕様書が生成される。
【００３２】
ステップ４では、生成されたプログラム仕様書が印刷装置６０から出力される。即ち、「プログラム仕様書の印刷」コマンドを実行すると、仕様書印刷部５０が選択的に起動され、印刷装置６０によりプログラム仕様書が印刷される。
なお、以上の手順では、プログラム仕様書の作成及び印刷は任意に選択できる構成であるが、例えば、コメントの抽出を行うと、プログラム仕様書の印刷まで自動的に行われるようにしてもよい。
【００３３】
図１１は、ソースプログラムからコメントを抽出する処理のメインルーチンを示す。
ステップ１０では、外部記憶装置３０からソースプログラムファイル３２が読み込まれ、ソースプログラム中のシンボル情報が抽出される。ここで、「シンボル情報」とは、シンボル定義文の行情報及びシンボルの種別情報をいう。図２に示すソースプログラムを例にとって説明すると、１７行目にクラスの定義文があるため、行情報が「１７行目」、種別情報が「クラス」となる。なお、抽出されたシンボル情報は、例えば、行情報をキーとして昇順に保持される。
【００３４】
ステップ１１では、ファイルに関するコメントを抽出するサブルーチンがコールされる。抽出されたコメントは、例えば、コメントの種別，仕様書に対するコメント項目をキーとしてテーブル形式で保持される（以下同様）。
ステップ１２では、次のシンボル情報が読み込まれる。即ち、最初の処理においては１番目のシンボル情報が読み込まれ、それ以降の処理においては２番目，３番目，・・・・・…のシンボル情報が読み込まれる。
【００３５】
ステップ１３では、シンボル情報をパラメータとして、シンボルに関するコメントを抽出するサブルーチンがコールされる。
ステップ１４では、シンボルに関するコメントの抽出が、ソースプログラムファイル３２の終端まで行われたか否か、即ち、コメントの抽出が完了したか否かが判定される。そして、コメントの抽出が完了したならば処理を終了し（Ｙｅｓ）、コメントの抽出が完了していなければステップ１２へと戻る（Ｎｏ）。
【００３６】
図１２は、ステップ１１においてコールされるサブルーチン、即ち、ファイルに関するコメントを抽出するサブルーチンを示す。
ステップ２０では、ファイルに関するコメントの抽出範囲を求めるサブルーチンがコールされる。
ステップ２１では、ステップ２０において求められたコメントの抽出範囲から、プログラム仕様書に対応するコメント項目を抽出するサブルーチンがコールされる。
【００３７】
図１３は、ステップ１３においてコールされるサブルーチン、即ち、シンボルに関するコメントを抽出するサブルーチンを示す。
ステップ３０では、シンボルに関するコメントの抽出範囲を求めるサブルーチンがコールされる。
ステップ３１では、ステップ３０において求められたコメントの抽出範囲から、プログラム仕様書に対応するコメント項目を抽出するサブルーチンがコールされる。なお、ここでコールされるサブルーチンは、先のステップ２１でコールされるサブルーチンと同一である。
【００３８】
図１４は、ステップ２０でコールされるサブルーチン、即ち、ファイルに関するコメントの抽出範囲を求めるサブルーチンを示す。
ステップ４０では、ソースプログラムの１行目の内容が取り出される。
ステップ４１では、取り出された１行目の内容が実行文であるか否かが判定される。ここで、「実行文」とは、コメント行以外の文をいい、例えば、ソースプログラムがＣ＋＋言語で記述されている場合、「＃ｄｅｆｉｎｅ」文等のプリプロセッサの処理対象文，変数の定義文，クラスの定義文等が該当する。そして、１行目の内容が実行文であれば、ソースプログラム中にはファイルに関するコメントがないと判断し、ステップ４７へと進む（Ｙｅｓ）。一方、１行目の内容が実行文でなければ（即ち、コメント行）ステップ４２へと進む（Ｎｏ）。
【００３９】
ステップ４２では、１行目の内容がシンボルのセパレータであるか否かが判定される。ここで、シンボルのセパレータは、図９に示す抽出キーワードの設定画面１００で設定されたものが基準となる（以下同様）。そして、シンボルのセパレータであれば、ソースプログラムの１行目はシンボルに関するコメントであると判断できるので、ファイルに関するコメントがないと判断して、ステップ４７へと進む（Ｙｅｓ）。一方、シンボルのセパレータでなければ、ファイルに関するコメントの開始行であると判断し、ステップ４３へと進む（Ｎｏ）。
【００４０】
ステップ４３では、次の行の内容（以下「行内容」という）が取り出される。
ステップ４４では、行内容が実行文であるか否かが判定される。そして、行内容が実行文であれば、ファイルに関するコメントの終了を表すセパレータがない形式（図４のソースプログラム参照）であり、前行でファイルに関するコメントが終了したと判断して、ステップ４７へと進む（Ｙｅｓ）。一方、行内容が実行文でなければ、ファイルに関するコメントが続いていると判断して、ステップ４５へと進む（Ｎｏ）。
【００４１】
ステップ４５では、行内容がファイルのセパレータであるか否かが判定される。そして、ファイルのセパレータであれば、ファイルに関するコメントの終了行であると判断して、ステップ４７へと進む（Ｙｅｓ）。一方、ファイルのセパレータでなければ、ファイルに関するコメントが続いていると判断して、ステップ４６へと進む（Ｎｏ）。
【００４２】
ステップ４６では、行内容がシンボルのセパレータであるか否かが判定される。そして、シンボルのセパレータであれば、前行でファイルに関するコメントが終了したと判断して、ステップ４７へと進む（Ｙｅｓ）。一方、シンボルのセパレータでなければ、ファイルに関するコメントが続いていると判断して、ステップ４３へと戻る（Ｎｏ）。ここで、このような判定を行っているのは、例えば、ファイルに関するコメントの終了を表すセパレータがない場合を考慮したものである。
【００４３】
ステップ４７では、ファイルに関するコメントの抽出範囲が算出される。なお、ステップ４１又はステップ４２でファイルに関するコメントがないと判断された場合には、ファイルに関するコメント行がない旨を表す情報、例えば、開始行及び終了行に「０」が設定される。
【００４４】
図１５は、ステップ３０でコールされるサブルーチン、即ち、シンボルに関するコメントの抽出範囲を求めるサブルーチンを示す。
ステップ５０では、シンボル定義行の１行前の内容が取り出される。ここで、シンボル定義行は、ステップ１３でシンボルに関するサブルーチン（図１３参照）をコールしたときのパラメータ（シンボル情報）の内容に基づき特定される。例えば、図２のソースプログラムの場合には、シンボル（クラス）の定義文が１７行目にあるため、１６行目の内容が取り出される。
【００４５】
ステップ５１では、シンボル定義行の１行前の内容が実行文であるか否かが判定される。そして、シンボル定義文の１行前の内容が実行文であれば、シンボルに関するコメントがないと判断して、ステップ５６へと進む（Ｙｅｓ）。一方、シンボル定義文の１行前の内容が実行文でなければ、ステップ５２へと進む（Ｎｏ）。なお、図５に示すように、シンボル定義文の直前のコメントがファイルのコメントである場合には、重複した範囲を抽出しないようにするため、ファイルに関するコメントの抽出範囲を参照することが望ましい。
【００４６】
ステップ５２では、シンボル定義文の１行前の内容が他のセパレータ、即ち、ファイル及び他のシンボルのセパレータであるか否かが判定される。そして、他のセパレータであれば、シンボルに関するコメントがないと判断して、ステップ５６へと進む（Ｙｅｓ）。一方、他のセパレータでなければ、シンボルに関するコメントの終了行であると判断して、ステップ５３へと進む（Ｎｏ）。
【００４７】
ステップ５３では、前の行の内容が取り出される。即ち、ファイルの先頭に向かってファイル解析を行い、シンボルに関するコメントの開始行を探索する。
ステップ５４では、行内容が実行文であるか否かが判定される。そして、行内容が実行文であれば、シンボルに関するコメントの開始を表すセパレータがない形式（図３のソースプログラム参照）であり、次の行からシンボルに関するコメントが始まると判断して、ステップ５６へと進む（Ｙｅｓ）。一方、行内容が実行文でなければ、シンボルに関するコメントが続いていると判断して、ステップ５５へと進む（Ｎｏ）。
【００４８】
ステップ５５では、行内容が他のセパレータであるか否かが判定される。そして、行内容が他のセパレータであれば、シンボルに関するコメントの開始を表すセパレータがない形式（図３のソースプログラム参照）であり、次の行からシンボルに関するコメントが始まると判断して、ステップ５６へと進む（Ｙｅｓ）。一方、行内容が他のセパレータでなければ、シンボルに関するコメントが続いていると判断して、ステップ５３へと戻る（Ｎｏ）。
【００４９】
ステップ５６では、ファイルに関するコメントの抽出範囲が算出される。なお、ステップ５１又はステップ５２でファイルに関するコメントがないと判断された場合には、ステップ４７と同様な情報が設定される。
【００５０】
図１６は、ステップ２１及びステップ３１でコールされるサブルーチン、即ち、プログラム仕様書に必要なコメント項目を抽出するサブルーチンを示す。
ステップ６０では、ファイル又はシンボルに関するコメント行の１行目の内容が取り出される。ここで、取り出される内容は、コメント行を表すコメント識別子、例えば、図２に示すソースプログラムのファイルに関するコメントでは、「／＊」及び「＊／」を除いた「＊＊＊＊＊＊＊＊＊＊＊＊」が取り出される。
【００５１】
ステップ６１では、コメント行の内容が仕様書情報であるか否かが判定される。そして、仕様書情報であればステップ６２へと進み（Ｙｅｓ）、仕様書情報でなければステップ６４へと進む（Ｎｏ）。
ステップ６２では、仕様書情報に応じたコメント項目を格納する配列の要素番号、ポインタ等が変更される。
【００５２】
ステップ６３では、次の行がコメント項目の抽出範囲であるか否かが判定される。そして、コメント項目の抽出範囲であればステップ６０へと戻り（Ｙｅｓ）、コメント項目の抽出範囲でなければ処理を終了する（Ｎｏ）。
【００５３】
ステップ６４では、コメント項目の格納先が設定済みであるか否かが判定される。即ち、ステップ６２の処理で格納先が変更（設定）されたか否かが判定される。このような判定を行うためには、格納先が未設定の場合には、格納先として「ＮＵＬＬ」を設定しておけばよい。そして、格納先が設定済みであればステップ６５へと進み（Ｙｅｓ）、格納先が未設定であればステップ６３へと進む（Ｎｏ）。ここで、格納先が未設定である場合の例としては、コメント行の１行目を処理しているときであって、その行がセパレータである場合である。
【００５４】
ステップ６５では、コメント項目が所定の格納先に格納される。
以上説明した処理によれば、ソースプログラムに挿入されたコメントからプログラム仕様書を効率良く作成するには、ソースプログラムを記述する際に、コメント種別を識別するセパレータを挿入する。そして、プログラム仕様書を作成するときに、挿入したセパレータ情報を設定すると、そのセパレータ情報に基づいて各コメントの範囲が抽出される。このとき、ファイルの先頭において、ファイルに関するコメントとシンボルに関するコメントとが隣接していても、両者を識別するセパレータにより、その範囲が正確かつ確実に識別される。その後、抽出された範囲内において、各コメントに応じた夫々のコメント項目が抽出され、プログラム仕様書が生成される。
【００５５】
従って、ファイルの先頭におけるコメント種別の混同が防止でき、抽出されたコメント項目をそのまま用いてプログラム仕様書を作成することができる。このため、プログラム仕様書の作成効率が大幅に向上し、例えば、プログラム開発期間の短縮，開発コストの削減等を図ることができる。
【００５６】
なお、以上説明した仕様書作成装置では、プログラム言語としてＣ＋＋言語により記述されたソースプログラムを処理対象としたが、他のプログラム言語、例えば、ＲＡＳＩＣ，ＣＯＢＯＬ，ＦＯＲＴＲＡＮ，Ｊａｖａ等を処理対象としてもよい。
【００５７】
このような機能を実現するプログラムを、例えば、磁気テープ，磁気ディスク，磁気ドラム，ＩＣカード，ＣＤ−ＲＯＭ等の記録媒体に記録しておけば、本発明に係るプログラム仕様書作成プログラムを市場に流通させることができる。そして、かかる記録媒体を取得した者は、例えば、一般的な電子計算機を利用して、本発明に係るプログラム仕様書作成装置を容易に構築することができる。
【産業上の利用可能性】
【００５８】
以上説明したように、本発明に係るプログラム仕様書作成装置及びプログラム仕様書作成方法は、コメント項目の抽出精度が向上するので、極めて有用なものである。また、本発明に係るプログラム仕様書作成プログラムを記録した記録媒体は、一般的な電子計算機を利用してプログラム仕様書作成装置を容易に構築できるので、極めて有用なものである。
【図面の簡単な説明】
【００５９】
【図１】本発明に係る仕様書作成装置の全体構成図である。
【図２】処理対象となるソースプログラムの第１例を示す図である。
【図３】処理対象となるソースプログラムの第２例を示す図である。
【図４】処理対象となるソースプログラムの第３例を示す図である。
【図５】処理対象となるソースプログラムの第４例を示す図である。
【図６】生成されるプログラム仕様書の一例を示す図である。
【図７】仕様書作成手順の流れを示すフローチャートである。
【図８】抽出キーワードの設定画面の一例を示す図である。
【図９】抽出キーワードの設定画面の一例を示す図である。
【図１０】設定された抽出キーワードを示し、（Ａ）はファイルに関するコメント情報、（Ｂ）はクラスに関するコメント情報を示す。
【図１１】コメントを抽出するメインルーチンのフローチャートである。
【図１２】ファイルに関するコメントを抽出するサブルーチンのフローチャートである。
【図１３】シンボルに関するコメントを抽出するサブルーチンのフローチャートである。
【図１４】ファイルに関するコメントの抽出範囲を求めるサブルーチンのフローチャートである。
【図１５】シンボルに関するコメントの抽出範囲を求めるサブルーチンのフローチャートである。
【図１６】仕様書に必要なコメント項目を抽出するサブルーチンのフローチャートである。
【図１】
0003886726.tif 000002
【図２】
0003886726.tif 000003
【図３】
0003886726.tif 000004
【図４】
0003886726.tif 000005
【図５】
0003886726.tif 000006
【図６】
0003886726.tif 000007
【図７】
0003886726.tif 000008
【図８】
0003886726.tif 000009
【図９】
0003886726.tif 000010
【図１０】
0003886726.tif 000011
【図１１】
0003886726.tif 000012
【図１２】
0003886726.tif 000013
【図１３】
0003886726.tif 000014
【図１４】
0003886726.tif 000015
【図１５】
0003886726.tif 000016
【図１６】
0003886726.tif 000017