JP2008269184A - プログラムレビュー支援装置 - Google Patents

プログラムレビュー支援装置 Download PDF

Info

Publication number
JP2008269184A
JP2008269184A JP2007109822A JP2007109822A JP2008269184A JP 2008269184 A JP2008269184 A JP 2008269184A JP 2007109822 A JP2007109822 A JP 2007109822A JP 2007109822 A JP2007109822 A JP 2007109822A JP 2008269184 A JP2008269184 A JP 2008269184A
Authority
JP
Japan
Prior art keywords
program
display
identifier
data
display data
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.)
Granted
Application number
JP2007109822A
Other languages
English (en)
Other versions
JP4953896B2 (ja
Inventor
Soichi Matsui
聡一 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007109822A priority Critical patent/JP4953896B2/ja
Publication of JP2008269184A publication Critical patent/JP2008269184A/ja
Application granted granted Critical
Publication of JP4953896B2 publication Critical patent/JP4953896B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】高級言語により記述されたプログラムの流用開発において、プログラムの変更漏れおよび変更誤りの検出を効率的に行うことができるプログラムレビュー支援装置を得ること。
【解決手段】レビュー対象のプログラムは入出力装置2を介して入力され、プログラム記憶部6に格納される。プログラム解析部4は、プログラムを文法的に解析し、その解析情報を解析済みプログラム情報記憶部7に格納する。表示データ作成部5は、表示規則記憶部9に格納された表示規則情報、プログラム、およびプログラムの解析情報に基づいて、表示用のデータを作成し表示データ記憶部8に格納する。表示データにおいては、特定の識別子と他の識別子との表示上の表現が変更されており、レビュー者に区別させやすくしている。
【選択図】 図1

Description

本発明は、ソフトウェアを開発する際のプログラムのレビュー作業を支援する装置に関するものである。
従来、高級言語プログラムのレビュー方法として、プログラムコードを印刷して机上でレビューし、または複数のディスプレーもしくはプロジェクタなどを用いて複数人でレビューする方法がある。
一方、プログラムの開発においては、部分的にプログラムを変更するといった、流用によるプログラムの開発がよく行われる。この場合、流用元のプログラムを、エディタを用いてコピーし、変更が必要な箇所のみを書き換えるといった作業が行われる。
上記のようにプログラムを流用して開発する場合、変更漏れおよび変更誤りが生じやすい。変更漏れおよび変更誤りは、試験工程で見つけることも可能であるが、できれば、開発のより初期の段階であるプログラムレビュー段階で発見することが、ソフトウェア開発のコストおよび納期上、望ましい。
しかし、プログラムの変更は、1文字だけ変えるなど変化が小さく気づきにくいが、このような場合でもプログラムの振る舞いが全く異なってしまうような重要な変更が生じることがある。
そこで、プログラムを正しく流用したか否かを確認するための作業として、文字列を検索する作業などがあるが、これは文字だけを単純に比較、抽出するだけなので、本来、確認したい内容のみを効率的にレビュー者に提供することが困難である。また、検索対象の文字列は1度に1つしか与えられず、誤りを検出する作業としては効率が悪い。
また、従来、プログラムにおいて、関数、変数、リテラル値、およびコメント分などの文法上の要素毎にフォントの色などを変えて表示する機能は存在するが、同一要素の文字列が異なる識別子に対しては同一の表現で表示されるため、上記の流用時の誤りを検出する作業を効率的に実施することが困難である。
また、従来の表示方法によれば、プログラムレビュー時に、ある変数が、読み取りしかされていない変数か、書き込みしかされていない変数か、または読み取りおよび書き込み共に行われている変数か、を直感的に理解することは困難である。そのため、未初期化および未参照の変数を検出する作業を効率的に実施することは難しく、さらに、関数の単体試験設計を行う場合、プログラムから試験に必要な入力変数および出力変数を抽出する作業を効率的に実施することが難しい。
特許文献1においては、ソースプログラム中の指定された変数のみの色を変更することで、他の変数との違いを分かりやすくして表示する手段を提供している。
また、特許文献2においては、プログラム中の変数に関する解析情報を出力するプログラム解析装置が記載されており、特定の変数が出現するソースコードの行をハイライト表示させる表示処理手段を提供している。
また、特許文献3においては、依存関係よりアドレスとそのアドレスをハイライト表示することで、変数間の依存関係を分かりやすく表示する手段を提供している。
特開2001−142684号公報 特開平9−274562号公報 特開2003−108404号公報
しかしながら、上記従来の技術によれば以下に示すような問題点がある。すなわち、流用して開発を行ったプログラムでは変更漏れおよび変更誤りが生じ易く、これによって作り込まれる不具合を検出するには、特定の識別子を指定する必要があるため、識別子毎に指定作業が必要になり、作業効率が悪いという問題点がある。例えば、特許文献1では、個々に変数を指定し、この指定した変数の色を変更している。また、特許文献2では、変数を指定しない場合、その変数がある行をレビュー者が知ることができない。
また、複数の異なる識別子を一度に表示するには、その違いを色の違いまたはハイライト表示の違いで区別する方法があるが、その差を分かりやすく表示するには、識別子の個数に応じて複数の表示上の表現を用いる必要がある。しかしながら、色の違いまたはハイライト表示の違いで区別する方法では、区別すべき識別子の個数が増大すると、差を明確にする表示上の表現の個数に制限が生じ易く、識別子の違いを分かりやすく表示させることが困難になるという問題点がある。
また、プログラムレビュー時に、変数の読み取り、書き込みの関係を直感的に理解することが困難なため、未初期化変数および未参照変数の抽出作業の効率が悪いという問題点がある。さらに、関数の単体試験設計を行う場合、プログラムから試験に必要な入力変数および出力変数を効率的に抽出することが難しいという問題がある。
また、特許文献3に開示された従来技術においては、レビュー対象のプログラムを実行する必要があるため、開発途中の実行不可能なプログラムには利用することができないという問題点がある。
本発明は、上記に鑑みてなされたものであって、高級言語により記述されたプログラムの流用開発において、プログラムの変更漏れおよび変更誤りの検出を効率的に行うことができるプログラムレビュー支援装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかるプログラムレビュー支援装置は、レビュー対象のプログラムが入力される入力部と、前記プログラムが格納されるプログラム記憶部と、変数、関数、マクロおよび型を含むプログラム要素を識別するための識別子に対して、前記プログラムを文法的に解析するプログラム解析部と、このプログラム解析部による解析情報データが格納される解析済みプログラム情報記憶部と、前記プログラムのレビュー結果を表示するための表示規則を与える表示規則データが予め格納された表示規則記憶部と、前記プログラム、前記解析情報データ、および前記表示規則データに基づいて表示用のデータを作成する表示データ作成部と、前記プログラム解析部および前記表示データ作成部の制御を行うシステム制御部と、前記表示データを出力し前記プログラムのレビュー結果を表示する出力部と、を備え、前記表示データ作成部は、前記表示規則データに指定された区別表示対象の識別子に対する表示上の表現を、その他の識別子に対する表示上の表現とは異ならせることにより、前記区別表示対象の識別子が区別表示されるように表示データを作成することを特徴とする。
この発明によれば、プログラムレビュー時に、綴りが似ている識別子に対しても一致または不一致の認識性が向上する。これにより、特に、流用開発において、コンパイラ等では検出できないタイプミスに起因する不具合の発見の効率が向上する。
以下に、本発明にかかるプログラムレビュー支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本実施の形態にかかるプログラムレビュー支援装置の構成を示す図である。図1に示すように、本実施の形態にかかるプログラムレビュー支援装置1は、レビュー対象のプログラムが入力される入出力装置2と、システム制御部3と、レビュー対象のプログラムを文法的に解析するプログラム解析部4と、表示用のデータを作成する表示データ作成部5と、レビュー対象のプログラムを格納するプログラム記憶部6と、プログラム解析部4による解析情報を格納する解析済みプログラム情報記憶部7と、表示用のデータを格納する表示データ記憶部8と、表示データを作成する際に利用される表示規則を格納する表示規則記憶部9と、を備えて構成される。
本実施の形態において、プログラムレビュー支援装置1は、例えば、図2に示すようなC言語で記述されたプログラム(ファイル名:file1.c)をレビュー対象のプログラムとする。なお、レビュー対象のプログラムに使用される言語はC言語に限定されず、本実施の形態は、他の高級言語(例えば、C++、Java(登録商標)、Basic等)に対しても同様に適用することができる。
図1のシステム制御部3、プログラム解析部4、表示データ作成部5、プログラム記憶部6、解析済みプログラム情報記憶部7、表示データ記憶部8、および表示規則記憶部9は、コンピュータのCPUなどの演算装置と、演算装置が解釈するプログラムが格納されるハードディスクなどの記憶装置と、演算に必要なメモリ装置などにより実現される。特に、プログラム記憶部6、解析済みプログラム情報記憶部7、表示データ記憶部8、および表示規則記憶部9は、メモリ装置またはハードディスクなどの記憶装置である。入出力装置2は入力装置および出力装置として機能し、プログラムレビュー支援装置1とレビュー者との間のI/Fであり、ディスプレー、キーボード、およびマウス等から構成される。この入出力装置2からの指示をシステム制御部3が解釈し、その内容に対応した処理を図3の流れ図にしたがって実行する。
図3は、プログラムレビュー支援装置1の処理手順を示す流れ図である。S301において、レビュー対象のファイルをレビュー者が指定し、入出力装置1を介してレビュー対象のプログラムを入力しプログラム記憶部6に格納する。
S302において、プログラム解析部4が、プログラム記憶部6に格納されているレビュー対象のファイルのプログラムに対して、一般的にコンパイラで実施されている字句解析、構文解析等の静的解析を実施し、ファイル中のどの識別子が同一であるか、その識別子はファイルのどの箇所に存在するか、といったプログラム解析情報を解析済みプログラム情報記憶部7に格納する。ここで、識別子とは、プログラムを構成する変数、関数、マクロ、および型等の識別可能な要素を総称して表現している。
ここで、解析済みプログラム情報記憶部7に格納された解析情報の一例を図4に示す。なお、このファイルの解析は1ファイル毎に実施するが、レビュー者から見て複数のファイルの解析を同時に実施してもよい。また、図4においては、解析済みプログラム情報記憶部7に格納されている解析情報が、分かり易いように表形式で記述されているが、例えば、高速化を図るためバイナリ化、またはデータベース化されていてもよく、記憶形式、データ構造なども任意のものであってよい。
図4では、プログラム中の識別子の識別子名、識別子の種別、識別子の文字列の長さ、プログラムにおける識別子のスコープ、および出現位置として、出現するファイル名、出現する行、出現する行の先頭からの位置を示す。出現位置が複数ある場合は、1つの識別子に対して、複数の出現位置の情報が与えられる。
識別子の種別には、「ローカル変数」、「グローバル変数」、「ファイルstatic変数」、「関数static変数」、「グローバル関数」、「ファイルstatic関数」「関数マクロ」、「非関数マクロ」、および「型」など、プログラムの識別子を分類するための情報である。なお、前記の種別の分類は一例であり、識別子の種別が分類できれば、この他の分類でも良い。
識別子のスコープは、プログラムにおける識別子のスコープ(参照できる範囲)を分類するための情報であり、プログラム全体の場合は「グローバル」、ファイルの場合はそのファイル名、関数の場合はその関数名を記憶する。なお、前記のスコープの分類は一例であり、識別子のスコープが分類できれば、この他の分類でも良い。
例えば、識別子val1は、図2に示すファイル名file1.cに記述された整数型のローカル変数であり、その文字列の長さは4である。また、識別子val1は、file1.cにおいて3箇所に記述され、例えば9行目においては行頭から右に7の位置に最初の文字(すなわち、v)が現れる。図4では、前述の内容が記載されている。なお、図2においては、プログラムの各行の先頭に行番号およびコロンが示されているが、この部分は行番号を表示するためのものでありプログラムに含まれていない。
レビュー者は、レビュー結果をどのような規則に従って表示するかを決定し、事前に入出力装置2を介してこの決定した表示規則の情報を入力し、表示規則記憶部9に記憶させる。図5は、表示規則記憶部9の記憶内容の一例を示す図である。図5では、特定の識別子を他の識別子と区別しやすいように表示するための設定(以降、区別表示対象/非対象設定という。)の一例を示している。区別表示対象/非対象設定は、種別毎設定、スコープ毎設定、および個別識別子設定に分類されており、識別子が区別表示対象である場合には「対象」、区別表示対象でない場合には「非対象」として設定する。
種別毎設定とは、解析済みプログラム情報記憶部7に格納された解析情報に示す種別毎に、特定の種別を他の種別と区別しやすいように表示するか否かの設定である。スコープ毎設定とは、解析済みプログラム情報記憶部7に格納された解析情報に示すスコープ毎に、特定のスコープを他のスコープと区別しやすいように表示するか否かの設定である。ここで、スコープが「全ファイル」とは全てのファイルスコープに対しての設定であり、スコープが「全関数」とは全ての関数スコープに対しての設定である。個別識別子設定とは、個別の識別子に対して他の識別子と区別しやすいように表示するか否かの設定である。ここで、識別子は、識別子名、種別、およびスコープで、他の識別子と区別する。種別毎設定、スコープ毎設定、個別識別子設定の優先順位は、個別識別子設定、スコープ毎設定、種別毎設定の順に高いとする。例えば、スコープ毎設定において、スコープ「グローバル」の区別表示対象/非対象設定が「対象」となっている場合には、種別毎設定によらずに、例えばグローバル変数は区別表示される。
図5では、種別毎設定において、識別子の文法上の種別が「ローカル変数」、「グローバル変数」、「ファイルstatic変数」、「関数static変数」、「グローバル関数」、「ファイルstatic関数」である識別子に対して区別表示対象/非対象設定が「対象」であり、識別子の文法上の種別が「関数マクロ」、「非関数マクロ」、「型」である識別子に対して区別表示対象/非対象設定が「非対象」であることを意味する。スコープ毎設定において、スコープが「グローバル」、「全ファイル」、「全関数」である識別子に対して区別表示対象/非対象設定が「対象」であることを意味する。また、個別識別子設定はされていない。なお、図5の情報の構造は一例であり、レビュー対象のプログラムに使用される言語が異なれば種別毎設定の分類およびスコープ毎設定の分類が異なっても良い。また、レビュー対象のプログラムに使用される言語によらず、任意の識別子を他の識別子と区別しやすいように表示することができる設定であれば、他の分類を使用するものであっても良い。
次に、S303において、図1の表示データ作成部5が表示規則記憶部9に記憶されている区別表示対象/非対象設定に従い、どの識別子を他の識別子と区別しやすいように表示するかの判定を行い、プログラム記憶部6に対し、解析済みプログラム情報記憶部7を参照して、他の識別子と区別しやすいように表示すべき識別子の表示方法が他の識別子の表示方法とは異なるレビュー用の表示データを作成し、このレビュー用の表示データを表示データ記憶部8に格納する。区別表示対象の識別子と他の識別子に対する表示上の表現の変更の仕方としては、例えば、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示する場合の色、点滅表示を行う場合の点滅周期、もしくはアンダーラインの有無等、の変更、または各変更の任意の組合せにより、差異を明確にする。表示上の表現の設定は、表示データ作成部5にて、区別表示すべき識別子の個数に応じて適宜選択設定
されるものとする。図6に、図2のプログラムおよび図5の表示規則に対して、識別子を区別しやすいように表示上の表現を変更した表示データの一例を示す。この表示データは表示データ記憶部8に格納される。図6においては、例えば、グローバル関数であるfunc1は、スコープ毎設定に従って区別表示され、特にハイライト表示されている。また、例えば、ローカル変数であるval1は、種別毎設定に従って区別表示され、特に、ハイライト、ボールドおよび下線表示を組み合わせて表示されている。
続いて、S304において、上記で作成した表示データを、入出力装置2を介して表示する。
ここで、仮に図2のプログラムの13行目のfunc1_item1_part2_val1が誤って、func1_item1_part1_val1となっていた場合の一例を、図7に示す。また、図7に対し、他の識別子と区別しやすいように表示上の表現を変更した表示データの一例を図8に示す。この表示データは、表示データ記憶部8に記憶される。図7のプログラムでは、func1_item1_part1_val1という変数はプログラム中に定義されているため、コンパイルしただけではこの誤記を検出することはできない。
図2のプログラムは、本来、13行目でfunc1_item1_part1_val1とfunc1_item1_part2_val1という異なる2つの変数の和をval1に代入する仕様である。図7の従来の表現では、識別子間の表現に違いがないため、func1_item1_part2_val1が誤ってfunc1_item1_part1_val1となっていることが認識しにくく、かなり注意を払ったレビューを行わない限り、この誤りに気づくことは難しい。図8では、図7と比較し、識別子間の表現が異なることにより、13行目で同じ識別子が足されていることが容易に認識できるようになり、誤りが気づきやすい。
以上説明したように、本実施の形態によれば、高級言語で記述されたプログラムのレビュー時に、綴りが似ている識別子に対しても一致または不一致の認識性が向上するため、流用開発時のコピーおよびペーストによる開発において、コンパイラでは検出が困難なタイプミスに起因する不具合の発見の効率が向上する。特に、流用開発時において、変更漏れおよび変更誤りを、従来のように識別子を指定して検出する必要がないため、作業効率が向上する。また、本実施の形態は、レビュー対象のプログラムを実行する必要がなく、開発途中の実行不可能なプログラムに対して適用することができる。
実施の形態2.
実施の形態1では、図5に示す表示規則データにおけるスコープ毎設定において、「グローバル」を区別表示対象/非対象設定において「対象」としている。本実施の形態では、これを図9に示すように「非対象」とし、スコープが「グローバル」である識別子を、他の識別子と区別しやすいような表示をさせないようにしている。図2のプログラムに対し、表示規則記憶部9に記憶された表示規則データを図9に示すデータとした場合、表示データ作成部5は、例えば図10に示すような表示データを作成し、この作成された表示データを表示データ記憶部8に格納する。図10においては、グローバル変数である例えばfunc1_item1_part2_val2は、図6とは対照的に、区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態1と同様である。
実施の形態3.
実施の形態1では、図5に示す表示規則データにおける種別毎設定において、「ファイルstatic変数」を区別表示対象/非対象設定において「対象」としている。本実施の形態では、これを図11に示すように「非対象」とし、特定の識別子の種別である「ファイルstatic変数」を、他の識別子と区別しやすいような表示をさせないようにしている。図2のプログラムに対し、表示規則記憶部9に記憶された表示規則データを図11に示すデータとした場合、表示データ作成部5は、例えば図12に示すような表示データを作成し、この作成された表示データを表示データ記憶部8に格納する。図12においては、「ファイルstatic変数」であるret_valは、図6とは対照的に、区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態1と同様である。
実施の形態4.
実施の形態2では、図9に示す表示規則データにおいて、個別の識別子の設定をしていない。そこで、本実施の形態では、図13に示すように個別識別子設定を行う。すなわち、図13では、個別の識別子であるfunc1_item1_part1_val1とval1とに対し、個別識別子設定における区別表示対象/非表示設定を、それぞれ、func1_item1_part1_val1が「対象」、val1が「非対象」、と設定している。こうすることで、「種別毎設定」、「スコープ毎設定」の設定に無関係にfunc1_item1_part1_val1の区別表示対象/非対象設定を「対象」と設定し、val1の区別表示対象/非対象設定を「非対象」と設定することが可能となる。図2のプログラムに対し、表示規則記憶部9に記憶された表示データを図13に示すデータとした場合、表示データ作成部5は、例えば図14に示すような表示データを作成し、この作成された表示データを表示データ記憶部8に格納する。図14においては、val1は、図10とは対照的に区別表示されていない。なお、その他の構成、動作、および効果は、実施の形態2と同様である。
実施の形態5.
実施の形態1から4では、識別子の違いをレビュー者に認識させるための表示上の手段として、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示、およびアンダーライン表示のみを使用したが、これ以外の表示手段として識別子を点滅させることで識別子の違いをレビュー者に認識させることができる。図15は、本実施の形態において、func1を例えば0.5秒周期で点滅表示させた場合のイメージを表す図である。本実施の形態によれば、表示上の表現の選択の範囲がさらに増えるため、区別して表示すべき識別子の数がさらに増大しても対応することが可能になる。なお、その他の構成、動作、および効果は、実施の形態1〜4と同様である。
実施の形態6.
本実施の形態では、表示規則記憶部9に記憶される表示規則データの内容設定が、任意のタイミングで入出力装置2から変更可能とする。システム制御部3が表示規則記憶部9の内容の変更を検知した場合、システム制御部3は表示データ作成部5に対し表示データ記憶部8の内容の再作成を指示する。この場合、解析済みプログラム情報記憶部7の内容の再作成は行わない。これにより、表示区別対象となる識別子の変更を迅速に行うことができる。なお、その他の構成、動作、および効果は、実施の形態1と同様である。
実施の形態7.
レビュー対象のプログラムの規模が大きい場合、プログラムに含まれる識別子の数が多くなる。この場合、フォントの色、フォントのサイズ、フォントの種類、ハイライト表示、点滅表示の点滅周期、アンダーライン表示、およびこれらの組合せを利用して表示手段を変えても、レビュー者に識別子の違いを分かりやすく認識させるための表示上の区別に限界がある。そこで、本実施の形態では、識別子の表示上の文字列の性質が明らかに異なる場合、上記表示手段として同じ表現手段をとることとする。例えば文字列の長さが1文字のiと文字列の長さが22のfunc1_item1_part1_val1とでは、明らかに表示上の文字列の性質が異なり(すなわち、文字列の長さが大きく異なる。)、これを同一の文字列としてレビュー者が認識する可能性は極めて低い。そこで、このように文字列の性質が異なり、レビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低いような場合には、同一の表示手段をとることを許容することで、表示上の区別の上限を緩和することができる。
レビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低いような表示上の文字列の性質の違いには、文字列の長さの違いの他、すべて大文字からなる文字列とすべて小文字からなる文字列との違い、アンダースコアなど特徴的な文字が複数入る文字列と1つも入らない文字列との違いなどがある。なお、これら以外にもレビュー者が文字列を認識する上で同一の文字列と認識する可能性が極めて低ければ、他の性質であってもよい。なお、その他の構成、動作、および効果は、実施の形態1と同様である。
実施の形態8.
図16は、本実施の形態におけるレビュー対象のプログラム(ファイル名:file2.c)の一例を示す図である。図16においては、グローバル変数func1_g_readは、関数func1において読み取りだけが行われている変数、グローバル変数func1_g_writeは、関数func1において書き込みだけが行われている変数、グローバル変数func1_g_read_writeは、関数func1において読み取りおよび書き込み共に行われている変数である。また、func1の内部変数val_readは、関数func1において読み取りだけが行われている変数、内部変数val_writeは、関数func1において書き込みだけが行われている変数、内部変数val_read_writeは、関数func1において読み取りおよび書き込み共に行われている変数である。
本実施の形態では、読み取り/書き込み変数の表示規則として、例えば図17に示す表示規則を設定し、この表示規則データをあらかじめ表示規則記憶部7に格納する。図17は、読み取り変数の表示にはボールドを使用し、書き込み変数の表示にはアンダーラインを使用し、読み取りおよび書き込み共に行われている変数の表示にはボールドでかつアンダーラインを使用することを指定する情報を示している。なお、その他の表示については、各識別子の表示が同じにならなければ任意とする。
図17の表示規則に従って、図16のプログラムをレビュー用に表示したイメージを図18に示す。図18をレビュー者が見ることで、ボールドになっている変数は読み取りがされている変数であり、アンダーラインが付されている変数は書き込みが行われている変数であり、ボールドかつアンダーラインが付されている変数は読み込みおよび書き込み共に行われている変数であることが直感的に理解できる。
一般的に関数の内部変数は、全て、読み取りおよび書き込みが共になされる。図18を用いてレビューを行うことで、内部変数val_readが読み取りのみしかされていないことが直感的に認識でき、未初期化の可能性が高いことがレビュー時に容易に検出が可能となる。また、内部変数val_writeは、演算式の左辺にしか現れないので、書き込みしかされていない内部変数であることが直感的に認識でき、参照漏れである可能性が高いことがレビュー時に容易に検出が可能となる。
さらに、図18を用いることで、単体試験の入力変数とすべきグローバル変数が、ボールドになっているfunc1_g_readおよびfunc1_g_read_writeであり、出力変数とすべきグローバル変数が、アンダーラインが付いているfunc1_g_writeおよびfunc1_g_read_writeであることが直感的に理解でき、漏れなく効率的に入出力変数の抽出が行えるようになる。なお、その他の構成、動作、および効果は、実施の形態1と同様である。
以上のように、本発明にかかるプログラムレビュー支援装置は、高級言語で記述されるプログラムの流用開発に有用である。
本発明の実施の形態1にかかるプログラムレビュー支援装置の構成を示す図である。 本発明の実施の形態1におけるレビュー対象のプログラムの一例を示す図である。 本発明の実施の形態1のプログラムレビュー支援装置の処理手順を示す流れ図である。 本発明の実施の形態1における解析済みプログラム情報記憶部の記憶内容の一例を示す図である。 本発明の実施の形態1における表示規則記憶部の記憶内容の一例を示す図である。 本発明の実施の形態1における表示データ記憶部の記憶内容の一例を示す図である。 本発明の実施の形態1において、誤記を含むレビュー対象のプログラムの一例を示す図である。 本発明の実施の形態1において、誤記を含むレビュー対象のプログラムに関する表示データ記憶部の記憶内容の一例を示す図である。 本発明の実施の形態2のスコープ毎設定において、「グローバル」の区別表示対象/非対象設定が「非対象」になっている表記規則記憶部の記憶内容の一例を示す図である。 本発明の実施の形態2のスコープ毎設定において、「グローバル」の区別表示対象/非対象設定が「非対象」になっている場合の表示データ記憶部の記憶内容の一例を示す図である。 本発明の実施の形態3の種別毎設定において、「ファイルstatic変数」の区別表示対象/非対象設定が「非対象」になっている表記規則記憶部の記憶内容の一例を示す図である。 本発明の実施の形態3の種別毎設定において、「ファイルstatic変数」の区別表示対象/非対象設定が「非対象」になっている場合の表示データ記憶部の記憶内容の一例を示す図である。 本発明の実施の形態4の個別識別子設定において、func1_item1_part1_val1およびval1の区別表示対象/非対象設定がされている表記規則記憶部の記憶内容の一例を示す図である。 本発明の実施の形態4の個別識別子設定において、func1_item1_part1_val1およびval1の区別表示対象/非対象設定がされている場合の表示データ記憶部の記憶内容の一例を示す図である。 本発明の実施の形態5において、func1を0.5秒周期で点滅表示させた場合のイメージの一例を示す図である。 本発明の実施の形態8におけるレビュー対象のプログラムの一例を示す図である。 本発明の実施の形態8における表示規則記憶部の記憶内容の一例を示す図である。 本発明の実施の形態8における表示データ記憶部の記憶内容の一例を示す図である。
符号の説明
1 プログラムレビュー支援装置
2 入出力装置
3 システム制御部
4 プログラム解析部
5 表示データ作成部
6 プログラム記憶部
7 解析済みプログラム情報記憶部
8 表示データ記憶部
9 表示規則記憶部

Claims (8)

  1. レビュー対象のプログラムが入力される入力部と、
    前記プログラムが格納されるプログラム記憶部と、
    変数、関数、マクロおよび型を含むプログラム要素を識別するための識別子に対して、前記プログラムを文法的に解析するプログラム解析部と、
    このプログラム解析部による解析情報データが格納される解析済みプログラム情報記憶部と、
    前記プログラムのレビュー結果を表示するための表示規則を与える表示規則データが予め格納された表示規則記憶部と、
    前記プログラム、前記解析情報データ、および前記表示規則データに基づいて表示用のデータを作成する表示データ作成部と、
    前記プログラム解析部および前記表示データ作成部の制御を行うシステム制御部と、
    前記表示データを出力し前記プログラムのレビュー結果を表示する出力部と、
    を備え、
    前記表示データ作成部は、前記表示規則データに指定された区別表示対象の識別子に対する表示上の表現を、その他の識別子に対する表示上の表現とは異ならせることにより、前記区別表示対象の識別子が区別表示されるように表示データを作成することを特徴とするプログラムレビュー支援装置。
  2. 前記表示規則データにおいて、前記区別表示対象の識別子が、識別子の文法上の種別毎に指定されていることを特徴とする請求項1に記載のプログラムレビュー支援装置。
  3. 前記表示規則データにおいて、前記区別表示対象の識別子が、識別子の前記プログラムにおける参照可能な範囲であるスコープ毎に指定されていることを特徴とする請求項1または2に記載のプログラムレビュー支援装置。
  4. 前記表示規則データにおいて、前記区別表示対象の識別子が、識別子毎に個別に指定されていることを特徴とする請求項1〜3のいずれか1つに記載のプログラムレビュー支援装置。
  5. 前記表示上の表現として、フォントの色、フォントの種類、フォントのサイズ、ハイライト表示、点滅表示の点滅周期、もしくはアンダーライン表示、の違い、または各違いの任意の組み合わせを利用することを特徴とする請求項1〜4のいずれか1つに記載のプログラムレビュー支援装置。
  6. 前記表示規則記憶部に格納された表示規則データの内容は、前記入力部を介して変更可能であり、前記システム制御部は、前記表示規則データの内容の更新を検知すると、前記解析済みプログラム情報記憶部の内容更新の指示は行わずに、前記表示データ作成部に対して表示データの再作成を指示することを特徴とする請求項1〜5のいずれか1つに記載のプログラムレビュー支援装置。
  7. 前記表示データ作成部は、2つの異なる識別子に対して、文字列の長さを含む表示上の文字列の性質を相互に比較することにより、一方の識別子に関する表示上の文字列の性質と他方の識別子に関する表示上の文字列の性質とが異なる場合には、区別表示指定にかかわらず、前記2つの異なる識別子に対して同一の表示上の表現を与えるような表示データの作成が可能であることを特徴とする請求項1〜6のいずれか1つに記載のプログラムレビュー支援装置。
  8. 前記プログラムの関数内において、識別子が、読み取りだけ行われている変数か、書き込みだけ行われている変数か、または読み込みおよび書き込み共に行われている変数か、に応じて、前記表示規則データにおける表示規則を区別して指定できることを特徴とする請求項1〜7のいずれか1つに記載のプログラムレビュー支援装置。
JP2007109822A 2007-04-18 2007-04-18 プログラムレビュー支援装置 Active JP4953896B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007109822A JP4953896B2 (ja) 2007-04-18 2007-04-18 プログラムレビュー支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007109822A JP4953896B2 (ja) 2007-04-18 2007-04-18 プログラムレビュー支援装置

Publications (2)

Publication Number Publication Date
JP2008269184A true JP2008269184A (ja) 2008-11-06
JP4953896B2 JP4953896B2 (ja) 2012-06-13

Family

ID=40048616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007109822A Active JP4953896B2 (ja) 2007-04-18 2007-04-18 プログラムレビュー支援装置

Country Status (1)

Country Link
JP (1) JP4953896B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021009185A (ja) * 2019-06-28 2021-01-28 三菱電機エンジニアリング株式会社 プログラミング学習装置および学習プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62236746A (ja) * 1986-04-09 1987-10-16 Omron Tateisi Electronics Co 文字列強調出力方法
JPH0588939A (ja) * 1991-03-15 1993-04-09 Nec Corp 副プログラム単体テスト方式
JPH0863350A (ja) * 1994-08-23 1996-03-08 Ricoh Co Ltd プログラム解析方法及び装置
JP2001142684A (ja) * 1999-11-15 2001-05-25 Fujitsu Ltd ソースプログラムを解析するためのプログラムを格納した記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62236746A (ja) * 1986-04-09 1987-10-16 Omron Tateisi Electronics Co 文字列強調出力方法
JPH0588939A (ja) * 1991-03-15 1993-04-09 Nec Corp 副プログラム単体テスト方式
JPH0863350A (ja) * 1994-08-23 1996-03-08 Ricoh Co Ltd プログラム解析方法及び装置
JP2001142684A (ja) * 1999-11-15 2001-05-25 Fujitsu Ltd ソースプログラムを解析するためのプログラムを格納した記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021009185A (ja) * 2019-06-28 2021-01-28 三菱電機エンジニアリング株式会社 プログラミング学習装置および学習プログラム
JP7296798B2 (ja) 2019-06-28 2023-06-23 三菱電機エンジニアリング株式会社 プログラミング学習装置および学習プログラム

Also Published As

Publication number Publication date
JP4953896B2 (ja) 2012-06-13

Similar Documents

Publication Publication Date Title
Meinicke et al. Mastering software variability with FeatureIDE
US11875136B2 (en) Edit automation using a temporal edit pattern
Stănciulescu et al. Concepts, operations, and feasibility of a projection-based variation control system
US8380650B2 (en) Information extraction rule making support system, information extraction rule making support method, and information extraction rule making support program
US5845305A (en) Index creating apparatus
US12106095B2 (en) Deep learning-based java program internal annotation generation method and system
KR101850303B1 (ko) 소스 코드 위배 수정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
Tateosian Python For ArcGIS
Roeder Juxta web service, lera, and variance viewer. web based collation tools for tei
JP5342407B2 (ja) プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置
Coppit et al. Spotlight: A prototype tool for software plans
JP4953896B2 (ja) プログラムレビュー支援装置
US9015658B2 (en) Automatic program generation device and automatic program generation method
JP2006209179A (ja) モデル差分検出ツール
JP4835791B2 (ja) Gui評価システム、gui評価方法およびgui評価用プログラム
JP6475288B2 (ja) プログラム比較方法、プログラム比較装置およびプログラム比較プログラム
JP2002288004A (ja) プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
Alfaro et al. $\mu $ PrintGen: Supporting Workflow Logs Analysis Through Visual Microprint
JP7469999B2 (ja) 検索装置、検索方法、および検索プログラム
Gąsior ReSharper Essentials
JP4827418B2 (ja) 条件付コンパイル用識別子の管理方法、コンピュータプログラムの作成支援装置及びプログラム
JP7515734B2 (ja) 情報処理装置、プログラム及び情報処理方法
JP4894602B2 (ja) 修正対象ファイル検索装置と修正対象ファイル検索方法および修正対象ファイル検索プログラム
Lu et al. iSchood: a Tool Software for Identifying Suspicious Copied Homework Documents with Definitive Contents
JP6419902B1 (ja) プログラム比較方法、プログラム比較装置およびプログラム比較プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090730

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120120

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: 20120214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120313

R150 Certificate of patent or registration of utility model

Ref document number: 4953896

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150323

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250