JP6802109B2 - ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 - Google Patents
ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 Download PDFInfo
- Publication number
- JP6802109B2 JP6802109B2 JP2017092887A JP2017092887A JP6802109B2 JP 6802109 B2 JP6802109 B2 JP 6802109B2 JP 2017092887 A JP2017092887 A JP 2017092887A JP 2017092887 A JP2017092887 A JP 2017092887A JP 6802109 B2 JP6802109 B2 JP 6802109B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- path
- information
- path information
- rule
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
おける当該変数の値と、前記ループ文をn回実行した後における当該変数の値との関係を示す情報である汎化ループ内パス情報を生成する、ループ内記号実行部と、ループを特定回数実行した場合における前記ソースコードのパスに関する情報である特化ループ内パス情報を生成するループ内パス特化部と、前記ループ内パス特化部が生成した前記特化ループ内パス情報のうち、任意回数だけループを実行した場合における変数の値を含む第1の特化ループ内パス情報を取得し、前記第1の特化ループ内パス情報に前記汎化ループ内パス情報を適用することにより、前記第1の特化ループ内パス情報よりもループ回数が1つ大きい第2の特化ループ内パス情報を生成し、前記第2の特化ループ内パス情報と前記ループ外パス情報とに基づき、前記ソフトウェアの仕様を表すルールを含む情報であるルール情報を生成するルール生成部、を備える。
図1に第1実施形態として説明するソフトウェア仕様分析装置(以下、仕様分析装置100と称する。)の機能ブロック図を示している。仕様分析装置100は、分析対象となるソフトウェアを実現しているプログラムのソースコード151について記号実行を行うことにより、上記ソフトウェアの仕様に関する情報(以下、ルール情報157とも称する。)を生成する。
のようなIF-THEN関係はルールとも称される。ソースコード151の全てのパスを探索し
て生成したルールの集合は、そのソースコードの仕様に相当する。
。そのため、例えば、ループ文のステップ数が大きい場合、記号実行により多くのリソースが消費されてしまい、また仕様を表すルールを取得するまでの時間も長くなる。
)、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、ストレージシステム、ICカード、SDメモリカードや光学式記録媒体等の記録媒体に対するデータの読取/書込装置等である。補助記憶装置53に格納されているプログラムやデータは主記憶装置52に随時ロードされる。補助記憶装置53は、例えば、ネットワークストレージのように仕様分析装置100とは独立した構成としてもよい。
フェースであり、例えば、画面表示装置(液晶ディスプレイ(Liquid Crystal Display)、プロジェクタ、グラフィックカード等)、印字装置、記録媒体へのデータの記録装置等である。尚、例えば、仕様分析装置100が、処理経過や処理結果等のデータを通信装置56を介して他の装置に提供する構成としてもよい。
115が生成したルール情報157を出力装置55や通信装置56に出力する。尚、入出力処理部116は、例えば、ループ文ごとにループ上限回数の指定を受け付ける。また入出力処理部116は、例えば、ソースコード151に含まれている全てのループ文について一括指定によりループ上限回数の指定を受け付ける。また入出力処理部116は、ユーザからループ上限回数の入力を受け付ける際にソースコード151を取得してこれを出力装置55に表示する。
含む。またノード名が「N1」のノードは、図3に示すソースコード151の2行目の記述に対応し、「z=0」という手続きを含む。またノード名が「N2」のノードは、図3に示す
ソースコード151の3〜10行目の記述、即ちループ文301に対応する。このようにループ外記号実行部112は、ループ文301の記述についてはブラックボックスとして取り扱う。
部112は、当該行を分岐点として、条件が「True」の場合と「False」の場合の2通り
のパスを探索する。尚、以下の説明において、これら2つのパスの夫々に識別子(以下、パス名と称する。)として「P1」,「P2」を付与する。
。)が設定される。ここで図5はソースコード151の11行目で「True」側のパス「P1」を探索することを選択した場合に対応するので、ノード名が「N3」のノードのパス条件1523には11行目の分岐条件が「True」となるための条件「AL_x % 2 == 0」が設定
されている。一方、図6はソースコード151の11行目で「False」側のパス「P2」を
探索することを選択した場合に対応するので、ノード名が「N3」のノードのパス条件1523には11行目の分岐条件が「False」となるための条件「!(AL_x % 2 == 0)」が設定
されている。
示す「BL_x」,「BL_y」,BL_y」は、夫々、ループ文301の実行前の変数「x」,「y
」,「z」の値を表すシンボル値である(「BL」は「Before Loop」の略)。「BL_x==X」は、ループ文301の実行前の変数「x」の値がシンボル値「X」であることを、「BL_y==Y」は、ループ文301の実行前の変数「y」の値がシンボル値「Y」であることを、「BL_z==0」は、ループ文301の実行前の変数「z」の値が「0」であることを示す。
、「y」に渡される引数を表すシンボル値である。
「AL_x」を代入している。ここで「AL_x」は、ループ文実行後の変数「x」の値を表すシ
ンボル値である(「AL」は「After Loop」の略)。前述したように、ループ外記号実行部112はループ文301をブラックボックスとして取り扱うため、ループ文301の実行結果として上記のように新たなシンボル値を変数に代入している。
の3行目の記述に対応し、ソースコード151の開始点を意味する「START」という手続
きを含む。またノード名が「M1」のノードは、図3に示すソースコード151の3行目の記述に対応し、「while (z < y) {」という条件(以下、ループ条件とも称する。)の記
述を含む。
が「M5」及び「M8」のノードは、ループ文301から脱出した後のノードを表し、ノード名が「M5」のノードは3行目のループ条件「z % 3 == 0」が「True」となる場合のパスの終端ノードに、ノード名が「M8」のノードは3行目のループ条件「z % 3 == 0」が「False」となるパスの終端ノードに、夫々対応する。尚、以下の説明において、これら2つの
パスの夫々にパス名として「Q1」,「Q2」を付与する。
ープの実行後の変数の値を用いてn回のループの実行時の変数の値を生成する。例えば、
図3のループ文301の3行目の記述について記号実行を行う場合、ループ内記号実行部113は、ループ条件「z < y」に基づき、n-1回のループの実行後の変数の値「zn-1」及び「yn-1」を用いて「zn-1 < yn-1」(但し、n>0。以下省略))というパス条件を生成する。同様に5行目の記述について記号実行を行う場合、ループ内記号実行部113は、n
回のループの実行時の変数「xn」の値を、ループをn-1回実行後の変数の値を用いて「xn=xn-1*2+2」と表す。
の変数の値を用いて生成する。例えば、図3のループ文301におけるループ条件「zn < yn)」の否定は「!(zn < yn)」となる(但しn≧0。以下省略。)。尚、以下の説明に
おいて、S915で追加した条件式のことを汎化脱出条件式と称する。
おける変数状態「yn=yn-1」及び「zn=zn-1+1」に基づき「zn-1 < yn」というパス条件に
変換する。ループ内記号実行部113は、こうして生成したパス条件に加え、ループ内記号実行情報154から取得したノード名1541、初項1543、及び変数状態1545を汎化ループ内パス情報155として記憶する。
。変数状態1545には当該ノードにおける前述した変数状態が設定される。前述したように、ループn回実行時の変数状態はループn-1回実行後の変数状態を用いて表される。
1)。続いて、ループ内パス特化部114は、特化ループ内パス情報156を参照し、ループ回数が0回の特化ループ内パス情報を生成済みか否かを判定する(S1212)。ル
ープ内パス特化部114がループ回数0回の特化ループ内パス情報を生成済みと判定した
場合(S1212:YES)、処理はS1215に進む。ループ内パス特化部114がループ回数が0回の特化ループ内パス情報が生成済みでない(未生成である)と判定した場
合(S1212:NO)、処理はS1213に進む。
うに、特化ループ内パス情報156は、パス名1561、パス終端ノード1562、初項1563、パス条件1564、及び変数状態1565の各項目を含む一つ以上のレコードで構成されている。特化ループ内パス情報156のレコードの一つは一つのパス(以下、特化ループ内パスとも称する。)に対応している。ループ内パス特化部114は、上記ループ回数が0回の特化ループ内パスを汎化ループ内パスごとに1つ生成する。
条件1554に現れる、n回のループを実行した後の変数の値に対してn=0を代入する。尚、n=0であるので、ループ内パス特化部114は、パス条件1554を構成する論理式の
うち「n > 0」という条件付きの論理式は使用せず、前述した汎化脱出条件式のみを使用
する。例えば、図11の汎化ループ内パス情報155のパス名1551が「Q1」のパスの場合、ループ内パス特化部114は、「(zn -1) < yn」と「(zn -1) % 3 == 0」の各式については「n > 0」という条件付きであるのでこれらは使用せず、汎化脱出条件式である
「!(zn< yn)」においてn=0とすることにより取得される「!(z0 < y0)」というパス条件を使用する。尚、以下の説明において、このように汎化脱出条件式をインスタンス化して得られる条件式のことを特化脱出条件式と称する。
行前の変数の値に相当する。そこでループ内パス特化部114は、0回のループを実行し
た後の変数の値を、初項として保持しているループ実行前の変数の値で表す。例えば、図11に示す汎化ループ内パス情報155のパス名1551が「Q1」のパスの場合、0回の
ループを実行した後の変数の値「x0」は初項1553の式「x0=BL_x」より「x0=BL_x」と表す。
いて上記置換を行った後の特化ループ内パス情報156を示す。
組み合わせに基づき、ループ回数がK回の特化ループ内パス情報156を生成する(S1
216)。尚、例えば、ループ回数がK-1回の特化ループ内パス情報156が2つ、汎化
ループ内パス情報155が2つである場合、ループ内パス特化部114は、ループ回数がK回の特化ループ内パス情報156を4つ生成する。
き、ループをK-1回実行後の変数の値を、ループ実行前の変数の値を含む式に置換する。
56におけるパス名が「Q1」の変数状態「x0=BL_x」に基づき、「x1=BL_x* 2 + 2」を生
成する。またループ内パス特化部114は、以上と同様の方法で「y1=BL_y」及び「z1=BL_z + 1」を生成する。
が「Q1」のパスの場合、ループ内パス特化部114は、特化脱出条件式「!(BL_z < BL_y)」を除外する。尚、以下において、特化脱出条件式を除外した後に残る式を脱出式除外式と称する。
でインスタンス化する。例えば、汎化ループ内パス情報155の「Q1」のパス条件を、ループ回数1回でインスタンス化する場合、ループ内パス特化部114は、「(zn -1) < yn && (zn -1) % 3 == 0 && !(zn < yn)」のnに1を代入することで、「(z1-1) < y1 && (z1 -1) % 3 == 0 && !(z1< y1)」を得る。さらにループ内パス特化部114は、特化ループ
内パス情報の変数状態に基づき、ループをK回実行後の変数の値を、ループ実行前の変数
の値を含む式に置換する。上記の例の場合、ループ内パス特化部114は、「y1=BL_y」
及び「z1=BL_z+ 1」に基づき、「(z1 -1) < y1&& (z1 -1) % 3 == 0 && !(z1 < y1)」か
ら「((BL_z + 1) -1) < BL_y && ((BL_z+ 1) -1) % 3 == 0 && !((BL_z + 1) < BL_y)」
を生成する。そしてループ内パス特化部114は、生成した上記式を、上記脱出式除外式に論理積結合する。
パス名1561における「Q1-Q1」は、特化ループ内パス情報156のパス名1561が
「Q1」のパスと、汎化ループ内パス情報155のパス名1551が「Q1」のパスとに基づき生成したパスであることを示す。パス終端ノード1562は、生成元の汎化ループ内パス情報155のパス終端ノード1552を継承する。初項1563は、生成元の特化ルー
プ内パス情報156の初項1563を継承する。変数状態1565は、汎化ループ内パス情報155の変数状態1555と特化ループ内パス情報156の変数状態1565とに基づき、前述した方法で生成する。またパス条件1564は、特化ループ内パス情報156のパス条件1564、汎化ループ内パス情報155のパス条件1554、及び特化ループ内パス情報156の変数状態1565に基づき生成する。
特化ループ内パス情報156に基づき、ループ回数がK回の特化ループ内パス情報156
を生成する。
パス情報156と、S1514で取得したループ外パス情報153との組み合わせに基づき、ループ回数がK回のルールを生成する(S1515)。例えば、ルール生成部115
は、ループ回数がK回の特化ループ内パス情報156の特化ループ内パスが4つ、かつ、
取得したループ外パス情報153のループ外パスが2つである場合、ループ回数がK回の
ルールを8つ生成する。
」のパスとからパス条件を生成する場合は次のようになる。まず、ルール生成部115は、パス名1531が「P1」のパスのパス条件1533は「AL_x % 2 == 0」、ループ回数
が0回の特化ループ内パス情報156のパス条件1564は「!(BL_z < BL_y)」であるこ
とから、これらを論理積結合することにより「AL_x % 2 == 0 && !(BL_z < BL_y)」を生
成する。ここで上記式に現れるループ実行後の変数の値「AL_x」は「x0」に一致することに注目する。また上記「x0」の値は、上記特化ループ内パス情報156の変数状態156
5から「x0=BL_x」である。そこでルール生成部115は、「AL_x」を「BL_x」に置換す
ることにより「BL_x % 2 == 0 && !(BL_z < BL_y)」を生成する。またループ外パス情報
153のループ前変数状態1534より「BL_x == X」、「BL_y == Y」、「BL_z == 0」
であるので、これらに基づき、ルール生成部115は、パス条件「X % 2 == 0 && !(0 < Y)」を生成する。
スとに基づきパス実行結果を生成する場合は次のようになる。まずループ外パス情報153の変数状態1535は「x=AL_x」、特化ループ内パス情報156の変数状態1565は「x0=BL_x」である。また前述したように「AL_x」は「x0」に一致するので「x=BL_x」が
得られる。そしてルール生成部115は、ループ外パス情報153のループ前変数状態1534に基づき「x=X」を得る。同様の方法により、ルール生成部115は、「y=Y」及び「z=X」を得る。ここで例えば、ソースコード151において戻り値として返す変数の値
のみをルールのパス実行結果として採用するものとした場合、ルール生成部115は、図3に示したソースコード151の16行目の記述に基づき、変数zの値を表す「z=X」をパス実行結果とする。
に基づきルール生成部115が生成する、ループ回数が0回の場合のルール情報157の
例である。同図に示すように、ルール情報157は、パス名1571、パス条件1572、及びパス実行結果1573の3つの項目を有する一つ以上のレコードで構成されている。
該ルールが、ループ外パス情報153の「P1」と、ループ回数0回の特化ループ内パス情
報156の「Q1」に基づき生成されたことを示す。パス条件1572、及びパス実行結果1573には、前述した方法で生成された値が設定される。尚、本例では「P1-Q2」と「P1-Q1」のレコードの内容が重複しており、この場合、ルール生成部115は一方(例えば「P1-Q2」)を前述したS1516にて削除する。同様に「P2-Q2」も「P2-Q1」と重複し
ているため、ルール生成部115は一方をS1516の処理で削除する。
基づきルール生成部115が生成する、ループ回数が1回の場合のルール情報157の例
である。同図に示すように、このルール情報157は、パス名1571、パス条件1572、及びパス実行結果1573の3つの項目を有する一つ以上のレコードで構成されてい
る。
内パス情報156の「Q1-Q1」に基づき生成されたことを示す。パス条件1572及びパ
ス実行結果1573には、前述した方法で生成された値が設定される。尚、本例では、「P1-Q2-Q1」、「P1-Q2-Q2」、「P2-Q2-Q1」、及び「P2-Q2-Q2」のレコードは、夫々「P1-Q1-Q1」、「P1-Q1-Q2」、「P2-Q1-Q1」、及び「P2-Q1-Q2」のレコードと重複するため、ルール生成部115は一方をS1516の処理で削除する。また「P1-Q1-Q2」、「P2-Q1-Q1」、及び「P2-Q1-Q2」についてはパス条件1713が充足不能であるため、ルール生成部115はこれらをS1516の処理で削除する。
。前述したように入出力処理部116は上限回数の指定をユーザから受け付ける。そして、ルール生成部115を実行することにより、ループ回数が0回、1回、・・・K-1回、K回の夫々の場合についてルール情報157を生成する。入出力処理部116は、ルール情報157からループ回数が0回からK回の場合のルールを取得し、出力装置55に出力(表示)する。同図に示す、ループ上限回数が1回の場合のルール情報157は、パス名157
1、パス条件1572、及びパス実行結果1573の各項目を含む3つのレコードで構成されている。尚、パス名1571に設定されているルール「P1-Q1」、「P2-Q1」、及び「P1-Q1-Q1」は、図16に示したルール情報157及び図17に示したルール情報157から、図15のS1516の処理にて「P1-Q2」、「P2-Q2」、「P1-Q2-Q1」、「P1-Q2-Q2」、「P2-Q2-Q1」、「P2-Q2-Q2」、「P1-Q1-Q2」、「P2-Q1-Q1」、及び「P2-Q1-Q2」を削除し、削除後に残ったルールを集約した結果である。
を生成する必要があるが、既にループ上限回数を1回に設定して記号実行を行う前にルー
プ上限回数を0回に設定して記号実行を行っていた場合等、既にルール情報157が生成
済みである場合には改めてルール情報157を生成する必要がない。そのため、ルール生成部115は、予めループ上限回数0回の場合のルールがルール情報157に格納されて
いるかを確認し、上記ルールが格納されていない場合にのみルール情報157を生成すればよい。
の値とループをn回実行後の変数の値の関係式として記憶する。そのため、例えば、ルー
プ回数がK-1回の場合のルールが再生済みである場合、上記関係式と上記ループ回数がK-1回の場合のルールを生成する過程で生成したパスの情報に基づき、記号実行を行うことなく、簡単な代入処理や論理演算処理によってループ回数がK回の場合のルールを生成する
ことができる。即ち、一度の記号実行で生成した上記関係式を再帰的に用いることで、記号実行を繰り返し行うことなく、簡単な代入処理及び論理演算処理で、任意のループ回数におけるルールを生成することができる。そのため、記号実行にかかる計算機のリソースの消費を抑えることができるとともに、ルールを取得するまでに要する時間を短縮することができる。
の夫々に対応するルールが生成されて記憶され、例えば、その後にループ上限回数をL+1
回に変更して再度記号実行を行う場合は、ループ回数がL+1回の場合のルールのみを新規
に生成し、ループ回数0回からL回までのルールに追加すればよく、記号実行にかかる計算機のリソースの消費を抑えることができ、ルールを取得するまでに要する時間を短縮することができる。
[第2実施形態]
を含む。またノード名が「N1」のノードは、図21に示すソースコード151の2行目の記述に対応し、「z=0」という手続きを含む。またノード名が「N2」のノードは、図21
に示すソースコード151の3〜6行目の記述、即ちループ文302に対応している。ノード名が「N3」のノードは、図21に示すソースコード151の7行目に対応している。当該行には「if (x % 2 == 0) {」という条件分岐の記述がされており、ループ外記号実
行部112は、当該行を分岐点として、条件が「True」の場合と「False」の場合の2通
りのパスを探索する。尚、以下の説明において、これら2つのパスの夫々にパス名として「P1」,「P2」を付与する。
記号実行情報152は、パス名が「P1」のパスに対応し、一方、図23に示すループ外記号実行情報152は、パス名が「P2」のパスに対応する。
続きを含む。またノード名が「M1」のノードは、図20に示すソースコード151の3行目の記述に対応し、「while ( (3 * z) < x ) {」という条件(以下、ループ条件と称す
る。)の記述を含む。またノード名が「M2」のノードは、図20に示すソースコード151の4行目に対応している。またノード名が「M3」のノードは、図20に示すソースコード151の5行目に対応している。またノード名が「M4」のノードはパスの終端ノードに対応している。尚、以下の説明において、上記パスのパス名として「Q1」を付与する。
28の一般項化ループ内パス情報161の一般項1615の「xn」に一致することに注目する。そして上記「xn」の値は、一般項1615より「xn=x0+2*n」であること、及び初
項1613より「x0=BL_x」であることから、一般項化ルール生成部122は、上記パス
条件1533を「(BL_x + 2*n) % 2 == 0」に変換する。またループ前変数状態1534
より「BL_x == X」であるため、これに基づき一般項化ルール生成部122は「(X + 2*n)
% 2 == 0」を生成する。
成する。まず一般項化ルール生成部122は、パス条件1554に含まれるループの実行回数がn回における変数の値を、一般項化ループ内パス情報161の一般項1615に置
換する。さらに一般項化ルール生成部122は、一般項化ループ内パス情報161の初項1613及びループ外パス情報153のループ前変数状態1534に基づき、シンボル値の置換を行う。
場合を考える。まず一般項化ルール生成部122は、一般項化ループ内パス情報161のパス条件1614の式「3 * (zn -1) < xn - 2(但しn>0) && !(3 * zn < xn) (但しn≧0)」を、一般項1615に基づき、「3 * ((z0 + n) -1) < (x0 + 2*n) - 2 (但しn>0) && !(3 * (z0 + n) < (x0 + 2*n)) (但しn≧0)」に変換する。そして一般項化ルール生成部
122は、初項1613に基づき、上記式を3 * ((BL_z + n) -1) < (BL_x + 2*n) - 2 (但しn>0) && !(3 * (BL_z + n) < (BL_x + 2*n)) (但しn≧0)」に変換する。さらに一般
項化ルール生成部122は、ループ前変数状態1534に基づき、上式を「3 * (n -1) <
X + 2*n - 2 (但しn>0) && !(3 * n < X + 2*n) (但しn≧0)」に変換する。
6は、まず一般項化ルール情報162の「P1-Q1」及び「P2-Q1」のnに0を代入することで、展開後ルール表示欄3013における「P1-Q1-0」及び「P2-Q1-0」の内容(一般項で表現されたルールを具体化した情報)を生成する。次に入出力処理部116は、「P1-Q1」
及び「P2-Q1」のnに1を代入することで、展開後ルール表示欄3013における「P1-Q1-1」及び「P2-Q1-1」の内容(一般項で表現されたルールを具体化した情報)を生成する。
表示欄3013における制約条件3014に基づき生成される。入出力処理部116は、パス条件3015に基づき制約条件3014の論理積について充足可能性を判定し、充足不能の場合には、そのルールを非表示あるいは強調表示(太枠表示、グレーアウト等)などとする。本例では「P1-Q1-1」が太枠表示されている。
合のルールとを比較した場合、例えば、係数の値が規則的に増加もしくは減少する等、ルールの間に一定の規則性を見いだせることがある。またその場合、ループの実行回数が実際の(予め想定されている)ループの最大実行回数を超えた場合に上記規則性の逸脱が見られることがある。そこで、例えば、ルール生成部115が、ループ回数0回の場合のル
ール、1回の場合のルール、・・・K-1回の場合のルール、K回の場合のルール、K+1回の場合のルール、・・・と継続的にルールを監視し、上記規則性の逸脱を検知した場合に自動的にユーザに警告等の情報を出力するようにする。これによりユーザは実際のループの最大実行回数を容易かつ精度よく把握することができる。尚、上記規則性を検出する方法としては、例えば、上記ルールを構成している数字や演算子に関する情報を抽出し、それら
の情報を機械学習のアルゴリズムを活用して分類するという方法がある。
はICカード、SDカード、DVD等の記録媒体に置くことができる。
用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
800 ループ内パス探索木、3000 一般項化ルール表示画面、S1200 ループ内パス特化処理、S1500 ルール生成処理
Claims (10)
- ソフトウェアの仕様を分析する装置であって、
分析対象のソフトウェアを実現するプログラムのソースコードを記憶する記憶部と、
前記ソースコードに含まれているループ文の記述を特定するループ文特定部と、
特定した前記ループ文以外の前記ソースコードの記述について記号実行を行うことにより、前記ソースコードのパス条件及びパス実行結果を含む情報であるループ外パス情報を、前記ループ文の実行前における変数の値と前記ループ文の実行後における変数の値とを用いて生成するループ外記号実行部と、
特定した前記ループ文について記号実行を行うことにより、前記ソースコードに含まれている各変数について、前記ループ文をn−1回実行した後における当該変数の値と、前記ループ文をn回実行した後における当該変数の値との関係を示す情報である汎化ループ内パス情報を生成する、ループ内記号実行部と、
ループを特定回数実行した場合における前記ソースコードのパスに関する情報である特化ループ内パス情報を生成するループ内パス特化部と、
前記ループ内パス特化部が生成した前記特化ループ内パス情報のうち、任意回数だけループを実行した場合における変数の値を含む第1の特化ループ内パス情報を取得し、前記第1の特化ループ内パス情報に前記汎化ループ内パス情報を適用することにより、前記第1の特化ループ内パス情報よりもループ回数が1つ大きい第2の特化ループ内パス情報を生成し、前記第2の特化ループ内パス情報と前記ループ外パス情報とに基づき、前記ソフトウェアの仕様を表すルールを含む情報であるルール情報を生成するルール生成部、
を備える、ソフトウェア仕様分析装置。 - 請求項1に記載のソフトウェア仕様分析装置であって、
前記ループ内パス特化部が生成した前記特化ループ内パス情報を記憶する記憶部を備え、
前記ルール生成部は、ループの上限回数の指定を受け付け、前記記憶部が記憶している前記特化ループ内パス情報のうちループ回数が最大のものを取得し、取得した前記特化ループ内パス情報に前記汎化ループ内パス情報を再帰的に適用することにより前記ループ上限回数までの前記特化ループ内パス情報を生成し、生成した前記特化ループ内パス情報と前記ループ外パス情報とを用いて前記ルールを生成する、
ソフトウェア仕様分析装置。 - 請求項1に記載のソフトウェア仕様分析装置であって、
前記ルール生成部は、前記ソースコードに含まれているループ文ごとにループの上限回数の指定を受け付け、前記ループ文ごとに、前記記憶部が記憶している前記特化ループ内パス情報のうちループ回数が最大のものを取得し、前記ループ文ごとに、取得した前記特化ループ内パス情報に前記汎化ループ内パス情報を再帰的に適用することにより前記ループの上限回数までの前記特化ループ内パス情報を生成する、
ソフトウェア仕様分析装置。 - 請求項1に記載のソフトウェア仕様分析装置であって、
前記汎化ループ内パス情報を表現した漸化式の一般項を求めることにより、前記ループ文をn回実行した場合における前記変数の値と、前記nを含む式との関係式である一般項化ループ内パス情報を生成するループ内パス一般項化部と、
前記一般項化ループ内パス情報と前記ループ外パス情報とに基づき、一般項で表現されたルールである一般項化ルール情報を生成する、一般項化ルール生成部と、
をさらに備える、ソフトウェア仕様分析装置。 - 請求項4に記載のソフトウェア仕様分析装置であって、
前記ループ文の実行回数の指定を受け付け、受け付けた前記実行回数を前記一般項化ルール情報に代入することにより、前記一般項で表現されたルールを具体化した情報を出力する出力処理部を備える、
ソフトウェア仕様分析装置。 - 情報処理装置が、
分析対象のソフトウェアを実現するプログラムのソースコードを記憶するステップ、
前記ソースコードに含まれているループ文の記述を特定するステップ、
特定した前記ループ文以外の前記ソースコードの記述について記号実行を行うことにより、前記ソースコードのパス条件及びパス実行結果を含む情報であるループ外パス情報を、前記ループ文の実行前における変数の値と前記ループ文の実行後における変数の値とを用いて生成するステップ、
特定した前記ループ文について記号実行を行うことにより、前記ソースコードに含まれている各変数について、前記ループ文をn−1回実行した後における当該変数の値と、前記ループ文をn回実行した後における当該変数の値との関係を示す情報である汎化ループ内パス情報を生成するステップ、
ループを特定回数実行した場合における前記ソースコードのパスに関する情報である特化ループ内パス情報を生成するステップ、
生成した前記特化ループ内パス情報のうち、任意回数だけループを実行した場合における変数の値を含む第1の特化ループ内パス情報を取得し、前記第1の特化ループ内パス情報に前記汎化ループ内パス情報を適用することにより、前記第1の特化ループ内パス情報よりもループ回数が1つ大きい第2の特化ループ内パス情報を生成し、前記第2の特化ループ内パス情報と前記ループ外パス情報とに基づき、前記ソフトウェアの仕様を表すルールを含む情報であるルール情報を生成するステップ、
を実行する、ソフトウェア仕様分析方法。 - 請求項6に記載のソフトウェア仕様分析方法であって、
前記情報処理装置が、
生成した前記特化ループ内パス情報を記憶するステップ、
ループの上限回数の指定を受け付け、記憶している前記特化ループ内パス情報のうちループ回数が最大のものを取得し、取得した前記特化ループ内パス情報に前記汎化ループ内パス情報を再帰的に適用することにより前記ループ上限回数までの前記特化ループ内パス情報を生成し、生成した前記特化ループ内パス情報と前記ループ外パス情報とを用いて前記ルールを生成するステップ、
をさらに実行する、ソフトウェア仕様分析方法。 - 請求項6に記載のソフトウェア仕様分析方法であって、
前記情報処理装置が、前記ソースコードに含まれているループ文ごとにループの上限回数の指定を受け付け、前記ループ文ごとに、記憶している前記特化ループ内パス情報のうちループ回数が最大のものを取得し、前記ループ文ごとに、取得した前記特化ループ内パス情報に前記汎化ループ内パス情報を再帰的に適用することにより前記ループの上限回数までの前記特化ループ内パス情報を生成するステップ、
をさらに実行する、ソフトウェア仕様分析方法。 - 請求項6に記載のソフトウェア仕様分析方法であって、
前記情報処理装置が、
前記汎化ループ内パス情報を表現した漸化式の一般項を求めることにより、前記ループ文をn回実行した場合における前記変数の値と、前記nを含む式との関係式である一般項化ループ内パス情報を生成するステップ、
前記一般項化ループ内パス情報と前記ループ外パス情報とに基づき、一般項で表現され
たルールである一般項化ルール情報を生成するステップ、
をさらに実行する、ソフトウェア仕様分析方法。 - 請求項9に記載のソフトウェア仕様分析方法であって、
前記情報処理装置が、前記ループ文の実行回数の指定を受け付け、受け付けた前記実行回数を前記一般項化ルール情報に代入することにより、前記一般項で表現されたルールを具体化した情報を出力するステップ、
をさらに実行する、ソフトウェア仕様分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017092887A JP6802109B2 (ja) | 2017-05-09 | 2017-05-09 | ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017092887A JP6802109B2 (ja) | 2017-05-09 | 2017-05-09 | ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018190219A JP2018190219A (ja) | 2018-11-29 |
JP6802109B2 true JP6802109B2 (ja) | 2020-12-16 |
Family
ID=64479844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017092887A Active JP6802109B2 (ja) | 2017-05-09 | 2017-05-09 | ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6802109B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023056953A (ja) * | 2021-10-08 | 2023-04-20 | 株式会社日立製作所 | 不具合解析装置及び不具合解析方法 |
-
2017
- 2017-05-09 JP JP2017092887A patent/JP6802109B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018190219A (ja) | 2018-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210173696A1 (en) | Design-time information based on run-time artifacts in a distributed computing cluster | |
US11573959B2 (en) | Generating search commands based on cell selection within data tables | |
US11068452B2 (en) | Column-based table manipulation of event data to add commands to a search query | |
CN110914818B (zh) | 数据流图配置 | |
US10949419B2 (en) | Generation of search commands via text-based selections | |
US10915583B2 (en) | Suggested field extraction | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
US8775392B1 (en) | Revision control and configuration management | |
JP2021502658A5 (ja) | ||
JP6692281B2 (ja) | テストケース生成装置、及びテストケース生成方法 | |
JP2019204246A (ja) | 学習データ作成方法及び学習データ作成装置 | |
JP6802109B2 (ja) | ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 | |
JP5555238B2 (ja) | ベイジアンネットワーク構造学習のための情報処理装置及びプログラム | |
JP2017111622A (ja) | 演算実行装置、方法、及びプログラム | |
JP6668271B2 (ja) | 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム | |
WO2020230241A1 (ja) | テスト装置、テスト方法及びプログラム | |
US8775873B2 (en) | Data processing apparatus that performs test validation and computer-readable storage medium | |
JP6122742B2 (ja) | 仕様変更支援装置、情報処理方法、およびプログラム | |
JP2013012082A (ja) | テストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置 | |
JP2016099726A (ja) | 仕様生成方法、仕様生成装置、及びプログラム | |
WO2019176011A1 (ja) | 検索文活用装置および検索文活用方法 | |
US11921496B2 (en) | Information processing apparatus, information processing method and computer readable medium | |
KR101441000B1 (ko) | 병렬처리 기반 트리플 데이터에 대한 변경 탐지 방법 | |
Dias et al. | Experiencing dfanalyzer for runtime analysis of phylogenomic dataflows | |
JP5411954B2 (ja) | ツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191216 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20201021 |
|
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: 20201117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20201126 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6802109 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |