(57)【要約】【課題】高級言語により記述されたプログラムの流用開発において、プログラムの変更漏れおよび変更誤りの検出を効率的に行うことができるプログラムレビュー支援装置を得ること。【解決手段】レビュー対象のプログラムは入出力装置２を介して入力され、プログラム記憶部６に格納される。プログラム解析部４は、プログラムを文法的に解析し、その解析情報を解析済みプログラム情報記憶部７に格納する。表示データ作成部５は、表示規則記憶部９に格納された表示規則情報、プログラム、およびプログラムの解析情報に基づいて、表示用のデータを作成し表示データ記憶部８に格納する。表示データにおいては、特定の識別子と他の識別子との表示上の表現が変更されており、レビュー者に区別させやすくしている。【選択図】        図１
2008269184.tif 000002
【特許請求の範囲】
【請求項１】
レビュー対象のプログラムが入力される入力部と、
前記プログラムが格納されるプログラム記憶部と、
変数、関数、マクロおよび型を含むプログラム要素を識別するための識別子に対して、前記プログラムを文法的に解析するプログラム解析部と、
このプログラム解析部による解析情報データが格納される解析済みプログラム情報記憶部と、
前記プログラムのレビュー結果を表示するための表示規則を与える表示規則データが予め格納された表示規則記憶部と、
前記プログラム、前記解析情報データ、および前記表示規則データに基づいて表示用のデータを作成する表示データ作成部と、
前記プログラム解析部および前記表示データ作成部の制御を行うシステム制御部と、
前記表示データを出力し前記プログラムのレビュー結果を表示する出力部と、
を備え、
前記表示データ作成部は、前記表示規則データに指定された区別表示対象の識別子に対する表示上の表現を、その他の識別子に対する表示上の表現とは異ならせることにより、前記区別表示対象の識別子が区別表示されるように表示データを作成することを特徴とするプログラムレビュー支援装置。
【請求項２】
前記表示規則データにおいて、前記区別表示対象の識別子が、識別子の文法上の種別毎に指定されていることを特徴とする請求項１に記載のプログラムレビュー支援装置。
【請求項３】
前記表示規則データにおいて、前記区別表示対象の識別子が、識別子の前記プログラムにおける参照可能な範囲であるスコープ毎に指定されていることを特徴とする請求項１または２に記載のプログラムレビュー支援装置。
【請求項４】
前記表示規則データにおいて、前記区別表示対象の識別子が、識別子毎に個別に指定されていることを特徴とする請求項１〜３のいずれか１つに記載のプログラムレビュー支援装置。
【請求項５】
前記表示上の表現として、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示、点滅表示の点滅周期、もしくはアンダーライン表示、の違い、または各違いの任意の組み合わせを利用することを特徴とする請求項１〜４のいずれか１つに記載のプログラムレビュー支援装置。
【請求項６】
前記表示規則記憶部に格納された表示規則データの内容は、前記入力部を介して変更可能であり、前記システム制御部は、前記表示規則データの内容の更新を検知すると、前記解析済みプログラム情報記憶部の内容更新の指示は行わずに、前記表示データ作成部に対して表示データの再作成を指示することを特徴とする請求項１〜５のいずれか１つに記載のプログラムレビュー支援装置。
【請求項７】
前記表示データ作成部は、２つの異なる識別子に対して、文字列の長さを含む表示上の文字列の性質を相互に比較することにより、一方の識別子に関する表示上の文字列の性質と他方の識別子に関する表示上の文字列の性質とが異なる場合には、区別表示指定にかかわらず、前記２つの異なる識別子に対して同一の表示上の表現を与えるような表示データの作成が可能であることを特徴とする請求項１〜６のいずれか１つに記載のプログラムレビュー支援装置。
【請求項８】
前記プログラムの関数内において、識別子が、読み取りだけ行われている変数か、書き込みだけ行われている変数か、または読み込みおよび書き込み共に行われている変数か、に応じて、前記表示規則データにおける表示規則を区別して指定できることを特徴とする請求項１〜７のいずれか１つに記載のプログラムレビュー支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを開発する際のプログラムのレビュー作業を支援する装置に関するものである。
【背景技術】
【０００２】
従来、高級言語プログラムのレビュー方法として、プログラムコードを印刷して机上でレビューし、または複数のディスプレーもしくはプロジェクタなどを用いて複数人でレビューする方法がある。
【０００３】
一方、プログラムの開発においては、部分的にプログラムを変更するといった、流用によるプログラムの開発がよく行われる。この場合、流用元のプログラムを、エディタを用いてコピーし、変更が必要な箇所のみを書き換えるといった作業が行われる。
【０００４】
上記のようにプログラムを流用して開発する場合、変更漏れおよび変更誤りが生じやすい。変更漏れおよび変更誤りは、試験工程で見つけることも可能であるが、できれば、開発のより初期の段階であるプログラムレビュー段階で発見することが、ソフトウェア開発のコストおよび納期上、望ましい。
【０００５】
しかし、プログラムの変更は、１文字だけ変えるなど変化が小さく気づきにくいが、このような場合でもプログラムの振る舞いが全く異なってしまうような重要な変更が生じることがある。
【０００６】
そこで、プログラムを正しく流用したか否かを確認するための作業として、文字列を検索する作業などがあるが、これは文字だけを単純に比較、抽出するだけなので、本来、確認したい内容のみを効率的にレビュー者に提供することが困難である。また、検索対象の文字列は１度に１つしか与えられず、誤りを検出する作業としては効率が悪い。
【０００７】
また、従来、プログラムにおいて、関数、変数、リテラル値、およびコメント分などの文法上の要素毎にフォントの色などを変えて表示する機能は存在するが、同一要素の文字列が異なる識別子に対しては同一の表現で表示されるため、上記の流用時の誤りを検出する作業を効率的に実施することが困難である。
【０００８】
また、従来の表示方法によれば、プログラムレビュー時に、ある変数が、読み取りしかされていない変数か、書き込みしかされていない変数か、または読み取りおよび書き込み共に行われている変数か、を直感的に理解することは困難である。そのため、未初期化および未参照の変数を検出する作業を効率的に実施することは難しく、さらに、関数の単体試験設計を行う場合、プログラムから試験に必要な入力変数および出力変数を抽出する作業を効率的に実施することが難しい。
【０００９】
特許文献１においては、ソースプログラム中の指定された変数のみの色を変更することで、他の変数との違いを分かりやすくして表示する手段を提供している。
【００１０】
また、特許文献２においては、プログラム中の変数に関する解析情報を出力するプログラム解析装置が記載されており、特定の変数が出現するソースコードの行をハイライト表示させる表示処理手段を提供している。
【００１１】
また、特許文献３においては、依存関係よりアドレスとそのアドレスをハイライト表示することで、変数間の依存関係を分かりやすく表示する手段を提供している。
【００１２】
【特許文献１】特開２００１−１４２６８４号公報
【特許文献２】特開平９−２７４５６２号公報
【特許文献３】特開２００３−１０８４０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上記従来の技術によれば以下に示すような問題点がある。すなわち、流用して開発を行ったプログラムでは変更漏れおよび変更誤りが生じ易く、これによって作り込まれる不具合を検出するには、特定の識別子を指定する必要があるため、識別子毎に指定作業が必要になり、作業効率が悪いという問題点がある。例えば、特許文献１では、個々に変数を指定し、この指定した変数の色を変更している。また、特許文献２では、変数を指定しない場合、その変数がある行をレビュー者が知ることができない。
【００１４】
また、複数の異なる識別子を一度に表示するには、その違いを色の違いまたはハイライト表示の違いで区別する方法があるが、その差を分かりやすく表示するには、識別子の個数に応じて複数の表示上の表現を用いる必要がある。しかしながら、色の違いまたはハイライト表示の違いで区別する方法では、区別すべき識別子の個数が増大すると、差を明確にする表示上の表現の個数に制限が生じ易く、識別子の違いを分かりやすく表示させることが困難になるという問題点がある。
【００１５】
また、プログラムレビュー時に、変数の読み取り、書き込みの関係を直感的に理解することが困難なため、未初期化変数および未参照変数の抽出作業の効率が悪いという問題点がある。さらに、関数の単体試験設計を行う場合、プログラムから試験に必要な入力変数および出力変数を効率的に抽出することが難しいという問題がある。
【００１６】
また、特許文献３に開示された従来技術においては、レビュー対象のプログラムを実行する必要があるため、開発途中の実行不可能なプログラムには利用することができないという問題点がある。
【００１７】
本発明は、上記に鑑みてなされたものであって、高級言語により記述されたプログラムの流用開発において、プログラムの変更漏れおよび変更誤りの検出を効率的に行うことができるプログラムレビュー支援装置を得ることを目的とする。
【課題を解決するための手段】
【００１８】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラムレビュー支援装置は、レビュー対象のプログラムが入力される入力部と、前記プログラムが格納されるプログラム記憶部と、変数、関数、マクロおよび型を含むプログラム要素を識別するための識別子に対して、前記プログラムを文法的に解析するプログラム解析部と、このプログラム解析部による解析情報データが格納される解析済みプログラム情報記憶部と、前記プログラムのレビュー結果を表示するための表示規則を与える表示規則データが予め格納された表示規則記憶部と、前記プログラム、前記解析情報データ、および前記表示規則データに基づいて表示用のデータを作成する表示データ作成部と、前記プログラム解析部および前記表示データ作成部の制御を行うシステム制御部と、前記表示データを出力し前記プログラムのレビュー結果を表示する出力部と、を備え、前記表示データ作成部は、前記表示規則データに指定された区別表示対象の識別子に対する表示上の表現を、その他の識別子に対する表示上の表現とは異ならせることにより、前記区別表示対象の識別子が区別表示されるように表示データを作成することを特徴とする。
【発明の効果】
【００１９】
この発明によれば、プログラムレビュー時に、綴りが似ている識別子に対しても一致または不一致の認識性が向上する。これにより、特に、流用開発において、コンパイラ等では検出できないタイプミスに起因する不具合の発見の効率が向上する。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明にかかるプログラムレビュー支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２１】
実施の形態１．
図１は、本実施の形態にかかるプログラムレビュー支援装置の構成を示す図である。図１に示すように、本実施の形態にかかるプログラムレビュー支援装置１は、レビュー対象のプログラムが入力される入出力装置２と、システム制御部３と、レビュー対象のプログラムを文法的に解析するプログラム解析部４と、表示用のデータを作成する表示データ作成部５と、レビュー対象のプログラムを格納するプログラム記憶部６と、プログラム解析部４による解析情報を格納する解析済みプログラム情報記憶部７と、表示用のデータを格納する表示データ記憶部８と、表示データを作成する際に利用される表示規則を格納する表示規則記憶部９と、を備えて構成される。
【００２２】
本実施の形態において、プログラムレビュー支援装置１は、例えば、図２に示すようなＣ言語で記述されたプログラム（ファイル名：ｆｉｌｅ１．ｃ）をレビュー対象のプログラムとする。なお、レビュー対象のプログラムに使用される言語はＣ言語に限定されず、本実施の形態は、他の高級言語（例えば、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｂａｓｉｃ等）に対しても同様に適用することができる。
【００２３】
図１のシステム制御部３、プログラム解析部４、表示データ作成部５、プログラム記憶部６、解析済みプログラム情報記憶部７、表示データ記憶部８、および表示規則記憶部９は、コンピュータのＣＰＵなどの演算装置と、演算装置が解釈するプログラムが格納されるハードディスクなどの記憶装置と、演算に必要なメモリ装置などにより実現される。特に、プログラム記憶部６、解析済みプログラム情報記憶部７、表示データ記憶部８、および表示規則記憶部９は、メモリ装置またはハードディスクなどの記憶装置である。入出力装置２は入力装置および出力装置として機能し、プログラムレビュー支援装置１とレビュー者との間のＩ／Ｆであり、ディスプレー、キーボード、およびマウス等から構成される。この入出力装置２からの指示をシステム制御部３が解釈し、その内容に対応した処理を図３の流れ図にしたがって実行する。
【００２４】
図３は、プログラムレビュー支援装置１の処理手順を示す流れ図である。Ｓ３０１において、レビュー対象のファイルをレビュー者が指定し、入出力装置１を介してレビュー対象のプログラムを入力しプログラム記憶部６に格納する。
【００２５】
Ｓ３０２において、プログラム解析部４が、プログラム記憶部６に格納されているレビュー対象のファイルのプログラムに対して、一般的にコンパイラで実施されている字句解析、構文解析等の静的解析を実施し、ファイル中のどの識別子が同一であるか、その識別子はファイルのどの箇所に存在するか、といったプログラム解析情報を解析済みプログラム情報記憶部７に格納する。ここで、識別子とは、プログラムを構成する変数、関数、マクロ、および型等の識別可能な要素を総称して表現している。
【００２６】
ここで、解析済みプログラム情報記憶部７に格納された解析情報の一例を図４に示す。なお、このファイルの解析は１ファイル毎に実施するが、レビュー者から見て複数のファイルの解析を同時に実施してもよい。また、図４においては、解析済みプログラム情報記憶部７に格納されている解析情報が、分かり易いように表形式で記述されているが、例えば、高速化を図るためバイナリ化、またはデータベース化されていてもよく、記憶形式、データ構造なども任意のものであってよい。
【００２７】
図４では、プログラム中の識別子の識別子名、識別子の種別、識別子の文字列の長さ、プログラムにおける識別子のスコープ、および出現位置として、出現するファイル名、出現する行、出現する行の先頭からの位置を示す。出現位置が複数ある場合は、１つの識別子に対して、複数の出現位置の情報が与えられる。
【００２８】
識別子の種別には、「ローカル変数」、「グローバル変数」、「ファイルｓｔａｔｉｃ変数」、「関数ｓｔａｔｉｃ変数」、「グローバル関数」、「ファイルｓｔａｔｉｃ関数」「関数マクロ」、「非関数マクロ」、および「型」など、プログラムの識別子を分類するための情報である。なお、前記の種別の分類は一例であり、識別子の種別が分類できれば、この他の分類でも良い。
【００２９】
識別子のスコープは、プログラムにおける識別子のスコープ（参照できる範囲）を分類するための情報であり、プログラム全体の場合は「グローバル」、ファイルの場合はそのファイル名、関数の場合はその関数名を記憶する。なお、前記のスコープの分類は一例であり、識別子のスコープが分類できれば、この他の分類でも良い。
【００３０】
例えば、識別子ｖａｌ１は、図２に示すファイル名ｆｉｌｅ１．ｃに記述された整数型のローカル変数であり、その文字列の長さは４である。また、識別子ｖａｌ１は、ｆｉｌｅ１．ｃにおいて３箇所に記述され、例えば９行目においては行頭から右に７の位置に最初の文字（すなわち、ｖ）が現れる。図４では、前述の内容が記載されている。なお、図２においては、プログラムの各行の先頭に行番号およびコロンが示されているが、この部分は行番号を表示するためのものでありプログラムに含まれていない。
【００３１】
レビュー者は、レビュー結果をどのような規則に従って表示するかを決定し、事前に入出力装置２を介してこの決定した表示規則の情報を入力し、表示規則記憶部９に記憶させる。図５は、表示規則記憶部９の記憶内容の一例を示す図である。図５では、特定の識別子を他の識別子と区別しやすいように表示するための設定（以降、区別表示対象／非対象設定という。）の一例を示している。区別表示対象／非対象設定は、種別毎設定、スコープ毎設定、および個別識別子設定に分類されており、識別子が区別表示対象である場合には「対象」、区別表示対象でない場合には「非対象」として設定する。
【００３２】
種別毎設定とは、解析済みプログラム情報記憶部７に格納された解析情報に示す種別毎に、特定の種別を他の種別と区別しやすいように表示するか否かの設定である。スコープ毎設定とは、解析済みプログラム情報記憶部７に格納された解析情報に示すスコープ毎に、特定のスコープを他のスコープと区別しやすいように表示するか否かの設定である。ここで、スコープが「全ファイル」とは全てのファイルスコープに対しての設定であり、スコープが「全関数」とは全ての関数スコープに対しての設定である。個別識別子設定とは、個別の識別子に対して他の識別子と区別しやすいように表示するか否かの設定である。ここで、識別子は、識別子名、種別、およびスコープで、他の識別子と区別する。種別毎設定、スコープ毎設定、個別識別子設定の優先順位は、個別識別子設定、スコープ毎設定、種別毎設定の順に高いとする。例えば、スコープ毎設定において、スコープ「グローバル」の区別表示対象／非対象設定が「対象」となっている場合には、種別毎設定によらずに、例えばグローバル変数は区別表示される。
【００３３】
図５では、種別毎設定において、識別子の文法上の種別が「ローカル変数」、「グローバル変数」、「ファイルｓｔａｔｉｃ変数」、「関数ｓｔａｔｉｃ変数」、「グローバル関数」、「ファイルｓｔａｔｉｃ関数」である識別子に対して区別表示対象／非対象設定が「対象」であり、識別子の文法上の種別が「関数マクロ」、「非関数マクロ」、「型」である識別子に対して区別表示対象／非対象設定が「非対象」であることを意味する。スコープ毎設定において、スコープが「グローバル」、「全ファイル」、「全関数」である識別子に対して区別表示対象／非対象設定が「対象」であることを意味する。また、個別識別子設定はされていない。なお、図５の情報の構造は一例であり、レビュー対象のプログラムに使用される言語が異なれば種別毎設定の分類およびスコープ毎設定の分類が異なっても良い。また、レビュー対象のプログラムに使用される言語によらず、任意の識別子を他の識別子と区別しやすいように表示することができる設定であれば、他の分類を使用するものであっても良い。
【００３４】
次に、Ｓ３０３において、図１の表示データ作成部５が表示規則記憶部９に記憶されている区別表示対象／非対象設定に従い、どの識別子を他の識別子と区別しやすいように表示するかの判定を行い、プログラム記憶部６に対し、解析済みプログラム情報記憶部７を参照して、他の識別子と区別しやすいように表示すべき識別子の表示方法が他の識別子の表示方法とは異なるレビュー用の表示データを作成し、このレビュー用の表示データを表示データ記憶部８に格納する。区別表示対象の識別子と他の識別子に対する表示上の表現の変更の仕方としては、例えば、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示する場合の色、点滅表示を行う場合の点滅周期、もしくはアンダーラインの有無等、の変更、または各変更の任意の組合せにより、差異を明確にする。表示上の表現の設定は、表示データ作成部５にて、区別表示すべき識別子の個数に応じて適宜選択設定
されるものとする。図６に、図２のプログラムおよび図５の表示規則に対して、識別子を区別しやすいように表示上の表現を変更した表示データの一例を示す。この表示データは表示データ記憶部８に格納される。図６においては、例えば、グローバル関数であるｆｕｎｃ１は、スコープ毎設定に従って区別表示され、特にハイライト表示されている。また、例えば、ローカル変数であるｖａｌ１は、種別毎設定に従って区別表示され、特に、ハイライト、ボールドおよび下線表示を組み合わせて表示されている。
【００３５】
続いて、Ｓ３０４において、上記で作成した表示データを、入出力装置２を介して表示する。
【００３６】
ここで、仮に図２のプログラムの１３行目のｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ２＿ｖａｌ１が誤って、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１となっていた場合の一例を、図７に示す。また、図７に対し、他の識別子と区別しやすいように表示上の表現を変更した表示データの一例を図８に示す。この表示データは、表示データ記憶部８に記憶される。図７のプログラムでは、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１という変数はプログラム中に定義されているため、コンパイルしただけではこの誤記を検出することはできない。
【００３７】
図２のプログラムは、本来、１３行目でｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１とｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ２＿ｖａｌ１という異なる２つの変数の和をｖａｌ１に代入する仕様である。図７の従来の表現では、識別子間の表現に違いがないため、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ２＿ｖａｌ１が誤ってｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１となっていることが認識しにくく、かなり注意を払ったレビューを行わない限り、この誤りに気づくことは難しい。図８では、図７と比較し、識別子間の表現が異なることにより、１３行目で同じ識別子が足されていることが容易に認識できるようになり、誤りが気づきやすい。
【００３８】
以上説明したように、本実施の形態によれば、高級言語で記述されたプログラムのレビュー時に、綴りが似ている識別子に対しても一致または不一致の認識性が向上するため、流用開発時のコピーおよびペーストによる開発において、コンパイラでは検出が困難なタイプミスに起因する不具合の発見の効率が向上する。特に、流用開発時において、変更漏れおよび変更誤りを、従来のように識別子を指定して検出する必要がないため、作業効率が向上する。また、本実施の形態は、レビュー対象のプログラムを実行する必要がなく、開発途中の実行不可能なプログラムに対して適用することができる。
【００３９】
実施の形態２．
実施の形態１では、図５に示す表示規則データにおけるスコープ毎設定において、「グローバル」を区別表示対象／非対象設定において「対象」としている。本実施の形態では、これを図９に示すように「非対象」とし、スコープが「グローバル」である識別子を、他の識別子と区別しやすいような表示をさせないようにしている。図２のプログラムに対し、表示規則記憶部９に記憶された表示規則データを図９に示すデータとした場合、表示データ作成部５は、例えば図１０に示すような表示データを作成し、この作成された表示データを表示データ記憶部８に格納する。図１０においては、グローバル変数である例えばｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ２＿ｖａｌ２は、図６とは対照的に、区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態１と同様である。
【００４０】
実施の形態３．
実施の形態１では、図５に示す表示規則データにおける種別毎設定において、「ファイルｓｔａｔｉｃ変数」を区別表示対象／非対象設定において「対象」としている。本実施の形態では、これを図１１に示すように「非対象」とし、特定の識別子の種別である「ファイルｓｔａｔｉｃ変数」を、他の識別子と区別しやすいような表示をさせないようにしている。図２のプログラムに対し、表示規則記憶部９に記憶された表示規則データを図１１に示すデータとした場合、表示データ作成部５は、例えば図１２に示すような表示データを作成し、この作成された表示データを表示データ記憶部８に格納する。図１２においては、「ファイルｓｔａｔｉｃ変数」であるｒｅｔ＿ｖａｌは、図６とは対照的に、区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態１と同様である。
【００４１】
実施の形態４．
実施の形態２では、図９に示す表示規則データにおいて、個別の識別子の設定をしていない。そこで、本実施の形態では、図１３に示すように個別識別子設定を行う。すなわち、図１３では、個別の識別子であるｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１とｖａｌ１とに対し、個別識別子設定における区別表示対象／非表示設定を、それぞれ、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１が「対象」、ｖａｌ１が「非対象」、と設定している。こうすることで、「種別毎設定」、「スコープ毎設定」の設定に無関係にｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１の区別表示対象／非対象設定を「対象」と設定し、ｖａｌ１の区別表示対象／非対象設定を「非対象」と設定することが可能となる。図２のプログラムに対し、表示規則記憶部９に記憶された表示データを図１３に示すデータとした場合、表示データ作成部５は、例えば図１４に示すような表示データを作成し、この作成された表示データを表示データ記憶部８に格納する。図１４においては、ｖａｌ１は、図１０とは対照的に区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態２と同様である。
【００４２】
実施の形態５．
実施の形態１から４では、識別子の違いをレビュー者に認識させるための表示上の手段として、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示、およびアンダーライン表示のみを使用したが、これ以外の表示手段として識別子を点滅させることで識別子の違いをレビュー者に認識させることができる。図１５は、本実施の形態において、ｆｕｎｃ１を例えば０．５秒周期で点滅表示させた場合のイメージを表す図である。本実施の形態によれば、表示上の表現の選択の範囲がさらに増えるため、区別して表示すべき識別子の数がさらに増大しても対応することが可能になる。なお、その他の構成、動作、および効果は、実施の形態１〜４と同様である。
【００４３】
実施の形態６．
本実施の形態では、表示規則記憶部９に記憶される表示規則データの内容設定が、任意のタイミングで入出力装置２から変更可能とする。システム制御部３が表示規則記憶部９の内容の変更を検知した場合、システム制御部３は表示データ作成部５に対し表示データ記憶部８の内容の再作成を指示する。この場合、解析済みプログラム情報記憶部７の内容の再作成は行わない。これにより、表示区別対象となる識別子の変更を迅速に行うことができる。なお、その他の構成、動作、および効果は、実施の形態１と同様である。
【００４４】
実施の形態７．
レビュー対象のプログラムの規模が大きい場合、プログラムに含まれる識別子の数が多くなる。この場合、フォントの色、フォントのサイズ、フォントの種類、ハイライト表示、点滅表示の点滅周期、アンダーライン表示、およびこれらの組合せを利用して表示手段を変えても、レビュー者に識別子の違いを分かりやすく認識させるための表示上の区別に限界がある。そこで、本実施の形態では、識別子の表示上の文字列の性質が明らかに異なる場合、上記表示手段として同じ表現手段をとることとする。例えば文字列の長さが１文字のｉと文字列の長さが２２のｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１とでは、明らかに表示上の文字列の性質が異なり（すなわち、文字列の長さが大きく異なる。）、これを同一の文字列としてレビュー者が認識する可能性は極めて低い。そこで、このように文字列の性質が異なり、レビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低いような場合には、同一の表示手段をとることを許容することで、表示上の区別の上限を緩和することができる。
【００４５】
レビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低いような表示上の文字列の性質の違いには、文字列の長さの違いの他、すべて大文字からなる文字列とすべて小文字からなる文字列との違い、アンダースコアなど特徴的な文字が複数入る文字列と１つも入らない文字列との違いなどがある。なお、これら以外にもレビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低ければ、他の性質であってもよい。なお、その他の構成、動作、および効果は、実施の形態１と同様である。
【００４６】
実施の形態８．
図１６は、本実施の形態におけるレビュー対象のプログラム（ファイル名：ｆｉｌｅ２．ｃ）の一例を示す図である。図１６においては、グローバル変数ｆｕｎｃ１＿ｇ＿ｒｅａｄは、関数ｆｕｎｃ１において読み取りだけが行われている変数、グローバル変数ｆｕｎｃ１＿ｇ＿ｗｒｉｔｅは、関数ｆｕｎｃ１において書き込みだけが行われている変数、グローバル変数ｆｕｎｃ１＿ｇ＿ｒｅａｄ＿ｗｒｉｔｅは、関数ｆｕｎｃ１において読み取りおよび書き込み共に行われている変数である。また、ｆｕｎｃ１の内部変数ｖａｌ＿ｒｅａｄは、関数ｆｕｎｃ１において読み取りだけが行われている変数、内部変数ｖａｌ＿ｗｒｉｔｅは、関数ｆｕｎｃ１において書き込みだけが行われている変数、内部変数ｖａｌ＿ｒｅａｄ＿ｗｒｉｔｅは、関数ｆｕｎｃ１において読み取りおよび書き込み共に行われている変数である。
【００４７】
本実施の形態では、読み取り／書き込み変数の表示規則として、例えば図１７に示す表示規則を設定し、この表示規則データをあらかじめ表示規則記憶部７に格納する。図１７は、読み取り変数の表示にはボールドを使用し、書き込み変数の表示にはアンダーラインを使用し、読み取りおよび書き込み共に行われている変数の表示にはボールドでかつアンダーラインを使用することを指定する情報を示している。なお、その他の表示については、各識別子の表示が同じにならなければ任意とする。
【００４８】
図１７の表示規則に従って、図１６のプログラムをレビュー用に表示したイメージを図１８に示す。図１８をレビュー者が見ることで、ボールドになっている変数は読み取りがされている変数であり、アンダーラインが付されている変数は書き込みが行われている変数であり、ボールドかつアンダーラインが付されている変数は読み込みおよび書き込み共に行われている変数であることが直感的に理解できる。
【００４９】
一般的に関数の内部変数は、全て、読み取りおよび書き込みが共になされる。図１８を用いてレビューを行うことで、内部変数ｖａｌ＿ｒｅａｄが読み取りのみしかされていないことが直感的に認識でき、未初期化の可能性が高いことがレビュー時に容易に検出が可能となる。また、内部変数ｖａｌ＿ｗｒｉｔｅは、演算式の左辺にしか現れないので、書き込みしかされていない内部変数であることが直感的に認識でき、参照漏れである可能性が高いことがレビュー時に容易に検出が可能となる。
【００５０】
さらに、図１８を用いることで、単体試験の入力変数とすべきグローバル変数が、ボールドになっているｆｕｎｃ１＿ｇ＿ｒｅａｄおよびｆｕｎｃ１＿ｇ＿ｒｅａｄ＿ｗｒｉｔｅであり、出力変数とすべきグローバル変数が、アンダーラインが付いているｆｕｎｃ１＿ｇ＿ｗｒｉｔｅおよびｆｕｎｃ１＿ｇ＿ｒｅａｄ＿ｗｒｉｔｅであることが直感的に理解でき、漏れなく効率的に入出力変数の抽出が行えるようになる。なお、その他の構成、動作、および効果は、実施の形態１と同様である。
【産業上の利用可能性】
【００５１】
以上のように、本発明にかかるプログラムレビュー支援装置は、高級言語で記述されるプログラムの流用開発に有用である。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態１にかかるプログラムレビュー支援装置の構成を示す図である。
【図２】本発明の実施の形態１におけるレビュー対象のプログラムの一例を示す図である。
【図３】本発明の実施の形態１のプログラムレビュー支援装置の処理手順を示す流れ図である。
【図４】本発明の実施の形態１における解析済みプログラム情報記憶部の記憶内容の一例を示す図である。
【図５】本発明の実施の形態１における表示規則記憶部の記憶内容の一例を示す図である。
【図６】本発明の実施の形態１における表示データ記憶部の記憶内容の一例を示す図である。
【図７】本発明の実施の形態１において、誤記を含むレビュー対象のプログラムの一例を示す図である。
【図８】本発明の実施の形態１において、誤記を含むレビュー対象のプログラムに関する表示データ記憶部の記憶内容の一例を示す図である。
【図９】本発明の実施の形態２のスコープ毎設定において、「グローバル」の区別表示対象／非対象設定が「非対象」になっている表記規則記憶部の記憶内容の一例を示す図である。
【図１０】本発明の実施の形態２のスコープ毎設定において、「グローバル」の区別表示対象／非対象設定が「非対象」になっている場合の表示データ記憶部の記憶内容の一例を示す図である。
【図１１】本発明の実施の形態３の種別毎設定において、「ファイルｓｔａｔｉｃ変数」の区別表示対象／非対象設定が「非対象」になっている表記規則記憶部の記憶内容の一例を示す図である。
【図１２】本発明の実施の形態３の種別毎設定において、「ファイルｓｔａｔｉｃ変数」の区別表示対象／非対象設定が「非対象」になっている場合の表示データ記憶部の記憶内容の一例を示す図である。
【図１３】本発明の実施の形態４の個別識別子設定において、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１およびｖａｌ１の区別表示対象／非対象設定がされている表記規則記憶部の記憶内容の一例を示す図である。
【図１４】本発明の実施の形態４の個別識別子設定において、ｆｕｎｃ１＿ｉｔｅｍ１＿ｐａｒｔ１＿ｖａｌ１およびｖａｌ１の区別表示対象／非対象設定がされている場合の表示データ記憶部の記憶内容の一例を示す図である。
【図１５】本発明の実施の形態５において、ｆｕｎｃ１を０．５秒周期で点滅表示させた場合のイメージの一例を示す図である。
【図１６】本発明の実施の形態８におけるレビュー対象のプログラムの一例を示す図である。
【図１７】本発明の実施の形態８における表示規則記憶部の記憶内容の一例を示す図である。
【図１８】本発明の実施の形態８における表示データ記憶部の記憶内容の一例を示す図である。
【符号の説明】
【００５３】
１  プログラムレビュー支援装置
２  入出力装置
３  システム制御部
４  プログラム解析部
５  表示データ作成部
６  プログラム記憶部
７  解析済みプログラム情報記憶部
８  表示データ記憶部
９  表示規則記憶部
【図１】
2008269184.tif 000003
【図２】
2008269184.tif 000004
【図３】
2008269184.tif 000005
【図４】
2008269184.tif 000006
【図５】
2008269184.tif 000007
【図６】
2008269184.tif 000008
【図７】
2008269184.tif 000009
【図８】
2008269184.tif 000010
【図９】
2008269184.tif 000011
【図１０】
2008269184.tif 000012
【図１１】
2008269184.tif 000013
【図１２】
2008269184.tif 000014
【図１３】
2008269184.tif 000015
【図１４】
2008269184.tif 000016
【図１５】
2008269184.tif 000017
【図１６】
2008269184.tif 000018
【図１７】
2008269184.tif 000019
【図１８】
2008269184.tif 000020