JP6486574B2 - プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム - Google Patents
プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム Download PDFInfo
- Publication number
- JP6486574B2 JP6486574B2 JP2018550936A JP2018550936A JP6486574B2 JP 6486574 B2 JP6486574 B2 JP 6486574B2 JP 2018550936 A JP2018550936 A JP 2018550936A JP 2018550936 A JP2018550936 A JP 2018550936A JP 6486574 B2 JP6486574 B2 JP 6486574B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- processing procedure
- block diagram
- program code
- blocks
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
ブロック図からプログラムコードを生成する技術として、例えば、特許文献1に開示の技術がある。
このように、特許文献1及び2の技術では、不適切なブロック図を検出するために、不適切なブロック図のパターンを予め設けておく必要があるという課題がある。
プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するブロック図を取得するブロック図取得部と、
前記ブロック図でのブロック間の接続を辿って、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査する矛盾検査部とを有する。
***構成の説明***
図1は、本実施の形態に係るプログラムコード生成装置1の機能構成例を示す。
また、図16は、本実施の形態に係るプログラムコード生成装置1のハードウェア構成例を示す。
先ず、図16を参照してプログラムコード生成装置1のハードウェア構成例を説明し、その後に、図1を参照してプログラムコード生成装置1の機能構成例を説明する。
なお、プログラムコード生成装置1で行われる動作は、プログラムコード生成方法及びプログラムコード生成プログラムに相当する。
プログラムコード生成装置1は、ハードウェアとして、プロセッサ1901、補助記憶装置1902、主記憶装置1903、通信装置1904及び入出力装置1905を備える。
補助記憶装置1902には、図1に示すブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の機能を実現するプログラムが記憶されている。
そして、これらプログラムが補助記憶装置1902から主記憶装置1903にロードされ、プロセッサ1901がこれらプログラムを実行して、後述するブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の動作を行う。
図1では、プロセッサ1901がブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の機能を実現するプログラムを実行している状態を模式的に表している。
また、補助記憶装置1902は、図1に示すブロック図解析ルール記憶部12、検査ルール記憶部13及びコード生成ルール記憶部16を実現する。なお、ブロック図解析ルール記憶部12、検査ルール記憶部13及びコード生成ルール記憶部16の少なくともいずれかが主記憶装置1903により実現されてもよい。
通信装置1904は、プログラムコード生成装置1が外部装置と通信を行う場合に用いられる。プログラムコード生成装置1が外部装置との通信を行わないのであれば、通信装置1904は省略してもよい。
入出力装置1905は、プログラムコード生成装置1のユーザからの指示、ブロック図2等を取得する。また、入出力装置1905は、プログラムコード生成装置1にプログラムコード3又は違反情報4を提示する。
なお、ブロック図2とは、プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するデータである。つまり、ブロック図2は、主に複数のブロックと各ブロックを接続する接続線から構成される。なお、ブロック図2の複数のブロックの各々にはデータ処理手順の要素である処理手順要素が割り当てられている。処理手順要素は、ひとまとまりのデータ処理である。
ブロック図取得部11は、複数のブロック図2を取得することができる。
ブロック図取得部11により行われる動作は、ブロック図取得処理に相当する。
なお、本実施の形態では、ブロック図解析ルール記憶部12が解析ルールを保持することとしているが、ブロック図2に解析ルールが含まれていてもよい。
検査ルール記憶部13は、検査ルールを複数記憶してもよい。
より具体的には、検査対象抽出部14は、複数のブロックのうちのいずれかのブロックを起点ブロックとして設定する、そして、検査対象抽出部14は、起点ブロックからブロック図2におけるブロック間の接続を辿って、起点ブロックが依存しているブロックを依存先ブロックとして抽出する。更に、検査対象抽出部14は、抽出した依存先ブロックが依存しているブロックを依存先ブロックとして抽出する動作を繰り返し、起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出する。
例えば、ブロック図検査部15は、起点ブロックに割り当てられている処理手順要素と依存先ブロックに割り当てられている処理手順要素との間にデータタイプ、最大値及び最小値の少なくともいずれかにおいて矛盾があるかどうかを検査する。
また、ブロック図検査部15は、ブロック図2で定義されているデータ処理手順に矛盾がある場合に、データ処理手順における矛盾を通知する違反情報4を入出力装置1905を介して出力する。
つまり、検査対象抽出部14及びブロック図検査部15は、矛盾検査部18として、ブロック図2でのブロック間の接続を辿って、ブロック図2で定義されているデータ処理手順に矛盾があるかどうかを検査する。なお、矛盾検査部18により行われる動作は、矛盾検査処理に相当する。
つまり、プログラムコード生成部17は、ブロック図2で定義されているデータ処理手順に矛盾がない場合に、ブロック図2から、ブロック図2で定義されているデータ処理手順が反映されたプログラムコードを生成する。プログラムコードは、コンピュータ言語で記述されている。
次に、図2のフローチャートを参照して、プログラムコード生成装置1の動作例を説明する。
ブロック図2は、画像ファイル等のブロック図の外観のみを表す情報のみではなく、開発ツール上でプログラムをブロック図として描画するために必要となる情報や、シミュレーションやコード自動生成を行うための付加的な情報が含まれているファイルである。ブロック図2は、例えば、XML(Extensible Markup Language)やJSON(JavaScript(登録商標) Object Notation)等の階層的なデータ構造を表現可能なデータを含むファイルとして実現される。ただし、以降では、理解を容易にするために、ブロック図2は、XMLやJSONの形式ではなく、複数のブロックが接続線で接続された形式で表現する。そして、必要に応じて吹き出し等で付加情報を表す。
図3は、プログラムコードに反映させるデータ処理手順が定義されるブロック図2を示す。図4は、図3のブロック図2に含まれるサブルーチンであるSubAの詳細を示す。また、図5は、図3のブロック図2に含まれるサブルーチンであるSubBの詳細を示す。
また、図4において、符号B31〜B34が付されている要素がブロックである。また、符号L313、L323、L334が付されている要素が接続線である。
また、図5において、符号B41〜B44が付されている要素がブロックである。また、符号L413、L423、L434が付されている要素が接続線である。
以下、図3のブロック及び接続線について説明するが、以下の説明は図4及び図5のブロック及び接続線にも適用される。
例えば、ブロックB1のIDは1であり、ブロックB1の名前はIn1であり、ブロックB1の種別はInputである。IDは、各ブロックをユニークに識別するための番号や文字列である。本実施の形態では、IDはユニークな番号とする。名前は、ブロック図2をディスプレイに表示した際にプログラムコード生成装置1のユーザが各ブロックを識別しやすくするために任意につけるものである。ブロックの種別は、各ブロックに割り当てられているデータ処理の特性を識別するために用いられる。例えば、ブロックの種別として、入力、出力、加算、if分岐、サブシステム等がある。ブロックの種別を表す識別子として、複数の番号や文字列が予め定義されている。
また、ブロックB9には種別として「Output」が設定されており、ブロックB9には処理手順要素として出力処理が割り当てられている。以下、出力処理が割り当てられているブロックを出力ブロックという。
また、以下では、処理手順要素として加算演算処理が割り当てられているブロック(種別が「Sum」のブロック)をSumブロックという。なお、Sumブロックは図3には示されていない。
また、処理手順要素としてif分岐処理が割り当てられているブロック(種別が「If」のブロック)をifブロックという。
また、処理手順要素としてサブシステムが割り当てられているブロック(種別が「Subsystem」のブロック)をSubsystemブロックという。
また、接続線の内部データには、接続元のブロックのIDと接続先のブロックのIDとが記述されているため、ブロック図検査部15は、ブロック間のデータの流れや処理の流れも特定することができる。
例えば、ブロック図検査部15は、接続線L12の内部データを参照することで、入力ブロックB1から出力されたデータが、IfブロックB2に入力されたことを特定することができる。
このように、ブロック図検査部15は、ブロック図2に含まれる接続線の内部データを参照することで、ブロック図2内のブロック間の接続関係を特定することができる。
ブロック図検査部15は、ブロック間の接続関係、各ブロックに割り当てられたデータ処理を解析して、ブロック図2で定義されているデータ処理手順に矛盾がないかどうかを検査する。
なお、接続線は接続元のブロックのIDと接続先のブロックのIDで識別可能であるため、本実施の形態では、接続線にはIDが設定されていない。接続線にIDを設定するようにしてもよい。
次に、ブロック図解析ルール記憶部12に記憶される解析ルールを説明する。
図6は、解析ルールの例を示す。
例えば図6の解析ルール600には、種別601、データ入力数602、データ出力数603、制御入力数604、制御出力数605、属性606が含まれる。
種別601は、ブロックの種別を表す。
データ入力数602は、ブロックに入力されるデータの数を表す。データ入力数602に「1以上」と記載されている場合は、ブロックに入力されるデータの数は可変である。
データ出力数603は、ブロックから出力されるデータの数を表す。
制御入力数604は、処理の制御に関する入力数を表す。例えば、Subsystem614では制御入力数604が「1以上」と定義されている。これは、Ifブロックでの制御結果がSubsystemブロックに1以上入力されるということを意味する。なお、「1以上」と記載されている場合は、ブロックに入力される制御結果の数は可変である。
制御出力605は、処理の制御に関する出力数を表す。例えば、If613では制御出力数605が「2」と定義されている。これは、Ifブロックでの2つの制御結果が出力されることを意味する。
属性606は、ブロックがサポートしている属性を示す。
次に、検査ルール記憶部13に記憶される検査ルールを説明する。
図7は、検査ルールの例を示す。
例えば図7の検査ルール700には、対象701、起点702、終点703、検査項目704が含まれる。
対象701は、検査対象の種類を表す。
Block711は、各ブロックに対する検査項目を表す。
DataSlice712は、データスライスに対する検査項目を表す。
Slice713は、スライスに対する検査項目を表す。
また、「データ依存関係」とは、あるブロック(ブロックαとする)から出力されたデータが他のブロック(ブロックβとする)に到達することである。例えば、図3において、ブロックB1から出力されたデータはブロックB2に入力されるため、ブロックB2はブロックB1とデータ依存関係がある。つまり、ブロックB1はブロックB2の依存先ブロックである。
「スライス」とは、あるブロックと制御依存関係及びデータ依存関係があるブロックの集合(及びその接続関係)である。つまり、スライスは、あるブロックから、当該ブロックと制御依存関係があるブロックを辿っていって得られるブロックの集合(及びその接続関係)と、当該ブロックとデータ依存関係があるブロックを辿っていって得られるブロックの集合(及びその接続関係)である。換言すれば、スライスは当該ブロックと関係する全てのブロックの集合(及びその接続関係)である。
「制御依存関係を考慮せずにデータ依存関係のみを考慮して抽出したスライス」とは、制御依存関係を除いて構築できるスライスのことである。
つまり、データスライスは、あるブロックから、当該ブロックとデータ依存関係があるブロックのみを辿っていって得られたブロックの集合(及びその接続関係)である。
例えば、Block711では、DataTypeが設定できるブロックにDataTypeが設定されていない場合に、ブロック図検査部15はブロック図2に記載のデータ処理手順に矛盾があると判定する。
また、DataSlice712では、ブロック図検査部15はデータスライスのパスに含まれるいずれかのブロックのDataTypeが起点のブロックのDataTypeと異なる場合に、ブロック図検査部15は、ブロック図2に記載のデータ処理手順に矛盾があると判定する。
また、Slice713では、1つのスライスに複数のパスがある場合に、パス間でMin(最小値)及びMax(最大値)のいずれかが異なる場合には、ブロック図検査部15は、ブロック図2に記載のデータ処理手順に矛盾があると判定する。
次に、コード生成ルール記憶部16に記憶されるコード生成ルールを説明する。
図8及び図9は、コード生成ルールの例を示す。
図8のコード生成ルール800では、プログラムコードに関する一般的な項目801とその変換ルール802の対が記述されている。また、コード生成ルール800では、例えば「関数名」という項目については、変換ルール802に拡張子は除いたブロック図のファイル名を利用することが記述されている。
また、図9のコード生成ルール900では、各ブロックの種別を表すブロック種別901とその変換ルール902の対が記述されている。また、コード生成ルール900では、ブロック種別611が「Input」であるブロックに対する変換ルールとして、言語上の種別はIN構造体のメンバで、メンバ名はname属性の値であり、データ型はtype属性の値とすることが記述されている。
このようなコード生成ルール800、900に基づいて、プログラムコード生成部17はブロック図2からプログラムコード3を生成する。
次に、プログラムコード生成部17で生成されるプログラムコード3を説明する。
図10及び図11は、プログラムコード3の例を示す。
プログラムコード1000及びプログラムコード1100は、ともにC言語で記述されている。図10のプログラムコード1000では、すべての入力を扱うIN構造体が定義されている(図10の符号1001)。また、出力を表すOUT構造体も定義されている(図10の符号1002)。また、関数sampleのプロトタイプ宣言も定義されている(図10の符号1003)。また、プログラムコード1100では、ブロック図2から生成されたコードが記述されている。
次に、ブロック図検査部15が出力する違反情報4を説明する。
図12は、違反情報4の例を示す。
例えば、図12に示すように、違反情報4には、検査ルール1201、違反ブロック1202、関連スライス1203、関連パス1204が存在する。
検査ルール1201には、検査ルール700が複数存在する場合に、違反を検知した際に用いられた検査ルール700の番号が示される。
違反ブロック1202には、違反が含まれるブロックのIDが示される。
関連スライス1203には、検査ルール700に含まれるSlice713の検査において違反が検知された場合に、違反が検知されたスライスに含まれるブロックのIDが列挙される。
また、関連パス1204には、検査ルール700に含まれるSlice713の検査において違反が検知された場合に、スライスに含まれるパスが示される。1つの{}に囲まれる番号が1つのパスを意味する。
なお、違反情報4は、図12に示す形式とは異なり、検査ルール700の検査項目704ごとに、違反なし、違反ありを一覧表示するようにしてもよい。例えば、違反のない検査項目704には「YES」、違反のある検査項目704には「NO」を表示するようにしてもよい。
また、プログラムコード生成装置1のユーザにより分かりやすく違反内容を通知するために、違反情報4に、違反内容を説明する説明文を付加してもよい。
最初に、図13を参照して、ステップS2の詳細を説明する。
図7の検査ルール700を用いて検査対象を抽出する場合は、検査対象抽出部14は、例えば以下のように動作する。
つまり、検査対象抽出部14は、ブロック種別が「Output」のブロックに割り当てられているデータ処理で扱われるデータに影響を与えるブロックの集合を抽出する。例えば、図3のブロックB9とデータ依存関係のあるブロックとして、検査対象抽出部14は、ブロックB3とブロックB4を抽出する。つまり、ブロックB3とブロックB4は、ブロックB9の依存先ブロックである。
このため、図3では、ブロックB9と接続線で接続されているブロックB3とブロックB4が、ブロックB9とデータ依存関係のあるブロックとして抽出される。つまり、ブロックB3とブロックB4は、ブロックB9の依存先ブロックである。
ブロックB3は、種別がSubsystemなので、検査対象抽出部14は、図6の行614を参照する。行614では、データ入力数602が「1以上」なので、ブロックB3は、ブロックB3にデータを入力しているブロックとデータ依存関係があることが分かる。但し、Subsystemの場合には、実体は別のブロック図にあるので、別のブロック図を確認する必要がある。ブロックB3の場合は、図4のSubAに実体が示される。検査対象抽出部14は、図4に対しても同様の解析を行う。
図4のブロックB34と図3のブロックB9はIDが同じであるため、同じブロックである。図4においてブロックB34はブロックB33に接続している。
ブロックB33は、種別が「Sum」である。図6の解析ルール600の行615では、データ出力数603が「1」である。このため、ブロックB33は、ブロックB34とデータ依存関係がある。つまり、ブロックB33はブロックB34(ブロックB9)の依存先ブロックである。
また、ブロックB33は、ブロックB31とブロックB32に接続している。ブロックB31とブロックB32はそれぞれ種別が「Input」であり、図6の解析ルール600の行611では、データ出力数603が「1」である。このため、ブロックB31及びブロックB32は、ブロックB33とデータ依存関係がある。つまり、ブロックB31とブロックB32は、ブロックB33の依存先ブロックである。
以上で、図3のブロックB3の内部構成である図3のブロックB31〜B34が解析できたため、検査対象抽出部14は、図3に戻って解析を続ける。
検査対象抽出部14は、図3のブロックB9の他方の依存先ブロックであるブロックB4についても、同様の手順でデータ依存関係を解析する。
なお、ブロックB9、ブロックB3、ブロックB5、ブロックB6、ブロックB33の組と、ブロックB9、ブロックB4、ブロックB7、ブロックB8と図5のブロックB43の組は、それぞれ影響を及ぼさないので、検査対象抽出部14は、それぞれを別のパスとして管理する。
この場合には、検査対象抽出部14は、データ依存関係に加えて、制御依存関係も考慮してブロックを抽出する。あるブロックに対する制御依存関係とは、あるブロックの実行に影響を与えるブロックの出力の集合のことである。
例えば、図3のブロックB3及びブロックB4と制御依存関係のあるブロックは、Ifブロックである図3のブロックB2である。検査対象抽出部14は、前述したデータスライスとして抽出したブロックの集合に、図3のブロックB2とブロックB1とを加えて、検査対象のスライスとする。
具体的には、ブロック図検査部15は、検査対象抽出部14により抽出されたブロック、データスライス、スライスに対して、検査ルールを適用して、ブロック図2に定義されているデータ処理手順に矛盾がないかを検査する。
つまり、ブロック図検査部15は、図7の検査ルール700の行711に従い、検査対象抽出部14により抽出された全てのブロックにおいてDataTypeが設定されていないブロックが存在するかどうかを検査する。
また、ブロック図検査部15は、図7の検査ルール700の行712に従い、検査対象抽出部14により抽出されたデータスライスのパスごとに、起点ブロックのDataTypeと異なるDataTypeのブロックがパスに含まれていないかどうかを検査する。
また、ブロック図検査部15は、図7の検査ルール700の行713に従い、検査対象抽出部14により抽出されたスライスのパスの間で、Min又はMaxが異なるかどうかを検査する。
例えば、ブロック図検査部15は、違反が検知された検査ルールのID、違反が検知されたブロックのID、違反が検知されたスライス、違反が検知されたパス等を違反検出情報として主記憶装置1903等に記憶させる。
その後、ブロック図検査部15は、検査が完了した検査ルールを検査済みとマークし(ステップS47)、ステップS42に戻る。
また、違反検出情報が存在しない場合(ステップS48でNO)は、ブロック図検査部15は、プログラムコード生成部17にプログラムコードの生成を指示する。
ヘッダファイルのファイル名はブロック図2のファイル名に「.h」を加えたものであり、ソースファイルのファイル名はブロック図2のファイル名に「.c」を加えたものである。このため、ブロック図2のファイル名が「sample.blk」であれは、プログラムコード生成部17は、「sample.h」と「sample.c」というファイルを生成する。
この際に「sample.c」に含ませる関数の関数名は、「sample」である。
次に、プログラムコード生成部17は、ヘッダファイル「sample.h」の入力データの構造体と出力データの構造体を定義する。
プログラムコード生成部17は、入力データの構造体(IN構造体)を、ブロックの種別が「Input」のブロックの内部データに基づいて生成する。
また、プログラムコード生成部17は、出力データの構造体(OUT構造体)を、ブロックの種別が「Output」のブロックの内部データに基づいて生成する。
プログラムコード生成部17は、図3〜図5のブロック図から、例えば、図10に示すプログラムコード1000(ヘッダファイル)を生成する。
また、プログラムコード生成部17は、ソースファイル「sample.c」の内部を、図9のコード生成ルール900に従って生成する。
プログラムコード生成部17は、図3〜図5のブロック図から、例えば、図11に示すプログラムコード1100(ソースファイル)を生成する。
このように、本実施の形態では、ブロック図2でのブロック間の接続を辿ってデータ処理手順に矛盾があるかどうかを検査する。このため、本実施の形態によれば、不適切なブロック図のパターンを予め設けておくことなく、不適切なブロック図を検出することができる。
つまり、本実施の形態では、ブロック図2からプログラムコード3を生成する前に、ブロック図2から抽出したブロック同士の接続関係や設定された変数等の構造を比較するようにしているため、構造上矛盾する箇所を検出することができる。
このため、ソフトウェア開発者が修正の必要な箇所を探しだす必要がなくなり、ソフトウェア開発に要する労力及び時間を削減することができる。
実施の形態1では、ブロック図2におけるデータ依存関係及び制御依存関係を抽出し、検査ルールに基づいてデータ処理手順における矛盾がないかどうかを検査する。
本実施の形態では、ブロック図検査部15は、プログラムコード生成部17がブロック図2からプログラムコード3を生成するために参照するコード生成ルール800、900を参照して、ブロック図2で定義されているデータ処理手順に矛盾があるかどうかを検査する。
本実施の形態でも、プログラムコード生成装置1の機能構成例は図1に示した通りである。また、プログラムコード生成装置1のハードウェア構成例は図16に示した通りである。
また、ブロック図検査部15が検査ルール700に加えてコード生成ルール800、900を参照する点を除けば、プログラムコード生成装置1の動作は、実施の形態1と同じである。
実施の形態1及び2では、ブロック図取得部11を介して外部からブロック図2が入力される。
これに代えて、ブロック図2をプログラムコード生成装置1内で生成するようにしてもよい。
本実施の形態に係るプログラムコード生成装置1では、外部からのブロック図2の入力の代わりに図1のブロック図取得部11がブロック図を生成する。つまり、本実施の形態では、ブロック図取得部11はブロック図を生成することによりブロック図を取得する。
プログラムコード生成装置1のハードウェア構成例は、図16に示す通りである。
また、本実施の形態では、外部からのブロック図2の入力の代わりにブロック図取得部11がブロック図2を生成する。これ以外の動作は、実施の形態1に示したものと同じである。
あるいは、これら2つの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これら2つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
最後に、プログラムコード生成装置1のハードウェア構成の補足説明を行う。
図16に示すプロセッサ1901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ1901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
補助記憶装置1902は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
主記憶装置1903は、RAM(Random Access Memory)である。
通信装置1904は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信装置1904は、例えば、通信チップ又はNIC(Network Interface Card)である。
入出力装置1905は、例えば、マウス、キーボード、ディスプレイ等である。
そして、OSの少なくとも一部が主記憶装置1903にロードされ、プロセッサ1901により実行される。
プロセッサ1901はOSの少なくとも一部を実行しながら、ブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の機能を実現するプログラムを実行する。
プロセッサ1901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、プログラムコード生成装置1は、プロセッサ1901を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、ブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ1901と同じように、プロセッシングを行うICである。
また、ブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の処理の結果を示す情報やデータや信号値や変数値が、記憶装置1902、プロセッサ1901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、ブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、プログラムコード生成装置1は、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)といった電子回路により実現されてもよい。
この場合は、ブロック図取得部11、検査対象抽出部14、ブロック図検査部15及びプログラムコード生成部17は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
Claims (15)
- プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得部と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間にデータタイプ、最大値及び最小値の少なくともいずれかにおいて矛盾があるかどうかを検査する矛盾検査部とを有するプログラムコード生成装置。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得部と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素で扱われるデータについて前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素で扱われるデータについて当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査部とを有するプログラムコード生成装置。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得部と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素での制御について前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素での制御について当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査部とを有するプログラムコード生成装置。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するブロック図を取得するブロック図取得部と、
前記ブロック図でのブロック間の接続を辿って、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査する矛盾検査部と、
前記ブロック図で定義されているデータ処理手順に矛盾がない場合に、前記ブロック図からプログラムコードを、前記ブロック図から前記プログラムコードを生成するためのコード生成ルールを参照して、生成するプログラムコード生成部とを有し、
前記矛盾検査部は、
前記コード生成ルールを参照して、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査するプログラムコード生成装置。 - 前記矛盾検査部は、
前記ブロック図で定義されているデータ処理手順に矛盾がある場合に、前記データ処理手順における矛盾を通知する違反情報を出力する請求項1〜4のいずれか一項に記載のプログラムコード生成装置。 - 前記プログラムコード生成装置は、更に、
前記ブロック図で定義されているデータ処理手順に矛盾がない場合に、前記ブロック図からプログラムコードを生成するプログラムコード生成部を有する請求項1〜3のいずれか一項に記載のプログラムコード生成装置。 - 前記ブロック図取得部は、
前記ブロック図を生成する請求項1〜4のいずれか一項に記載のプログラムコード生成装置。 - コンピュータが、プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記コンピュータが、前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間にデータタイプ、最大値及び最小値の少なくともいずれかにおいて矛盾があるかどうかを検査する矛盾検査処理とを有するプログラムコード生成方法。 - コンピュータが、プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記コンピュータが、前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素で扱われるデータについて前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素で扱われるデータについて当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査処理とを有するプログラムコード生成方法。 - コンピュータが、プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記コンピュータが、前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素での制御について前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素での制御について当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査処理とを有するプログラムコード生成方法。 - コンピュータが、プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するブロック図を取得するブロック図取得処理と、
前記コンピュータが、前記ブロック図でのブロック間の接続を辿って、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査する矛盾検査処理と、
前記ブロック図で定義されているデータ処理手順に矛盾がない場合に、前記コンピュータが、前記ブロック図からプログラムコードを、前記ブロック図から前記プログラムコードを生成するためのコード生成ルールを参照して、生成するプログラムコード生成処理とを有し、
前記矛盾検査処理において、
前記コンピュータが、
前記コード生成ルールを参照して、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査するプログラムコード生成方法。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間にデータタイプ、最大値及び最小値の少なくともいずれかにおいて矛盾があるかどうかを検査する矛盾検査処理とをコンピュータに実行させるプログラムコード生成プログラム。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素で扱われるデータについて前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素で扱われるデータについて当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査処理とをコンピュータに実行させるプログラムコード生成プログラム。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義する、前記複数のブロックの各々に前記データ処理手順の要素である処理手順要素が割り当てられているブロック図を取得するブロック図取得処理と、
前記複数のブロックのうちのいずれかのブロックを起点ブロックとして設定し、前記起点ブロックから前記ブロック図におけるブロック間の接続を辿って、前記起点ブロックに割り当てられている処理手順要素での制御について前記起点ブロックが依存しているブロックを依存先ブロックとして抽出し、抽出された依存先ブロックに割り当てられている処理手順要素での制御について当該依存先ブロックが依存しているブロックを更に依存先ブロックとして抽出する動作を繰り返し、前記起点ブロックが直接的及び間接的に依存している依存先ブロックを抽出し、
前記起点ブロックに割り当てられている処理手順要素と、抽出された依存先ブロックに割り当てられている処理手順要素との間に矛盾があるかどうかを検査する矛盾検査処理とをコンピュータに実行させるプログラムコード生成プログラム。 - プログラムコードに反映させるデータ処理手順を複数のブロックの接続により定義するブロック図を取得するブロック図取得処理と、
前記ブロック図でのブロック間の接続を辿って、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査する矛盾検査処理と、
前記ブロック図で定義されているデータ処理手順に矛盾がない場合に、前記ブロック図からプログラムコードを、前記ブロック図から前記プログラムコードを生成するためのコード生成ルールを参照して、生成するプログラムコード生成処理とをコンピュータに実行させるプログラムコード生成プログラムであって、
前記矛盾検査処理において、
前記コンピュータに、
前記コード生成ルールを参照させて、前記ブロック図で定義されているデータ処理手順に矛盾があるかどうかを検査させるプログラムコード生成プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/084077 WO2018092237A1 (ja) | 2016-11-17 | 2016-11-17 | プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6486574B2 true JP6486574B2 (ja) | 2019-03-20 |
JPWO2018092237A1 JPWO2018092237A1 (ja) | 2019-04-25 |
Family
ID=62145333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018550936A Active JP6486574B2 (ja) | 2016-11-17 | 2016-11-17 | プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10628140B2 (ja) |
JP (1) | JP6486574B2 (ja) |
WO (1) | WO2018092237A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877870B2 (en) * | 2018-06-11 | 2020-12-29 | Tata Consultancy Services Limited | Method and system for verifying properties of source code |
US10691584B2 (en) * | 2018-09-28 | 2020-06-23 | Sap Se | Behavior driven development integration with test tool |
US11921619B2 (en) * | 2018-11-28 | 2024-03-05 | Trust Technology Co., Ltd. | Programming devices and programs for creating and editing programs used for image processing |
WO2019242868A1 (en) * | 2018-12-12 | 2019-12-26 | Mitsubishi Electric Corporation | Software testing device, software testing method, and software testing program |
JP2022011442A (ja) | 2020-06-30 | 2022-01-17 | オムロン株式会社 | ビジュアルプログラミングエディタのプログラム、コンピューターおよび方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010102362A (ja) * | 2008-10-21 | 2010-05-06 | Meidensha Corp | ソフトウェアの開発支援システム、開発支援方法およびプログラム |
JP2016057715A (ja) * | 2014-09-05 | 2016-04-21 | 富士電機株式会社 | 図形式プログラム解析装置 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317740A (en) * | 1991-03-07 | 1994-05-31 | Digital Equipment Corporation | Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies |
JPH0816378A (ja) * | 1994-06-30 | 1996-01-19 | Fujitsu Ltd | プログラム・リバース解析方法および装置 |
US6802053B1 (en) * | 1997-08-18 | 2004-10-05 | National Instruments Corporation | Graphical programming system with distributed block diagram execution and front panel display |
JP2005055951A (ja) | 2003-08-04 | 2005-03-03 | Canon Software Inc | プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 |
JP2006185211A (ja) * | 2004-12-28 | 2006-07-13 | Internatl Business Mach Corp <Ibm> | プログラム解析装置、テスト実行装置、その解析方法及びプログラム |
JP2006301989A (ja) | 2005-04-21 | 2006-11-02 | Fuji Electric Holdings Co Ltd | 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム |
JP4702194B2 (ja) * | 2006-06-22 | 2011-06-15 | 富士電機ホールディングス株式会社 | プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム |
JP5042315B2 (ja) | 2006-10-19 | 2012-10-03 | チェックマークス リミテッド | ソースコード内のセキュリティ脆弱性の検出 |
JP2009181446A (ja) * | 2008-01-31 | 2009-08-13 | Toshiba Corp | プログラム生成装置およびブロック線図生成装置 |
US9189233B2 (en) * | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
JP5275087B2 (ja) * | 2009-03-02 | 2013-08-28 | 株式会社東芝 | プログラム生成装置およびブロック線図生成装置 |
JP5186443B2 (ja) | 2009-06-30 | 2013-04-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 文字列の妥当性を判定するシステム、方法及びプログラム |
JP2011013887A (ja) | 2009-07-01 | 2011-01-20 | Fuji Electric Systems Co Ltd | ソフトウェア開発支援装置 |
US8533659B2 (en) * | 2009-07-29 | 2013-09-10 | International Business Machines Corporation | Efficient extraction of software dependencies from program code |
JP5251823B2 (ja) | 2009-10-16 | 2013-07-31 | 富士通株式会社 | 開発支援プログラム、開発支援装置、および開発支援方法 |
US8356058B2 (en) * | 2009-11-19 | 2013-01-15 | Microsoft Corporation | Runtime dependency analysis for calculated properties |
JP5725529B2 (ja) | 2010-07-21 | 2015-05-27 | 日本電気株式会社 | Web脆弱性補修システム、Web脆弱性補修方法、及びプログラム |
JP2012164177A (ja) | 2011-02-08 | 2012-08-30 | Root42 Inc | プログラム自動生成システム |
JP5077455B2 (ja) | 2011-03-07 | 2012-11-21 | 富士通株式会社 | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 |
JP2013061893A (ja) * | 2011-09-15 | 2013-04-04 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
CN104145452B (zh) * | 2012-03-02 | 2017-10-31 | 三菱电机株式会社 | 信息处理装置、电子控制单元以及信息处理方法 |
US20150169295A1 (en) * | 2012-06-20 | 2015-06-18 | Hitachi, Ltd. | Design Assistance Device for Control Software |
JP6004818B2 (ja) * | 2012-08-07 | 2016-10-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 並列化方法、システム、及びプログラム |
US8978010B1 (en) * | 2013-12-18 | 2015-03-10 | Sap Ag | Pruning compilation dependency graphs |
JP2017010476A (ja) * | 2015-06-26 | 2017-01-12 | 三菱電機株式会社 | 類似判定装置、類似判定方法及び類似判定プログラム |
US10318251B1 (en) * | 2016-01-11 | 2019-06-11 | Altair Engineering, Inc. | Code generation and simulation for graphical programming |
-
2016
- 2016-11-17 JP JP2018550936A patent/JP6486574B2/ja active Active
- 2016-11-17 WO PCT/JP2016/084077 patent/WO2018092237A1/ja active Application Filing
- 2016-11-17 US US16/336,791 patent/US10628140B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010102362A (ja) * | 2008-10-21 | 2010-05-06 | Meidensha Corp | ソフトウェアの開発支援システム、開発支援方法およびプログラム |
JP2016057715A (ja) * | 2014-09-05 | 2016-04-21 | 富士電機株式会社 | 図形式プログラム解析装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018092237A1 (ja) | 2018-05-24 |
JPWO2018092237A1 (ja) | 2019-04-25 |
US20190272158A1 (en) | 2019-09-05 |
US10628140B2 (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6486574B2 (ja) | プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム | |
CN109426722B (zh) | Sql注入缺陷检测方法、***、设备及存储介质 | |
JP4148527B2 (ja) | 機能テスト・スクリプト生成装置 | |
Mesbah et al. | Automated cross-browser compatibility testing | |
Barbour et al. | An empirical study of faults in late propagation clone genealogies | |
US9454466B2 (en) | Explaining partially illegal combinations in combinatorial models | |
US9152731B2 (en) | Detecting a broken point in a web application automatic test case | |
US8397104B2 (en) | Creation of test plans | |
US20140372083A1 (en) | Derived restrictions in a combinatorial model | |
US10360004B2 (en) | Using dynamic information to refine control flow graphs | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
KR20130133203A (ko) | 양방향 텍스트 검사기 | |
JP2010003008A (ja) | 検出プログラム、検出装置および検出方法 | |
JP4951416B2 (ja) | プログラム検証方法、プログラム検証装置 | |
US8589734B2 (en) | Verifying correctness of processor transactions | |
US9189372B2 (en) | Trace coverage analysis | |
US8813036B2 (en) | Visual representation of a difference between Cartesian product models | |
JP6107455B2 (ja) | テストスケジュール決定装置、プログラム | |
JP6878707B2 (ja) | 試験装置、試験方法および試験プログラム | |
JP2010055293A (ja) | 検証支援プログラム、検証支援装置、および検証支援方法 | |
JP5900212B2 (ja) | テストデータ生成装置、該プログラム、及び該方法 | |
Strandberg | Automated system level software testing of networked embedded systems | |
JP6644188B2 (ja) | 影響抽出装置、影響抽出プログラム及び影響抽出方法 | |
US9665454B2 (en) | Extracting test model from textual test suite | |
JP5736588B2 (ja) | ソースコード変換方法及びソースコード変換プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181130 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181130 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20181130 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20181211 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181225 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190108 |
|
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: 20190122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190219 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6486574 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 |