JP6239438B2 - 仕様抽出装置、仕様抽出方法およびプログラム - Google Patents

仕様抽出装置、仕様抽出方法およびプログラム Download PDF

Info

Publication number
JP6239438B2
JP6239438B2 JP2014093091A JP2014093091A JP6239438B2 JP 6239438 B2 JP6239438 B2 JP 6239438B2 JP 2014093091 A JP2014093091 A JP 2014093091A JP 2014093091 A JP2014093091 A JP 2014093091A JP 6239438 B2 JP6239438 B2 JP 6239438B2
Authority
JP
Japan
Prior art keywords
processing
variable
input
equation
code
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
JP2014093091A
Other languages
English (en)
Other versions
JP2015210735A (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.)
Toshiba Corp
Toyota Motor Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toyota Motor Corp
Toshiba Digital Solutions 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 Toshiba Corp, Toyota Motor Corp, Toshiba Digital Solutions Corp filed Critical Toshiba Corp
Priority to JP2014093091A priority Critical patent/JP6239438B2/ja
Publication of JP2015210735A publication Critical patent/JP2015210735A/ja
Application granted granted Critical
Publication of JP6239438B2 publication Critical patent/JP6239438B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明の実施形態は、仕様抽出装置、仕様抽出方法およびプログラムに関する。
ソフトウェア開発において、ソースコードは仕様書から作成される。この時、ソフトウェアの設計図となるドキュメントは、基本設計書および詳細設計書等が存在するが、通常、これらは機能(モジュール)毎に作成される。したがって、ソフトウェアの設計および製造を行う際には、機能毎の設計書からモジュールを製造し、それを組み合わせて一つのソフトウェアを製造する。ソフトウェアの仕様を抽出するには、ソフトウェアのソースコードからモジュールを区分けし、そのモジュールごとの振舞いを調査する必要がある。
しかし、ソフトウェアの元となるソースコードは、複数のモジュールが複雑に組み合わされた状態となっている。そのため、モジュールの区分けは容易ではなく、ソースコードから直接的に仕様を抽出することは困難である。そのため、ソフトウェアからの仕様抽出では、モジュールの入出力関係に着目し、ソースコードから各モジュールの入出力関係を解析することで、そのモジュールの振舞いを分析することが行われている。このような、モジュールの仕様抽出の方法として、モジュールの出力変数(例えば、グローバル変数)の生成手順を逆向きにたどり、出力変数のデータが作成するまでの方程式を取得してデシジョンテーブルを出力する方法が知られている。
特開平05−040616号公報
しかしながら、この方法ではループ処理等の影響によって出力変数についての方程式が非常に長く、複雑になってしまう場合があり、生成されるデシジョンテーブルも巨大かつ複雑なものとなるという問題点がある。
本発明は、上記に鑑みてなされたものであって、モジュールから抽出した仕様情報が複雑化することを抑制する仕様抽出装置、仕様抽出方法およびプログラムを提供することを目的とする。
実施形態の仕様抽出装置は、特定手段と、等価変換手段と、作成手段と、変換手段と、を備える。特定手段は、ソースコードにおいて出力変数を特定する。等価変換手段は、ソースコードにおける式を等価な式に置き換える等価変換処理を実行して、出力変数についての方程式を導出する。作成手段は、方程式から入力条件を抽出し、その入力条件をノードとする原因結果グラフを作成する。変換手段は、原因結果グラフを、入力条件の真偽の組み合わせと、出力変数の値である出力値との対応関係を表す仕様情報に変換する。
図1は、実施形態に係るPCの構成図である。 図2は、制御部の機能ブロック図である。 図3は、入力変数から出力変数の値を生成する動作を説明する図である。 図4は、仕様抽出動作を示すフローチャートである。 図5は、定数伝播処理を説明する図である。 図6は、入力変数伝播処理を説明する図である。 図7は、枝刈り処理を説明する図である。 図8は、条件式情報伝播処理を説明する図である。 図9は、等価変換処理の一部を示すフローチャートである。 図10は、モジュールのソースコードのサンプルを示す図である。 図11は、出力変数を特定する処理を説明する図である。 図12は、定数伝播処理および入力伝播処理を実行する動作を説明する図である。 図13は、枝刈り処理を実行する動作を説明する図である。 図14は、条件式情報伝播処理を実行する動作を説明する図である。 図15は、条件式情報伝播処理を実行して方程式を得る動作を説明する図である。 図16は、論理演算子で表された方程式に変換する動作を説明する図である。 図17は、中間的な原因結果グラフを導出する動作を説明する図である。 図18は、最終的な原因結果グラフを導出する動作を説明する図である。 図19は、デシジョンテーブルを作成する動作を説明する図である。 図20は、出力変数を仮変数に設定する動作を説明する図である。
以下に、図面を参照しながら、本発明の実施形態に係る仕様抽出装置、仕様抽出方法およびプログラムを詳細に説明する。
また、以下の図面において、同一の部分には同一の符号が付してある。ただし、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なる場合がある。したがって、具体的な厚みおよび寸法は以下の説明を参酌して判断すべきものである。
図1は、実施形態に係るPCの構成図である。図1を参照しながら、仕様抽出装置の一例であるPC1の構成について説明する。
図1に示すように、仕様抽出装置の一例であるPC1は、通信部11と、操作部12と、表示部13と、記憶部14と、外部記憶装置15と、制御部16と、を備えている。上述の各部は、シリアルバス17によって接続され、互いにデータの送受信が可能となっている。
通信部11は、外部機器と通信する装置である。通信部11は、例えば、NIC(Network Interface Card)等の通信装置によって実現される。通信部11の通信プロトコルとして、例えば、TCP(Transmission Control Protocol)/IP(Internet Protocol)またはUDP(User Datagram Protocol)/IP等を適用できる。
操作部12は、ユーザによって制御部16に対して所定の処理を実行させるための操作入力を行う装置である。操作部12は、例えば、マウス、キーボード、テンキー、タッチパッド、またはタッチパネルにおける操作入力機能によって実現される。
表示部13は、制御部16により実行されているアプリケーション画像等を表示する装置である。表示部13は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、プラズマディスプレイまたは有機EL(Electroluminescence)ディスプレイ等によって実現される。
記憶部14は、PC1で実行される各種プログラムおよびPC1で行われる各種処理に使用されるデータ等を記憶する装置である。記憶部14は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)等の記憶装置によって実現される。
外部記憶装置15は、プログラム、ソースコード、および各種データ等を蓄積して記憶する記憶装置である。外部記憶装置15は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク、または光磁気ディスク(MO:Magneto−Optical Disk)等の記憶装置によって実現される。
制御部16は、PC1の各部の動作を制御する装置である。制御部16は、例えば、CPU(Central Processing Unit)およびASIC(Application Specific Integrated Circuit)等で実現される。
図2は、制御部の機能ブロック図である。図2を参照しながら、制御部16の機能ブロック構成について説明する。
図2に示すように、制御部16は、各機能を実現する手段として、変数特定手段161(特定手段)と、等価変換手段162と、グラフ作成手段163(作成手段)と、テーブル変換手段164(変換手段)と、を備えている。上述の変数特定手段161、等価変換手段162、グラフ作成手段163およびテーブル変換手段164は、制御部16が外部記憶装置15等に記憶されたプログラムを記憶部14に読み出して実行することにより実現される。なお、変数特定手段161、等価変換手段162、グラフ作成手段163、テーブル変換手段164は、すべてがプログラムの実行により実現されることに限定されるものではなく、少なくともいずれかが、ハードウェア回路によって実現されるものとしてもよい。
変数特定手段161は、仕様抽出動作の対象となるソフトウェアのモジュール(対象モジュール)のソースコードから出力変数(例えば、グローバル変数)を抽出し特定する機能を有する。ここで、グローバル変数とは、ソフトウェアの各モジュールの外で宣言された変数であり、いずれのモジュールにおいても参照および更新が可能な変数である。
等価変換手段162は、モジュールのソースコードに対して等価変換処理を実行して、ソースコードを縮約し、出力変数についての方程式を導出する機能を有する。等価変換処理として、定数伝播処理、入力変数伝播処理、枝刈り処理および条件式情報伝播処理等があるが、各処理の詳細については後述する。
グラフ作成手段163は、等価変換手段162により導出された出力変数についての方程式から、原因結果グラフを作成する機能を有する。ここで、原因結果グラフとは、1または複数の入力条件をノードとして、各ノードを論理記号により結合し、入力条件の組み合わせから出力値を導出するためのグラフである。原因結果グラフを作成する動作の詳細については後述する。
テーブル変換手段164は、グラフ作成手段163により作成された原因結果グラフをデシジョンテーブル(仕様情報)に変換する機能を有する。ここで、仕様情報であるデシジョンテーブルとは、入力条件の組み合わせから出力変数の値(出力値)がどのような値をとるかを表す表であり、モジュールの振る舞いを表現する、すなわち、モジュールの仕様を決定付けるものである。本実施形態において、仕様の抽出とは、モジュールからデシジョンテーブルを求めることをいうものとする。なお、仕様情報としてデシジョンテーブルを挙げたが、これに限定されるものではなく、デシジョンテーブルの同様の情報を表形式以外の形式で表した情報を仕様情報としてもよい。
図3は、モジュールが入力変数から出力変数の値を生成する動作を説明する図である。図3を参照しながら、対象モジュール20について、モジュールとしての動作の概要を説明する。
図3に示すように、対象モジュール20は、入力変数に格納された値(入力値)に基づいて、所定の処理を実行し、出力変数に出力値を格納して出力する機能を有する。対象モジュール20の入力変数の値は、対象モジュール20の外部から入力されるデータ(例えば、引数およびグローバル変数)である。対象モジュール20の出力変数の値は、対象モジュール20の外部に伝達されるデータ(例えば、更新されるグローバル変数)である。このような、対象モジュール20の入出力関係に基づいた動作の仕様を抽出することが、上述のデシジョンテーブルを求めることに相当する。
図4は、実施形態に係るPCにおける仕様抽出動作を示すフローチャートである。図5は、定数伝播処理を説明する図である。図6は、入力変数伝播処理を説明する図である。図7は、枝刈り処理を説明する図である。図8は、条件式情報伝播処理を説明する図である。図9は、等価変換処理のうち定数伝播処理、入力変数伝播処理および枝刈り処理のループ処理を示すフローチャートである。図4〜9を参照しながら、仕様抽出装置であるPC1の仕様抽出動作の流れについて説明する。
(ステップS10)
制御部16の変数特定手段161は、対象モジュールのソースコードにおける出力変数を特定する。具体的には、変数特定手段161は、出力変数として、ソースコードにおいて更新されているグローバル変数を特定する。そして、ステップS11へ進む。
なお、変数特定手段161は、出力変数として、ソースコードにおける更新されるグローバル変数を特定するものとしているが、これに限定されるものではない。例えば、変数特定手段161は、対象モジュールのグローバル変数以外の戻り値を、出力変数として特定してもよい。
(ステップS11)
制御部16の等価変換手段162は、対象モジュールのソースコードにおいて等価変換処理を実行し、出力変数についての方程式を導出する。具体的には、等価変換手段162は、等価変換処理として、定数伝播処理、入力変数伝播処理、枝刈り処理および条件式情報伝播処理を実行する。
ここで、図5を参照しながら、定数伝播処理の内容について説明する。定数伝播処理は、ソースコードにおいて、変数への定数の代入箇所を開始点として、その変数を読み取る(参照する)時点で有効かどうかを判定し、有効である場合、定数に置き換える処理である。図5に示すサンプルコード30に対して、定数伝播処理を実行した結果のコードを定数伝播処理後コード31とする。
まず、サンプルコード30のコード部300において、定数「1」が変数「A」に代入されているので、この代入している箇所を開始点とする。
次に、サンプルコード30のコード部301において、変数「A」が参照されている。変数「A」には、コード部300において定数「1」が代入されており、コード部301において、変数「A」を参照すると定数「1」を得ることができるので、この変数「A」を定数「1」に置き換える。その結果、コード部301(「B=A+1;」)は、定数伝播処理後コード31の定数伝播処理後コード部310(「B=2;」)に置き換えることができる。
次に、同様に、コード部301が、定数伝播処理後コード部310に置き換えられた結果、サンプルコード30のコード部302(「C=B;」)は、定数伝播処理後コード31の定数伝播処理後コード部311(「C=2;」)に置き換えることができる。
そして、コード部300における変数「A」への定数「1」の代入から、サンプルコード30のコード部303(「Func(A);」)は、定数伝播処理後コード31の定数伝播処理後コード部312(「Func(1);」)に置き換えることができる。これは、関数「Func」の引数としての変数「A」が定数「1」に置き換えられたことを意味する。
以上の動作にように、定数伝播処理は、ソースコード中の変数を定数に置き換えることによって、ソースコードを簡略化し縮約することができる。
次に、図6を参照しながら、入力変数伝播処理の内容について説明する。入力変数伝播処理は、グローバル変数である入力変数を使って計算される変数の箇所を起点として、その下流でその変数を用いる式において、その変数を入力変数に置き換える処理をいうものとする。図6に示すサンプルコード30aに対して、入力変数伝播処理を実行した結果のコードを入力変数伝播処理後コード31aとする。
まず、サンプルコード30aにおけるコード部300aにおいて、入力変数「g1」が変数「a1」に代入されているので、この代入計算されている箇所を起点とする。
次に、サンプルコード30aのコード部301a(「a2=a1+1;」)において、コード部300aにおける変数「a1」が計算に用いられているので、定数伝播処理後コード31aの入力変数伝播処理後コード部310a(「a2=g1+1;」)に置き換えることができる。
以上の動作のように、入力変数伝播処理は、ソースコード中の変数を入力変数に置き換えることによって、ソースコードを簡略化し縮約することができる。
次に、図7を参照しながら、枝刈り処理の内容について説明する。枝刈り処理は、定数伝播処理および入力変数伝播処理を実行した結果、分岐条件式を定数(if文であれば条件式、switch文であればcase値)に置き換えること等によって、複数の分岐の選択肢のうち、実行されることのない選択肢を削除する処理である。図7に示すサンプルコード30bに対して、枝刈り処理を実行した結果のコードを枝刈り処理後コード31bとする。
サンプルコード30bのコード部300bにおいて、変数「A」に定数「1」が入力されている。したがって、条件分岐式であるサンプルコード30bのコード部301bにおける条件(「A==0」)を満たすことはないので、分岐の選択肢の一つである「分岐1;」が実行されることはない。よって、この実行されることのない「分岐1;」を削除することによって、条件分岐式であるコード部301bは、枝刈り処理後コード31bの枝刈り処理後コード部310b(「分岐2;」)に置き換えることができる。
以上のように、枝刈り処理は、数行に渡って記述された条件分岐式の記述量を減らす(図7の例では1行)ことができるので、ソースコードを縮約することができる。
次に、図8を参照しながら、条件式情報伝播処理の内容について説明する。条件式情報伝播処理は、条件分岐式(if文およびswitch文等)を3項式に置き換える処理をいうものとする。図8に示すサンプルコード30cに対して、条件式情報伝播処理を実行した結果のコードを条件式情報伝播処理後コード31cとする。
サンプルコード30cのコード部300cはif文で表された条件分岐式である。このコード部300cを、3項演算子を用いた3項式に置き換えたのが条件式情報伝播処理後コード31cの条件式情報伝播処理後コード部310c(「b=(A?0:1);」)である。
以上のように、条件式情報伝播処理は、数行に渡って記述された条件分岐式を1行の3項式に置き換えることができるので、ソースコードを簡略化し縮約することができる。
次に、図9を参照しながら、定数伝播処理、入力変数伝播処理および枝刈り処理をループ処理する動作を説明する。枝刈り処理は、上述のように、定数伝播処理および入力変数伝播処理を実行した後等に、分岐条件式を定数に置き換えることが可能となった場合に置き換えることによって、複数の分岐の選択肢のうち、実行されることのない選択肢を削除する処理である。なお、定数伝播処理、入力変数伝播処理および枝刈り処理の実行順序は任意でよい。
また、枝刈り処理を実行することによって、条件分岐式が簡略化され、分岐の選択肢のうち特定の選択肢が条件分岐式外に出る、すなわち、特定の選択肢が常時実行されることになる。この枝刈り処理により常時実行されることになった選択肢は、新たに、定数伝播処理または入力変数伝播処理により縮約することができる可能性がある。
以上のことから、図9に示す手順で定数伝播処理、入力変数伝播処理および枝刈り処理を実行する。まず、等価変換手段162は、ソースコードに対して、定数伝播処理(ステップS110)および入力変数伝播処理(ステップS111)を実行する。次に、等価変換手段162は、定数伝播処理および入力変数伝播処理によって縮約されたソースコードに対して、枝刈り処理を実行する(ステップS112)。そして、等価変換手段162は、定数伝播処理、入力変数伝播処理および枝刈り処理を実行した結果、ソースコードの縮約が収束したか否か、すなわち、ソースコードがこれ以上縮約できないか否かを判定する。縮約が収束した場合(ステップS113:Yes)、処理を終了し、縮約が収束していない場合(ステップS113:No)、ステップS110へ戻る。
以上のように、図9に示す定数伝播処理、入力変数伝播処理および枝刈り処理のループ処理を実行することによって、ソースコードをより確実に縮約することができる。そして、等価変換手段162は、定数伝播処理、入力変数伝播処理および枝刈り処理のループ処理を実行した後、条件式情報伝播処理を実行することによって、3項式で表された、出力変数についての方程式を導出することができる。そして、ステップS12へ進む。
(ステップS12)
制御部16のグラフ作成手段163は、等価変換手段162により導出された出力変数についての方程式から、原因結果グラフを作成する。具体的には、グラフ作成手段163は、出力変数についての方程式の各入力条件をノードとして、後述するように、OR記号部、AND記号部およびNOT記号部で結合することにより、出力変数の値(出力値)の振る舞いが把握できる原因結果グラフを作成する。ただし、グラフ作成手段163は、上述のように出力変数についての方程式から、入力条件式のノードがOR記号部、AND記号部およびNOT記号部によって結合された原因結果グラフを作成する。したがって、等価変換手段162は、3項演算子を用いて表された方程式を、論理演算子を用いて表された方程式に変換することが望ましい。そして、ステップS13へ進む。
(ステップS13)
制御部16のテーブル変換手段164は、グラフ作成手段163により作成された原因結果グラフをデシジョンテーブルに変換する。具体的には、テーブル変換手段164は、上述の出力変数についての方程式の入力条件(原因結果グラフにおける入力条件のノード)の値の組み合わせごとに、出力変数の値(出力値)がどのように値をとるかについて表にしたデシジョンテーブルを作成する。そして、仕様抽出動作を終了する。
図10は、モジュールのソースコードのサンプルを示す図である。図11は、モジュールに対して出力変数を特定する処理を説明する図である。図12は、モジュールに対して定数伝播処理および入力伝播処理を実行する動作を説明する図である。図13は、モジュールに対して枝刈り処理を実行する動作を説明する図である。図14は、モジュールに対して条件式情報伝播処理を実行する動作を説明する図である。図15は、モジュールに対して条件式情報伝播処理を実行して方程式を得る動作を説明する図である。図16は、3項演算子により表された方程式を論理演算子により表された方程式に変換する動作を説明する図である。図10〜16を参照しながら、具体的なモジュールに対する等価変換手段162による等価変換処理について説明する。
図10に示す対象モジュール20は、以下の等価変換処理を実行する前の具体的なサンプルコードである。なお、図10においては、対象モジュール20のソースコードがC言語で記載されているが、これに限定されるものではなく、上述の等価変換処理が実行できるプログラム言語であればよい。
まず、図11に示すように、制御部16の変数特定手段161は、対象モジュール20において、更新されているグローバル変数、すなわち出力変数を特定する。図11に示すように、対象モジュール20においては、グローバル変数としては、グローバル変数200(「Output_data」)およびグローバル変数201(「Global_status」)が宣言されている。変数特定手段161は、グローバル変数のうち、グローバル変数201は参照されているのみ(「sample_status1=Global_status;」)なので、出力変数ではなく入力変数であると判断する。また、変数特定手段161は、グローバル変数のうち、グローバル変数200は書き換えられている(更新されている)(例えば「Output_data=status2;」)ので出力変数であると特定する。
対象モジュール20における入力条件部202〜204は、後述するように、等価変換手段162によって導出された出力変数についての方程式における入力条件となるコード部である。
次に、図12に示すように、コード部205において変数「status1」に定数「0」が代入されていることから、「status2=status1+1;」は「status2=1;」と置き換えることができる。したがって、等価変換手段162は、定数伝播処理によって、対象モジュール20のコード部205を、定数伝播処理後コード部210に置き換えることができる。
また、変数「statsu2」には定数「1」が代入されていることから、コード部207a〜207c(「Output_data=status2;」)は、「Output_data=1;」に置き換えることができる。したがって、等価変換手段162は、定数伝播処理によって、対象モジュール20のコード部207a〜207cを、それぞれ定数伝播処理後コード部212a〜212cに置き換えることができる。
また、変数「status2」には定数「1」が代入されていることから、If文の条件式を示すコード部208(「if((status2==0))」)は、「if((1==0))」に置き換えることができる。したがって、等価変換手段162は、定数伝播処理によって、対象モジュール20のコード部208を、定数伝播処理後コード部213に置き換えることができる。
そして、コード部206において入力変数「Global_status」が変数「sample_status1」に入力されていることから、「sample_status2=sample_status1+1;」は「sample_status2=Global_status+1;」に置き換えることができる。したがって、等価変換手段162は、入力変数伝播処理によって、対象モジュール20のコード部206を、入力変数伝播処理後コード部211に置き換えることができる。
以上のようにして、等価変換手段162は、定数伝播処理および入力変数伝播処理によって、対象モジュール20を処理後モジュール21に変換する。
次に、図13に示すように、分岐条件式であるコード部214において、図12に示す定数伝播処理後コード部213に相当する条件の部分が「1==0」であるので、「Output_data=1;」は実行されることがない。したがって、等価変換手段162は、枝刈り処理によって、処理後モジュール21のコード部214を、枝刈り処理後コード部220(コードなし)に置き換えることができる。
以上のようにして、等価変換手段162は、枝刈り処理によって、処理後モジュール21を処理後モジュール22に変換する。
次に、図14に示すように、条件分岐式であるコード部221は、3項演算子を用いた3項式に置き換えることができる。すなわち、等価変換手段162は、条件式情報伝播処理によって、処理後モジュール22のコード部221を、3項式である条件式情報伝播処理後コード部230(「Output_data=(!(sample_varialbe2==1)&&sample_flags==1)?1:0;」)に置き換えることができる。
以上のようにして、等価変換手段162は、条件式情報伝播処理によって、処理後モジュール22を処理後モジュール23に変換する。
次に、図15に示すように、条件分岐式であるコード部231は、3項演算子を用いた3項式に置き換えることができる。すなわち、等価変換手段162は、条件式情報伝播処理によって、処理後モジュール23のコード部231を、3項式である条件式情報伝播処理後コード部240(「Output_data=sample_variable1>61?1:((!(sample_variable2==1)&&sample_flags==1)?1:0);」)に置き換えることができる。
以上のようにして、等価変換手段162は、条件式情報伝播処理によって、処理後モジュール23を処理後モジュール24に変換する。この変換された処理後モジュール24の条件式情報伝播処理後コード部240の方程式が、等価変換手段162によって導出される出力変数ついての方程式となる。ただし、上述したように、後工程の原因結果グラフは、グラフ作成手段163により、入力条件式のノードがOR記号部、AND記号部およびNOT記号部によって結合されて作成される。したがって、図16に示すように、等価変換手段162は、導出した条件式情報伝播処理後コード部240に示す3項演算子を用いて表された方程式を、論理演算子を用いて表された方程式241(「Output_data=(sample_variable1>61)||!(sample_variable1>61)&&!(sample_variable2==1)&&sample_flags==1」)に変換する。すなわち、方程式241が、等価変換手段162が最終的に導出する出力変数についての方程式である。
以上のように、等価変換手段162による等価変換処理(定数伝播処理、入力変数伝播処理、枝刈り処理および条件式情報伝播処理)によって、モジュールのソースコードを縮約することができ、それによって縮約された出力変数について方程式を導出することができる。
図17は、方程式の入力条件の論理式からOR記号部およびAND記号部によって中間的な原因結果グラフを導出する動作を説明する図である。図18は、中間的な原因結果グラフからNOT記号部および同一式のノードの統合によって最終的な原因結果グラフを導出する動作を説明する図である。図17および18を参照しながら、グラフ作成手段163による原因結果グラフの作成について説明する。
まず、図17に示すように、グラフ作成手段163は、等価変換手段162によって導出された図16に示す方程式241の右辺(入力条件が論理演算子で結合された式)を抽出する。OR演算子(「||」)、AND演算子(「&&」)、NOT演算子(「!」)の順に演算の優先順位が高くなるので、グラフ作成手段163は、OR演算子によって結合された入力条件をそれぞれ抽出し、それぞれの入力条件をノードとして、各ノードを図17に示すOR記号部60によって結合させる。具体的には、グラフ作成手段163は、方程式241の右辺のうちOR演算子で結合された入力条件「sample_variable1>61」および「!(sample_variable1>61)&&!(sample_variable2==1)&&sample_flags==1」を、それぞれノード40、41としてOR記号部60で結合させる。ノード40とノード41とのOR演算の結果が出力値となり、グラフ作成手段163は、OR記号部60の出力側と、出力値を示す出力値ノード70とを結合させる。
次に、グラフ作成手段163は、生成した各ノードの入力条件において、AND演算子によって結合された入力条件をそれぞれ抽出し、それぞれの入力条件を新たなノードとして、各ノードを図17に示すAND記号部61によって結合させる。具体的には、グラフ作成手段163は、ノード41の入力条件のうちAND演算子で結合された入力条件「!(sample_variable1>61)」、「!(sample_variable2==1)」および「sample_flags==1」を、それぞれ、ノード42〜44としてAND記号部61で結合させる。そして、グラフ作成手段163は、AND記号部61の出力側と、OR記号部60とを結合させる。
次に、図18に示すように、グラフ作成手段163は、生成した各ノードの入力条件において、NOT演算子を含む入力条件を抽出し、NOT演算子を外した入力条件を新たなノードとして、そのノードを図18に示すNOT演算子と結合させる。具体的には、グラフ作成手段163は、ノード42の入力条件「!(sample_variable1>61)」にNOT演算子が含まれるので、NOT演算子を外した入力条件「sample_variable1>61」を新たなノードであるノード42aとする。そして、グラフ作成手段163は、ノード42aを、NOT記号部62aを介してAND記号部61に結合させる。また、グラフ作成手段163は、ノード43の入力条件「!(sample_variable2==1)」にNOT演算子が含まれるので、NOT演算子を外した入力条件「sample_variable2==1」を新たなノードであるノード43aとする。そして、グラフ作成手段163は、ノード43aを、NOT記号部62bを介してAND記号部61に結合させる。
次に、グラフ作成手段163は、ここまでで生成したノードのうち、入力条件が同一式であるノードを1つのノードに統一する。具体的には、グラフ作成手段163は、ノード40およびノード42aの入力条件が「sample_variable1>61」で同一式なので、ノード40とノード42aとを1つのノード45に統一する。
以上のように、グラフ作成手段163は、等価変換手段162より導出された方程式241から、右辺に含まれる入力条件をノードとしてOR記号部、AND記号部およびNOT記号部で結合させ、同一式の入力条件を1つノードに統一させることによって、原因結果グラフを作成する。
以上のように、グラフ作成手段163は、出力変数の方程式における入力条件を抽出して、抽出した入力条件をノードとして、論理記号(OR記号部、AND記号部およびNOT記号部)によって結合し、共通のノードを統合している。これによって、等価変換手段162により導出された出力変数についての方程式から、縮約された原因結果グラフを作成することができる。
図19は、原因結果グラフからデシジョンテーブルを作成する動作を説明する図である。図19を参照しながら、テーブル変換手段164による原因結果グラフからデシジョンテーブルへの変換について説明する。
図19に示すように、テーブル変換手段164は、グラフ作成手段163により作成された原因結果グラフをデシジョンテーブル50に変換する。デシジョンテーブルの形式は、様々な形式が存在するが、本実施形態においては、図19に示すデシジョンテーブル50のように、「出力変数」、「入力条件」および「出力値」の各欄を設けたテーブルを作成するものとする。ただし、デシジョンテーブルの形式として、上述のものに限定するものではない。
具体的には、まず、テーブル変換手段164は、テーブルの「出力変数」の欄に、等価変換手段162によって導出された方程式の出力変数「Output_data」を記載する。次に、テーブル変換手段164は、テーブルの「入力条件」の欄に、グラフ作成手段163により作成された原因結果グラフにおけるすべてのノードの入力条件を記載する。図19においては、入力条件として、「sample_variable1>61」、「sample_variable2==1」および「sample_flags==1」が記載されている。そして、テーブル変換手段164は、テーブルの「出力値」の欄に、取り得る値である「1」および「0」を記載する。
次に、テーブル変換手段164は、原因結果グラフに基づいて、各入力条件が真値「Y」であるか、偽値「N」であるかの組み合わせによって、出力値が「1」および「0」のいずれをとるかについての対応関係を記載する。
原因結果グラフから、入力条件「sample_variable1>61」が真値「Y」であれば、入力条件「sample_variable2==1」および「sample_flags==1」の真偽に関わりなく、出力値は「1」となる。したがって、テーブル変換手段164は、テーブルに、入力条件「sample_variable1>61」が真値「Y」の場合、出力値は「1」となる対応関係を記載する。このとき、テーブルにおける入力条件「sample_variable2==1」および「sample_flags==1」の欄は空欄としている。
また、原因結果グラフから、入力条件「sample_variable1>61」が偽値「N」、かつ入力条件「sample_flags==1」が真値「Y」の場合、入力条件「sample_variable2==1」の真偽によって、出力値は異なる。すなわち、入力条件「sample_variable2==1」が偽値「N」の場合、出力値は「1」となり、真値「Y」の場合、出力値は「0」となる。したがって、テーブル変換手段164は、テーブルに、入力条件「sample_variable1>61」が偽値「N」、「sample_variable2==1」が偽値「N」、かつ「sample_flags==1」が真値「Y」の場合、出力値は「1」となる対応関係を記載する。また、テーブル変換手段164は、テーブルに、入力条件「sample_variable1>61」が偽値「N」、「sample_variable2==1」が真値「Y」、かつ「sample_flags==1」が真値「Y」の場合、出力値は「0」となる対応関係を記載する。
また、原因結果グラフから、入力条件「sample_variable1>61」および「sample_flags==1」が偽値「N」であれば、入力条件「sample_variable2==1」の真偽に関わりなく、出力値は「0」となる。したがって、テーブル変換手段164は、テーブルに、入力条件「sample_variable1>61」および「sample_flags==1」が偽値「N」の場合、出力値は「0」となる対応関係を記載する。このとき、テーブルにおける入力条件「sample_variable2==1」の欄は空欄としている。
以上の動作によって、テーブル変換手段164は、グラフ作成手段163により作成された原因結果グラフを、図19に示すデシジョンテーブル50に変換する。このように、テーブル変換手段164は、等価変換手段162により導出された、縮約された出力変数についての方程式から、グラフ作成手段163により縮約された原因結果グラフが作成され、この縮約された原因結果グラフに基づいてデシジョンテーブル50に変換している。これによって、グラフ作成手段163により作成された原因結果グラフから、最適化された入力条件の組み合わせから構成されたコンパクトなデシジョンテーブルを求めることができる。
以上のように、本実施形態に係る仕様抽出装置(PC1)において、モジュールのソースコードに対して等価変換手段162による等価変換処理を実行することによって、ソースコードを縮約するものとしている。これによって、モジュールの振る舞いを表す出力変数についての方程式を縮約させることができる。
また、等価変換手段162は、ソースコードの縮約が収束するまで定数伝播処理、入力変数伝播処理および枝刈り処理のループ処理を実行している。これによって、モジュールのソースコードをより確実に縮約することができる。
また、グラフ作成手段163は、出力変数の方程式における入力条件を抽出して、抽出した入力条件をノードとして、論理記号(OR記号部、AND記号部およびNOT記号部)によって結合し、共通のノードを統合している。これによって、等価変換手段162により導出された出力変数についての方程式から、縮約された原因結果グラフを作成することができる。
また、テーブル変換手段164は、等価変換手段162により導出された、縮約された出力変数についての方程式から、グラフ作成手段163により縮約された原因結果グラフが作成され、この縮約された原因結果グラフに基づいてデシジョンテーブル50に変換している。これによって、グラフ作成手段163により作成された原因結果グラフから、最適化された入力条件の組み合わせから構成されたコンパクトなデシジョンテーブルを求めることができる。すなわち、モジュールのソースコードが長大であっても、出力変数ごとに最適化された入力条件を求めてコンパクトなデシジョンテーブルを求めることができるので、モジュールについて有効な仕様の抽出を行うことができる。
なお、モジュールのソースコードにおいて出力変数を使って計算する式がない場合、出力変数が等価変換手段162による等価変換処理のうちの枝刈り処理によって、出力変数についての方程式が削除されてしまう場合がある。この場合、図20の対象モジュール25の仮変数設定コード部250に示すように、変数特定手段161により特定された出力変数(図20では「V1」、「V2」および「V3」)を、仮変数(図20では「tmp_V1」、「tmp_V2」および「tmp_V3」)に代入処理を実行すればよい。これによって、等価変換手段162によって対象モジュール25から等価変換後モジュール26に変換された場合、仮変数設定コード部250は、仮変数(実質は出力変数)についての方程式である方程式コード部260に変換され、方程式が削除されてしまうことを防止できる。
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換えおよび変更を行うことができる。この実施形態およびその変形は、発明の範囲および要旨に含まれるとともに、特許請求の範囲に記載された発明およびその均等の範囲に含まれる。
1 PC
11 通信部
12 操作部
13 表示部
14 記憶部
15 外部記憶装置
16 制御部
17 シリアルバス
20 対象モジュール
21〜24 処理後モジュール
25 対象モジュール
26 等価変換後モジュール
30、30a〜30c サンプルコード
31 定数伝播処理後コード
31a 入力変数伝播処理後コード
31b 枝刈り処理後コード
31c 条件式情報伝播処理後コード
40〜45 ノード
42a、43a ノード
50 デシジョンテーブル
60 OR記号部
61 AND記号部
62a、62b NOT記号部
70 出力値ノード
161 変数特定手段
162 等価変換手段
163 グラフ作成手段
164 テーブル変換手段
200、201 グローバル変数
202〜204 入力条件部
205、206、207a〜207c、208 コード部
210 定数伝播処理後コード部
211 入力変数伝播処理後コード部
212a〜212c、213 定数伝播処理後コード部
214 コード部
220 枝刈り処理後コード部
221 コード部
230 条件式情報伝播処理後コード部
231 コード部
240 条件式情報伝播処理後コード部
241 方程式
250 仮変数設定コード部
260 方程式コード部
300〜303 コード部
300a、301a コード部
300b、301b コード部
300c コード部
310〜312 定数伝播処理後コード部
310a 入力変数伝播処理後コード部
310b 枝刈り処理後コード部
310c 条件式情報伝播処理後コード部

Claims (10)

  1. ソースコードにおいて出力変数を特定する特定手段と、
    前記ソースコードにおける式を等価な式に置き換える等価変換処理を実行して、前記出力変数についての方程式を導出する等価変換手段と、
    前記方程式から入力条件を抽出し、該入力条件をノードとする原因結果グラフを作成する作成手段と、
    前記原因結果グラフを、前記入力条件の真偽の組み合わせと、前記出力変数の値である出力値との対応関係を表す仕様情報に変換する変換手段と、
    を備えた仕様抽出装置。
  2. 前記等価変換手段は、前記等価変換処理として、定数伝播処理、入力変数伝播処理および枝刈り処理のループ処理を実行することによって前記ソースコードを縮約し、該ソースコードの縮約が収束した時点で前記ループ処理を終了する請求項1に記載の仕様抽出装置。
  3. 前記等価変換手段は、縮約が収束した前記ソースコードに対して、条件式情報伝播処理を実行する請求項2に記載の仕様抽出装置。
  4. 前記等価変換手段は、前記等価変換処理として、定数伝播処理、入力変数伝播処理、枝刈り処理および条件式情報伝播処理を実行する請求項1に記載の仕様抽出装置。
  5. 前記等価変換手段は、導出した前記方程式が3項演算子を用いて表されている場合、前記方程式を、論理演算子を用いて表された式に変換する請求項1〜4のいずれか一項に記載の仕様抽出装置。
  6. 前記作成手段は、前記ノードを前記入力条件の論理演算を示す論理記号により結合させることによって前記原因結果グラフを作成する請求項1〜5のいずれか一項に記載の仕様抽出装置。
  7. 前記作成手段は、前記原因結果グラフにおける前記ノードのうち、同一式の前記入力条件を示す前記ノードを統合する請求項6に記載の仕様抽出装置。
  8. 前記仕様情報は、デシジョンテーブルである請求項1〜7のいずれか一項に記載の仕様抽出装置。
  9. 特定手段が、ソースコードにおいて出力変数を特定するステップと、
    等価変換手段が、前記ソースコードにおける式を等価な式に置き換える等価変換処理を実行して、前記出力変数についての方程式を導出するステップと、
    作成手段が、前記方程式から入力条件を抽出し、該入力条件をノードとする原因結果グラフを作成するステップと、
    変換手段が、前記原因結果グラフを、前記入力条件の真偽の組み合わせと、前記出力変数の値である出力値との対応関係を表す仕様情報に変換するステップと、
    を有する仕様抽出方法。
  10. ソースコードにおいて出力変数を特定する特定手段と、
    前記ソースコードにおける式を等価な式に置き換える等価変換処理を実行して、前記出力変数についての方程式を導出する等価変換手段と、
    前記方程式から入力条件を抽出し、該入力条件をノードとする原因結果グラフを作成する作成手段と、
    前記原因結果グラフを、前記入力条件の真偽の組み合わせと、前記出力変数の値である出力値との対応関係を表す仕様情報に変換する変換手段と、
    をコンピュータに実現させるためのプログラム。
JP2014093091A 2014-04-28 2014-04-28 仕様抽出装置、仕様抽出方法およびプログラム Active JP6239438B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014093091A JP6239438B2 (ja) 2014-04-28 2014-04-28 仕様抽出装置、仕様抽出方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014093091A JP6239438B2 (ja) 2014-04-28 2014-04-28 仕様抽出装置、仕様抽出方法およびプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017211764A Division JP6490779B2 (ja) 2017-11-01 2017-11-01 仕様抽出装置、仕様抽出方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015210735A JP2015210735A (ja) 2015-11-24
JP6239438B2 true JP6239438B2 (ja) 2017-11-29

Family

ID=54612846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014093091A Active JP6239438B2 (ja) 2014-04-28 2014-04-28 仕様抽出装置、仕様抽出方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6239438B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6077694B1 (ja) * 2016-03-14 2017-02-08 株式会社富士通エフサス デシジョンテーブル生成装置、デシジョンテーブル生成方法およびデシジョンテーブル生成プログラム
JP6904914B2 (ja) * 2018-02-02 2021-07-21 株式会社日立製作所 決定表生成装置、及び決定表生成方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04188322A (ja) * 1990-11-22 1992-07-06 Hitachi Ltd ソフトウェア仕様情報抽出方法
JPH0540616A (ja) * 1991-08-02 1993-02-19 Hitachi Ltd プログラム仕様生成方法
JP4724387B2 (ja) * 2004-06-24 2011-07-13 富士通株式会社 プログラム変換プログラム、プログラム変換装置およびプログラム変換方法
JP4835859B2 (ja) * 2007-02-15 2011-12-14 日本電気株式会社 状態遷移図作成装置および状態遷移図作成方法

Also Published As

Publication number Publication date
JP2015210735A (ja) 2015-11-24

Similar Documents

Publication Publication Date Title
US9626164B1 (en) Test-driven development module for repository-based development
CN111090991B (zh) 场景纠错方法、装置、电子设备和存储介质
US11586425B2 (en) Method for compilation optimization of hosted app, electronic device and readable storage medium
US9639454B2 (en) Computer-readable recording medium storing therein test data generating program, test data generating method, test data generating apparatus and information processing system
US10891115B2 (en) Model configuration using partial model data
JP6309795B2 (ja) 情報処理装置、情報処理方法およびプログラム
KR20150092880A (ko) 그래픽 사용자 인터페이스 개발의 가변 설정 기반 후설계 방법 및 장치
JPWO2017090475A1 (ja) 情報処理システム、関数作成方法および関数作成プログラム
CN112270413A (zh) 算子合并方法、装置、电子设备及存储介质
JP6239438B2 (ja) 仕様抽出装置、仕様抽出方法およびプログラム
JP6490779B2 (ja) 仕様抽出装置、仕様抽出方法およびプログラム
US10732938B2 (en) System design apparatus and method
CN111026916B (zh) 文本描述的转换方法、装置、电子设备及存储介质
JP6305944B2 (ja) 仕様抽出装置、仕様抽出方法およびプログラム
WO2016181526A1 (ja) 制御ロジック図解析装置および制御ロジック図解析方法
US20160070564A1 (en) Dynamically schematized log messages for software applications
JP2009163662A (ja) 情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラム
JP2019074966A (ja) Sql文抽出装置、sql文抽出方法及びプログラム
CN114449063A (zh) 一种报文处理方法、装置及设备
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
JP2016051367A (ja) データ解析装置、データ解析方法、および、プログラム。
JP2016099726A (ja) 仕様生成方法、仕様生成装置、及びプログラム
JP2015035174A (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
JP6085481B2 (ja) プログラマブル回路、演算処理方法
JP6305356B2 (ja) 仕様抽出装置、仕様抽出方法およびプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170817

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171101

R150 Certificate of patent or registration of utility model

Ref document number: 6239438

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150