JP6025955B1 - プログラム解析装置及びプログラム解析方法 - Google Patents

プログラム解析装置及びプログラム解析方法 Download PDF

Info

Publication number
JP6025955B1
JP6025955B1 JP2015233151A JP2015233151A JP6025955B1 JP 6025955 B1 JP6025955 B1 JP 6025955B1 JP 2015233151 A JP2015233151 A JP 2015233151A JP 2015233151 A JP2015233151 A JP 2015233151A JP 6025955 B1 JP6025955 B1 JP 6025955B1
Authority
JP
Japan
Prior art keywords
program
componentization
function
variable
difference
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.)
Active
Application number
JP2015233151A
Other languages
English (en)
Other versions
JP2017102534A (ja
Inventor
功 栢原
功 栢原
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 JP2015233151A priority Critical patent/JP6025955B1/ja
Application granted granted Critical
Publication of JP6025955B1 publication Critical patent/JP6025955B1/ja
Publication of JP2017102534A publication Critical patent/JP2017102534A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】プログラムを構成する部品化機能が使用する変数値の変化を解析し、プログラムの処理に影響しない変数と部品化機能とを抽出し表示する。【解決手段】プログラム解析装置は、解析プログラム10を構成する部品化機能が使用する変数のリストを保持した部品化機能データベース12と、プログラム入力情報13に従って解析プログラム10を実行し、解析プログラム10の実行時に、解析プログラム10を構成する部品化機能の処理における各変数の開始タイミングの変数値と終了タイミングの変数値との差分の有無を抽出するとともに、部品化機能の処理全体における全変数の開始タイミングの変数値と終了タイミングの変数値との差分の有無を抽出する差分抽出部11と、差分抽出部11の抽出結果に基づいて解析プログラム10の解析結果を表示する解析結果表示部14とを備えている。【選択図】図1

Description

本発明はプログラム解析装置及びプログラム解析方法に関し、特に、部品化した機能の組み合わせによって構成されたプログラムの構成を解析するためのプログラム解析装置及びプログラム解析方法に関する。
近年、電子制御機器の増加に伴い、電子制御機器に搭載されるプログラムの開発にかかる負荷を低減する開発手法が用いられるようになっている。当該手法の例として、例えば、単位ごとに予め開発された機能(以下、部品化機能)を組み合わせることで、全体のプログラムを構成するという手法がある。部品化機能は多数の種別が開発されており、それらの部品化機能は、所望のプログラムを構成するための全ての機能を網羅する。部品化機能間の情報の入出力は、定められたルールに基づいている。従って、部品化機能単位で、別々に開発することが可能である。その結果、開発工数削減の効果をもたらす。さらに、各部品化機能の組み換えも容易である。例えば、ある特定の部品化機能として、処理速度を優先したタイプ、あるいは、計算精度を優先したタイプ等、複数のタイプを用意しておくことで、全体のプログラムの汎用性が向上する効果もある。
この種の部品化機能は、高い汎用性を有するよう開発されている。そのため、当該部品化機能は、多種の電子制御機器へ適用可能である。しかしながら、一般に、電子制御機器の制御処理には、不要な処理、および、不要なデータが含まれている。その結果、プログラムのデータサイズが増大してしまったり、あるいは、処理性能が実行されずに未達となってしまうという問題が発生する。そのため、プログラムのソースコードを解析することにより、不要な処理やデータを検出する技術が求められている。
例えば特許文献1は、プログラム中の特定の処理に対して、その処理に影響を与えている、または、その処理が影響を与えているプログラムの一部を抽出する方法が示されている。特許文献1の方法は、ユーザが入力した情報を元に、プログラム中の各命令文への影響の有無を判定し、その結果を表示する。
特開2007−94753号公報
しかしながら、特許文献1の方法では、プログラムの各命令レベルで、影響の判定および判定結果の表示を行う。そのため、ユーザに提示される情報の情報量が大きくなるという問題がある。特に、数万規模の命令で構成される大規模プログラムの解析では、特に大きな問題となる懸念がある。また、判定結果が命令レベルで提示されるため、部品化機能の一部の命令に対する判定結果が提示される。従って、当該判定結果に基づいて、不要な機能やデータを削除して処理の変更を実施した場合に、各部品化機能が本来有する機能とは異なる機能に変更され、本来有していた当該機能を損なう可能性がある。その結果、本来の目的である、部品化機能の組み換えによる汎用化の効果を発揮できない可能性がある。
この発明は、かかる課題を解決するためになされたものであり、部品化機能の組み合わせにより構成されたプログラムにおいて、部品化機能が使用する変数値の変化を解析し、プログラムの処理に影響しない不要な変数または不要な部品化機能を抽出し表示することで、各部品化機能が本来持つ機能に影響を与えずにプログラム全体の効率化を実施するために必要な情報を提示することが可能な、プログラム解析装置及びプログラム解析方法を提供することを目的とする。
本発明は、部品化機能の組み合わせで構成されたプログラムを解析するプログラム解析装置であって、前記プログラムは、外部から入力されるプログラム入力情報に基づく順序で前記部品化機能の処理を順次実行するものであって、前記プログラム解析装置は、前記部品化機能ごとに、前記部品化機能が使用する変数のリストを保持した部品化機能データベースと、前記部品化機能データベースが保持する前記リストに基づいて前記プログラム全体で使用される全変数を抽出し、前記プログラム入力情報が入力されたときに、前記プログラム入力情報に従って前記プログラムを実行させ、当該プログラムの実行時に、前記部品化機能ごとに、前記部品化機能の処理の開始タイミングと終了タイミングとにおける前記全変数の変数値の差分の有無を各変数ごとに抽出するとともに、前記開始タイミングと前記終了タイミングとにおける前記部品化機能の処理全体における前記全変数のうちの少なくとも1つの変数の変数値の差分の有無を各部品化機能ごとに抽出する差分抽出部と、前記差分抽出部の抽出結果に基づいて前記プログラムの解析結果を表示する解析結果表示部とを備え、前記解析結果表示部は、前記差分抽出部により各変数ごとに抽出された前記変数値の差分の有無を表示することにより、前記プログラムの処理に影響する変数と影響しない変数とを提示し、前記差分抽出部により各部品化機能ごとに抽出された前記変数値の差分の有無を表示することで、前記プログラムの処理に影響する部品化機能と影響しない部品化機能とを提示する、プログラム解析装置である。
本発明に係るプログラム解析装置によれば、部品化した機能の組み合わせにより構成されたプログラムにおいて、各部品化機能単位で変数値の変化を解析し、不要な部品化機能や変数を抽出して表示するようにしたので、不要な部品化機能や変数を削除した場合でも、各部品化機能が本来持つ機能を損なうことなく、かつ、プログラム全体の効率化を図るために必要な情報を提示することができる。
本発明の実施の形態1に係るプログラム解析装置の構成を示す図である。 本発明の実施の形態1に係るプログラム解析方法の処理の流れを示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態1に係るプログラム解析方法の差分抽出部の処理結果の例を示す図である。 本発明の実施の形態2に係るプログラム解析装置の構成を示す図である。 本発明の実施の形態2に係るプログラム解析方法の処理の流れを示す図である。 本発明の実施の形態2に係るプログラム解析方法の未到達機能抽出部の処理結果の例を示す図である。 本発明の実施の形態2に係るプログラム解析方法の未到達機能抽出部の処理結果の例を示す図である。
実施の形態1.
以下に、本発明の実施の形態1に係るプログラム解析装置及びプログラム解析方法について、図面に基づいて説明する。本実施の形態に係るプログラム解析装置及びプログラム解析方法は、部品化機能の組み合わせで構成されたプログラムを解析し、プログラムの処理に影響しない変数とプログラムの処理に影響しない部品化機能とを抽出し表示する。
図1は、本実施の形態1に係るプログラム解析装置の概略構成図である。プログラム解析装置は、解析対象である解析プログラム10の解析を行う。解析プログラム10は、1以上の部品化機能から構成されている。
図1に示すように、プログラム解析装置は、差分抽出部11、部品化機能データベース12、および、解析結果表示部14から構成されている。
プログラム解析装置には、プログラム入力情報13が入力される。プログラム入力情報13は、解析プログラム10の処理を実行する際に使用される情報である。解析プログラム10は、プログラム入力情報13が指定する順序で、解析プログラム10に含まれる部品化機能の処理を順に実行していく。例えば、図3の右欄に示すように、解析プログラム10が、部品化機能10a〜10fで構成されていると仮定する。このとき、プログラム入力情報13により、部品化機能10a、部品化機能10c、部品化機能10d、部品化機能10fの順に実行すると指定されている場合には、その順序で、順次、指定された各部品化機能10a,10c,10d,10fの処理を行う。この場合、部品化機能10b,10eについては、実行することがプログラム入力情報13に指定されていないので、処理を実行しない。
このように、プログラム入力情報13は解析プログラム10の処理を実行する際に使用される情報を保持しており、解析プログラム10はプログラム入力情報13に従って処理を実行する。
差分抽出部11は、解析プログラム10を構成している各部品化機能ごとに、当該部品化機能の処理で使用される変数につき、当該変数の開始タイミングの変数値と終了タイミングの変数値との差分を抽出する。
さらに詳細に説明すると、差分抽出部11は、まずはじめに、部品化機能データベース12が保持する変数のリストに基づいて、解析プログラム10全体で使用される全変数を抽出する。差分抽出部11は、プログラム入力情報13に従って解析プログラム10を実行させ、解析プログラム10の実行時に、部品化機能ごとに、部品化機能の処理の開始タイミングと終了タイミングとにおける全変数の変数値の差分の有無を各変数ごとに抽出する(第1の抽出ステップ)とともに、当該開始タイミングと終了タイミングとにおける部品化機能の処理全体における全変数のうちの少なくとも1つの変数の変数値の差分の有無があったか否かを各部品化機能ごとに抽出する(第2の抽出ステップ)。
差分抽出部11は、メモリに記憶されたソフトウエアを実行するCPUまたはシステムLSI等の処理回路により実現される。また、複数の処理回路が連携して差分抽出部11の機能を実行するようにしてもよい。
部品化機能データベース12は、解析プログラム10を構成している各部品化機能ごとに、当該部品化機能が使用する変数のリストを格納している。図3の左欄に、部品化機能データベース12の構成例を示す。
なお、部品化機能データベース12は、メモリ等の記憶装置から構成される。
解析結果表示部14は、差分抽出部11による解析プログラム10の解析結果を表示する。解析結果表示部14は、ディスプレイ装置等の表示器から構成される。
次に、プログラム解析方法の全体処理の概要を、図2のフローチャートを用いて説明する。図2のフローチャートにおいて、ステップS1101〜ステップS1106の処理は差分抽出部11が行い、ステップS1107の処理は解析結果表示部14が行う。
図2において、まず、ステップS1101で、差分抽出部11は、部品化機能データベース12から、解析プログラム10を構成する各部品化機能が使用する変数のリストを読み出す。差分抽出部11は、読み出した各部品化機能で使用する変数のリストに基づいて、解析プログラム10全体で使用する全変数の一覧を作成する。
次に、ステップS1102で、差分抽出部11は、外部から入力されるプログラム入力情報13の内容に従い、解析プログラム10の処理を開始する。解析プログラム10の処理において、どの部品化機能を、どのような順序で、処理するかについては、プログラム入力情報13により指定される。
次に、ステップS1103で、差分抽出部11は、1つの部品化機能の処理の開始タイミングにおける、解析プログラム10が使用する全変数の変数値を記録する。
次に、ステップS1104で、差分抽出部11は、当該1つの部品化機能の処理の終了タイミングにおける、解析プログラム10が使用する全変数の変数値を記録する。
次に、ステップS1105で、差分抽出部11は、ステップS1103およびステップS1104で記録した各変数の変数値の差分を求め、当該差分の有無を記録する(第1の抽出ステップ)。
次に、ステップS1106で、差分抽出部11は、当該1つの部品化機能の処理全体における全変数の開始タイミングの変数値と終了タイミングの変数値との差分の有無を抽出して、当該全変数の変数値の差分の有無を記録する(第2の抽出ステップ)。
差分抽出部11は、ステップS1103〜ステップS1106の処理を、プログラム入力情報13の内容に従って処理される各部品化機能の順に実施する。すなわち、例えば、プログラム入力情報13により、部品化機能10a、部品化機能10c、部品化機能10d、部品化機能10fの順に処理を実行すると指定されている場合には、その順序で、差分抽出部11は、順次、各部品化機能ごとに、ステップS1103〜ステップS1106の処理を行う。すなわち、まず、部品化機能10aに対して、ステップS1103〜ステップS1106の処理を行い、次に、部品化機能10cに対して、ステップS1103〜ステップS1106の処理を行い、次に、部品化機能10dに対して、ステップS1103〜ステップS1106の処理を行い、最後に、部品化機能10fに対して、ステップS1103〜ステップS1106の処理を行う。そうして、プログラム入力情報13が指定するすべての部品化機能に対して、ステップS1103〜ステップS1106の処理が終了したら、ステップS1107に進む。
ステップS1107では、解析結果表示部14が、ステップS1103〜ステップS1106で記録した各変数の変数値の差分の記録結果を表示する。
次に、図2のステップS1101〜S1106の差分抽出部11の差分抽出処理の経過を、図3〜図9の実施例を用いて説明する。但し、図3〜図9に示す例は、単なる一例であり、本実施の形態1を限定するものではない。
図3は、部品化機能データベース12と解析プログラム10の構造の例を示す。部品化機能データベース12と解析プログラム10とは、プログラム入力情報13と共に、差分抽出部11の差分抽出処理の入力情報となる。
図3の例では、図3の右欄に示すように、解析プログラム10が、部品化機能10aから部品化機能10fまでの6つの部品化機能から構成されているものとする。また、部品化機能10aは変数A、部品化機能10bは変数B、部品化機能10cは変数BとC、部品化機能10dは変数B、部品化機能10eは変数D、部品化機能10fは変数AとBを使用するものとする。
部品化機能データベース12には、図3の左欄に示すように、各部品化機能10a〜10fごとに、各部品化機能10a〜10fが使用するこれらの変数のリストが登録されている。
次に、図4の右欄は、ステップS1101において、解析プログラム10が使用する全変数の一覧を作成した結果を示す。なお、図4の左欄は、部品化機能データベース12の構成を示す。
差分抽出部11は、解析プログラム10を構成する部品化機能10a〜10fの情報に基づき、部品化機能データベース12から、解析プログラム10を構成する各部品化機能10a〜10fが使用する変数のリストを読み出す。こうして、差分抽出部11は、解析プログラム10全体で使用する全変数の一覧を作成する。
図4に示すように、本実施例では、部品化機能10aが変数A、部品化機能10bが変数B、部品化機能10cが変数BとC、部品化機能10dが変数B、部品化機能10eが変数D、部品化機能10fが変数AとBを使用するため、当該一覧には、図4に示すように、変数A、B、C、Dが登録される。
次に、ステップS1102において、差分抽出部11は、プログラム入力情報13により指定される順序で、解析プログラム10の各部品化機能が使用する変数の差分抽出を実施する。この実施例では、プログラム入力情報13により指定された、部品化機能10a、部品化機能10c、部品化機能10d、部品化機能10fの順序で、変数の差分抽出が実施されることとする。
次に、図5の左欄は、ステップS1103において、1つの部品化機能10aの処理の開始のタイミングにおける、解析プログラム10が使用する全変数の変数値を記録した記録結果を示す。なお、図5の右欄は、解析プログラム10の構成を示す。
図5の左欄の記録結果に示されるように、差分抽出処理対象の部品化機能の直前に、別の部品化機能が有る場合は、直前の部品化機能終了のタイミングの変数値を、差分抽出処理対象の部品化機能開始のタイミングの変数値として記録する。差分抽出処理対象の部品化機能の直前に、別の部品化機能が無い場合は、差分抽出処理対象の部品化機能開始のタイミングの変数値は、「未初期化」を記録する。部品化機能10aには、直前に別の部品化機能が無いため、部品化機能10a開始のタイミングにおける、全変数の変数値は、「未初期化」を記録する。
次に、図6の左欄は、ステップS1104において、当該1つの部品化機能10aの処理の終了のタイミングにおける、解析プログラム10が使用する全変数の変数値を記録した記録結果を示す。なお、図6の右欄は、解析プログラム10の構成を示す。
図6の左欄の記録結果に示されるように、部品化機能10aでは変数Aを使用し、終了のタイミングにおいて変数Aは「5」になっているため、変数Aの終了タイミングにおける変数値として「5」を記録する。部品化機能10aでは、他の変数は使用しないため、変数B,C,Dの終了のタイミングの変数値は「未初期化」を記録する。
次に、図7の左欄は、ステップS1105(第1の抽出ステップ)において、部品化機能における、解析プログラム10が使用する各変数の変数値の差分の有無を記録した記録結果を示す。なお、図7の右欄は、解析プログラム10の構成を示す。
図7の左欄の記録結果に示されるように、部品化機能の処理の開始タイミングにおける変数値が「未初期化」の場合、または、部品化機能の処理の開始タイミングにおける変数値と終了タイミングにおける変数値とに差分が無い場合は、各変数値差分として、「無」を記録する。従って、各変数が初期化された場合は、「未初期化」から変数値から変化しているにもかかわらず、変数値差分として「無」が記録される。一方、部品化機能の処理の開始タイミングにおける変数値と終了タイミングにおける変数値とに差分が有る場合、または、直前の部品化機能の差分の記録結果が「有」の場合は、「有」を記録する。部品化機能10aでは、部品化機能10aの処理の開始タイミングにおける全変数値が「未初期化」であるため、各変数値差分は「無」を記録する。
次に、図8の左欄は、ステップS1106(第2の抽出ステップ)において、部品化機能おける、プログラムが使用する全変数の変数値の差分の有無を記録した結果を示す。なお、図8の右欄は、解析プログラム10の構成を示す。
図8の左欄の記録結果に示されるように、部品化機能の処理の開始タイミングにおける全変数値と、終了タイミングにおける全変数値とにおいて、全て差分が無い場合、「無」を記録する。一方、部品化機能の処理の開始タイミングにおける全変数値と、終了タイミングにおける全変数値とにおいて、いずれかの変数に差分が有る場合、「有」を記録する。部品化機能10aでは、変数Aが「未初期化」から「5」へ変化しているため、全変数の差分は「有」を記録する。すなわち、この場合には、いずれかの変数が初期化された場合も、変数値の差分が有ったとみなされ、「有」が記録される。
以上のように、ステップS1103からステップS1106までの処理を、プログラム入力情報13の内容に従って処理する部品化機能の順に実施する。本実施例では、上述したように、部品化機能10a、部品化機能10c、部品化機能10d、部品化機能10fを経由し、プログラム終了に至るものとする。図9の左欄は、部品化機能10fにおいて、ステップS1106が終了した時点の、全変数の変数値および差分の有無の記録結果を示す。図9の左欄の記録結果から、変数AとBは、初期値が与えられた後、変数値の変化があったことが分かる。変数Cは、初期値が与えられた後、変数値の変化がなかったことが分かる。変数Dは、初期値が与えられることなく、解析プログラム10において使用されなかった変数であることが分かる。また、部品化機能10dでは、解析プログラム10が使用する全変数の変数値に変化がなかったことが分かる。なお、図9の右欄は、解析プログラム10の構成を示す。
図9の左欄の記録結果から、変数AとBは、解析プログラム10の処理に影響を与えている変数、または、解析プログラム10の処理が影響を与えている変数であり、削除できない変数であることがわかる。また、変数Cは、初期値が与えられているが、その後、変数値の変化がなかったため、予め、変数Cに定数を入れておいても処理に影響を与えることはないため、変数Cは定数への置換が可能な変数であることがわかる。変数Dは、初期値が与えられることなく、解析プログラム10において使用されなかった変数であるため、削除可能な変数であることが分かる。また、部品化機能10dでは、解析プログラム10が使用する全変数の変数値に変化がなかったため、解析プログラム10で使用されなかった部品化機能であり、削除可能な部品化機能であることが分かる。
以上の方法によれば、解析対象のプログラムにおいて、不要な変数、定数へ置換可能な変数、削除可能な部品化機能の候補を抽出した情報を得ることができる。
以上のように、本実施の形態1は、1以上の部品化機能10a〜10fの組み合わせで構成された解析プログラム10を解析するプログラム解析装置であって、部品化機能10a〜10fが使用する変数のリストを保持した部品化機能データベース12と、解析プログラム10の実行に使用するプログラム入力情報13が入力されたときに、プログラム入力情報13に従って解析プログラム10の一部または全部の部品化機能を実行し、当該解析プログラム10の部品化機能の実行時に、当該部品化機能ごとに、部品化機能の処理における各変数の開始タイミングの変数値と終了タイミングの変数値との差分の有無を抽出する差分抽出部11と、差分抽出部11の抽出結果に基づいて解析プログラム10の解析結果を表示する解析結果表示部14とを備えている。
差分抽出部11は、まず、部品化機能データベースが保持するリストに基づいて解析プログラム10全体で使用される全変数を抽出し、プログラム入力情報13が入力されたときに、プログラム入力情報13に従って解析プログラム10を実行させる。
次に、差分抽出部11は、解析プログラム10の当該実行時に、部品化機能ごとに、部品化機能の処理の開始タイミングと終了タイミングとにおける解析プログラム10の全変数の変数値の初期化を除く差分の有無を各変数ごとに抽出する(第1の抽出ステップ)。
また、差分抽出部11は、部品化機能の処理の開始タイミングと終了タイミングとにおける部品化機能の処理全体における解析プログラム10の全変数のうちの少なくとも1つの変数の変数値の初期化を含む差分の有無を各部品化機能ごとに抽出する(第2の抽出ステップ)。
解析結果表示部14は、第1の抽出ステップにおいて、差分抽出部11により各変数ごとに抽出された変数値の差分の有無を表示することにより、解析プログラム10の処理に影響する変数と影響しない変数とを提示する。
また、解析結果表示部14は、第2の抽出ステップにおいて、差分抽出部11により各部品化機能ごとに抽出された変数値の差分の有無を表示することで、解析プログラムの処理に影響する部品化機能と影響しない部品化機能とを提示する。
このように、本実施の形態1によれば、部品化機能ごとに変数値の変化を解析し、解析プログラム10に含まれる部品化機能とその変数のうち、処理に影響しない変数と処理に影響しない部品化機能を抽出し、解析結果表示部14が表示するようにしたので、解析プログラム10のデータ容量の削減や処理速度の改善を実施する際に、不要な部品化機能や変数を抽出し、それらを削除した場合でも、各部品化機能が本来有する機能を損なうことなく、解析プログラム10のプログラム全体の効率化を図るために必要な情報を提示することができる。
また、本実施の形態1によれば、部品化機能ごとに変数値の変化を解析するようにしたので、解析結果表示部14が表示する情報量も抑えることができ、特許文献1のように表示する情報量が膨大な量になることを防止することができる。
実施の形態2.
以下に、本実施の形態2に係るプログラム解析装置及びプログラム解析方法について、図面に基づいて説明する。図10は、本実施の形態2に係るプログラム解析装置の概略構成図である。
図10に示すように、本実施の形態2のプログラム解析装置は、図1に示した実施の形態1の構成に対して、差分抽出部11と解析結果表示部14との間に未到達機能抽出部15を追加した構成を有している。
未到達機能抽出部15は、プログラム入力情報13に従って解析プログラム10を実行したときに、解析プログラム10内で処理が実行されなかった部品化機能を抽出する。
また、本実施の形態2においては、解析結果表示部14が、未到達機能抽出部15により抽出された処理が実行されなかった部品化機能を表示することで、解析プログラム10の処理で使用されない部品化機能を提示する。
なお、他の構成及び処理については、実施の形態1と同様であるため、ここでは、その説明を省略する。
次に、本実施の形態2のプログラム解析方法の全体処理の概要を、図11のフローチャートを用いて説明する。図2のフローチャートにおいて、ステップS1101〜ステップS1106の処理は差分抽出部11が行い、ステップS1111〜ステップS1112の処理は未到達機能抽出部15が行い、ステップS1113の処理は解析結果表示部14が行う。
まず、図11において、差分抽出部11がステップS1101からステップS1106までの処理を行う。これらのステップS1101からステップS1106までの処理は、上記の実施の形態1のプログラム解析方法と同様の処理を実施するため、ここでは、説明を省略する。
本実施の形態2においては、次に、ステップS1111で、未到達機能抽出部15は、解析プログラム10を構成する全ての部品化機能の一覧を作成する。
次に、ステップS1112で、差分抽出部11の記録結果に基づいて、解析プログラム10を構成する全ての部品化機能の内、プログラム入力情報13の内容に従って解析プログラム10の処理を実施した結果、解析プログラム10の処理が経由した部品化機能は「到達」、経由しなかった部品化機能は「未到達」を記録する。
最後に、ステップS1113で、差分抽出部11が、ステップS1103からステップS1106で記録した、全変数の変数値と差分の記録結果と、未到達機能抽出部15が、ステップS1111及びステップS1112で記録した、各部品化機能の「到達」及び「未到達」の記録結果を、解析結果表示部14が表示する。これにより、解析プログラム10の処理で使用される変数および部品化機能と使用されない変数および部品化機能とを提示することができる。使用されない変数及び部品化機能は、削除可能な変数及び部品化機能である。
次に、未到達機能抽出部15の処理の経過を、図12と図13の実施例を用いて説明する。本実施例では、部品化機能データベース12と解析プログラム10の構造は、図3と同じとする。
図12は、ステップS1111において、解析プログラム10を構成する全ての部品化機能の一覧を作成した結果を示す。図12の上段は、差分抽出部11の記録結果を示し、図12の下段は、未到達機能抽出部15が作成する、解析プログラム10を構成する全ての部品化機能の一覧を示す。解析プログラム10が、図3に示すように、部品化機能10a〜10fで構成されている場合、図12の下段に示すように、未到達機能抽出部15が生成する全ての部品化機能の一覧には、部品化機能10aから10fまでが登録される。
次に、図13の下段は、ステップS1112において、差分抽出部11の記録結果を入力情報として、解析プログラム10を構成する部品化機能10aから10fの内、プログラム入力情報13の内容に従って解析プログラム10の処理を実施した結果、経由した部品化機能に「到達」、経由しなかった部品化機能に「未到達」を記録した結果を示す。なお、図13の上段は、差分抽出部11の記録結果を示す。本実施例では、部品化機能10a、部品化機能10c、部品化機能10d、部品化機能10fを経由し、プログラム終了に至るものとしたので、解析プログラム10を構成する部品化機能の内、部品化機能10bと部品化機能10eとは、プログラム入力情報13の内容に従った処理では、使用しなかったことが分かる。
以上の方法によれば、解析対象のプログラムにおいて、不要な変数、定数へ置換可能な変数、削除可能な部品化機能の候補を抽出した情報を得ることができる。
以上のように、本実施の形態2においても、上記の実施の形態1と同様の効果を得ることができる。さらに、本実施の形態2においては、プログラム入力情報13に従って解析プログラム10を実行したときに、解析プログラム10内で処理が実行されなかった部品化機能を抽出する未到達機能抽出部15をさらに備えるようにしたので、解析結果表示部14が、未到達機能抽出部15により抽出された処理が実行されなかった部品化機能を表示することで、解析プログラム10の処理で使用しない部品化機能を提示することができる。
10 解析プログラム、11 差分抽出部、12 部品化機能データベース、13 プログラム入力情報、14 未到達機能抽出部、15 未到達機能抽出部。

Claims (3)

  1. 部品化機能の組み合わせで構成されたプログラムを解析するプログラム解析装置であって、
    前記プログラムは、外部から入力されるプログラム入力情報に基づく順序で前記部品化機能の処理を順次実行するものであって、
    前記プログラム解析装置は、
    前記部品化機能ごとに、前記部品化機能が使用する変数のリストを保持した部品化機能データベースと、
    前記部品化機能データベースが保持する前記リストに基づいて前記プログラム全体で使用される全変数を抽出し、前記プログラム入力情報が入力されたときに、前記プログラム入力情報に従って前記プログラムを実行させ、当該プログラムの実行時に、前記部品化機能ごとに、前記部品化機能の処理の開始タイミングと終了タイミングとにおける前記全変数の変数値の差分の有無を各変数ごとに抽出するとともに、前記開始タイミングと前記終了タイミングとにおける前記部品化機能の処理全体における前記全変数のうちの少なくとも1つの変数の変数値の差分の有無を各部品化機能ごとに抽出する差分抽出部と、
    前記差分抽出部の抽出結果に基づいて前記プログラムの解析結果を表示する解析結果表示部と
    を備え、
    前記解析結果表示部は、
    前記差分抽出部により各変数ごとに抽出された前記変数値の差分の有無を表示することにより、前記プログラムの処理に影響する変数と影響しない変数とを提示し、
    前記差分抽出部により各部品化機能ごとに抽出された前記変数値の差分の有無を表示することで、前記プログラムの処理に影響する部品化機能と影響しない部品化機能とを提示する、
    プログラム解析装置。
  2. 前記プログラム入力情報に従って前記プログラムを実行したときに、前記プログラム内で処理が実行されなかった部品化機能を抽出する未到達機能抽出部をさらに備え、
    前記解析結果表示部は、前記未到達機能抽出部により抽出された前記部品化機能を表示することで、前記プログラムの処理で使用されない部品化機能を提示する、
    請求項1に記載のプログラム解析装置。
  3. 部品化機能の組み合わせで構成されたプログラムを解析するプログラム解析方法であって、
    前記部品化機能が使用する変数のリストを保持した部品化機能データベースを生成するデータベース生成ステップと、
    前記部品化機能データベースが保持する前記リストに基づいて前記プログラム全体で使用される全変数を抽出する全変数抽出ステップと、
    前記プログラムの実行時に使用するプログラム入力情報が入力されたときに、前記プログラム入力情報に従って前記プログラムを実行するプログラム実行ステップと、
    前記プログラムの実行において、前記部品化機能ごとに、前記部品化機能の処理の開始タイミングと終了タイミングとにおける前記全変数の変数値の差分の有無を各変数ごとに抽出する第1の差分抽出ステップと、
    前記プログラムの実行において、前記部品化機能ごとに、前記開始タイミングと前記終了タイミングとにおける前記部品化機能の処理全体における前記全変数のうちの少なくとも1つの変数の変数値の差分の有無を各部品化機能ごとに抽出する第2の差分抽出ステップと、
    前記第1及び第2の差分抽出ステップの抽出結果に基づいて前記プログラムの解析結果を表示する解析結果表示ステップと
    を備え、
    前記解析結果表示ステップは、
    前記第1の差分抽出ステップにより各変数ごとに抽出された前記変数値の差分の有無を表示することにより、前記プログラムの処理に影響する変数と影響しない変数とを提示し、
    前記第2の差分抽出ステップにより各部品化機能ごとに抽出された前記変数値の差分の有無を表示することで、前記プログラムの処理に影響する部品化機能と影響しない部品化機能とを提示する、
    プログラム解析方法。
JP2015233151A 2015-11-30 2015-11-30 プログラム解析装置及びプログラム解析方法 Active JP6025955B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015233151A JP6025955B1 (ja) 2015-11-30 2015-11-30 プログラム解析装置及びプログラム解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015233151A JP6025955B1 (ja) 2015-11-30 2015-11-30 プログラム解析装置及びプログラム解析方法

Publications (2)

Publication Number Publication Date
JP6025955B1 true JP6025955B1 (ja) 2016-11-16
JP2017102534A JP2017102534A (ja) 2017-06-08

Family

ID=57326546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015233151A Active JP6025955B1 (ja) 2015-11-30 2015-11-30 プログラム解析装置及びプログラム解析方法

Country Status (1)

Country Link
JP (1) JP6025955B1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348667A (ja) * 2003-05-26 2004-12-09 Denso Corp プログラム結合支援装置およびプログラム結合支援プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348667A (ja) * 2003-05-26 2004-12-09 Denso Corp プログラム結合支援装置およびプログラム結合支援プログラム

Also Published As

Publication number Publication date
JP2017102534A (ja) 2017-06-08

Similar Documents

Publication Publication Date Title
US9519401B2 (en) Providing context menu based on predicted commands
EP2677451B1 (en) License verification method and apparatus, and computer readable storage medium storing program therefor
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
JP6253521B2 (ja) プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラム
JP5450840B2 (ja) プログラムの実行性能評価のためのテストデータ生成方法
JP6003699B2 (ja) テストデータ生成プログラム、方法及び装置
US10018983B2 (en) PLC system and arithmetic-expression-data-creation supporting apparatus
WO2014134990A1 (en) Method, device and computer-readable storage medium for closure testing
JP2007018254A (ja) 言語処理装置
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
JP6025955B1 (ja) プログラム解析装置及びプログラム解析方法
CN107818000B (zh) 一种页面表格的操作方法及装置
CN109460236B (zh) 程序版本构建和检查方法及系统
JP7260150B2 (ja) Webサイト設計支援装置、Webサイト設計支援方法、及びプログラム
US9588747B2 (en) Method and apparatus for converting programs
JP2012173745A (ja) データベース解析装置及びデータベース解析プログラム
JP2018022433A (ja) 制御プログラム、装置、及び方法
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
CN111126012A (zh) 定制生成表达式方法及装置
US20190384687A1 (en) Information processing device, information processing method, and computer readable medium
JP2015069220A (ja) 性能評価プログラム生成装置、方法、及びプログラム
JP2012059202A (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP6677068B2 (ja) 実行時間推定装置、実行時間推定方法、及びプログラム
JP5949889B2 (ja) ソフトウェア開発支援装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160905

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161011

R150 Certificate of patent or registration of utility model

Ref document number: 6025955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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